之前在http://www.reibang.com/p/94e43753f80a上已經(jīng)部署好生產(chǎn)環(huán)境窟赏,現(xiàn)在需要配置nginx妓柜。
步驟1:安裝 Nginx + Passenger 快方法:用套件安裝
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
$ sudo apt install -y apt-transport-https ca-certificates
# Add our APT repository
$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'
$ sudo apt update
# Install Passenger + Nginx
$ sudo apt install -y nginx-extras passenger
如果有遇到問(wèn)題:https://stackoverflow.com/questions/28818597/nginx-and-passenger-dependencies-issue-digital-ocean-deployment
打開(kāi)你的瀏覽器,輸入 服務(wù)器 IP 地址涯穷,應(yīng)該就可以看到默認(rèn)的 Nginx 網(wǎng)頁(yè)了:Welcome to nginx on Ubuntu!
Nginx啟動(dòng)和重開(kāi)用法:
$ sudo service nginx start
$ sudo service nginx stop
$ sudo service nginx restart
步驟2:設(shè)定 Nginx
編輯 /etc/nginx/nginx.conf棍掐,去掉注釋打開(kāi)以下一行:
include /etc/nginx/passenger.conf;
在 /etc/nginx/nginx.conf最上方新增一行:
env PATH;
少這一行的話,等會(huì) Rails 會(huì)找不到 nodejs 的路徑拷况,在 nginx error log 中會(huì)有 Message from application: There was an error while trying to load the gem ‘uglifier’. Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. 的錯(cuò)誤作煌。
新增 /etc/nginx/sites-enabled/your_project_name.conf
server {
listen 80;
server_name huangpeidong.xin; //你的域名,如果沒(méi)有域名赚瘦,就用ip
root /home/hpd/ieltsbro_production/hpd_ieltsbro/public; //你的工程的public目錄
passenger_enabled on;
passenger_min_instances 1;
location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
}
以上設(shè)定包括設(shè)定Assets靜態(tài)檔案成為永不過(guò)期(Rails的Assets Pipeline會(huì)加上版本號(hào)粟誓,所以不需要擔(dān)心)、設(shè)定Passenger至少開(kāi)一個(gè)Process起意。其中server_name your_domain.com請(qǐng)會(huì)換成你的domain鹰服。如果Domain name還沒(méi)注冊(cè)好,可以先用服務(wù)器IP地址杜恰。但是如果你的服務(wù)器上有多個(gè)Rails專案或網(wǎng)站获诈,就必須用不同domain來(lái)區(qū)分。
如果有多個(gè)domain連到同一個(gè)服務(wù)器心褐,可以用空白區(qū)隔舔涎,例如:
server_name huangpeidong.xin www.huangpeidong.xin;
這樣三個(gè) domain 都會(huì)連到同一個(gè) Rails 了。
最后執(zhí)行sudo service nginx restart便會(huì)啟用Nginx設(shè)定逗爹。如果之后你的Rails有任何修改要重新加載亡嫌,但是并不想把Nginx整個(gè)重開(kāi)嚎于,請(qǐng)?jiān)谀愕腞ails應(yīng)用程式目錄下執(zhí)行touch tmp/restart.txt即可,這樣Passenger就會(huì)知道要重新加載Rails挟冠,而不需要重開(kāi)Nginx于购。
參考文章:http://blog.csdn.net/ximi_qin287624952/article/details/70169614