1

我正在尝试将 rails 应用程序部署到运行乘客和 nginx 的 Ubuntu 服务器。该服务器在 ruby​​ 1.8 上运行了大约一年,但我最近升级到 1.9.3(这次使用 RVM),因此不得不重新安装所有东西。我目前遇到两个问题:

403禁止错误

我能够启动 nginx 服务器,但是当我尝试访问 rails 应用程序时,我收到一个 403 Forbidden 错误,内容如下:

*2177 directory index of "/srv/myapp/public/" is forbidden

我在nxinx 帮助文档中进行了一些查看,并确保该/srv/myapp/目录具有适当的权限。它由deploy拥有 nginx 工作进程的用户所有,并设置为chmod 755.

Nginx和Passenger安装问题

当我重新启动 nginx 服务器时,我还收到另一个错误,表明我的 phusion 乘客安装有问题:

Unable to start the Phusion Passenger watchdog because its executable (/usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.13/agents/ PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'passenger_root' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'passenger_root' directive, whichever is applicable.

我从非 root(但启用了 sudo)用户重新安装了乘客 gem,并使用 重新安装了 nginx rvmsudo passenger-install-nginx-module,但随后我反复收到此错误:

Your RVM wrapper scripts are too old. Please update them first by running 'rvm get head && rvm reload && rvm repair all'.

我执行了 RVM 重新加载(有rvmsudo和没有),错误仍然出现。我尝试在没有 的情况下执行 nginx 安装rvmsudo,但遇到了权限问题,因为我无法编辑/opt/nginx/目录(我安装了 nginx 的位置)。现在我什至没有那么远,因为安装程序未能通过所需的软件检查。

背景资料

这是我的 nginx 进程当前的样子:

  PID  PPID USER     %CPU    VSZ WCHAN  COMMAND
10174     1 root      0.0  18480 ?      nginx: master process /opt/nginx/sbin/nginx
29418 10174 deploy    0.3  18496 ?      nginx: worker process
29474 12266 1001      0.0   4008 -      egrep (nginx|PID)

我的安装过程

我一直在逐步指南中记录我的安装过程,以供进一步参考。请看一下我是如何设置新安装的。

4

1 回答 1

0

尝试按照本指南重新安装所有环境,并使用以下权限将 Rails 应用程序放在 /var/rails/your_app_dir 上:

sudo chown deployment_user:www-data -R /var/rails/your_app_dir

使用这个 nginx.conf 示例将所有部分放在一起:

user  www-data;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    passenger_root /usr/local/rvm/gems/ruby-2.0.0-p195/gems/passenger-4.0.5;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p195/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';


    log_format gzip '$remote_addr - $remote_user [$time_local]  '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    access_log  logs/access.log  gzip  buffer=512k;

    server_names_hash_bucket_size  64;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    ##
    # Virtual Host Configs
    ##
    #include /opt/nginx/conf/*.conf;
    include /opt/nginx/conf/sites-enabled/*;
}
于 2013-07-02T20:11:05.320 回答