用nginx+uwsgi部署django提高併發的一些步驟
阿新 • • 發佈:2019-01-01
部署環境
- 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後端的基本技能嗎?那麼配置的問題也應該不成問題。