Ruby on rails 如何使用Passanger在nginx上部署ruby on rails应用程序

Ruby on rails 如何使用Passanger在nginx上部署ruby on rails应用程序,ruby-on-rails,ruby,nginx,passenger,nginx-config,Ruby On Rails,Ruby,Nginx,Passenger,Nginx Config,我花了很多时间,只是卡住了:( 在RubyonRails中构建应用程序 关于使用Apache的开发环境 必须在带有nginx和passenger的Ubuntu18.04 LTS上安装产品 我向nginx添加了乘客库对它的描述 应用程序不工作,日志显示: 403根目录()的禁止错误 2019/02/08 21:46:19[错误]4743#4743:*2目录索引“/var/www/html/cennik/public/”被禁止,客户端:XXX.XXX.XXX,服务器:cennik.leczymed.

我花了很多时间,只是卡住了:(

  • 在RubyonRails中构建应用程序
  • 关于使用Apache的开发环境
  • 必须在带有nginx和passenger的Ubuntu18.04 LTS上安装产品
  • 我向nginx添加了乘客库对它的描述
  • 应用程序不工作,日志显示:

  • 403根目录()的禁止错误

    2019/02/08 21:46:19[错误]4743#4743:*2目录索引“/var/www/html/cennik/public/”被禁止,客户端:XXX.XXX.XXX,服务器:cennik.leczymed.pl,请求:“GET/HTTP/2.0”,主机:“cennik.leczymed.pl”

  • 404找不到其他子链接(例如)

    2019/02/08 21:46:25[错误]4743#4743:*2 open()“/var/www/html/cennik/public/rtg”失败(2:没有这样的文件或目录),客户端:XXX.XXX.XXX,服务器:cennik.leczymed.pl,请求:“GET/rtg HTTP/2.0”,主机:“cennik.leczymed.pl”

  • 我的配置:

    /etc/nginx/sites available/cennik.conf

    所有应用程序文件都位于/var/www/html/cennik目录中

    drwxr-xr-x 16 cennik cennik 4096 Feb  8 20:53 .
    drwxr-xr-x  6 root   root   4096 Feb  8 14:23 ..
    drwxrwxr-x 10 cennik cennik 4096 Jul 27  2018 app
    drwxr-xr-x  2 cennik cennik 4096 Jul 27  2018 bin
    drwxr-xr-x  2 cennik cennik 4096 Feb  8 20:33 .bundle
    drwx------  5 cennik cennik 4096 Feb  8 20:48 config
    -rw-rw-r--  1 cennik cennik  130 Jul 27  2018 config.ru
    drwx------  2 cennik cennik 4096 Jul 27  2018 db
    -rw-rw-r--  1 cennik cennik 2371 Feb  8 19:58 Gemfile
    -rw-r--r--  1 cennik cennik 5544 Feb  8 20:42 Gemfile.lock
    drwxrwxr-x  7 cennik cennik 4096 Feb  8 19:47 .git
    -rw-rw-r--  1 cennik cennik  687 Feb  8 19:47 .gitignore
    drwxrwxr-x  4 cennik cennik 4096 Jul 27  2018 lib
    drwxrwxr-x  2 cennik cennik 4096 Feb  8 20:53 log
    drwxr-xr-x  2 cennik cennik 4096 Feb  8 20:53 node_modules
    -rw-rw-r--  1 cennik cennik   64 Jul 27  2018 package.json
    drwxrwxrwx  3 cennik cennik 4096 Feb  8 20:54 public
    -rw-rw-r--  1 cennik cennik  227 Jul 27  2018 Rakefile
    -rw-rw-r--  1 cennik cennik    5 Jul 27  2018 .ruby-version
    drwxrwxr-x  2 cennik cennik 4096 Jul 27  2018 storage
    drwxrwxr-x  9 cennik cennik 4096 Jul 27  2018 test
    drwxrwxr-x  6 cennik cennik 4096 Jul 27  2018 tmp
    drwxrwxr-x  3 cennik cennik 4096 Feb  8 20:33 vendor
    -rw-r--r--  1 cennik cennik   86 Feb  8 20:53 yarn.lock
    
    所有文件和目录的所有者均为cennik用户(如配方中所述)

    RoR应用程序内的目录/公共具有所有权限(chmod 777)

    有什么想法吗,伙计们

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    更新:

    乘客配置——ruby命令

    因此,我认为nginx配置cennik.conf为ruby声明了正确的目录位置:/usr/bin/ruby2.5

    还有其他解决办法吗

    ************************更新*******************************

    好的。所以我发现了一些可以帮助其他人的东西。我的问题是只针对从以前版本升级到18.04的Ubuntu。nginx的安装并没有覆盖nginx的confs(这可以手动解决)。更大的问题是,为Ubuntu18.04提供的nginx包没有使用乘客支持进行编译。 因此,我现在正在寻找解决方案,如何编译带有乘客模块的nginx,并且仍然使用它我的systemctl功能-从源代码安装工作,但您不能将其作为服务使用:(

    我找到了一些在编译过程中对Ubuntu包进行修改的方法,但是我的任何尝试都失败了

    有人能帮我吗

    我将乘客添加到nginx,这里的乘客库是如何描述它的

    看起来中的Passenger未配置。当您使用RVM时,您应该有另一个ruby可执行文件位置。若要获取ruby路径,请转到应用程序根并运行以下命令并替换
    Passenger\u ruby
    指令

    > cd /var/www/html/cennik
    > passenger-config --ruby-command
    # It shows output like this
    
    passenger-config was invoked through the following Ruby interpreter:
      Command: /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      Version: ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]
      To use in Apache: PassengerRuby /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      To use in Nginx : passenger_ruby /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      To use with Standalone: /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby /usr/bin/passenger start
    
    RoR应用程序内的目录/公共具有所有权限(chmod 777)

    让公共目录可执行不是个好主意。它可能包含用户上传的文件。只需将权限设置为755,并将chown设置为运行nginx(www-data)的用户或组

    我将乘客添加到nginx,这里的乘客库是如何描述它的

    看起来中的Passenger未配置。当您使用RVM时,您应该有另一个ruby可执行文件位置。若要获取ruby路径,请转到应用程序根并运行以下命令并替换
    Passenger\u ruby
    指令

    > cd /var/www/html/cennik
    > passenger-config --ruby-command
    # It shows output like this
    
    passenger-config was invoked through the following Ruby interpreter:
      Command: /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      Version: ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]
      To use in Apache: PassengerRuby /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      To use in Nginx : passenger_ruby /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      To use with Standalone: /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby /usr/bin/passenger start
    
    RoR应用程序内的目录/公共具有所有权限(chmod 777)


    使公共目录可执行不是个好主意。它可能包含用户上载的文件。只需将权限设置为755,并将chown设置为运行nginx(www-data)的用户或组.

    Hi,感谢您的想法。我添加了输出-看起来不错,并在cennik.conf第二次声明中确认:好,我将privilages更改为755。Hi,感谢您的想法。我添加了输出-看起来不错,并在cennik.conf第二次声明中确认:好,我将privilages更改为755。
    > cd /var/www/html/cennik
    > passenger-config --ruby-command
    # It shows output like this
    
    passenger-config was invoked through the following Ruby interpreter:
      Command: /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      Version: ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]
      To use in Apache: PassengerRuby /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      To use in Nginx : passenger_ruby /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby
      To use with Standalone: /home/deploy/.rvm/gems/ruby-2.3.5/wrappers/ruby /usr/bin/passenger start