0
0

ApacheにRailsの動作環境を作る

Last updated at Posted at 2023-09-22

環境

  • Ubuntu20.4 + vagrant
  • Apache2.4.41 + Passenger
  • Ruby2.6
  • Rails5.2

はじめに

ApacheにRailsを動作させる環境を設定します。

設定

ApacheでRailsのプロジェクトを動かす元となるディレクトリを決める必要があります。Apacheではデフォルトで、Webアプリを/var/www配下に置くことになっています。しかし、必ずしもそこに置かないといけないといった決まりはありません。しかし、事実上、/var/www配下に置くことが暗黙の了解になっているようです。Railsのプロジェクトは任意のディレクトリで動作させることができます。/var/www配下で動かしたい場合は、/var/www配下にRailsのプロジェクトのシンボリックリンクを配置することで実現することができます。

  • Railsのプロジェクトをルートにする場合

仮想ホストを設定するファイルを新規に作成した後、DocumentRootディレクティブで、Railsのプロジェクトのpublicのパスを指定します。

/etc/apache2/sites-available/hoge.conf
<VirtualHost *:80>
    DocumentRoot /vagrant/hoge/public
</VirtualHost>

ファイルを保存した後、sudo a2ensite hogeを実行して、/etc/apache2/sites-enabledへのシンボリックリンクを作成します。デフォルトで用意されている、000-default.confはサンプルなので、sudo a2dissite 000-defaultで無効化します。

このような環境になっていればOKです。

$ls -l /etc/apache2/sites-available
000-default.conf                          # デフォルト用意
default-ssl.conf                          # デフォルト用意
hoge.conf                                 # 自作

$ls -l /etc/apache2/sites-enabled
hoge.conf

apache2.confのDirectoryディレクティブで、Railsのプロジェクトのディレクトリのパスを指定します。ここで指定するパスに、Railsのプロジェクトの配下にあるpublicまで含めてはいけません。publicを含めてしまうとRailsアプリは動作しなくなります。

/etc/apache2/apache2.conf
<Directory /vagrant/hoge/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>
  • ApacheのルートにRailsのプロジェクトのリンクを配置する場合

新規に作成した仮想ホストを設定するファイル内で、DocumentRootディレクティブに対し、Apacheのルート(/var/www)配下にRailsプロジェクトのpublicのパスを指定します。

/etc/apache2/sites-available/hoge.conf
<VirtualHost *:80>
    DocumentRoot /var/www/vagrant/hoge/public
</VirtualHost>

Apacheのルート(/var/www)配下に、Railsプロジェクトのディレクトリのシンボリックを作成します。Railsプロジェクトをごっそりコピーしてくるようなことはしないでください。ソースを二重管理することになり無駄が発生します。

#ln -s /vagrant/hoge /var/www/hoge

apache2.confのDirectoryディレクティブで、Apacheのルート(/var/www)配下のRailsプロジェクトのパスを指定します。先にも言いましたが、くれぐれも、publicまでは指定しないでください。publicまで指定すると、Railsは動作しなくなります。

/etc/apache2/apache2.conf
<Directory /var/www/hoge/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>

Directoryディレクティブには、Apacheのルート(/var/www)だけを指定しても問題ありません。指定したディレクトリ配下の子ディレクトリ(Railsのプロジェクトのディレクトリ)もちゃんと有効になります。

/etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

デーモンの再起動

Apacheの設定ファイルを修正したら、Apacheのデーモンを再起動させて反映させます。

$systemctl restart apache2

これで、ブラウザからURLを指定すると、Railsが起動します。名前解決をしていない場合は、URLでIPアドレスを指定することになります。

http://IPアドレス
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0