这段时间在用 Django 开发一个论坛,打算做一个 Cocoa 开发者社区。这几天在学习如何部署,正好前段时间 UCloud 送了三个月主机,可以拿来练练手。VPS 用的 64 位的 Ubuntu 12.04,折腾两天总算走通了,赶忙记录下来…
apt-get
服务器拿到手后第一件事就是更新 apt-get,要换源什么的自己搜一大堆。之前因为系统不小心选成了 Ubuntu 10.04 了,遇到一大堆问题,后来换到 12.04 一切顺利。
apt-get update
pip
pip 还是建议更换源,速度是飞一般的感觉。具体方法可以看看我之前介绍的那篇文章《Pythoner 的福利,豆瓣的 PyPI 源》
sudo apt-get install python-pip
Django
Django 不用说肯定是用 pip 装,我一般是用的最新版,这样就可以了。
sudo pip install django
Nginx
首先给默认的 Nginx 配置备个份,这是好习惯。目录位于/etc/nginx/sites-available/default
cp /etc/nginx/sites-available/default default.bak
然后 Vim 编辑
vim /etc/nginx/sites-available/default
server {
listen 80;
server_name www.isaced.com;
access_log /var/log/nginx/isaced.log;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
root /data/isaced; #Django项目所在目录
}
以上是最简单的 Nginx 配置,目的是为能跑起来就行,更多其他详细配置还请参照其他文章。
Gunicorn
Gunicorn是一个朋友(CloverStd)推荐的,一个开源 Python WSGI UNIX 的 HTTP 服务器,Github 仓库地址在这,传说速度快(配置快、运行快)、简单,默认是同步工作,支持 Gevent、Eventlet 异步,支持 Tornado,官方有很详细的文档可以参阅。
需要在你的 Django 项目的 settings.py 中的INSTALLED_APPS
加入:gunicorn
gunicorn --worker-class=gevent isaced.wsgi:application
- –worker-class
指定工作方式,这里我用的 gevent
如果提示
You need gevent installed to use this worker
则表示你还没有安装 gevent。 - isaced.wsgi:application 这里是指你的项目名,在 Django 创建项目的时候会自动生成对应名字文件夹中的 wsgi.py,这里就是指的它。
nohup
nohup 是一个 Linux 命令,搭配 &
来不挂断地运行某条命令达到后台执行的效果,默认会在根目录生成一个 nohup.out
文件用来记录所有的 log 信息,也可以重定向到其他位置。这里我们用它来执行 gunicorn,来保持 gunicorn 进程不会被挂断。
nohup gunicorn --worker-class=gevent NSLoger.wsgi:application -b 127.0.0.1:8000&
–worker-class 来指定工作方式为 gevent,-b 指定地址和端口号。
注意:在尾部加上&
(and)字符表示后台运行
执行这条命令后可以用 ps 命令查看进程,就能看到 gunicorn 了~
Start
好了,以上就是整个服务器的配置了。然后我们重启下 Nginx,刷新页面就能看到你的 Django App 了。
sudo service nginx restart
一篇小白的部署日记就到这里了,如有什么错误的地方还请各位大大指正!
另外再推荐一篇文章: