虽然我一直通过capistrano将我的rails应用程序部署到我的CentOS服务器,但我一直收到这个错误:
***错误:Phusion Passenger似乎没有运行。如果您确定它正在运行,那么此问题的原因可能是一个 的:
- 您使用Apache自定义了实例注册表目录 PassengerInstanceRegistryDir选项,Nginx' s passenger_instance_registry_dir选项,或Phusion Passenger Standalone' s --instance-registry-dir命令行参数。如果是这样,请设置 环境变量PASSENGER_INSTANCE_REGISTRY_DIR到该目录 并再次运行此命令。
- 实例目录已被操作系统后台删除 服务。请使用Apache设置不同的实例注册表目录 PassengerInstanceRegistryDir选项,Nginx的passenger_instance_registry_dir 选项,或Phusion Passenger Standalone' s --instance-registry-dir命令 line argument。
醇>
在我的服务器上我有apache和乘客5.0.30 首先,我在堆栈上查看其他答案: Link to one of these topics。 不幸的是,没有什么能帮助我。我试图从apache conf设置env路径和其他设置。 知道我应该更改什么才能部署我的rails应用程序? PATH中第一个乘客身份的完整路径在哪里?它与passenger_root匹配吗? 以下是我的日志:
$ passenger-config validate-install
> What would you like to validate? Use <space> to select. If the menu
> doesn't display correctly, press '!'
>
> ⬢ Passenger itself ‣ ⬢ Apache
>
> -------------------------------------------------------------------------
>
> Checking whether there are multiple Apache installations... Only a
> single installation detected. This is good.
>
> -------------------------------------------------------------------------
>
> * Checking whether this Passenger install is in PATH... ✓ * Checking
> whether there are no other Passenger installations... ✓ * Checking
> whether Apache is installed... ✓ * Checking whether the Passenger
> module is correctly configured in Apache... ✓
>
> Everything looks good. :-)
$ rvmsudo passenger-memory-stats
Version: 5.0.30
Date : 2016-11-15 13:43:44 +0100
---------- Apache processes ----------
PID PPID VMSize Private Name
--------------------------------------
25188 1 476.6 MB 1.5 MB /usr/sbin/httpd -DFOREGROUND
25220 25188 270.4 MB 0.5 MB /usr/sbin/httpd -DFOREGROUND
25246 25188 478.6 MB 0.2 MB /usr/sbin/httpd -DFOREGROUND
25247 25188 478.6 MB 0.2 MB /usr/sbin/httpd -DFOREGROUND
25248 25188 478.6 MB 0.2 MB /usr/sbin/httpd -DFOREGROUND
25249 25188 478.6 MB 0.2 MB /usr/sbin/httpd -DFOREGROUND
25250 25188 478.6 MB 0.2 MB /usr/sbin/httpd -DFOREGROUND
### Processes: 7
### Total private dirty RSS: 3.08 MB
-------- Nginx processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
25222 421.0 MB 0.9 MB Passenger watchdog
25225 772.6 MB 1.5 MB Passenger core
25234 431.3 MB 1.0 MB Passenger ust-router
### Processes: 3
### Total private dirty RSS: 3.39 MB
我的apache配置文件:
<VirtualHost *:80>
ServerName www.app.com
ServerAdmin admin
DocumentRoot "/srv/www/app_name/current/public"
LoadModule passenger_module /home/userr/.rvm/gems/ruby-2.2.5/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
#<IfModule mod_passenger.c>
# PassengerRuby /usr/local/rvm/gems/ruby-2.2.5
# PassengerRoot /usr/local/rvm/gems/ruby-2.2.5/gems/passenger-5.0.30
# PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.2.5/wrappers/ruby
# PassengerInstanceRegistryDir /tmp
#</IfModule>
<IfModule mod_passenger.c>
PassengerRoot /home/userr/.rvm/gems/ruby-2.2.5/gems/passenger-5.0.30
PassengerDefaultRuby /home/userr/.rvm/gems/ruby-2.2.5/wrappers/ruby
PassengerInstanceRegistryDir /tmp
</IfModule>
Options -Indexes -FollowSymLinks -MultiViews
LogLevel warn
ErrorLog logs/www.app.com-error.log
TransferLog logs/www.app.com-access.log
CustomLog logs/www.app.cp,.log combined
<Directory /srv/www/app_name/current/public>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from All
</IfModule>
</Directory>
</VirtualHost>
我的环路:
env file:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
LOGNAME=root
USER=root
USERNAME=root
HOME=/root
SUDO_COMMAND=/bin/env PASSENGER_INSTANCE_REGISTRY_DIR=/tmp
SUDO_USER=userr
SUDO_UID=1001
SUDO_GID=100
PASSENGER_INSTANCE_REGISTRY_DIR=/tmp
确定我犯了错误。感谢您的一切建议。
答案 0 :(得分:1)
最后我解决了我的问题。 我做了两件事。
首先,我在主目录中创建了新的临时文件夹。然后在Apache配置文件中添加了
PassengerInstanceRegistryDir /home/userr/instancetemp
然后我用
把它推到了我的环路echo 'PASSENGER_INSTANCE_REGISTRY_DIR=/home/userr/instancetemp' >> ~/.bash_profile
我认为这已经足够,但我还添加了这条路径到我的capistrano配置
set :default_env, {
"PASSENGER_INSTANCE_REGISTRY_DIR" => "/home/t.panek/passenger_temp"
}
答案 1 :(得分:0)
问题似乎是 systemd私有临时功能,你可以为httpd禁用它:
mkdir /etc/systemd/system/httpd.service.d
echo "[Service]" > /etc/systemd/system/httpd.service.d/nopt.conf
echo "PrivateTmp=false" >> /etc/systemd/system/httpd.service.d/nopt.conf
systemctl daemon-reload
systemctl restart httpd
Passenger 5.0不再使用/tmp
作为状态信息,因此即使在私人临时工具上它也应该开箱即用。