Nginx+uWSGI部署Django項目

項目環境

服務器:阿里雲ECS;系統版本:centos8.0;Nginx版本:0.14.1;uWSGI版本:2.0.18;Python版本:3.6.0。html

項目依賴及版本以下:python

Django==2.0
django-mdeditor==0.1.17.1
django-model-utils==4.0.0
django-notifications-hq==1.6.0
Markdown==3.2.1
PyMySQL==0.9.3

登陸阿里雲控制檯開放端口

  1. 配置http80 和 Django服務的端口
  2. 配置uWSGI啓動Django服務
  • 在項目根目錄下建立uwsgi.ini文件,vi uwsgi.ini輸入如下內容:
[uwsgi]
#使用nginx鏈接時使用
socket=127.0.0.1:8000
#直接作web服務器使用 python manage.py runserver ip:port
#http=0.0.0.0:8000
#項目目錄
chdir=/root/project/myblog
#項目中wsgi.py文件的目錄,相對於項目目錄
wsgi-file=myblog/wsgi.py
#指定啓動的工做進程數
processes=2
#指定工做進程中的線程數
threads=2
#指定在這些進程裏有一個主進程
master=True
#保存啓動以後主進程的pid
pidfile=uwsgi.pid
#設置uwsgi後臺運行,uwsgi.log保存日誌信息
daemonize=uwsgi.log
#設置日誌文件最大字節數
log-maxsize = 100000
#設置每一個進程最大請求數
max-requests = 1000
#設置虛擬環境的路徑
virtualenv=/root/anaconda3/envs/myblog
也可參考 Django官方文檔Nginx中文文檔自定義配置。
  • uwsgi命令
啓動服務:uwsgi --ini uwsgi.ini
中止服務:uwsgi --stop uwsgi.pid

配置Nginx啓動靜態文件服務

  • 進入/etc/nginx/conf.d文件夾,新建本身的項目配置文件myproject.conf,輸入下面的配置。
server {
    listen 80;
        server_name ip;
        charset utf-8;
        client_max_body_size 75M;
        location /static {
        alias /root/project/myblog/static;
    }

    location /media {
        alias /root/project/myblog/media;
    }

    location / {
        uwsgi_pass 127.0.0.1:8000;
        include /etc/nginx/uwsgi_params;
    }

}
  • 重啓Nginx服務 service nginx restart

遇到的問題及解決方法

問題一:nginx靜態資源文件沒法訪問,403 forbidden錯誤
解決方法: 在 nginx.conf 配置文件頭部加user rootnginx

user root;
worker_processes 8;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
    worker\_connections 1024;
}
... ...
若是後臺站點樣式沒法顯示,則是未進行靜態文件收集操做的緣由,可在終端輸入 python manage.py collectstatic 解決。前提是許在 settings.py 文件配置好 STATIC_ROOT = os.path.join(BASE_DIR, "static")
相關文章
相關標籤/搜索