Ubuntu下nginx+uwsgi部署Django項(xiàng)目

[TOC]

Ubuntu下nginx+uwsgi部署Django項(xiàng)目


項(xiàng)目環(huán)境

ubuntu 18.04
django 2.1.7
Python 3.6.6

一、安裝uwsgi,及配置

  • Xshell連接遠(yuǎn)程服務(wù)器,進(jìn)入虛擬環(huán)境,輸入命令
pip install uwsgi

或者通過pycharm安裝也可以,打開settings選項(xiàng)卡
通過pycharm安裝
  • 在項(xiàng)目目錄下創(chuàng)建配置文件 wang_blog/uwsgi.ini
# wang_blog/uwsgi.ini
[uwsgi]
# 使用nginx連接時(shí)使用,和我一樣就行
# socket = 127.0.0.1:8000  
# 項(xiàng)目的絕對(duì)路徑,在命令行輸入pwd查看
chdir = /home/pyvip/wang 
# 直接做web服務(wù)器使用,寫你自己的服務(wù)器ip地址
http = 192.168.159.128:8000 
# 項(xiàng)目名.wsgi
module = lublog.wsgi 
# settings文件所在路徑
wsgi-file = /home/pyvip/wang/wang/wsgi.py
# 不用修改
master = true
# 指定啟動(dòng)的工作的進(jìn)程數(shù)
processes = 4
# 指定工作進(jìn)程中的線程數(shù)
threads = 2
#monitor uwsgi status  通過該端口可以監(jiān)控 uwsgi 的負(fù)載情況
stats = 127.0.0.1:9191
# 后臺(tái)運(yùn)行,并輸出日志
daemonize = /var/log/uwsgi.log
# 設(shè)置虛擬環(huán)境路徑
virtualenv =  /home/pyvip/.virtualenvs/my_blog/

請(qǐng)反復(fù)確認(rèn)路徑是否正確,ip地址是否正確?。?!
請(qǐng)反復(fù)確認(rèn)路徑是否正確,ip地址是否正確?。?!
請(qǐng)反復(fù)確認(rèn)路徑是否正確,ip地址是否正確?。?!

  • 進(jìn)入項(xiàng)目目錄,使用uwsgi命令啟動(dòng)項(xiàng)目
    注:uwsgi.ini一定要在項(xiàng)目目錄下
(wang) pyvip@VIP:~$ cd /home/pyvip/wang
(wang) pyvip@VIP:~/wang$ ls
db.sqlite3  manage.py  my_blog  static  templates  uwsgi.ini  wang
(wang) pyvip@VIP:~/wang$ uwsgi --ini uwsgi.ini

看到下面開啟了4個(gè)進(jìn)程就成功了,根據(jù)配置不同,顯示的進(jìn)程數(shù)也不同

(wang) pyvip@VIP:~$ ps aux | grep uwsgi
laowang    483  0.0  0.1  14428  1072 pts/0    S+   12:31   0:00 grep --color=auto uwsgi
laowang  29873  0.3  6.2 189196 59272 ?        S    12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29895  0.0  5.3 262928 50592 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29897  0.0  5.3 262928 50592 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29899  0.1  6.3 273896 59836 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29900  0.0  6.2 273896 59260 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini

在瀏覽器輸入ip地址加端口號(hào),啟動(dòng)成功?。?!

這個(gè)時(shí)候是沒有圖片顯示的,如果有就是你瀏覽器緩存沒清除,接下來配置nginx就可以顯示圖片了

  • uwsgi停止命令sudo pkill -f uwsgi -9

二、安裝nginx,及配置

  • xshell 中輸入命令
sudo apt-get update
sudo apt-get install nginx
  • 添加配置文件到項(xiàng)目目錄下,除了修改注釋的內(nèi)容,其他和我一樣就行
