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

Linux

ぬにょす(挨拶)。

VPS上のUbuntu Server 18.04 LTSにRuby on Railsのプロジェクトを作成し、クライアントのブラウザからドメイン名でアクセスできるようにします。

ちなみに私のWebでの母国語はPHPなのでRoRはもとよりRubyはかなりカタコトです。
RoRのセットアップも初めてです。
レッツチャレンジ♪

スポンサーリンク

rbenvのインストール・設定

rbenvを使ってシステム環境を汚さずユーザー環境にRubyをインストールする方法がスタンダードのようなので、先にrbenvをインストールGitHubのリポジトリからクローンします。

以下を参考にrbenvとruby-buildを導入しました。

【2019.03.23修正】以下のaptによるインストールはお手軽ですが、インストールできるRubyのバージョンが古かったり、~/.rbenv 以下の構成がgithubで公開されているものと異なるため一部のgemでうまく動かなかったりします。オススメしません(笑)。

$ sudo apt install rbenv
Code language: plaintext (plaintext)

~/.bashrcに魔法の呪文を追記します。

$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
Code language: plaintext (plaintext)

~/.bashrcを再読み込みします。

$ source ~/.bashrc
Code language: plaintext (plaintext)

$PATH変数を確認すると~/.rbenv/shimsへのパスが追加されているはずです。

$ echo $PATH /home/hogehoge/.rbenv/shims:/usr/local/sbin:/usr/…
Code language: plaintext (plaintext)

Rubyのインストール

インストール可能なRubyのバージョンを確認してみます。

$ rbenv install -l
Code language: plaintext (plaintext)

ずらーっとバージョン番号が表示されます。
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
Code language: plaintext (plaintext)

ソースをダウンロードして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
Code language: plaintext (plaintext)

良さげですね。

依存モジュールとbundlerのインストール

続いてRailsに必要なNode.jsとSQLite3、およびRubyのプロジェクト構成管理ツール(?)であるbundlerをインストールします。

$ sudo apt install nodejs sqlite3 $ gem install bundler --no-document $ rbenv rehash
Code language: plaintext (plaintext)

Railsのインストール

Railsのプロジェクトディレクトリを作成します。

$ mkdir ~/hello-rails $ cd ~/hello-rails $ bundle init Writing new Gemfile to /home/hogehoge/hello-rails/Gemfile
Code language: plaintext (plaintext)

Gemfileを編集します。

# frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } gem "rails" # <- コメントアウトを解除
Code language: Ruby (ruby)

プロジェクト配下の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
Code language: plaintext (plaintext)

起動してみます。

$ 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.
Code language: plaintext (plaintext)

Gemfileを編集して、sqlite3にバージョンを追記します。

gem 'sqlite3', '> 1.3.6'
Code language: plaintext (plaintext)

もういっちょ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
Code language: plaintext (plaintext)

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; } }
Code language: Nginx (nginx)

設定を確認して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
Code language: plaintext (plaintext)

再度Railsを起動して、クライアントのブラウザでアクセスするとRailsの初期ページが表示されました。

コメント