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

syutran · 2017年04月16日 · 最后由 ecnelises 回复于 2017年04月18日 · 2562 次阅读

首先,遇到的第一个问题,当然是 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 这类工具。 这样会平滑很多

nong 回复

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册