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