1. 程式人生 > >Diango + uwsgi + nginx 專案部署(可外網訪問) Diango + uwsgi + nginx 專案部署(可外網訪問)

Diango + uwsgi + nginx 專案部署(可外網訪問) Diango + uwsgi + nginx 專案部署(可外網訪問)

轉載文章----Copyright ©2018 不懂得小白---連結:不懂得小白

 

Diango + uwsgi + nginx 專案部署(可外網訪問)

 

自己通過nginx uwsgi 部署django專案,查詢了很多資料,遇到了很多問題,最終完成了部署,趁著心情愉悅,寫個隨筆,為曾像我一樣苦尋解決方案的小夥伴們提供些思路。

安裝Nginx:

複製程式碼
 1 #安裝nginx
 2 sudo apt-get install nginx
 3 
 4 #一些有用的命令
 5 #啟動nginx
 6 sudo /etc/init.d/nginx start 
 7 #重啟nginx
 8sudo /etc/init.d/nginx restart
 9 #停止nginx
10 sudo /etc/init.d/nginx stop
11 
12 #很暴力的方法,我喜歡
13 sudo killall nginx
複製程式碼

安裝uwsgi:

1 pip install uwsgi
2 
3 #注意uwsgi需要在虛擬環境中執行

配置uwsgi:

複製程式碼
#在專案目錄中建立個conf資料夾,將nginx和uwsgi檔案都放進去,不是必須#但是個好習慣

#my_uwsgi.ini
ite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /to/your/project/#這個是專案的路徑
# Django's wsgi file
module          = project.wsgi#這個project要換成自己的專案名,也就是uwsgi.py所在的資料夾名
# the virtualenv (full path)
home            = /home/ubuntu/.virtualenvs/虛擬環境名#這個就是虛擬環境的路徑

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = 127.0.0.1:8080#這個用來和Nginx對接,埠號可以改,本人專案將uwsgi作為本地服務,外網不能直接訪問,用nginx作為代理,所以用本地的地址。
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
~                          
複製程式碼

配置nginx

複製程式碼
 1 #以下內容在mysite_nginx.conf中,這個檔名也可以隨意起
 2 # mysite_nginx.conf
 3 
 4 # the upstream component nginx needs to connect to
 5 upstream django {
 6     # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
 7     server 127.0.0.1:8080; #這個是用來跟uwsgi對接的,要和my_uwsgi.ini中寫一致
 8 }
 9 
10 # configuration of the server
11 server {
12     # the port your site will be served on
13     listen      8000;#這個埠是nginx用來監聽uwsgi的,預設的是80,總之專案是通過下面的server_name:8000來訪問的
14     # the domain name it will serve for
15     server_name xxx.xxx.xx.xx ; #這個ip就是伺服器的ip
16     charset     utf-8;
17 
18     # max upload size
19     client_max_body_size 75M;   # adjust to taste
20 
21     # Django media
22     location /media  {
23         alias /your/project/media;  #這個目錄是專案的meda目錄
24     }
25    location /static {
26         alias /your/project/static; # 這個目錄是專案的static目錄
27     }
28 
29     # Finally, send all non-media requests to the Django server.
30     location / {
31         uwsgi_pass  django;#這個是對接uwsgi的
32         include     uwsgi_params; # 這個引數按我這樣寫nginx就能找到的
33     }
34 }
35   
複製程式碼

將nginx配置檔案連結到啟動配置目錄:

#注意修改下面的路徑及檔名,哈哈不要只複製貼上啊
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
修改django專案中的setting.py檔案,新增
#要將STATICFILES_DIRS =[os.path.join(BASE_DIR, 'static')]註釋掉,Debug在生產模式也要改成False

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

將靜態檔案打包,讓nginx代理:

python manage.py collectstatic

啟動nginx,uwsgi

 sudo /etc/init.d/nginx restart
#進入conf資料夾,或者說配置的uwsgi.ini檔案所在目錄
#uwsgi.ini改成自己的名字
uwsgi -i uwsgi.ini

訪問:

ip:port(埠為nginx.conf中配置的)

總結:

寫到這也差不多了,專案可以跑起來了,nginx,uwsgi高階配置還在學習中,希望本文對你有所幫助,謝謝。

