在Apache上创建Rails的运行环境

环境

    • Ubuntu20.4 + vagrant

 

    • Apache2.4.41 + Passenger

 

    • Ruby2.6

 

    Rails5.2

首先

我們要設置一個可以讓Apache執行Rails的環境。

设定

在Apache上运行Rails项目需要确定一个基本目录。在Apache上,默认情况下,将Web应用程序放置在/var/www目录下。然而,并不一定需要将其放置在那里,这并没有规定。然而,事实上,将其放置在/var/www目录下已成为一种默认约定。Rails项目可以在任意目录下运行。如果想将其放置在/var/www目录下,则可以通过在该目录下放置Rails项目的符号链接来实现。

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

在创建一个新的文件来设置虚拟主机之后,通过在DocumentRoot指令中指定Rails项目的public路径。保存文件后,运行sudo a2ensite hoge命令,创建到/etc/apache2/sites-enabled的符号链接。默认提供的000-default.conf是一个示例,使用sudo a2dissite 000-default命令来使其无效化。

<VirtualHost *:80>
    DocumentRoot /vagrant/hoge/public
</VirtualHost>

在apache2.conf文件的Directory标签内,指定Rails项目的目录路径。在此处指定的路径中,不应包括Rails项目中的public文件夹。如果包括public文件夹,Rails应用将无法正常运行。

<Directory /vagrant/hoge/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>

ApacheのルートにRailsのプロジェクトのリンクを配置する場合

在新建的虚拟主机配置文件中,将DocumentRoot指令设置为Rails项目的public路径,位于Apache的根目录(/var/www)下。

<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将无法正常运行。

<Directory /var/www/hoge/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>

在Directory指令中,仅指定Apache的根目录(/var/www)是没有问题的。指定的目录下的子目录(如Rails项目的目录)也会被正确启用。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

恶魔的重启

修改Apache配置文件后,需要重新启动Apache守护进程以使更改生效。

$systemctl restart apache2

当你在浏览器中指定URL后,Rails将启动。如果没有进行名称解析,你将需要通过URL指定IP地址。

http://IPアドレス
bannerAds