【Ubuntu】Apache2.4でRailsを動作させる

さくら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のページが見れるはずです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次