virtualvenv+django+uWSGI+nginx 部署


1. virtualvenv

virtualvenv installpython

首先要安裝python3nginx

由於系統已經裝了 python3.6 因此接下來直接裝虛擬環境 virtualvenvweb

mkdir yourwebproject folder
cd yourwebproject
/usr/python3.6/bin/python3.6 -m venv venv   #創建一個獨立於系統的虛擬環境 不會跟系統環境混淆
source venv/bin/activate                    #運行環境
deactivate                                  #退出環境

2. django

  • 運行虛擬環境,在環境中安裝django
pip install django
  • 新建項目
1). django-admin startproject proName        
   2). cd proName
   3). python manage.py runserver   # run
  • 新建app
    不用也能夠進行接下來的操做

3. uWSGI

官網django

==注意區別:WSGI/uwsgi/uWSGI==

  • WSGI 是一種通訊協議。
  • uwsgi 是一種線路協議,在此經常使用於在 uWSGI 服務器與其餘網絡服務器的數據通訊。
  • uWSGI 是實現了 uwsgi 和 WSGI 兩種協議的Web服務器。

安裝

在虛擬環境中瀏覽器

pip install uwsgi

檢測 uwsgi 是否正常工做

  • 在與venv同目錄下寫一個模擬站點文件 test.py
# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]     # python3
  • 運行
uwsgi --http :8080 --wsgi-file test.py  # 假設訪問端口號8080
  • 瀏覽器訪問
http://serverIP:8080

若顯示站點文件中的輸出,說明uwsgi生效服務器

路徑 web client <-> uwsgi <-> python網絡

部署 django

  • 首先運行django確保django能正常工做
python manage.py runserver 0.0.0.0:8000
  • 在manage.py同級目錄下運行
uwsgi --http :8080 --module djangoProName.wsgi

--module djangoProName.wsgi 表明 djangoProName 目錄下的 wsgi.py 文件app

  • 瀏覽器訪問
http://serverIP:8080

4. nginx

官網socket

不在虛擬環境中安裝
因爲服務器上已經安裝了 nginx 因此安裝步驟省略,只須要在 nginx.conf 中添加配置便可。

  • 配置 nginx

nginx.conf 結構:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {
   # server{ ... }
}

添加 server

server {
        listen       98 default_server;   # 訪問時輸入的端口 本地和外部瀏覽器後面都要加這個端口號
        server_name  10.41.95.85;          # 本身網站的域名

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        
        location / {                      # location : 文件系統配置 去應答一些要服務器資源的請求
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9898;    # 與ini文件對接端口 與上面的 93 端口沒有關係
        }
    }

配置完了以後記得重啓nginx

  • 配置 uwsgi

將配置項所有寫入ini文件
在venv同目錄下本身新建uwsgi的ini文件

[uwsgi]
socket = 127.0.0.1:9898                               ; 與 nginx 對接 IP
; django pro dir
chdir = /root/Odin/TrackManagement/TrackManagement/   ; django project dir
wsgi-file = TrackManagement/wsgi.py                   ; 表明 TrackManagement 目錄下的 wsgi.py 文件
; module = TrackManagement.wsgi                       ; 有上面的wsgi配置這個就不用寫了

processes = 2                                         ; 進程
threads = 1                                           ; 線程
stats = 127.0.0.1:9696                                ; 經過該端口能夠監控 uwsgi 的負載狀況 內部配置訪問ip 與socket區別開
  • 瀏覽器訪問
http://10.41.95.85:98

若顯示django畫面 則 uwsgi+nginx生效

路徑 web client <-> nginx <-> uwsgi <-> django





過程當中踩的坑在另外一篇博文中 -> virtualvenv+django+uWSGI+nginx 部署 踩坑記錄

相關文章
相關標籤/搜索