Nginx+Uwsgi+Django以及解決的一些問題


1.pip3 install uwsgi,項目目錄路徑:/data/my_env1/monitor1/,項目名:monitor1,app名:show

測試啟動:
ln -s /data/linkdood/im/vrv/python36/bin/uwsgi /user/bin/uwsgi
uwsgi --http 192.168.165.10:8000 --file monitor1/wsgi.py --static-map=/static=static
訪問http://192.168.165.10:8000 ,頁面可以正常訪問,表示項目啟動成功。

2.使用uwsgi配置文件啟動django項目:
在項目同級目錄創建script目錄,用於存放配置文件、生成的pid、socket,

創建uwsgi.ini,內容如下:

[uwsgi]
chdir=/data/my_env1/monitor1
wsgi-file=/data/my_env1/monitor1/monitor1/wsgi.py
socket=/data/my_env1/monitor1/script/uwsgi.sock
workers=4
pidfile=/data/my_env1/monitor1/script/uwsgi.pid
http=192.168.165.10:8000
static-map=/static=/data/my_env1/monitor1/static
uid=root
gid=root
master=true
vacuum=true
enable-threads=true
post-buffering=4096
daemonize=/data/my_env1/monitor1/script/uwsgi.log

uwsgi常用的三個命令,注意這里的停止和啟動,文件后綴是pid不是ini

uwsgi --ini uwsgi.ini
uwsgi --stop uwsgi.pid
uwsgi --reload uwsgi.pid  重載配置
至此,uwsgi+django就完美結合了,但是,光有uwsgi還不夠,uwsgi處理動態請求能力高,
但對於靜態請求(如static文件,css,js文件等)處理能力差,此時就要結合nginx一起使用

3.centos7用yum下載較新的nginx

# vi /etc/yum/repo.d/nginx.repo
[nginx]
nginx=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# yum -y install nginx
查看版本:nginx -v
啟動:nginx
停止:nginx -s stop
重啟:nginx -s reload

在nginx配置文件中添加內容如下:

# vi /etc/nginx/conf.d/default.conf
listen       80;
server_name  192.168.165.10;
location / {
    include uwsgi_params;
    uwsgi_pass unix:/data/my_env1/script/uwsgi.sock;
}
location /static {
    alias /data/monitor1/static;
}

修改Django項目的settings配置,DEBUG = False,此時訪問頁面會發現無法加載static文件,所以得有以下步驟:

# mkdir -p /data/monitor1/static
在settings文件中添加一行
STATIC_ROOT = '/data/monitor1/static'
# python manage.py collectstatic
但是參考的這篇博客把monitor1目錄給了777,我沒給,怕不安全,
就按照上面的做了,如果后續有什么錯的話,再參考這樣的做法.
# cd /data/
# mkdir monitor1
# chmod 777 monitor1
# cd monitor1/
# mkdir static

4.讓nginx去處理圖片:

location /media {
    autoindex on;
    alias /data/monitor1/media;
}

在沒有nginx,自己做調試DEBUG=Ture時,想讓Django去處理圖片,一般這么寫:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
然后在url.py中添加:
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我覺得在settings.py中,MEDIA_ROOT可以寫絕對路徑,雖然我沒試過,但應該可以;
這樣寫的:MEDIA_ROOT = os.path.join(BASE_DIR, '../media')
也就是在圖片存放在項目目錄的上一層.

 

參考博客地址:https://blog.csdn.net/Duke10/article/details/80971453


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM