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









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值