centos下Django+uwsgi+nginx

本篇章主要講解uwsgi和nginx的做用,並利用二者對django項目進行部署css

 

1、概述python

  在開發過程當中,咱們通常是在該項目的虛擬環境中啓用django自帶的web服務:python manage.py runserver 0.0.0.0:8000nginx

自帶的web服務僅僅是單線程運行,沒法處理較高的訪問數據git

項目須要部署最好仍是利用uwsgi搭建,它具備高性能,低內存,多app管理,多線程等功能,搭配nginx實現部署github

 2、uwsgi和nginx的做用和區別web

  參考博客:https://blog.csdn.net/dqchouyang/article/details/81639788django

  1.nginx是對外的服務器,客戶請求url經過nginx處理(反向代理)服務器

    2. uwsgi對內的服務器,主要處理靜態文件和動態請求
多線程

    3.uwsgi處理動態請求能力高,但對於靜態請求(如static文件,css,js文件等)處理能力差app

  

 

 3、uwsgi配置

  3.一、安裝uwsgi服務

    在確保該項目能夠跑動:python manage.py runserver 0.0.0.0:8000

    uwsgi是python的一個模塊

pip install uwsgi

   3.2 、相關配置

 3.2.一、經過命令行啓動

假設項目自帶虛擬環境,須要到虛擬環境下啓動:
uwsgi --http 172.21.0.2:8000 --file teacher/wsgi.py --static-map=/static=static

--http 這個就和runserver同樣指定IP 端口
--file 這個文件就裏有一個反射,若是你在調用他的時候沒有指定Web Server就使用默認的
-- static 作一個映射,指定靜態文件

訪問:wget
192.168.31.123:8080
 

 3.2.二、經過配置文件實現

目錄結構以下

本項目名爲:LibrarySystem
結構以下:
----web-item
     ---LibrarySystem
          --LibrarySystem
                -settings.py
                -wsgi.py
          --manage.py    
          --static
          --venv        
     ---script
         --uwsgi.ini

 

在某個目錄下建立配置文件 xxx.ini(最好在項目的同目錄下建立,便於管理)

注意點:在socket和http二者中,在單獨配置uwsgi只須要配置http,須要uwsgi+nginx使用須要配置socket

[uwsgi]
# 項目目錄 
chdir=web-item/LibrarySystem/
#指定虛擬環境目錄                       #假設在不在虛擬環境下啓動uwsgi,須要配置虛擬環境目錄
home=web-item/LibrarySystem/venv
# 指定項目的application
module=LibrarySystem.wsgi:application
# 指定sock的文件路徑
#socket=127.0.0.1:8001            #sock或http只能指定其中一個,其中在和nginx配合使用須要指定socket
#須要指定的地址是內網地址eth0
http=172.21.0.2:8000
# 進程個數
workers=5
pidfile=web-item/script/uwsgi.pid
#指定wsgi文件
wsgi-file=LibrarySystem/wsgi.py
# 指定靜態文件
static-map=/static=web-item/LibrarySystem/static
# 啓動uwsgi的用戶名和用戶組
uid=root
gid=root
# 啓用主進程
master=true
# 自動移除unix Socket和pid文件當服務中止的時候
vacuum=true
# 序列化接受的內容,若是可能的話
thunder-lock=true
# 啓用主進程
master=true
# 自動移除unix Socket和pid文件當服務中止的時候
vacuum=true
# 序列化接受的內容,若是可能的話
thunder-lock=true
# 啓用線程
enable-threads=true
# 設置自中斷時間
harakiri=30
# 設置緩衝
post-buffering=4096
# 設置日誌目錄
daemonize=web-item/script/uwsgi.log

 3.3.三、啓動uwsgi

在uwsgi.ini目錄下執行命令:

  /usr/local/python3/bin/uwsgi --ini uwsgi.ini

 3.3.四、Django項目中靜態文件的處理 

  將Django的靜態文件集中起來,Django爲此有專門的工具

  如今Django的Settings文件中加上StATIC_ROOT,把靜態文件都集中到這個路徑下

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

  執行命令

python3 ./manage.py collectstatic

3.3.5 訪問django項目

wget 172.21.0.2:8000

成功則實現uwsgi的部署,失敗則查看是否配置出錯或是否在虛擬環境下執行

3.3.6 管理uwsgi

執行:
    uwsgi --ini uwsgi.ini
中止(須要添加相關配置):
  
uwsgi --reload uwsgi/uwsgi.pid    
查看狀態(須要添加相關配置):
  uwsgi --connect-and-read uwsgi.status
中止方法二:
  查看uwsgi的pid
    ps aux | grep uwsgi
  中止相關pid
    kill -9 pid

 

4、nginx配置

  1.安裝nginx

yum install uginx

     2.準備工做

  2.1 確保存在uwsgi_params

 

確保nginx.conf的同目錄下有uwsgi_params文件(/etc/nginx/conf/uwsgi_params),沒有的話根據連接獲取

 

    2.2 nginx的默認配置文件目錄(nginx.conf)的路徑

nginx -t

默認顯示內容:
    nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/conf/nginx.conf test is successful

裏面說明了nginx默認配置文件的路徑是:/etc/nginx/conf/nginx.conf;

 

    3. 在項目下新建目錄nginx_cof(看你需求是否須要集中管理)

   3.1 修改nginx配置

  把/etc/nginx/nginx.cof複製到該目錄下並把相關內容做以下修改

server {
    listen 80;
    server_name localhost;
    charset     utf-8;
    access_log      目錄/nginx_cof/nginx_access.log;    #
    error_log       目錄/nginx_cof/nginx_error.log;
    client_max_body_size 75M;


    location /static {
        alias 你的項目路徑/static;
    }

    location / {
        include     /etc/nginx/conf/uwsgi_params;
        uwsgi_pass  127.0.0.1:8001;          #必須確保和uwsgi中的socket一致
    }
}

    3.2  加載nginx文件

nginx -c /wwwroot/destiny/destiny.conf經過 nginx -t查看是否加載成功
相關文章
相關標籤/搜索