最後再提醒下,網上有很多配置檔案的模板,將我寫註釋的地方對比修改下,別遺漏。

 

參考文件:https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

     http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html

 



        Copyright ©2018 不懂得小白

自己通過nginx uwsgi 部署django專案,查詢了很多資料,遇到了很多問題,最終完成了部署,趁著心情愉悅,寫個隨筆,為曾像我一樣苦尋解決方案的小夥伴們提供些思路。

安裝Nginx:

複製程式碼
 1 #安裝nginx
 2 sudo apt-get install nginx
 3 
 4 #一些有用的命令
 5 #啟動nginx
 6 sudo /etc/init.d/nginx start 
 7 #重啟nginx
 8sudo /etc/init.d/nginx restart
 9 #停止nginx
10 sudo /etc/init.d/nginx stop
11 
12 #很暴力的方法,我喜歡
13 sudo killall nginx
複製程式碼

安裝uwsgi:

1 pip install uwsgi
2 
3 #注意uwsgi需要在虛擬環境中執行

配置uwsgi:

複製程式碼
#在專案目錄中建立個conf資料夾,將nginx和uwsgi檔案都放進去,不是必須#但是個好習慣

#my_uwsgi.ini
ite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /to/your/project/#這個是專案的路徑
# Django's wsgi file
module          = project.wsgi#這個project要換成自己的專案名,也就是uwsgi.py所在的資料夾名
# the virtualenv (full path)
home            = /home/ubuntu/.virtualenvs/虛擬環境名#這個就是虛擬環境的路徑

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = 127.0.0.1:8080#這個用來和Nginx對接,埠號可以改,本人專案將uwsgi作為本地服務,外網不能直接訪問,用nginx作為代理,所以用本地的地址。
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
~                          
複製程式碼

配置nginx

複製程式碼
 1 #以下內容在mysite_nginx.conf中,這個檔名也可以隨意起
 2 # mysite_nginx.conf
 3 
 4 # the upstream component nginx needs to connect to
 5 upstream django {
 6     # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
 7     server 127.0.0.1:8080; #這個是用來跟uwsgi對接的,要和my_uwsgi.ini中寫一致
 8 }
 9 
10 # configuration of the server
11 server {
12     # the port your site will be served on
13     listen      8000;#這個埠是nginx用來監聽uwsgi的,預設的是80,總之專案是通過下面的server_name:8000來訪問的
14     # the domain name it will serve for
15     server_name xxx.xxx.xx.xx ; #這個ip就是伺服器的ip
16     charset     utf-8;
17 
18     # max upload size
19     client_max_body_size 75M;   # adjust to taste
20 
21     # Django media
22     location /media  {
23         alias /your/project/media;  #這個目錄是專案的meda目錄
24     }
25    location /static {
26         alias /your/project/static; # 這個目錄是專案的static目錄
27     }
28 
29     # Finally, send all non-media requests to the Django server.
30     location / {
31         uwsgi_pass  django;#這個是對接uwsgi的
32         include     uwsgi_params; # 這個引數按我這樣寫nginx就能找到的
33     }
34 }
35   
複製程式碼

將nginx配置檔案連結到啟動配置目錄:

#注意修改下面的路徑及檔名,哈哈不要只複製貼上啊
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
修改django專案中的setting.py檔案,新增
#要將STATICFILES_DIRS =[os.path.join(BASE_DIR, 'static')]註釋掉,Debug在生產模式也要改成False

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

將靜態檔案打包,讓nginx代理:

python manage.py collectstatic

啟動nginx,uwsgi

 sudo /etc/init.d/nginx restart
#進入conf資料夾,或者說配置的uwsgi.ini檔案所在目錄
#uwsgi.ini改成自己的名字
uwsgi -i uwsgi.ini

訪問:

ip:port(埠為nginx.conf中配置的)

總結:

寫到這也差不多了,專案可以跑起來了,nginx,uwsgi高階配置還在學習中,希望本文對你有所幫助,謝謝。

最後再提醒下,網上有很多配置檔案的模板,將我寫註釋的地方對比修改下,別遺漏。

 

參考文件:https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

     http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html