部署 又在坑里待一天 Nginx Passenger 部署中的小问题

syutran · April 16, 2017 · Last by ecnelises replied at April 18, 2017 · 3404 hits

首先,遇到的第一个问题,当然是 assets,CSS 不能正常显示。

解决办法: 把 "config/environments/production.rb" 中的 "config.assets.compile = false" 改为 "config.assets.compile = true" ; 使用下面这个命令编译(压缩)了无数遍,终于成功了。

RAILS_ENV=production bin/rails assets:precompile

不知道"=true"和"=false" 是个什么鬼,到底是使用编译(压缩)啊?还是不使用编译(压缩)啊?

第二个问题:访问"3000"端口正常,访问"80"端口报错:

We're sorry, but something went wrong.If you are the application owner check the logs for more information.

难就难在这儿了~ nginx.conf 配置了 10+ 次,最后还是出在 nginx.conf 上了。

server {
  listen       80;
  server_name  192.168.3.80;
  passenger_enabled on;
  rails_env production;


  location / {
      root   /home/wotogo/devices/public;
      index  default.php index.php index.html index.htm;
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
      root   html;
  }
}

这个配置是正确的。折腾的时候在两个地方都加了 "passenger_enabled on;" 和 "root /home/wotogo/devices/public" ,反反夫妇(复复)。一直是访问“3000”正常,访问“80”报错。log 也看过了,里没有什么东西。一直觉得,得先运行 "rails s -e production" nginx 才能找到进程,后来才明白,没必要,nginx 能找到目录并调用 ruby 去运行。这一点,google 根本没有告诉我!!!

"server_name" 也让我纠结,因为我的域名还没“实名”,暂用 IP 地址。却不知道这个“server_name”该设为“127.0.0.1”还是 "0.0.0.0" 还是“192.168.3.80”还是公网 IP 呢?这真是个问题~

marking...

Rails 的部署的确没有 PHP 省事。但是却给了更大的控制权。

我大概看了下,你说的问题,都是没有理解那些参数本来的意思,可以先查文档看看说明。

大部分坑,踩过一次下次就会熟悉的,下次就发帖,部署好简单好爽快。😀

我配过一个 apache + passenger + sinatra 的。。。 看起来有点小儿科了。。。

这个配置是拷 PHP 项目的吧,建议去看 passenger 文档。

对于你根本没学会的东西能叫坑?你应该是又在你的"懒惰"这个坑里待了一天

特别烦就是你们这种“坑”的说法。别人辛苦开发 nginx 和 passenger 免费让你用,你不感谢就算了却说别人做的东西是在坑你?

其实顺序错了,应该是先手动部署,把 rails 的套路摸索一遍,然后再上 cap 或者 mina 这类工具。这样会平滑很多

Reply to nong

我觉得不完全对。 如果说是因为自己没有看文档,出了问题,这个不能叫坑。 如果是「正常情况下」不会发生,文档也没说,甚至网上都不一定搜的出来的问题,可以算坑。 就像返回 nil 和抛出异常的区别。

You need to Sign in before reply, if you don't have an account, please Sign up first.