AWS の Amazon Linux 2 に Apache 入れて Rails を動かす

aws

Apache のインストール

% sudo yum -y install httpd

Apache の起動

$ sudo systemctl start httpd.service

Apache の自動起動 ON

$ sudo systemctl enable httpd.service

Apache の自動起動が正しく設定されているか確認

$ systemctl is-enabled httpd.service

rbenv で ruby3.0 にします(下記記事参照)
https://nomad.office-aship.info/amazon-linux2-rbenv-ruby-3

Apache 上で Rails を動かすのに必要な Passenger をインストール

$ gem install passenger -N
Successfully installed passenger-6.0.4

Apache に必要な権限を設定

$ sudo chmod o+x "/home/ec2-user"

Passenger のコンパイルに必要なライブラリをインストール

$ sudo yum -y install gcc-c++
$ sudo yum -y install libcurl-devel
$ sudo yum -y install httpd-devel
$ sudo yum -y install apr-devel
$ sudo yum -y install apr-util-devel

Passenger のインストール

$ passenger-install-apache2-module

httpd.conf の編集

$ sudo vi /etc/httpd/conf/httpd.conf

以下を httpd.conf の末尾に追加
(Passenger のインストール時に出てくるテキストをそのままコピペすれば大丈夫です、以下は一例なので、そのままコピペしても動きません)

LoadModule passenger_module /home/ec2-user/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/passenger-6.0.4/buildout/apache2/mod_passenger.so

<ifmodule mod_passenger.c="">
  PassengerRoot /home/ec2-user/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/passenger-6.0.4
  PassengerDefaultRuby /home/ec2-user/.rbenv/versions/3.0.0/bin/ruby
</ifmodule>

Passengerを組み込んだApacheではDocumentRootを$RAILS_ROOT/publicに設定すれば、
自動的にRailsアプリケーションが認識されます。

以下のように修正(DocumentRootはあなたの環境に合わせて)

#DocumentRoot "/var/www/html"
DocumentRoot "/home/ec2-user/rails_app/public"

<directory "/home/ec2-user/rails_app/public">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</directory>

apache restart

$ sudo systemctl restart httpd.service

これで rails が PRODUCTION で動きます

コメント

タイトルとURLをコピーしました