この記事では、Debian(Google Cloud PlatformのVMを利用)でRails環境を構築した手順についてまとめています。(2019/09/02)
https://www.linode.com/docs/development/ror/ruby-on-rails-apache-debian/
https://symfoware.blog.fc2.com/blog-entry-423.html
こちらの記事を参考にしました。
######バージョン情報
rails 6.0.0
Ruby 2.6.3
######GCPのVMインスタンスを作成(省略。Debian9を選択)
######システムのアップデート
$ sudo apt-get update && sudo apt-get upgrade
######RVMとRubyのインストール
$ sudo apt install dirmngr
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ curl -sSL https://get.rvm.io | bash -s stable --ruby
$ source /home/username/.rvm/scripts/rvm
$ rvm requirements
######Railsのインストール
$ gem install rails
######Railsアプリの作成
$ rails new example-app
$ cd example-app
$ bundle
######passengerのインストール
$ gem install passenger
$ passenger-install-apache2-module
エラーメッセージに従って不足しているプログラムをインストールする。
$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install apache2-mpm-worker
$ sudo apt-get install apache2-dev
$ sudo apt-get install libapr1-dev
$ sudo apt-get install libaprutil1-dev
$ sudo apt-get install apache2
再度、apache2-moduleをインストール(けっこう時間がかかる)
$ passenger-install-apache2-module
######apacheの設定ファイルの確認(usernameの所は環境による)
$ passenger-install-apache2-module --snippet
LoadModule passenger_module /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
PassengerDefaultRuby /home/username/.rvm/gems/ruby-2.6.3/wrappers/ruby
</IfModule>
######passenger.confの作成(usernameの所は環境による)
$ vi /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
PassengerRoot /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
PassengerDefaultRuby /home/username/.rvm/gems/ruby-2.6.3/wrappers/ruby
</IfModule>
######passenger.loadの作成(usernameの所は環境による)
$ vi /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
######000-default.confの変更(ip_address、usernameの所は環境による。ポート番号80はデフォルト)
$ vi /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerName ip_address:80
ServerAdmin webmaster@localhost
DocumentRoot /home/username/example-app/public
RailsEnv development
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/home/username/example-app/public">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
######モジュールの有効化
$ a2enmod passenger
######apacheの再起動
$ sudo /etc/init.d/apache2 restart
######ブラウザでipにアクセス
######apacheのエラーログ確認方法(メモ)
$ cat /var/log/apache2/error.log
######感想
途中色々なエラーが出ました。(bundlerがありません、bundlerのバージョンが合ってません、apache2-mpm-workerなんてありません、サーバの権限がありません、authz_core:error等。) これらのエラーはパッケージのバージョンを合わせる、パスを正確に書く、設定ファイルを見直すことで解決しました。コピペするだけじゃなく、エラーログをググって原因を特定できるようにしたいです。