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