ubunut 使用uwsig+nginx部署django 筆記

    這個在python3的virtualenv中部署的django。這個和普通的部署有一些不一樣。python

    1、要安裝的環境和軟件。nginx

    用安裝虛擬環境,把uwsgi也安裝在虛擬環境中。git

sudo apt-get installl python3-dev
sudo apt-get install nginx
sudo pip install uwsgi

    nginx和uwsgi啓動關閉方式。apache

sudo service nginx restart #重啓,和啓動通常的服務同樣,stop,start, restart.
uwsgi --ini uwsgin.ini  #經過配置文件啓動。

2、配置步驟。django

一、使用python manage.py runserver確保在開發模式下能正常訪問網頁。bash

二、關閉debug模式。服務器

    setting.py文件中進行設置。app

DEBUG = False

ALLOWED_HOSTS = ['x.x.x.x', 'localhost', '60.205.220.57']

三、使用uwsgi加載服務。less

   使用uwsgi加載服務,socket

    uwsgi   --ini   uwsgi.ini

#uwsgi.ini file
[uwsgi]

# Django-related settings
#設置於nginx對接的sock文件這個要於nginx的配置對應
socket = /home/kx/py3env/taobao/src/config/taobao.sock
#當沒有部署nginx的時候測試的時候,要寫http = ...
#http = 0.0.0.0:3031

# the base directory (full path)
#工程路徑最後一個/是必須的。
chdir = /home/kx/py3env/taobao/src/taobao/

# Django s wsgi file
#工程中的wsgi.py文件路徑
wsgi-file = taobao/wsgi.py


# process-related settings
 #touch-reload = /home/kx/program/py3env/myblog/reload  #reload文件,在這個目錄下手動建立reload文件以後,服務纔會開始運行
#touch-reload = /home/kx/pyenv/program/taobao/config/reload

# maximum number of worker processes
processes = 4
threads = 1

# ... with appropriate permissions - may be needed
#myblog.sock對應的文件權限
chmod-socket = 666
#用戶名
chown-socket = kx
# clear environment on exit
#vacuum  = true

#venv
#venv環境的路徑

virtualenv = /home/kx/py3env/

#配置,但是使用uwsgitop連接到對應地址查看uwsgi狀態
stats = 127.0.0.1:9191

而後服務是否能正常訪問,usgi加載服務以後,通常沒法加載靜態文件,須要在nginx中配置靜態文件的路徑,以後就能夠正常加載靜態文件了。

    在這以前要作一個工做就是收集靜態文件:

    使用python mange.py collectstatic進行靜態文件收集。

    收集的靜態文件回放在STATIC_ROOT對應的文件夾中, 這個在setting.py中進行設置。

# 當運行 python manage.py collectstatic 的時候
# STATIC_ROOT 文件夾 是用來將全部STATICFILES_DIRS中全部文件夾中的文件,以及各app中static中的文件都複製過來
# 把這些文件放到一塊兒是爲了用apache等部署的時候更方便
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')

四、配置nginx。

新建: /etc/nginx/sites-available/myblog.conf文件內容以下:

並在/etc/nginx/sites-enabled/文件夾下建立一個對應的硬連接。

sudo ln -s /etc/nginx/sites-available/myblog.conf /etc/nginx/sites-enabled/myblog.conf

server {
    listen      80; # nginx服務監聽的服務器端口
    server_name 47.94.110.**;  #域名 ip
    charset     utf-8;
 
    client_max_body_size 75M;
 
    location /media  {
        alias /home/kx/py3env/taobao/src/media;
    }
 
    location /static {
        alias /home/kx/py3env/taobao/static;  #靜態文件路徑,是在django靜態文件收集的文件夾
    }
 
    location / {
        uwsgi_pass  unix:///home/kx/py3env/taobao/src/config/taobao.sock;  #與uwsgi創建的sock的文件,由uwsgi建立
        include     /etc/nginx/uwsgi_params;
    }
}

啓動uwsgi和nginx服務。

3、可能會遇到一些問題。

    sudo nginx -t 

    檢查配置文件語法。

    若是遇到502等問題,取查看nginx的日誌,和django的日誌。從日誌中找問題。

    nginx日誌所在目錄less /var/log/nginx/error.log和less /var/log/nginx/access.log

    日誌應該能解決大多數問題。我在部署中遇到一個文件權限問題,經過查看nginx的日誌定位到的問題。

4、反向代理,多個app

location / {
        uwsgi_pass  unix:///home/kx/py3env/taobao/src/config/taobao.sock;  #與uwsgi創建的sock的文件,由uwsgi建立
        include     /etc/nginx/uwsgi_params;
    }

只要多加一條對應的sock。

相關文章
相關標籤/搜索