阿里雲部署Django + Nginx + uWSGI

實驗環境

操作系統:Ubuntu 16.04.6

python: 3.7.6

Django: 2.2

Nginx: 1.10.3

uWSGI: 2.0.18

安裝

  這部分一般沒什麼問題,網上教程也很多,nginx 和 uWSGI 我是用 apt-get installpip3 安裝的,雖然安裝的版本可能有點舊,但是省了麻煩

配置

  Nginx 的配置確實頭疼,每個人的項目、系統、版本都不同,導致每個人配置的結果也是各不相同。直接套用博客基本很難成功

  所以我這裏的配置過程也主要是自己記錄一下,確保自己下次配置更加順利

配置Django

  使用Xftp將整個Django項目文件拖到 /home 目錄下

修改settings.py

  • DEBUG=False
  • ALLOWED_HOSTS = [’*’,](也可以改的更詳細,不過這樣省心)

確保有一個靜態文件目錄和一個媒體文件目錄

MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

將靜態文件拷貝到目錄下

  按照Django的方式,一般每個應用下都有一個靜態文件目錄,此時需要將它們全部拷貝到創建好的這個目錄下,使用Django自帶的命令完成拷貝

python manage.py collectstatic

配置 Nginx

​  首先寫配置文件,在項目目錄下創建一個 .conf 文件,作爲該項目的配置文件

upstream django {
    # 端口號可以改
	server 127.0.0.1:8083;
}

server {
    # 監聽端口
	listen		8080;
    # 這裏我看博客裏說可以寫域名,但是還要配置dns,我這裏直接寫的IP地址
	server_name	***.***.***.***;
	charset		utf-8;
	client_max_body_size 75M;
	
	location /media {
        # 這裏寫前面創建的資源文件目錄地址
		alias /home/MyBlog/uploads;
	}

	location /static {
        # 這裏寫前面創建的靜態文件目錄地址
		alias /home/MyBlog/static;
	}

	location / {
		uwsgi_pass django;
        # 從 /etc/nginx/ 目錄拷貝來的
		include /home/MyBlog/uwsgi_params;
	}
}

  此時Nginx還不知道使用此文件作爲配置文件

​ Nginx 的配置,通過修改 /etc/nginx/nginx.conf 文件實現,在文件中 http 配置部分包含着這麼一行

include /etc/nginx/sites-enabled/*;

  所以在該目錄下創建一個剛寫的配置文件的軟鏈接

ln -s /home/<項目目錄名>/***.conf /etc/nginx/sites-enabled/***.conf

  這裏一定要用絕對路徑,第一次用相對路徑,然後查看端口監聽情況發現8080端口沒有被nginx監聽,找了半天問題發現是用了相對路徑根本沒有鏈接到

  鏈接好後,依次使用以下命令應用配置文件(Nginx服務已經開啓)

nginx -t
nginx -s reload

​  一切順利,Nginx已經使用配置文件重啓了服務,可以使用 netstat -tnlp 查看端口監聽情況

配置uWSGI

  創建 .ini 文件作爲uWSGI 啓動的參數

[uwsgi]
# 項目目錄
chdir=/home/MyBlog
# 導入項目的wsgi模塊
module=MyBlog.wsgi:application
wsgi-file=MyBlog/wsgi.py
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=500
# 剛剛在nginx配置文件中反向代理的端口號
socket=:8083
uid=root
gid=www-data
daemonsize= /var/log/uwsgi/MyBlog.log
log-maxsize=50000000
disable-logging=true

  裏面有些參數不是必要的,因爲配置的時候也是一知半解,看有的博客裏有就寫上了

  接下來啓動uWSGI

sudo uwsgi --ini <剛寫的.ini文件>

運行

  一切順利後,在pc瀏覽器中輸入IP和端口號,就能看見Django項目了

調試

  Nginx日誌文件地址 /var/log/nginx/error.log

  查看監聽情況 netstat -tnlp

參考資料

Nginx+uWSGI+Django部署web服務器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章