創(chuàng)建時(shí)間:20161223
本章小目標(biāo)
- 安裝nginx
- 部署已有的hi_weui項(xiàng)目
- 采用uwsgi方式部署
- 采用supervisor管理應(yīng)用進(jìn)程
- 總結(jié)常用的操作命令
- 總結(jié)常用的配置
參考鏈接
- 基于nginx和uWSGI在Ubuntu上部署Django, 講得比較詳細(xì)
- 自強(qiáng)學(xué)堂腕巡,參考其supervisor用法
- 菜鳥教程
1 安裝nginx,uwsgi颈渊,supervisor等
參考上面鏈接逛漫,略
2 編輯uwsgi啟動(dòng)配置文件
在hi_weui的項(xiàng)目目錄下創(chuàng)建文件
$ pwd
/home/bit/coding_app/hi_weui
$ cat hi_weui_uwsgi.ini
[uwsgi]
# the base directory (full path)
chdir=/home/bit/coding_app/hi_weui
# Django's wsgi file
module=hi_weui.wsgi
# the virtualenv (full path)
home=/home/bit/.virtualenvs/realkpi
master=true
processes = 8
threads = 4
vacuum = true
chmod-socket = 666
socket = /home/bit/coding_app/hi_weui/hi_weui.sock
3 編輯supervisor配置文件
同樣放在hi_weui項(xiàng)目目錄下
$ pwd
/home/bit/coding_app/hi_weui
(sudo) echo_supervisord_conf > ./supervisord.conf
$ tail supervisord.conf #只是在模板后面增加hi_weui相關(guān)配置
;files = relative/directory/*.ini
[program:hi_weui]
command=/home/bit/.virtualenvs/realkpi/bin/uwsgi --ini /home/bit/coding_app/hi_weui/hi_weui_uwsgi.ini
directory=/home/bit/coding_app/hi_weui
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
4 編輯nginx服務(wù)配置文件
在nginx目錄下創(chuàng)建
$ pwd
/etc/nginx/sites-available
$ cat hi_weui_nginx.conf
upstream django{
#server localhost:8001;
server unix:///home/bit/coding_app/hi_weui/hi_weui.sock;
}
server {
listen 8087;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /home/bit/coding_app/hi_weui/media;
}
location /static {
alias /home/bit/coding_app/hi_weui/collected_static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
5 激活nginx 對(duì)hi_weui的服務(wù)
其實(shí)就是創(chuàng)建了一個(gè)鏈接
$ sudo ln -s /etc/nginx/sites-available/hi_weui_nginx.conf /etc/nginx/sites-enabled/hi_weui_nginx.conf
$ ls -l ../sites-enabled/
total 0
lrwxrwxrwx 1 root root 34 Dec 26 16:22 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 45 Dec 27 11:23 hi_weui_nginx.conf -> /etc/nginx/sites-available/hi_weui_nginx.conf
6 訪問流總結(jié)
整理一下思路:
按照現(xiàn)有的配置匪煌,大致過程如下稽揭。
- 網(wǎng)頁訪問nginx服務(wù):localhost:8087
- nginx接到socket:
server unix:///home/bit/coding_app/hi_weui/hi_weui.sock;
- socket接到uwsgi:
socket = /home/bit/coding_app/hi_weui/hi_weui.sock
- uwsgi加載模塊:
module=hi_weui.wsgi
- 模塊由django最終提供服務(wù)。
7 啟動(dòng)服務(wù)
7.1 測(cè)試在django開發(fā)服務(wù)上正常
$ sh start.sh react
訪問:http://127.0.0.1:8088/
執(zhí)行一次start.sh腳本的目的是重新編譯一次應(yīng)用浪蹂,并搜集相關(guān)靜態(tài)文件到collected_static目錄下
$ sh stop.sh #關(guān)掉開發(fā)服務(wù)器
7.2 啟動(dòng)nginx
$ sudo service nginx restart
訪問:http://127.0.0.1:8087/ 此時(shí)還無法正常顯示
訪問:http://127.0.0.1:80 看到正常的nginx提示頁面
7.3 啟動(dòng)supervisor
用之前寫好的配置文件啟動(dòng)
$ pwd
/home/bit/coding_app/hi_weui
$ supervisord -c supervisord.conf
$ supervisorctl #打開客戶端管理抵栈,看到hi_weui已經(jīng)啟動(dòng)了
hi_weui RUNNING pid 17202, uptime 0:00:39
supervisor> status
hi_weui RUNNING pid 17202, uptime 0:00:42
supervisor> help 可以看更多命令幫助
supervisor> stop hi_weui #停應(yīng)用
hi_weui: stopped
supervisor> restart hi_weui #重啟應(yīng)用
hi_weui: ERROR (not running) #因?yàn)閯傄呀?jīng)停止了
hi_weui: started
訪問:http://127.0.0.1:8087/ 此時(shí)已經(jīng)可以正常顯示。
為什么用supervisor呢? 如果nginx上同時(shí)啟動(dòng)了許多項(xiàng)目坤次,則可以通過nginx啟停所有項(xiàng)目古劲,或者是通過supervisor分別啟停1個(gè)項(xiàng)目。
8 訪問日志
8.1 nginx配置文件
/etc/nginx$ cat nginx.conf
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
可以看到對(duì)應(yīng)的日志目錄
8.2 關(guān)于django print日志輸出
部署在nginx上后浙踢,print輸出是不顯示的绢慢,如果要打印日志。推薦使用python logging模塊洛波,可以在django的settings文件上配置胰舆。
從第1回到這里,就已經(jīng)完成了react項(xiàng)目的腳手架蹬挤,并集成到django缚窿,最終部署到nginx上。