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 服务器上 数字海洋