さくらVPS Ubuntu で、ApacheからRailsアプリケーションを動作する設定を備忘録として書きます。
ApacheとRails を連携するためにPassengerを使用します。
- さくらVPS
- Ubuntu22.04
- Ruby3.1.3
- RubyOnRails6.1.7.2
Passengerのインストール
Passengerをインストールします。
$ gem install passenger
ちょっと時間がかかります。インストール出来たらバージョン確認をします。
$ passenger -v
↓のように表示されました。
Phusion Passenger(R) 6.0.17
passenger-install-apache2-moduleのインストール
次は、passenger-install-apache2-module をインストールします。
$ passenger-install-apache2-module
途中で言語を聞かれたのでRubyを選択しました。
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬡ Ruby
⬡ Python
⬡ Node.js
⬡ Meteor
Enterを押しながらインストールを進めていくと、インストール必要なモジュールがあると言われました。まずはこちらのインストールからです。
Installation instructions for required software
* To install Curl development headers with SSL support:
Please run apt-get install libcurl4-openssl-dev or libcurl4-gnutls-dev, whichever you prefer.
* To install Apache 2 development headers:
Please install it with apt-get install apache2-dev
* To install Apache Portable Runtime (APR) development headers:
Please install it with apt-get install libapr1-dev
* To install Apache Portable Runtime Utility (APU) development headers:
Please install it with apt-get install libaprutil1-dev
以下コマンドでインストールします。
$ sudo apt install libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev
インストールが終わったら、再びpassenger-install-apache2-moduleです。
$ passenger-install-apache2-module
↓のコマンドを実行するよう言われました。メモリ不足対応です。【Linux】スワップ領域の作成
僕のVPS環境はメモリ1Gです。1Gだと足りないようです。
sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap
インストール完了後、以下のコメントがでたのでメモしておきます。
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /home/ubuntu/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/ubuntu/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/passenger-6.0.17
PassengerDefaultRuby /home/ubuntu/.rbenv/versions/3.1.3/bin/ruby
</IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
また、↓のコマンドでも、設定内容の確認ができます。
$ passenger-install-apache2-module --snippet
LoadModule passenger_module /home/ubuntu/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/ubuntu/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/passenger-6.0.17
PassengerDefaultRuby /home/ubuntu/.rbenv/versions/3.1.3/bin/ruby
</IfModule>
Apacheの設定
以下コマンドを実行します。
$ cd /etc/apache2/
$ sudo vi apache2.conf
apache2.conf の最後に先ほどの記述内容をそのままコピーします。
~略~
<IfModule mod_passenger.c>
PassengerRoot /home/ubuntu/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/passenger-6.0.17
PassengerDefaultRuby /home/ubuntu/.rbenv/versions/3.1.3/bin/ruby
</IfModule>
サンプルプロジェクトの作成
以下コマンドでRails のサンプルプロジェクトを作成します。
$ cd ~
$ rails new railsSample
/var/www/html で作ると、権限のエラーで失敗しました。rootユーザーで作るとrbenvがないとかで作成できませんでした。なので、ここで作って、最後にコピーします。
プリコンパイルします。
$ cd railsSample
$ bundle exec rake assets:precompile RAILS_ENV=production NODE_OPTIONS=--openssl-legacy-provider
終わったら、フォルダごと移動します。
移動しなくてもよいですが、ホームページ関連のものはまとめたいので移動しました。
$ cd ~
$ mv railsSample /var/www/html/railsSample
トップページにアクセスしたら、railsSampleを開くように変更します。
パスを調整する方法は別記事で。
$ cd /etc/apache2/sites-available
$ sudo vi 000-default-le-ssl.conf
~略~
DocumentRoot /var/www/html/railsSample/public
~略~
Let’s Encriptの設定をしたので、000-default-le-ssl.confを変更します。
これで終了です。http://(ドメイン名) にアクセスすると、railsのページが見れるはずです。
コメント