VPS上のUbuntu Server 18.04 LTSにNginx経由でRuby on Railsなページを表示する

ぬにょす(挨拶)。
VPS上のUbuntu Server 18.04 LTSにRuby on Railsのプロジェクトを作成し、クライアントのブラウザからドメイン名でアクセスできるようにします。
ちなみに私のWebでの母国語はPHPなのでRoRはもとよりRubyはかなりカタコトです。RoRのセットアップも初めてです。レッツチャレンジ♪
rbenvのインストール・設定
rbenvを使ってシステム環境を汚さずユーザー環境にRubyをインストールする方法がスタンダードのようなので、先にrbenvをインストールGitHubのリポジトリからクローンします。
以下を参考にrbenvとruby-buildを導入しました。
GitHub - rbenv/rbenv: Manage your app's Ruby environment · GitHub(github.com)
【2019.03.23修正】以下のaptによるインストールはお手軽ですが、インストールできるRubyのバージョンが古かったり、~/.rbenv 以下の構成がgithubで公開されているものと異なるため一部のgemでうまく動かなかったりします。オススメしません(笑)。
$ sudo apt install rbenv
~/.bashrcに魔法の呪文を追記します。
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
~/.bashrcを再読み込みします。
$ source ~/.bashrc
$PATH変数を確認すると~/.rbenv/shimsへのパスが追加されているはずです。
$ echo $PATH
/home/hogehoge/.rbenv/shims:/usr/local/sbin:/usr/…
Rubyのインストール
インストール可能なRubyのバージョンを確認してみます。
$ rbenv install -l
ずらーっとバージョン番号が表示されます。2.4.1が最新のようなので、インストールします。
$ rbenv install 2.4.1
Downloading ruby-2.4.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2
Installing ruby-2.4.1...
Installed ruby-2.4.1 to /home/hogehoge/.rbenv/versions/2.4.1
ソースをダウンロードしてmakeしてるようで、それなりに時間がかかりました。インストールしたバージョンを有効化して各コマンドをチェックしてみます。
$ rbenv global 2.4.1
$ rbenv version
2.4.1 (set by /home/hogehoge/.rbenv/version)
$ ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
$ gem --version
2.6.11
良さげですね。
依存モジュールとbundlerのインストール
続いてRailsに必要なNode.jsとSQLite3、およびRubyのプロジェクト構成管理ツール(?)であるbundlerをインストールします。
$ sudo apt install nodejs sqlite3
$ gem install bundler --no-document
$ rbenv rehash
Railsのインストール
Railsのプロジェクトディレクトリを作成します。
$ mkdir ~/hello-rails
$ cd ~/hello-rails
$ bundle init
Writing new Gemfile to /home/hogehoge/hello-rails/Gemfile
Gemfileを編集します。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails" # <- コメントアウトを解除
プロジェクト配下のvendor/bundleにRailsをインストールして初期化します。
$ budle install --path vendor/bundle
$ bundle exec rails new . -B
### 省略 ###
Overwrite /home/hogehoge/hello-rails/Gemfile? (enter "h" for help) [Ynaqdhm]Y
起動してみます。
$ bundle exec rails s
Could not find gem 'sqlite3' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Gemfileを編集して、sqlite3にバージョンを追記します。
gem 'sqlite3', '> 1.3.6'
もういっちょbundle installしてから起動します。
$ bundle install
$ bundle exec rails s
=> Booting Puma
=> Rails 5.2.2.1 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.4.1-p111), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
Listen状態になりましたが、localhostなので外部からはアクセスできません。
Nginxの設定
起動が確認できたのでCtrl-Cして、localhost:3000にNginxを通じてアクセスできるようにNginxの設定を変更します。Nginxのインストールは以下の記事に書いてます。
Ubuntu Server 18.04 LTSにNginxとPHPをインストールする
ドメイン名でのアクセスをlocalhost:3000に渡すよう設定します。
server {
server_name example.com;
location / {
proxy_pass http://localhost:3000;
}
}
設定を確認してNginxを再起動します。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginx.service
再度Railsを起動して、クライアントのブラウザでアクセスするとRailsの初期ページが表示されました。
