Nginx 和乘客依赖问题(数字海洋部署)

Posted

技术标签:

【中文标题】Nginx 和乘客依赖问题(数字海洋部署)【英文标题】:Nginx and passenger dependencies issue (Digital Ocean Deployment) 【发布时间】:2015-05-03 07:47:33 【问题描述】:

我正在尝试遵循本指南

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-passenger-and-nginx-on-ubuntu-14-04

当我想在运行此命令后继续教程时:

sudo apt-get install nginx-extras passenger

我收到此错误:

Reading package lists... Done
Building dependency tree

Reading state information... Done
passenger is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
nginx-extras : Depends: perlapi-5.18.2 but it is not installable
Depends: libperl5.18 (>= 5.18.2) but it is not installable
Recommends: passenger (< 4.0.60) but 1:4.0.59-1~trusty1 is to be installed
E: Unable to correct problems, you have held broken packages.

我认为我无法安装 nginx-extras,有人可以帮助我吗?

【问题讨论】:

除了教程中提到的之外,您还添加了其他第三方存储库吗? 【参考方案1】:

可能是ubuntu版本错误,试试这个命令:

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'

【讨论】:

【参考方案2】:

如果您使用的是 Ubuntu 16.04,请执行以下操作

# Install our PGP key and add HTTPS support for APT
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

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

# Install Passenger + Nginx
sudo apt-get install -y nginx-extras passenger

【讨论】:

我面临同样的问题.. 我的 ubuntu 版本是 15.10 工作就像魅力!你拯救了我的一天:)【参考方案3】:

当我收到此错误时,是因为我尝试安装的乘客版本与 ubuntu 版本不匹配。检查您是否使用 ubuntu 14.04。

如果不是/etc/apt/sources.list.d/passenger.list 中的deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main 行,则需要更改以匹配您的ubuntu 版本。

然后运行sudo apt-get update

【讨论】:

如果您不太确定自己的版本,您可以cat /etc/os-release 获取更多信息。就我而言,我以为我是在可信赖的,但实际上是在 xenial 上。【参考方案4】:

因为这个问题,我使用了nginx-full 而不是nginx-extras。我正在运行 14.10,因为我想要 Postgres 9.4。

我不断收到一堆奇怪的错误,而且我不小心一直按照乘客指示进行操作,超过了 APT 说明。哎呀。所以我最初遵循@Maciej-adamczewski 的回答,但他添加的是 Debian 7 乘客安装而不是 Ubuntu 14.04 安装。这把我搞砸了。

以下是我为整理自己所做的工作:

sudo apt-mark showhold  # apparently I had nothing in here
sudo apt-get autoclean
sudo apt-get update && sudo apt-get upgrade
# I hoped upgrade would get rid of that error re: nginx-extras
# it didn't at all, so decided to scrap and start over

sudo apt-get purge nginx*  # to get rid of everything nginx
sudo apt-get remove nginx*  # paranoia
sudo apt-get purge passenger
sudo apt-get remove passenger  # paranoia again
sudo apt-get autoremove

sudo apt-get update
sudo apt-get install nginx-full passenger

轰隆隆!让 nginx 正常运行。

Digital Ocean 文章中没有说明,但如果您直接安装了 RVM 而不是 ruby​​,则需要找出您的 rvm ruby​​ 在哪里:

rvm use
passenger-config --ruby-command

然后复制粘贴 passenger_ruby /usr/local/... 的 nginx 信息并覆盖 /etc/nginx/nginx.conf 文件中的原始 Passenger_ruby 行。

稍后,当您创建站点时,请确保在您的服务器块中为 nginx 添加 passenger_enabled on;

给这个家伙疯狂的道具:Setting up rails on DO

【讨论】:

在运行上述命令之前,请务必备份您为 nginx 或乘客处理的所有配置文件。 apt-get purge 清除关联的配置文件。【参考方案5】:

我在 Ubuntu 14.10 上遇到了同样的问题

sudo nano /etc/apt/sources.list.d/passenger.list

注释掉deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

ctrl+x 是的 进入

sudo apt-get update

sudo apt-get install nginx nginx-extras

如果没问题

sudo nano /etc/apt/sources.list.d/passenger.list

插入deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main

ctrl+x 是的 进入

sudo apt-get update

sudo apt-get install passenger

瞧!

【讨论】:

非常感谢。我知道已经一年了,但这正是我需要的东西! 仍然对我有用。 适用于 ubuntu 18.04 LTS 如果仍然出现错误,请将“wheezy”替换为“jessie”。

以上是关于Nginx 和乘客依赖问题(数字海洋部署)的主要内容,如果未能解决你的问题,请参考以下文章

在数字海洋上部署 Django、Gunicorn、Nginx、Virtualenv 给我 502 Bad Gateway & Gunicorn can't read Secret Key

Nuxt.js 前端和 laravel api 在同一个 nginx 服务器上 数字海洋

我的 microsoft bot 框架在数字海洋中不起作用

数字海洋 NGINX 和 gunicorn 上的 CORS 标头访问控制缺少 django

数字海洋部署 Laravel

在数字海洋应用平台上部署 Codeigniter4 应用