我总结了在将应用服务器Passenger从3升级到6时所感受到的差异

首先

有机会更新应用服务器Passenger(Phusion Passenger)从3到6版本,我整理了安装方法和可部署的应用程序类型的选择。此外,现在将Passenger从3升级到6,或者考虑引入Passenger可能并不常见,但是根据查询到的Passenger相关文章,许多文章都是关于旧信息的,希望这里的信息能帮到你找到新的信息。

なお、ここではPassengerやアプリケーションサーバについての詳しい説明は行いません。
Passengerについては公式ページ、Railsでのアプリケーションサーバの役割などは以下の記事が個人的に参考になったのでよろしければ参考にしてください。

 

我正在查看官方的Changelog和Getting Start,以了解将3提高到6时的差异和操作变化的参考。

概况

關於導入面的談話

    • Passengerのgemインストール->ApacheやNginxのモジュールとして組み込む方法以外に、OSのパッケージとしてインストールする方法が増えた

 

    Ruby on Rails製のアプリ以外にPythonやNode.js製のアプリもデプロイできるようになった

在应用领域上的讨论中

    • 再起動するコマンドなどが増えた

 

    Passengerがテレメトリーレポートを収集するようになった

在引入面上的对话

Passegner3->6に上げるにしたがって、新規に環境構築などを行う必要があったためその時に感じた違いです。

安装方法的选择增加了。

如果有人了解Passenger,可能会这样想:
“Passenger?是关于应用服务器的吧?好像在Apache上还比较容易安装,但在Nginx上就需要自己编译Nginx…”
是的,Passenger作为Apache或Nginx的模块来运行,但在使用Nginx时需要将Passenger作为模块编译到Nginx中。

只是一提到构建Nginx,心理上可能会有很高的障碍……因此,可能也会有避免使用Nginx+Passenger组合的情况。

しかし、Passenger(6.0.17)ではインストール方法の1つとして、OSのパッケージとしてインストール方法が増えていました。(ChangelogをさかのぼってみるとPassenger4系からこのようなインストール方法が増えていたみたいです。)
OSのパッケージとしてPassegner(正しくはPassengerのNginxモジュール)をインストールするとNginxと一緒にインストールされるようになっており、自らNginxをビルドする必要はなくなっていました。

例如,对于Ubuntu22.04,您可以使用以下命令完成安装。

    • パッケージインストール

 

    • # Install our PGP key and add HTTPS support for APT

 

    • $ sudo apt-get install -y dirmngr gnupg apt-transport-https ca-certificates curl

$ curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt | gpg –dearmor | sudo tee /etc/apt/trusted.gpg.d/phusion.gpg >/dev/null

# Add our APT repository
$ sudo sh -c ‘echo deb https://oss-binaries.phusionpassenger.com/apt/passenger jammy main > /etc/apt/sources.list.d/passenger.list’
$ sudo apt-get update

# Install Passenger + Nginx module
$ sudo apt-get install -y libnginx-mod-http-passenger

NginxのPassengerモジュールの有効(とNginxの再起動)
$if [ ! -f /etc/nginx/modules-enabled/50-mod-http-passenger.conf ]; then sudo ln -s /usr/share/nginx/modules-available/mod-http-passenger.load /etc/nginx/modules-enabled/50-mod-http-passenger.conf ; fi
$sudo ls /etc/nginx/conf.d/mod-http-passenger.conf
$ sudo service nginx restart

话虽如此,我只试过并确认了Nginx的例子,但Apache似乎也可以做到同样的事情。
与编译源代码时相比,安装要容易得多!

除了Ruby on Rails制作的应用程序之外,现在也可以部署其他类型的应用程序。

乘客以前认为只能用于Ruby on Rails应用程序的形象,但最近看来也可以用于使用Python、Node.js和Meteor开发的应用程序。

根据我的调查,这些应用程序并不是最近才添加的,似乎是从较早的时候就开始支持了,最早可以追溯到Passenger4系列的beta版本(大约在2013年左右)。

最近可能很少使用Passenger的情况,但如果有机会的话,尝试使用一下也许是个不错的选择。

在应用方面的对话

当使用Passegner3进行运营时,出现需要考虑的差异。我在查看更改日志时也注意到其他与运营相关的事项,但在此仅涵盖与我个人相关的范围。

出现了更多的重新启动命令

存放一个名为”restart.txt”的文件,并在需要重新启动的时候更新该文件的时间戳,这样一来,Passenger就会监视该文件,并在时间戳更新时执行重新启动操作。

$ touch restart.txt

当我第一次看到这种重新启动方法时,我感到非常惊讶。

在4版本及以后,这种重启方法已经改变了。

$ passenger-config restart-app

有很多命令被添加,并且建议使用这个命令来重新启动。
例如,如果要对Rails应用程序进行重新启动,可以按照以下方式操作。

$ passenger-config restart-app ${your-app-dir-path}

另外,目前似乎仍然可以使用restart.txt进行重新启动,但是与passenger-config restart命令在执行时重新启动不同,restart.txt在文件时间戳更新后收到请求时才会重新启动,因此需谨慎注意。

乘客开始收集遥测报告。

テレメトリーレポートとは匿名の利用状況データのことです。WindowsでいうとMicrosoftに送信する診断データのようなものでしょうか。これがPassenger6.0.0よりデフォルトの設定で収集されるようになりました。

关于这个问题,我认为如果只是自己使用的话,可能只会觉得”哦,是吗”,但是从应用运营情况来看,更新内容还是让人有些担心。
正如您在这里提到的,当然考虑到了安全性等方面的问题,但我仍然认为仍然存在不安全因素。

因此,对于Nginx来说,设置passenger_disable_anonymous_telemetry(对于Apache来说,是PassengerDisableAnonymousTelemetry)会很有用。(详细信息)
通过在conf文件或其他位置进行以上设置,可以禁用收集遥测报告的功能。

# 匿名のテレメトリーの無効化をonにする。何も書かないとデフォルトはoff(テレメトリー収集が有効)
passenger_disable_anonymous_telemetry on;

根据应用程序的运营情况,这是非常重要的设置。

最后

我总结了我个人认为到目前为止最大的变化。由于有着相当大的差异,例如从3到6,所以确认起来很困难,但是其中有些会对运营方式等产生影响,所以我很高兴能够仔细阅读。最后,如果有错误或指出的地方,请告诉我,我将不胜感激。

广告
将在 10 秒后关闭
bannerAds