Web制作メモ -トップへ-

Ruby on Railsをエックスサーバーで動かそうとして諦めた日記

Ruby2016.01.17 14:51

事前調査したところによると、Ruby on Railsはレンタルサーバーで動かすのは難しく、VPSなどを借りたほうがよいという情報を見ました。

しかし、root権限はなくともSSH接続が出来ればなんとかなる気がして、何の制限で難しいのかよく分からなかったので、実際にチャレンジしてみました。

実際にチャレンジして無理なら、諦めも付くというものです。

結論から言いますと、諦めました。

エックスサーバーでは、ウェブサーバーへのアクセスをApacheの80番ポートのみに制限しており、それ以外のアクセスは全てフィルタリングされます。Ruby on Railsの標準WebサーバーWEBrickを使用してアクセスを受けられないのです。

WEBrickを80番ポートで起動しようとすると、エックスサーバー上のApacheと被るので勿論エラーになります。

回避策として、Passengerを使ってApacheで動かすという方法を考えましたが、curl-develがインストールされていない為、Passengerのインストールも出来ません。iptablesの設定などは管理者権限がないと出来ないので、管理者権限のないレンタルサーバーでRailsを動かすのは難しいという理由がよく分かりました。

まぁ、仮にここが上手く行っても、他にも色々問題は出てくるのかもしれませんし。

達人クラスの人であれば、動かすことが出来るのかもしれません。ですが、初学者としては、色々と回り道になりそうな予感がします。

事前調査でパイセン達から散々この結論を聞きましたが、実際にやりたいドMな性分なので、無謀にも時間を費やしてしまいました。

今でも、「何か抜け穴があるのでは」と思っていますが、こんなことに時間を使っていても仕方がないので、大人しく諦めることにします。

以下はエックスサーバーにRailsを動かそうとして、結局諦めた軌跡です。

エックスサーバーにSSH接続

1.管理画面でSSH設定をONにし公開鍵認証用鍵ペアを生成する

2.作成した鍵ペアを使ってSSH接続(RLoginというターミナルソフトが使いやすかった)

Rubyのインストール

1.使用するRubyをダウンロード(https://www.ruby-lang.org/ja/)
※レンサバはrootユーザーになれないのでyumが使用できない為ソースからインストールする

2.インストール用のフォルダを準備しておく

$mkdir ~/local
$mkdir ~/local/bin
$mkdir ~/local/src

3.srcフォルダにアップロード

4.解凍

$cd ~/local/src
$tar zxf ruby-2.3.0.tar.gz

5.インストール

$cd ruby-2.3.0
$./configure --prefix=$HOME/local(←ここでインストールするフォルダを指定)
$make
$make install

6.パスを通しておく

$vi ~/.bashrc
export PATH=$HOME/local/bin:$PATH

7.バージョンとパスの確認

$ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
$env

Ruby on Railsのインストール

※Gem管理なので分かりやすい

1.使用している本に合わせてバージョン4.2.1をインストール

$gem install rails -v 4.2.1 --no-ri --no-rdoc
※--no-ri --no-rdocでマニュアルのインストールを省略

2.インストール済みのgemを確認

$gem list

3.railsのプロジェクト(?)を作成する
作成するフォルダまで移動して使用するバージョンで作成

$rails _4.2.1_ new sample -d mysql --skip-bundle
※-d mysqlを付けないとSQLiteになる。

4.タイムゾーンの設定
作成されたフォルダ内のconfigフォルダの「application.rb」を編集

# config.time_zone = 'Central Time (US & Canada)'
コメントアウトを除去しTokyoに書き換える
config.time_zone = 'Tokyo'

5.エックスサーバーの管理画面からMySQLのデータベースを作成する

6.作成されたフォルダ内のconfigフォルダの「 database.yml」を編集

database、username、password、hostを設定する

7.$rails sするとエラーになるので、Gemfileを編集する

下記の行をコメントアウト
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'

8.これでいちおう動きます。

$ rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.5 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-01-17 15:51:40] INFO WEBrick 1.3.1 [2016-01-17 15:51:40] INFO ruby 2.3.0 (2015-12-25) [x86_64-linux] [2016-01-17 15:51:40] INFO WEBrick::HTTPServer#start: pid=23230 port=3000

動作確認(ここでNG!)

これで「http://ドメイン:3000」で初期ページが表示できるはずですが、ブラウザ(自分のマシン)から表示ができません。同じサーバーから「wget -q -O - http://ドメイン:3000」すると表示されているのが確認できます。

原因はこれ↓

セキュリティ対策の強化のお知らせ - ニュース | レンタルサーバー 高速・高機能・高安定性の【エックスサーバー】

エックスサーバーでは、ウェブサーバーとして80番ポート以外を利用することが制限されています。

「では80番を使おう」としても、既にApacheが使っているのでWEBrickでは使えません。

Passengerを使ってApacheで動かす方法も考えましたが、curl-develがインストールされていないというエラーでPassengerのインストール出来ない。

root権限がないのでやはり難しい。

念の為、サポートに問い合わせて見たところ、Railsは「現状」未サポートですという回答が来ました。

相変わらずサポートの回答が早いです。

現状というフレーズから、サポートを検討している気がします。

今後に期待です。