【问题标题】:Passenger doesn't seem to be running (Capistrano/Rails/Apache/Ubuntu)乘客似乎没有运行(Capistrano/Rails/Apache/Ubuntu)
【发布时间】:2018-02-13 23:18:41
【问题描述】:

使用 Capistrano 将 Rails 应用部署到运行 Apache 且启用了 Passenger 的 Ubuntu VM。

我按照本教程:https://www.phusionpassenger.com/library/install/apache/install/oss/trusty/ 进行了一些更改,因为我使用的是 17.04,而不是 14.04 LTS。

passenger-config validate-install 表示,Passenger 和 Apache 看起来一切正常。 passenger-memory-stats 显示Passenger 和Apache 进程。

我多次sudo apache2ctl restarted,没有任何警告。但是 passenger-status 以及 Capistrano 运行的 passenger-config restart-app 报告说,Passenger“似乎没有运行”。所以我的部署停止了。

机器上只有一个 Ruby,使用 ruby​​-install 安装了 ruby​​-2.4.1。如果版本不匹配,我有apt-get updateupgraded。

Apache 日志没有显示任何错误,当然与Passenger 无关。

为什么Passenger内部会不同意,说它配置正确并且有进程在运行,但后来又说它没有运行?

【问题讨论】:

  • 你在测试哪些用户与运行 capistrano 的身份?你可以在这里为两者转储 shell 环境吗?
  • Camden 谢谢,教程中的步骤在我看来是一样的。目前只有一个用户用于设置和部署。 ENV 中有一些半敏感的东西,但我可以给你PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin。那里没有与乘客特别相关的内容(例如自定义实例注册表目录)。让我知道是否有任何其他 ENV 值会对您有所帮助。
  • $TMPDIR 在两个环境中是否相同?
  • 对不起,我之前误解了你的问题。我有一个远程用户和一个本地用户。在服务器 (Ubuntu) 上 $TMPDIR 未设置。本地(OSX)它是/var/folders/50/m8x23f6s7lg6pb2sxpx_47g4m2j3m8/T/

标签: ruby-on-rails apache ubuntu capistrano passenger


【解决方案1】:

按照 Tony Vincent 的建议,我需要自定义实例注册表目录:

/etc/apache2/mods-enabled/passenger.conf 在服务器上:

PassengerInstanceRegistryDir /home/MYUSER/passenger_temp

Rails 应用中的 config/deploy/production.rb:

set :default_env, { 'PASSENGER_INSTANCE_REGISTRY_DIR' => '/home/MYUSER/passenger_temp' }

【讨论】:

  • 在将我的服务器从 Debian Jessie 升级到 Debian Stretch(升级了 Apache)后,我遇到了这个问题。这对我有用。谢谢!
  • 我在 Debian Stretch for apache2 中安装 phusion 乘客时也遇到了这个问题。这似乎是 Phusion 操作系统和服务器技术特定安装说明中的缺陷。此信息对于让乘客状态正常工作是必要的。
  • 你是冠军。 +100000
  • 乘客会抱怨,因为给定的目录不安全。这里的根本问题是 systemd 设置了私有 tmp 目录,因此无法提前知道 /tmp 中文件的实际路径。我使用这篇文章中关于该主题的方法#1:pistolfly.com/weblog/en/2016/01/… 我不建议将乘客的注册表目录放在标准路径中,如本答案所示。
【解决方案2】:

很抱歉,您是否在 ubuntu 服务器(不是 osx)上运行了 passenger-config validate-installpassenger-memory-statssudo apache2ctl restart 相同。

基于/tmp 没有passenger.randomstring 目录,听起来您混淆了本地和远程命令。 /tmp 是 Ubuntu 上PassengerInstanceRegistryDirs 的默认位置,因此如果Passenger 正在运行,/tmp 中应该有一个以passenger. 开头的目录。

【讨论】:

  • 不,我只是误解了这是否是您要问的。我唯一在本地运行的是cap production deploypassenger-config validate-installpassenger-memory-statsapache2ctl restart 都是远程运行的。 ls /tmpremote 没有给我任何与乘客有关的信息。
猜你喜欢
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
相关资源
最近更新 更多