RubyOnRails终极部署
最近寫了好多個ror的項目,學校的博物館主頁,招生就業處的網站,學生公寓管理中心的網站,還有一個fancy book項目,在線書籍編輯平臺,fancy hit,是工大的類fancy平臺,叫二手實在是太土了。geek云集的地方,彼此交流是必要的嘛。
但是,這么多項目,在我的服務器上只能用端口形式,不是很憋屈嗎。于是我開了多個二級域名。打算將他們都部署起來。無奈passenger是個很難整的組件,好在現在我解決了。
passenger怎么實現的我是不清楚。
總之 需要先 gem install passenger 安裝passenger的組件
之后是?passenger-install-nginx-module 安裝nginx
但是,平時開發是在development的環境下的。。passenger只能部署項目的production版本
于是我們需要在 在 config/database.yml 添加下production版本的配置
之后需要
bundle exec rake RAILS_ENV=production db:create
bundle exec rake RAILS_ENV=production db:migrate
將production的數據庫創建,并改變表結構
這是其實production的配置已經完成了
說下nginx 下server的配置項,在/path/nginx/conf/nginx.conf 中修改配置文件,添加如下:
? ?server {
? ? ? listen 80;
? ? ? server_name mrpeach.me;
? ? ? root /home/cain/bookwiki/public; ? # <--- be sure to point to 'public'!
? ? ? passenger_enabled on;
? ?}
這里我是將我的bookwiki項目給部署了。所以有注釋那行的路徑大家應該能看懂。
之后改下.bash_profile 添加
# restart nginx
alias startnginx='sudo /home/cain/nginx/sbin/nginx'
alias killnginx='sudo kill `cat /home/cain/nginx/logs/nginx.pid`'
alias restartnginx='killnginx; startnginx'
這樣以后在console里就能 用 restartnginx 快速重啟nginx了。是不是很high。alias是命令重寫,可以簡單組合bash代碼變成一條新命令,很方便的
這時訪問我的域名 mrpeach.me 會出現something wrong的錯誤。
于是我去看了下位于 bookwiki/log/production.log 的log文件,發現說
ActionView::Template::Error (application.css isn't precompiled):
這是因為此時,rails已經不全是運行時加載了。里面的全局設置項,類似于全局css文件,都是編譯過的了。
所以我將 config/environments/production.rb 里的配置項
config.assets.compile = true 改成如上那樣,意思就是字面意思。
保存后運行
bundle exec rake assets:precompile 就ok啦
這時終端下 restartnginx重啟 nginx。。再訪問就沒有問題了。
關于用passenger部署,我折騰了好久才搞明白。其實它就是不能部署development。要是早發現這點,就不用妄廢我那么多時間精力了。
總結
以上是生活随笔為你收集整理的RubyOnRails终极部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6/6 音视频技术大咖在线直播,教你开发
- 下一篇: 自定义VB程序加密方案