将Phusion Passenger集成到Apache2的步骤

总览

这是关于在 Apache 中集成 Phusion Passenger 的步骤的文章。

首先

如果要构建用于运行Rails的Web服务器,则选择Nginx作为Web服务器的话,通常会使用Unicorn作为应用服务器。如果选择了Apache,可以通过将名为Phusion Passenger的扩展模块集成到Apache中,而无需单独设置应用服务器,就能让Rails在Apache上运行起来。

如果使用Ruby on Rails和Apache的组合,通常会使用Phusion Passenger。

可以通过在Apache的配置文件中编写一个名为“LoadModule”的指令来嵌入扩展模块,从而实现在不重新编译Apache的情况下加载模块。

环境

Apache2.4.41
Ubuntu20.4 + Vagrant

Apache2.4.41
Ubuntu 20.4与Vagrant

安装

如果要安装Phusion Passenger,可以使用gem install passenger进行安装。但如果要在Rails中构建Web应用程序,则需要在Gemfile中添加以下内容,并运行bundle install。

gem 'passenger'

安装完Phusion Passenger后,接下来是将Phusion Passenger集成到Apache中。

$passenger-install-apache2-modules

如果在Gemfile中引入了gem并进行了安装的话,那么即使输入了上述命令也会显示“不存在此命令”等错误提示,这是因为安装的gem的路径未更新。因此,需要指定路径来执行命令。需要使用以下命令来搜索并找到命令存在的位置。

$sudo find / -name "passenger-install-apache*"
/home/vagrant/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/passenger-6.0.18/bin/passenger-install-apache2-module
/home/vagrant/.rbenv/versions/2.6.0/bin/passenger-install-apache2-module

经过搜索,找到了两个命令存在的路径。很可能,不论指定哪个,结果应该是一样的。

$cd /home/vagrant/.rbenv/versions/2.6.0/bin/
$./passenger-install-apache2-module

当您执行命令时,会显示以下向导,按Enter键即可继续进行。

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.

请确认已选择Ruby,并按Enter键。

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬡  Python
   ⬢  Node.js
   ⬡  Meteor

如果要使用SSL,请单独安装附加的库。即使不使用SSL,也需要安装。此时,Passenger模块的集成尚未完成。

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.

If the aforementioned instructions didn't solve your problem, then please take
a look at our documentation for troubleshooting tips:

  https://www.phusionpassenger.com/library/install/apache/
  https://www.phusionpassenger.com/library/admin/apache/troubleshooting/

使用APT在系统中安装SSL库。

$apt-get install libcurl4-openssl-dev

我会重新开始安装。安装的时间取决于环境,大约需要5分钟左右。

$cd /home/vagrant/.rbenv/versions/2.6.0/bin/
$./passenger-install-apache2-module

如果出现以下消息,则说明模块已经成功地集成了:「请在Apache的配置文件中添加以下消息」。

Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/passenger-6.0.18/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/passenger-6.0.18
     PassengerDefaultRuby /home/vagrant/.rbenv/versions/2.6.0/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!

Press ENTER when you are done editing.
Validating installation...

 * Checking whether this Passenger install is in PATH... ✓
 * Checking whether there are no other Passenger installations... ✓
 * Checking whether Apache is installed... ✓
 * Checking whether the Passenger module is correctly configured in Apache... (!)

   You did not specify 'LoadModule passenger_module' in any of your Apache
   configuration files. Please paste the configuration snippet that this
   installer printed earlier, into one of your Apache configuration files, such
   as /etc/apache2/apache2.conf.


Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
Deploying a web application

To learn how to deploy a web app on Passenger, please follow the deployment
guide:

  https://www.phusionpassenger.com/library/deploy/apache/deploy/

Enjoy Phusion Passenger, a product of Phusion® (www.phusion.nl) :-)
https://www.phusionpassenger.com

Passenger® is a registered trademark of Phusion Holding B.V.

执行以下命令,打开Apache2的配置文件并在编辑器中,进行加载Passenger模块的设置。由于apache2.conf只能使用root权限进行写入。

$sudo vi /etc/apaceh2/apache2.conf

这是添加了读取Passenger模块的Vi命令的界面。

passenger.png

Apache需要重新启动,以使配置文件的修改生效。

$systemctl restart apache2

备考

这是一个检查是否安装了 Passenger 的命令。

$gem list passenger

安装完Passenger后,该命令将重新显示将其嵌入到配置中的行。

$passenger-install-apache2-module --snippet

在编辑Apache的配置文件之后,这是一个用于对位于/etc/apache2目录下的每个配置文件进行语法检查的工具。

$acpchectl -t

仅需要一种选项,用中文对以下内容进行释义:
“参考”

https://www.petitmonte.com/ruby/passenger.html
– 小蒙特网站提供有关于Ruby Passenger的信息
– 关于Ruby的乘客信息 可以在小蒙特网站找到

https://weblabo.oscasierra.net/install-phusion-passenger-to-redhat/
– 在网站weblabo.oscasierra.net上可以找到关于在Redhat上安装Phusion Passenger 的指南
– 在weblabo.oscasierra.net网站上 有关于在 Redhat 上安装Phusion Passenger的指南可供参考

更改DocumentRoot的所有者

如果从Rails访问Passenger,需要将Apache的DocumentRoot指示设置的目录所有者与Rails的所有者保持一致。

如果使用mkdir命令创建Apache DocumentRoot指令中设置的目录,那么该目录的所有者应该是root。在所有者是root的情况下运行Rails,Passenger会尝试以nobody用户而不是root用户来运行。nobody用户是操作系统默认提供的用户,拥有最低权限的用户之一。它仅用于系统级别的操作。nobody用户没有对/temp和/log目录的写入权限。因此,会出现权限错误,Passenger将无法正常运行。

要在Rails中运行Passenger,您需要将所有者更改为运行Rails的用户。所谓运行Rails的用户,是指创建Rails项目时的用户,也可以通过Rails文件来查找。在存放Rails项目的根目录下,config.ru文件的所有者将成为运行Rails的用户。

所有者的变更可以通过以下命令进行处理。

$chown -R user:user /var/www/html/hoge
广告
将在 10 秒后关闭
bannerAds