【已過(guò)期】FastRunner(后端)生產(chǎn)模式uWSGI+Nginx+Supervisor+Python虛擬環(huán)境部署

最新版請(qǐng)參考
https://github.com/lihuacai168/AnotherFasterRunner

1.安裝uWSGI

pip install uWSGI

2.uWSGI配置uwsgi.ini

[uwsgi]

# 設(shè)置變量
project = FasterRunner
base = /home/faster

# 通過(guò)引用變量的方式設(shè)置Django項(xiàng)目根路徑
chdir = %(base)/%(project)
# Django項(xiàng)目的wsgi配置
module = %(project).wsgi:application

master = true
processes = 4

# socket 通信文件
socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

3.配置Django的settings文件wsgi.py

Django設(shè)置多配置文件(生產(chǎn)和開(kāi)發(fā))

import os

from django.core.wsgi import get_wsgi_application

# 指定Django使用生產(chǎn)配置FasterRunner.settings.pro
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'FasterRunner.settings.pro')

application = get_wsgi_application()

3.1測(cè)試uWSGI

# 進(jìn)入Django項(xiàng)目的根路徑
cd /home/faster/FasterRunner
# 運(yùn)行uwsgi 
uwsgi --ini ./uwsgi.ini

4.Nginx配置uwsgi.conf,最好通過(guò)include的方式導(dǎo)入配置

server {
   # 監(jiān)聽(tīng)8000端口
    listen       8000;
   # 服務(wù)器ip
    server_name  10.0.3.57;

    location / {
        include         uwsgi_params;
        # 需要和uwsgi.ini 中的 socket 通信文件一樣
        uwsgi_pass     unix:/home/faster/FasterRunner/FasterRunner.sock;
    }
}

4.1Nginx測(cè)試

# 啟動(dòng)nginx
systemctl start nginx

# 測(cè)試Nginx配置文件
nginx -t

# 重新加載,使Nginx配置文件生效  
nginx -s reload

# 查看當(dāng)前端口監(jiān)聽(tīng),確認(rèn)8000端口被Nginx監(jiān)聽(tīng)
(fasterenv) [root@faster_3_57 FasterRunner]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      27106/nginx: master 

5.Supervisor管理uWSGI

supervisor守護(hù)進(jìn)程虛擬環(huán)境部署Django

創(chuàng)建uWSGI啟動(dòng)的配置文件uwsgi.conf
command 中需要指定uwsgi的絕對(duì)路徑.此處是虛擬環(huán)境中的uwsgi路徑
Supervisor配置的注釋是;
[program:uwsgi]
command= /home/faster/.virtualenvs/fasterenv/bin/uwsgi --ini ./uwsgi.ini
directory=/home/faster/FasterRunner
stopasgroup=true
stopsignal=QUIT
user=faster
autostart=true
autorestart=true
stderr_logfile=/home/faster/err.log
stdout_logfile=/home/faster/out.log

5.1通過(guò)Supervisor啟動(dòng)uWSGI

# 啟動(dòng)Supervisor
supervisord -c  /etc/supervisord.conf

# 重啟整個(gè) supervisor的服務(wù)
 supervisorctl reload

# 指定啟動(dòng)uwsgi,此處是program后跟隨的名字
supervisorctl start uwsgi

# 停止uwsgi
supervisorctl stop uwsgi

6.uWSGI日志拋出異常Permission denied

tailf  /var/log/nginx/error.log

2019/06/15 15:41:01 [crit] 29077#0: *65 connect() to unix:/home/faster/FasterRunner/FasterRunner.sock failed (13: Permission denied) while connecting to upstream, 
client: 192.168.24.131, server: 10.0.3.57, request: "OPTIONS /api/user/login/ HTTP/1.1",
upstream: "uwsgi://unix:/home/faster/FasterRunner/FasterRunner.sock:", host: "10.0.3.57:8000", referrer: "http://10.0.3.57:8080/fastrunner/login"

6.1修改Nginx啟動(dòng)用戶(hù)

# 找到Nginx當(dāng)前主配置
[root@faster_3_57 FasterRunner]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 編輯Nginx主配置
vim /etc/nginx/nginx.conf
#user nginx;
user faster;
# 測(cè)試Nginx配置文件
nginx -t

# 重新加載,使Nginx配置文件生效  
nginx -s reload

6.2異常原因分析

  • 修改Nginx啟動(dòng)用戶(hù)前,默認(rèn)Nginx用戶(hù)啟動(dòng),因?yàn)闄?quán)限問(wèn)題,無(wú)法訪問(wèn)uWSGI的sock文件
(fasterenv) [root@faster_3_57 faster]# ps -ef|grep nginx
root     27106     1  0 15:01 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx    29077 27106  0 15:40 ?        00:00:00 nginx: worker process
root     29132 23308  0 15:41 pts/1    00:00:00 grep --color=auto nginx
  • 查看uWSGI 啟動(dòng)用戶(hù),是faster
