1.django版本選擇:
pip3 install Django==1.8.4
2.用 virtualenv 來管理多個開發環境,virtualenvwrapper 使得virtualenv變得更好用
pip install virtualenv virtualenvwrapper
Linux/Mac OSX 下:
修改~/.bash_profile或其它環境變量相關文件(如 .bashrc 或用 ZSH 之後的 .zshrc),添加以下語句
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
修改後使之立即生效
source ~/.bash_profile
3.django+nginx部署
cd mysite # 進入項目 mysite 目錄(目錄下帶有manage.py)
python manage.py runserver
安裝nginx所需的包:
sudo yum install epel-release
sudo yum install python-devel nginx
若epel-release版本過高,可以選擇較低版本:下載地址
4.安裝 supervisor, 一個專門用來管理進程的工具,我們用它來管理 uwsgi
sudo pip install supervisor
5.使用uwsgi
安裝:pip install uwsgi
使用 uwsgi 運行項目:
uwsgi --http :8000 --chdir
~/mysite/
--home=
/path/to/env
--modulemysite.wsgi
這樣就可以跑了,--home 指定virtualenv 路徑,如果沒有可以去掉。mysite.wsgi 指mysite/wsgi.py
文件
如果提示端口占用:
probably another instance of uWSGI is running on the same address (:800<span style="font-family:'lucida grande', 'lucida sans unicode', lucida, helvetica, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;">0</span>).
bind(): Address already in use [core/socket.c line 764]
這時可以把相關的進程 kill 掉:查看端口:
lsof
-i :800
0
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
uwsgi 2208 tu 4u IPv4 0x53492abadb5c9659 0t0 TCP *:teradataordbms (LISTEN)
uwsgi 2209 tu 4u IPv4 0x53492abadb5c9659 0t0 TCP *:teradataordbms (LISTEN)
這時根據
PID 可以用下面的命令 kill 掉相關程序:sudo
kill
-9 2208 2209
ps
aux |
grep
uwsgi
6.supervisor管理進程
生成 supervisor 默認配置文件,比如放在 /etc/supervisord.conf 路徑中:echo_supervisord_conf > /etc/supervisord.conf
以上若版本不對,可以從網址下載wget http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0a9.tar.gz#md5=81d192acab20eef3578856651af7e851
tar zxvf supervisor-3.0a9.tar.gz
cd supervisor-3.0a9
python setup.py install
echo_supervisord_conf > /etc/supervisord.conf
cd ..
supervisord -c /etc/supervisord.conf ##啓動 supervisord
打開 supervisor.conf 在最底部添加一下代碼(每一行前面不要有空格,防止報錯):command 中寫上對應的命令,這樣,就可以用 supervisor 來管理了。
[program:mysite]
command=~/mysite/uwsgi --http :8000 --chdir ~/mysite --module mysite.wsg
directory=~/mysite
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
啓動 supervisor:
supervisord -c /etc/supervisord.conf
重啓 mysite程序(項目):
supervisorctl -c
/etc/supervisord
.conf restartmysite
以 uwsgi 爲例,上面這樣使用一行命令太長了,我們使用 ini 配置文件來搞定,比如項目在 ~/mysite/ 這個位置,
在其中新建一個 uwsgi.ini 全路徑爲 ~/mysite/uwsgi.ini[uwsgi]
socket = /tmp/mysite.sock
chdir=~/mysite/
wsgi-file= mysite/wsgi.py
touch-reload=~/mysite/reload
processes = 2
threads = 4
chmod-socket = 664
chown-socket=mysite:www-data
注意上面的 /tmp/mysite.sock ,一會兒我們把它和 nginx 關聯起來。
在項目上新建一個空白的 reload 文件,只要 touch 一下這個文件(touch reload) 項目就會重啓。
修改 supervisor 配置文件中的 command 一行:
[program:mysite]
command=~/mysite/uwsgi --ini ~/mysite/uwsgi.ini
directory=~/mysite/
startsecs=0
然後重啓一下 supervisor:
supervisorctl -c /etc/supervisord.conf restart all
7.配置nginx
vi /etc/nginx/sites-available/zqxt.conf
寫入:
server {
listen 8000;
server_name 192.168.0.1;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /path/to/project/media;
}
location /static {
alias /path/to/project/static;
}
location / {
uwsgi_pass unix:///tmp/mysite.sock;
include /etc/nginx/uwsgi_params;
}
}
激活網站:
ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
測試配置語法問題:
service nginx configtest
重啓 nginx 服務器:
sudo service nginx reload 或者 sudo service nginx restart