Phusion 乘客:无法在实例注册表目录 /tmp

问题描述

我目前将 Rails 6 应用程序部署到 Ubuntu 20.04 上的 EC2 实例。我使用 Phusion PassengerNginx 部署了 Rails 应用程序。当我尝试访问 ec2 实例时出现以下错误

无法启动 Phusion Passenger 看门狗,因为它遇到了 启动时出现以下错误:无法创建子目录 在实例注册表目录 /tmp 中:没有这样的文件或目录 (errno=2) (-1: 未知错误)

似乎无法写入 /tmp 文件。我尝试更改 /tmp 目录的权限,但这似乎不起作用。当前权限如下。

ubuntu@ip-xxxxxxxxxx:/var/www/tyrion$ ls -l
total 72
-rw-r--r-- 1 www-data www-data 1739 Jan 18 17:41 Gemfile
-rw-r--r-- 1 www-data www-data 5779 Jan 18 17:41 Gemfile.lock
-rw-r--r-- 1 www-data www-data   31 Jan 18 17:41 PULL_REQUEST_TEMPLATE.md
-rw-r--r-- 1 www-data www-data  121 Jan 18 17:41 README.md
-rw-r--r-- 1 www-data www-data  227 Jan 18 17:41 Rakefile
drwxr-xr-x 9 www-data www-data 4096 Jan 16 20:43 app
drwxr-xr-x 2 www-data www-data 4096 Jan 18 17:41 bin
drwxr-xr-x 5 www-data www-data 4096 Jan 18 17:42 config
-rw-r--r-- 1 www-data www-data  130 Jan 18 17:41 config.ru
drwxr-xr-x 3 www-data www-data 4096 Jan 18 17:41 db
drwxr-xr-x 4 www-data www-data 4096 Jan 15 21:30 lib
drwxr-xr-x 2 www-data www-data 4096 Jan 18 17:41 log
drwxr-xr-x 2 www-data www-data 4096 Jan 18 17:41 public
drwxr-xr-x 2 www-data www-data 4096 Jan 18 17:41 storage
drwxr-xr-x 8 www-data www-data 4096 Jan 18 17:41 test
drwxr-xr-x 2 www-data www-data 4096 Jan 18 18:28 tmp
drwxr-xr-x 2 www-data www-data 4096 Jan 18 17:41 vendor

注意到 tmp 的权限允许它 w 访问目录。这很奇怪,因为在 Phusion Passenger according to the documentation passenger_instance_registry_dir 的配置中认为 /tmp。因此,不需要声明 passenger_instance_registry_dir /tmp,我什至尝试在配置中添加这一行但没有成功。

这是我的乘客配置:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/tyrion/public;

        server_name _;

        passenger_enabled on;
        passenger_ruby /home/ubuntu/.rvm/gems/ruby-2.7.0/wrappers/ruby; 
}

当我运行 sudo passenger-status 时,我也会得到以下结果。

错误:Phusion 乘客似乎没有运行。如果你确定 它正在运行,那么这个问题的原因可能是:

  1. 您使用 Apache 的PassengerInstanceRegistryDir 选项自定义了实例注册表目录,Nginx 的 passenger_instance_registry_dir 选项,或 Phusion 乘客 独立的 --instance-registry-dir 命令行参数。如果是这样的话, 请将环境变量 PASSENGER_INSTANCE_REGISTRY_DIR 设置为 该目录并再次运行乘客状态。
  2. 实例目录已被操作系统后台服务删除。请设置不同的实例注册表目录 使用 Apache 的PassengerInstanceRegistryDir 选项,Nginx 的 passenger_instance_registry_dir 选项,或 Phusion 乘客 独立的 --instance-registry-dir 命令行参数。

这让我很困惑,因为 /tmp认的注册表目录。有关如何解决此问题的任何想法?

删除/tmp 创建了一个新的并重新启动了 sudo service Nginx restart 但这也不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...