# /home/pyvip/wang/mysite_nginx.conf
server {
    listen      80;
    # 寫你的IP地址,或者域名 .xxxxx.com 都行;域名解析備案什么的不說了
    server_name 192.168.159.128;
    charset     utf-8;

    location /static {
        # 寫你靜態(tài)文件的目錄
        alias /home/pyvip/wang/static;
    }

    location / {
        uwsgi_pass  127.0.0.1:8000;
        include     /etc/nginx/uwsgi_params; 
    }
}
  • /etc/nginx/sites-enabled 目錄下創(chuàng)建本文件的連接,使nginx能夠使用它:
(wang) pyvip@VIP:~/wang$ sudo ln -s /home/pyvip/wang/mysite_nginx.conf /etc/nginx/sites-enabled/
(wang) pyvip@VIP:~/wang$ ls /etc/nginx/sites-enabled/
default  mysite_nginx.conf
  • 修改uwsgi.ini,啟動(dòng)socket,關(guān)閉http
# wang_blog/uwsgi.ini
[uwsgi]
# 使用nginx連接時(shí)使用
socket = 127.0.0.1:8000
# 項(xiàng)目的絕對(duì)路徑,在命令行輸入pwd查看
chdir = /home/pyvip/wang
# 直接做web服務(wù)器使用
# http = 192.168.159.128:8000
# 項(xiàng)目名.wsgi
module = wang.wsgi
# settings文件所在路徑
wsgi-file = /home/pyvip/wang/wang/wsgi.py
# 不用修改
master = true
# 指定啟動(dòng)的工作的進(jìn)程數(shù)
processes = 4
# 指定工作進(jìn)程中的線程數(shù)
threads = 2
# 設(shè)置虛擬環(huán)境路徑
virtualenv =  /home/pyvip/.virtualenvs/my_blog/
  • 修改項(xiàng)目settings文件,和我一樣
DEBUG = False

ALLOWED_HOSTS = ['*']

# 這個(gè)文件路徑原來配置過就不用配置了,或者用我這個(gè),把你的注釋掉
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

  • 在項(xiàng)目文件夾下輸入命令python manage.py collectstatic,以保證靜態(tài)文件都在static下,如果后面圖片顯示不正確,可能就是沒輸入此命令
  • 檢測(cè)nginx配置是否出錯(cuò),然后重啟nginx,如果報(bào)錯(cuò)請(qǐng)看文末
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ sudo service nginx restart
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ ps aux | grep nginx
root       3510  0.0  0.0 140628  1532 ?        Ss   09:11   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   3511  0.0  0.3 143332  6168 ?        S    09:11   0:00 nginx: worker process
www-data   3512  0.0  0.3 143332  6168 ?        S    09:11   0:00 nginx: worker process
pyvip      3514  0.0  0.0  21536  1004 pts/0    S+   09:11   0:00 grep --color=auto nginx

配置成功,重啟成功

三、啟動(dòng)uwsgi,訪問域名或ip地址

  • 進(jìn)入項(xiàng)目目錄,命令行輸入啟動(dòng)命令
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ cd /home/pyvip/wang/
(wang) pyvip@VIP:~/wang$ uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
  • 訪問ip
    注:不需要輸入端口號(hào)
    成功!圖片也可以加載了,到此部署就完成了。

寫在最后:

  • 作者踩過的坑,nginx報(bào)錯(cuò)
(wang) pyvip@VIP:/etc/init.d$ sudo nginx -t
nginx: [emerg] open() "/etc/nginx/sites-enabled/mysite_nginx.conf" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed

sudo nginx -t 失敗可能是配置出錯(cuò),確認(rèn)mysite_nginx.conf配置無問題,再檢查 /etc/nginx/sites-enabled/ 下的配置文件和項(xiàng)目目錄下的配置文件是否一致,藍(lán)色文件名則說明是一致的。

作者原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處!我的博客地址 www.bloglu.cn 專注技術(shù)文章,風(fēng)景美圖,學(xué)習(xí)資源分享。
如果本文對(duì)你有幫助,點(diǎn)個(gè)贊支持一下作者吧!有任何問題歡迎下方留言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容