背景:今天又進行了一次項目部署(第N+1次項目部署了),所以決定整理出一份完整的材料,下次直接CTRL+C、CTRL+V就OK了。
一、Django項目配置
項目創建就不多說了,並且個人建議創建虛擬環境。
更改setting.py文件
DEBUG = False
ALLOW_HOSTS = ['*'] #表示可以訪問服務器的ip,*表示所有
二、uWSGI配置
-
安裝uWSGI
pip install uwsgi
-
在項目目錄下新建
uwsgi.ini
用於填寫配置文件[uwsgi] socket = 127.0.0.1:8080 # 和nginx通信的端口,直接做web服務器時把socket換成http chdir = /home/nginx_test # 項目路徑(我的測試項目叫test) wsgi-file = /home/nginx_test/nginx_test/wsgi.py # wsgi.py文件的路徑 processes = 4 threads = 2 master = true pidfile = uwsgi.pid # pid文件,用於腳本啓動、停止進程 daemonize = uswgi.log # 日誌文件
-
啓動uWSGI
啓動前注意:
- 啓動前最好使用
python manage.py runserver
先測試啓動一下,確保沒有任何問題 - uwsgi的日誌會在
uwsgi.ini
的相對路徑下生成,如果有錯誤可以在此日誌(uwsgi.log)裏進行查看
啓動:uwsgi --ini uwsgi.ini 停止:uwsgi --stop uwsgi.pid 重啓:uwsgi --reload uwsgi.pid
如下表示啓動成功:
(venv) [root@localhost nginx_test]# uwsgi --ini uwsgi.ini [uWSGI] getting INI configuration from uwsgi.ini (venv) [root@localhost nginx_test]#
- 啓動前最好使用
三、Nginx配置
-
安裝Nginx
我下載的是nginx-1.9.9,其他的請訪問:http://nginx.org/download/
cd /home/ # 找一個目錄下載 Nginx yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel # 安裝依賴包 wget http://nginx.org/download/nginx-1.9.9.tar.gz # 下載源碼包 tar -zxf nginx-1.9.9.tar.gz # 解壓源碼包 cd nginx-1.9.9/ # 進入目錄 ./configure --prefix=/usr/local/nginx # 安裝路徑爲/usr/local/nginx make && make install # 編譯安裝
-
啓動Nginx
/usr/local/nginx/sbin/nginx # 啓動 /usr/local/nginx/sbin/nginx -s stop # 停止 /usr/local/nginx/sbin/nginx -s reload # 重啓
沒有任何提示說明啓動成功
啓動後在瀏覽器上輸入虛擬機或服務器的IP測試一下,下圖說明Nginx啓動成功:如果無法訪問可能是防火牆的問題:
關閉防火牆:systemctl stop firewalld.service
禁止防火牆開機自啓動:systemctl disable firewalld.service -
配置nginx.conf
打開/usr/local/nginx/conf/nginx.conf
文件,按照下列各式修改或者添加user root; #在文件的開頭加上 http { ...... server { listen 80; #需要監控的端口 server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8080; #與uwsgi中ip:端口相同 uwsgi_send_timeout 600; } #靜態文件 location /static { alias /home/nginx_test/static/; #靜態文件路徑 } } ...... }
修改後的樣子(文字太多,沒截全,紅框爲修改的內容):
-
重啓Nginx
/usr/local/nginx/sbin/nginx # 啓動 /usr/local/nginx/sbin/nginx -s stop # 停止 /usr/local/nginx/sbin/nginx -s reload # 重啓
-
測試
80端口可以忽略不寫
urls.py:
views.py
四、配置完成報錯後如何排查
- ip是否正確
- 端口是否正確(Nginx配置文件中設置的:listen 80)
- Nginx和uwsgi連接是否正確(nginx.conf和uwsgi.ini中連接的ip端口是否一致)
- 項目是否可啓動(使用
python manage.py runserver
測試)