(fasterenv) [root@faster_3_57 faster]# ps -ef|grep uwsgi
faster   27354 28184  0 15:06 ?        00:00:00 /home/faster/.virtualenvs/fasterenv/bin/uwsgi --ini ./uwsgi.ini
faster   27358 27354  0 15:06 ?        00:00:00 /home/faster/.virtualenvs/fasterenv/bin/uwsgi --ini ./uwsgi.ini
faster   27359 27354  0 15:06 ?        00:00:00 /home/faster/.virtualenvs/fasterenv/bin/uwsgi --ini ./uwsgi.ini
faster   27360 27354  0 15:06 ?        00:00:00 /home/faster/.virtualenvs/fasterenv/bin/uwsgi --ini ./uwsgi.ini
faster   27361 27354  0 15:06 ?        00:00:00 /home/faster/.virtualenvs/fasterenv/bin/uwsgi --ini ./uwsgi.ini
root     29325 23308  0 15:45 pts/1    00:00:00 grep --color=auto uwsgi
  • 修改Nginx啟動(dòng)用戶(hù)為faster(和啟動(dòng)uWSGI的用戶(hù)一樣),就闊以正常訪問(wèn)啦~~~
[root@faster_3_57 FasterRunner]# ps -ef|grep nginx
root     27106     1  0 15:01 ?        00:00:00 nginx: master process /usr/sbin/nginx
faster   29451 27106  0 15:47 ?        00:00:00 nginx: worker process
root     32093 22403  0 16:37 pts/0    00:00:00 grep --color=auto nginx
[root@faster_3_57 FasterRunner]# tailf  /var/log/nginx/access.log
"http://10.0.3.57:8080/fastrunner/api_record/5" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"
192.168.24.131 - - [15/Jun/2019:16:40:09 +0800] "GET /api/fastrunner/tree/5/?token=4ee722ce4d8d5fdb9c5894879efb9760&type=1 HTTP/1.1" 200 966 "http://10.0.3.57:8080/fastrunner/api_record/5" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"
192.168.24.131 - - [15/Jun/2019:16:40:15 +0800] "GET /api/fastrunner/api/?token=4ee722ce4d8d5fdb9c5894879efb9760&node=66&project=5&search= HTTP/1.1" 200 13316 "http://10.0.3.57:8080/fastrunner/api_record/5" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"
192.168.24.131 - - [15/Jun/2019:16:40:18 +0800] "OPTIONS /api/user/login/ HTTP/1.1" 200 0 "http://10.0.3.57:8080/fastrunner/login" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"
192.168.24.131 - - [15/Jun/2019:16:40:18 +0800] "POST /api/user/login/ HTTP/1.1" 200 112 "http://10.0.3.57:8080/fastrunner/login" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"
192.168.24.131 - - [15/Jun/2019:16:40:18 +0800] "GET /api/fastrunner/project/?token=c4cd03206ac7e0deb42d1c2618624b75 HTTP/1.1" 200 593 "http://10.0.3.57:8080/fastrunner/project_list" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趁蕊,一起剝皮案震驚了整個(gè)濱河市脏榆,隨后出現(xiàn)的幾起案子鞋屈,更是在濱河造成了極大的恐慌帆吻,老刑警劉巖蜜猾,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雄坪,死亡現(xiàn)場(chǎng)離奇詭異九杂,居然都是意外死亡鸵贬,警方通過(guò)查閱死者的電腦和手機(jī)祷嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)屎媳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)夺溢,“玉大人,你說(shuō)我怎么就攤上這事烛谊》缦欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵丹禀,是天一觀的道長(zhǎng)状勤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)湃崩,這世上最難降的妖魔是什么荧降? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮攒读,結(jié)果婚禮上朵诫,老公的妹妹穿的比我還像新娘。我一直安慰自己薄扁,他們只是感情好剪返,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著邓梅,像睡著了一般脱盲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上日缨,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天钱反,我揣著相機(jī)與錄音,去河邊找鬼匣距。 笑死面哥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毅待。 我是一名探鬼主播尚卫,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼尸红!你這毒婦竟也來(lái)了吱涉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤外里,失蹤者是張志新(化名)和其女友劉穎怎爵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盅蝗,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳖链,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了风科。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撒轮。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贼穆,靈堂內(nèi)的尸體忽然破棺而出题山,到底是詐尸還是另有隱情,我是刑警寧澤故痊,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布顶瞳,位于F島的核電站,受9級(jí)特大地震影響愕秫,放射性物質(zhì)發(fā)生泄漏慨菱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一戴甩、第九天 我趴在偏房一處隱蔽的房頂上張望符喝。 院中可真熱鬧,春花似錦甜孤、人聲如沸协饲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茉稠。三九已至,卻和暖如春把夸,著一層夾襖步出監(jiān)牢的瞬間而线,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工恋日, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膀篮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓谚鄙,卻偏偏與公主長(zhǎng)得像各拷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闷营,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361