艰难完成 nginx + puma 部署 rails 4的详细记录
花了两周时间Google部署方法,找的的许多方法都没有用,最终被我用控制变量法,一条一条修改配置文件修改成功了。
首先是/etc/nginx/vhosts/limlog.sloger.info.conf和config/puma.rb
# #/etc/nginx/vhosts/limlog.sloger.info.conf # upstreamlimlog{ serverunix:///tmp/limlog.sock; } server{ listen80; server_namelimlog.sloger.info; root/srv/http/limlog.sloger.info/public; access_log/var/log/nginx/limlog-access.log; error_log/var/log/nginx/limlog-error.loginfo; location/{ expiresmax; add_headerCache-Controlpublic; proxy_redirectoff; proxy_set_headerHost$http_host; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; proxy_passhttp://limlog; } location~^/assets/{ expires1y; gzip_staticon; add_headerETag""; add_headerCache-Controlpublic; break; } }
#!/usr/bin/envruby-w # #config/puma.rb # rails_env=ENV['RAILS_ENV']||'development' threads4,4 bind'unix:///tmp/limlog.sock' pidfile'/tmp/limlog.pid' state_path'/tmp/limlog.state' activate_control_app
把nginx配置文件里的rootserver_nameupstream修改成你的就行了,每个文件放在哪里,文件头部注释里面写了。
然后是修改config/environmens/production.rb
18行false改为true
#DisableRails'sstaticassetserver(Apacheornginxwillalreadydothis). config.serve_static_assets=true
29行取消注释
#Specifiestheheaderthatyourserverusesforsendingfiles. #config.action_dispatch.x_sendfile_header="X-Sendfile"#forapache config.action_dispatch.x_sendfile_header='X-Accel-Redirect'#fornginx
然后是app/controller/application_controller
第二行参数with::exception去掉
protect_from_forgery
然手是secret_key_base
我的做法是创建一个文件env.sh
#使用rakesecret生成key,然后粘贴在=后面 exportSECRET_KEY_BASE= #下面可以export各种环境变量
启动
启动或者重启nginx
导入环境变量sourceenv.sh
启动railsbundleexec-Cconfig/puma.rb-eproduction
现在就部署完毕了,最令人头疼的assets也解决了~