centos6.6+django+nginx+uwsgi環境配置

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 :8000
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









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