周末趁着加班空闲,找了一个旧机器,装了个ubuntu13.04,以后就可以用它来做我在公司的git 以及web服务器,顺便在它上面编译一下android源码,哈哈,很爽。
先说web系统,最进一直在捣鼓Django,之前用apache2+apache2-python-mod搭了一个简易版本的服务器,用起来感觉不爽,直接换成nginx和uwsgi
安装包
Django
sudo pip install django==1.6.2
其中pip是一个Python的包管理工具,
1.6.2
是的版本,这种写法在bae的
requirements.txt中也有体现,比如需要安装django,可以用==,>,<等比较操作符来选择版本号。
uwsgi
$sudo pip install uwsgi
wsgi的全称是Web Server Gateway Interface,通过$django-admin.py startproject mysite
会生成一个wsgi.py的文件,里面定义了一个application变量,uwsgi服务的对象就是它。
nginx
$sudo apt-get install nginx
单独使用uwsgi也可以让Django跑起来,但是它无法作为静态文件
/static/
以及
/media/
的服务器。因此我们需要配合使用nginx作为web服务器来处理/static/以及/media/的请求,而它其他的页面请求都转交给uwsgi来处理。
配置文件
uwsgi
- 在Django的工程目录下新建一个
mysite_uwsgi.ini
(名称可随意) - 内容如下,详细说明可参考注释 [uwsgi]
根据uid的不同可以设置不同的socket权限,如果权限设置不当,uwsgi可能会出现permmision denied的错误。
nginx
- 在Django工程目录(与mysite_uwsgi.ini相同)新建一个
mysite_nginx.conf
文件 - 文件内容如下 # dijkstra_nginx.conf
- 把
uwsgi_params
考到工程目录下cp /etc/nginx/uwsgi_params /path/to/your/project/
部署
修改mysite/settings.py
尝试访问
尝试能否访问localhost:8000,如果出现
502 bad gateway,可以重启机器。
开机启动
- sudo ln -s /path/to/your/project/mysite_nginx.ini /etc/nginx/sites-enabled/
- uwsgi的Emperor mode,可参考http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html
常用命令
-
$sudo service uwsgi start
-
$sudo service uwsgi stop
-
$sudo service uwsgi restart
-
$sudo service nginx start
-
$sudo service nginx stop
-
$sudo service nginx restart