初學Ubuntu:Django+uwsgi+nginx項目部署

Django項目部署

搭建生產環境思路

  • 安裝環境
  • 測試環境
  • 測試uwsgi代理項目
  • 測試Nginx代理靜態文件
  • uwsgi與nginx連接
  • 項目部署成功

環境介紹

  • Ubuntu 16.04
  • Nginx 1.10.3
  • uwsgi 2.0.12
  • Python 3.5.2

安裝nginx 

安裝uwsgi

  • 樓主使用系統uwsgi,避免在每個虛擬python環境中安裝uwsgi
  • 安裝命令:apt install uwsgi
  • 說明:如果使用在python環境中安裝uwsgi,可能會在uwsgi與nginx連接時出現無法連接的情況。

使用uwsgi代理項目

  • 編寫配置文件 myproject.ini
  • 使用http代理

[uwsgi]
# 直接作爲web服務器使用
http=0.0.0.0:8010

# 配置工程目錄
chdir=/var/www/DjangoProject/p_name

# 配置項目的wsgi目錄。相對於工程目錄
wsgi-file=p_name/wsgi.py

#配置進程,線程信息
processes=2
threads=2

# 多線程開關
enable-threads=True

# 主進程,主線程模式
master=True

# 啓動端口號
pidfile=uwsgi.pid

# 日誌
daemonize=uwsgi.log
  • 啓動uwsgi:uwsgi --ini myproject.ini

  • 瀏覽器測試項目運行正常

使用nginx代理靜態文件

  • 複製出nginx的默認配置文件,cp /etc/nginx/nginx.conf
  • 修改location,server_name,root,添加靜態資源的路徑
  • myproject.conf


user  nginx;        # 用戶,用戶組
worker_processes  1;    # 工作組數量

error_log  /var/log/nginx/error.log warn;    # 日誌文件
pid        /var/run/nginx.pid;           # nginx啓動後生成的文件


events {
    worker_connections  1024;      # 工作鏈接數量
}


http {
    include       /etc/nginx/mime.types;     # mime什麼鬼
    default_type  application/octet-stream;    # 默認類型

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;     # 響應超時設置

    #gzip  on;      # 支持壓縮文件傳輸

    include /etc/nginx/conf.d/*.conf;     # 默認啓動的配置文件

    # 需要添加的項目配置
    server {
        listen       80;       # 監聽端口
        server_name  127.0.0.1;    # 域名,localhost,ip

        charset utf-8;

        root    /var/www/;     # 靜態文件根目錄

        #index    hello.html;

        location /static {            # 靜態文件部署
            alias /var/www/static/;       # 指向地址
        } 
    }
}
  • 使用配置文件啓動nginx:nginx -c conf_path(配置文件的絕對路徑)

  • 瀏覽器訪問:127.0.0.1/static,查看項目的靜態資源,檢測是否成功

uwsgi與nginx連接

  • 使用scoket
  • 在nginx配置文件中添加uwsgi_params的文件路徑
# 需要添加的項目配置
server {
        listen       80;       # 監聽端口
        server_name  120.120.120.120;    # 域名,本機ip

        charset utf-8;

        root    /var/www;     # 靜態文件根目錄

        location / {
            include /etc/nginx/uwsgi_params;     # 指向橋接文件
            uwsgi_pass 127.0.0.1:8010;           # 與uwsgi配置文件的scoket端口一致
        }

        location /static {            # 靜態文件部署
            alias /var/www/static/;       # 指向靜態文件地址
        } 
}
  • 說明:此文件是作爲uwsgi和nginx的橋接作用,端口號設爲一致。
  • 項目模式改爲生產模式,即DEBUG=False

測試項目部署成功

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