1. 程式人生 > >用nginx+uwsgi部署django提高併發的一些步驟

用nginx+uwsgi部署django提高併發的一些步驟

部署環境

  • ubuntu16.4
  • python3.X
  • 虛擬環境(virtualenv或直接anaconda下conda環境也行)
  • 一個可以執行的django專案
  • nginx
  • uwsgi

第一步:安裝所需要的軟體包

1、python3.5、virtualenv

sudo apt install python3.5
pip3 install virtualenv
pip3 install virtualenvwarpper

2、配置virtualenv檔案

vim ~/.bashrc

在文字的最後,加上這幾行:

export WORKON_HOME=$HOME/.virtualenvs  #所有建立的虛擬環境都放這裡
export PROJECT_HOME=$HOME/workspace
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.5#指向預設的python解析器
source /usr/local/bin/virtualenvwrapper.sh

然後一定要過載:

source ~/.bashrc

第二步:在虛擬環境下開始搭建

假設已經

virtualenv testvir2 --python=python3.5

建立了一個名為testvir2的虛擬環境,然後通過workon testvir2

進入

至於怎麼把自己的django專案傳上來伺服器就不多述了,ftp也好、ssh也好,大把教程。

這裡要提醒一個技巧的是,沒必要一個個地pip安裝django專案裡需要用到的第三方庫,我們可以通過 pip3 freeze > requirements.txt 將本地的虛擬環境安裝包相信資訊匯出來然後將requirements.txt檔案放在django專案中上傳到伺服器之後執行:

pip3 install -r requirements.txt

這樣pip就會自動安裝列表裡的第三方庫。

1、nginx安裝

sudo apt install nginx

安裝完可以用

ps aux|grep nginx

檢視程序中nginx有沒有啟動成功

配置nginx:
在django目錄下,新建一個.conf檔案(名字隨便起),比如new_nginx.conf

vim new_nginx.conf

然後做如下配置:
配置前,請先在django目錄下使用python3.5 manage.py collectstatic命令把所有靜態檔案收集起來給nginx代理

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
# configuration of the server

server {
# the port your site will be served on
listen      80;
# the domain name it will serve for
server_name 192.168.249.53 ; # 主要改這裡,改成自己伺服器的公網ip,或域名
charset     utf-8;

# max upload size
client_max_body_size 75M;   # adjust to taste

# Django media
location /media  {
    alias /home/git/django-xadmin/django-project/XadminShow/media
;  # 指向自己django的media目錄
}
location /static {
    alias /home/git/django-xadmin/django-project/XadminShow/static
; # 指向自己django的static目錄
}

# Finally, send all non-media requests to the Django server.
location / {
    uwsgi_pass  django;
    include     uwsgi_params; # the uwsgi_params file you installed
}

其他就預設好了。

2、關於uwsgi的配置
首先安裝:

pip3 install uwsgi

測試:(先進入到自己的django專案下)

uwsgi --http :8000 --module XXX.wsgi
‘XXX.wsgi’指向的是你django中wsgi.py這個檔案的路徑,比如我在xadminshow下,就寫xadminshow.wsgi

配置:
在django專案下建立一個uwsgi.ini檔案

# mysite_uwsgi.ini file
    [uwsgi]

    # Django-related settings
    # the base directory (full path)
    chdir           = /home/XXX/ #chdir: 表示需要操作的目錄,也就是django專案的目錄
    # Django's wsgi file
    module          = XXX.wsgi    # wsgi檔案的路徑
    # the virtualenv (full path)

    # 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:8000
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    virtualenv = /home/bobby/.virtualenvs/mxonline  #虛擬環境的目錄

    logto = /tmp/mylog.log

最後啟動:

uwsgi -i uwsgi.ini

結束語

其實還有資料庫的配置需要提及一下,但轉念一想,資料庫curd不是一個web後端的基本技能嗎?那麼配置的問題也應該不成問題。