SELinuxを無効にする
apacheがpassengerのモジュールを読み込む際、SELinuxが有効だとエラーになる可能性があります。
まずは無効にしておきます。
※管理者権限で実行します
setenforce 0
上記コマンドで一時的に無効に出来ますが、再起動しても無効にするには、以下の内容を書き変えます。
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
パッケージのインストール
必要なパッケージをインストールします。
※管理者権限で実行します
パッケージのアップデート
yum update
パッケージインストール:各種必要なパッケージ
yum install gcc gcc-c++ glibc-headers openssl-devel readline libyami-devel readline-devel zlib zlib-devel bzip2
パッケージインストール:git
yum install git
パッケージインストール:apache
yum install httpd httpd-devel curl-devel
パッケージインストール:sqlite
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-devel-3.8.11-1.fc21.x86_64.rpm
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-3.8.11-1.fc21.x86_64.rpm
yum install sqlite-3.8.11-1.fc21.x86_64.rpm sqlite-devel-3.8.11-1.fc21.x86_64.rpm
※「yum install sqlite-devel」でインストールすると、現時点(2021.12.10)でバージョン違いによるエラーが発生します。
Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.
Extracted source (around line #328):
rails6のRuntimeError
def check_version # :nodoc:
if database_version < “3.8.0”
raise “Your version of SQLite (#{database_version}) is too old. Active Record supports SQLite >= 3.8.”
end
end
パッケージインストール:nodejs
yum install https://rpm.nodesource.com/pub_11.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm
yum install nodejs
npm install -g yarn
ディレクトリへの権限・所有設定
※管理者権限で実行します
chmod -R 777 /var/www/html/
chown -R apache:apache /var/www/html/
rbenvをインストールしてpathを通す
※ユーザー権限で実行します
これをroot権限で実行すると、後にpassengerモジュールを使用する際にpermissionエラーになる可能性があります
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo '# rbenv' >> ~/.bash_profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL --login
rbenvでrubyをインストール
※ユーザー権限で実行します
rbenv install --list
インストール可能なリストが表示されます。
今回は「3.0.3」をインストールします
rbenv install 3.0.3
rbenv global 3.0.3
Ruby on Rails6をインストール
※ユーザー権限で実行します
gem install rails
ファイアーウォールを設定
※管理者権限で実行します
ファイアーウォールで必要なポートを開けてリロードします。
※今回はhttp(80番ポート)、https(443番ポート)、テスト用の8080番ポートと3000番ポートを開けます
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --add-port=3000/tcp
firewall-cmd --reload
apacheのサービスの起動と自動起動
※管理者権限で実行します
apacheのサービスを自動起動し、ついでにサービスも起動します。
systemctl enable httpd.service
systemctl start httpd
rails6アプリを生成
※ユーザー権限で実行します
この場合は「/var/www/html」にrailsアプリ「rails6_app」を生成します。
生成したら「rails c」と「rails s」が実行できればOKです。
cd /var/www/html
rails new rails6_app
cd rails6_app/
rails c
rails s
passengerのインストール
※ユーザー権限で実行します
gemコマンドでpassengerをインストールします。
「passenger-install-apache2-module」を実行し、全てEnterを押します。
必要なパッケージがない場合は教えてくれるので、それを実行します。
※以下に紹介してます
gem install passenger
passenger-install-apache2-module
パッケージが揃ったら「passenger-install-apache2-module」を再び実行します。
OKなら暫く時間が経って完了します。
環境に応じて、以下のapacheに記述する内容が出力されますのでメモしましよう。
※実行環境毎に異なります
LoadModule passenger_module /home/masa/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /home/masa/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/passenger-6.0.12 PassengerDefaultRuby /home/masa/.rbenv/versions/3.0.3/bin/ruby </IfModule>
passengerをインストールする際に必要なパッケージのインストール例
※必要なパッケージが「passenger-install-apache2-module」の結果揃っていれば、インストールする必要はありません
#「curl-devel」のインストール
$ yum install curl-devel
#「httpd-devel」のインストール
$ yum install httpd-devel
#「apr-devel」のインストール
$ yum install apr-devel
#「apr-util-devel」のインストール
$ yum install apr-util-devel
passengerインストールの参考
apacheに設定を記述してサービス再起動
※管理者権限で実行します
先程出力されたapacheの記述をconfに書きます。
ここでは「/etc/httpd/conf/httpd.conf」のデフォルトを書き換えます。
# デフォルトのドキュメントルートをコメントアウト
#DocumentRoot "/var/www/html"
# 先程出力された設定を記載
LoadModule passenger_module /home/masa/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/masa/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/passenger-6.0.12
PassengerDefaultRuby /home/masa/.rbenv/versions/3.0.3/bin/ruby
</IfModule>
# rails6をインストールしたパスを設定
DocumentRoot "/var/www/html/rails6_app/public"
<Directory /var/www/html/rails6_app/public>
RailsEnv development
PassengerEnabled On
AllowOverride all
Options -MultiViews
</Directory>
書き換えたらサービスを再起動します。
systemctl restart httpd
これでrails6の環境が構築されます。