我正在尝试将 nginx 从 1.14 升级到 1.18。目前我们使用带有 nginx 1.14 的 Passenger 6.0.5。
我正在做的是启动新的 Ubuntu 18.04 实例。由于某种原因,最新的 nginx 版本是 1.14,因此我添加了更新的源列表并安装了 nginx 1.18:
# added deb http://nginx.org/packages/ubuntu bionic nginx
$ sudo apt update
$ sudo apt install nginx
$ ngnix -v
nginx version: nginx/1.18.0
之后我遵循了乘客的文件:https://www.phusionpassenger.com/library/install/nginx/install/oss/bionic/
sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
sudo apt install libnginx-mod-http-passenger
并收到消息:
The following packages will be REMOVED:
nginx
The following NEW packages will be installed:
libnginx-mod-http-passenger nginx-common
即它删除了 nginx。我相信这是因为 libnginx-mod-http-passenger 依赖于 nginx-common 1.14。
有什么办法可以解决这个问题吗?
答案1
我不会使用 Passenger。我们大多数人很久以前就知道将 Web 应用嵌入 Web 服务器是个坏主意,但在 Web 发展的早期,我们别无选择。现在我们只能这样做,从 2000 年代中后期开始。有更好的方法来部署应用,在继续使用 Passenger 之前,您应该考虑改变方法。
警告解除后:
这里的问题是,您尝试使用的乘客包是为 Ubuntu 附带的 nginx 包构建的。nginx.org 本身提供的上游包的构建方式完全不同,并且不是直接替换。(我将此归咎于 Debian,但这也是其他地方的另一个讨论...)
如果您确实想在 Ubuntu 上将 Passenger 与 nginx 1.18 结合使用,请使用包含 nginx 1.18 的 20.04 LTS,使用 Ubuntu 附带的 nginx 包,并使用focal
而不是bionic
来获取 Passenger 包。