以前一直都用的是新浪的SAE,可是因为各类限制,各类不爽,终于下定决心开始折腾VPS,因而在搬瓦工上买了个年付VPS,开始折腾之旅。php
因为对Linux一窍不通,因此不知道如何在Linux上部署开发环境,所以事先查询了好多的资料,找到几篇能够参考的文章,因为系统版本,Nginx版本,Python版本不一样,配置的状况可能也略有不一样,因此先照着别人的折腾看看。python
debian通常默认就安装有python,因此省略这一步,不过有些系统python版本过低,须要先升级Python到须要的版本,怎么升级就不介绍了。mysql
建议先安装Lnmp,这样自动配置好mysql的环境并安装phpmyadmin方便管理.nginx
1. 首先安装必须的软件web
apt-get update apt-get upgrade apt-get install build-essential psmisc apt-get install python-dev libxml2 libxml2-dev apt-get install python-pip pip install uwsgi
安装Nginx 和 Mysql(若是安装了Lnmp就不用这一步了)sql
apt-get install mysql-server apt-get install nginx
安装django 和 mysql库django
pip install MySQL-python pip install Django==1.6.2
若是安装失败,出现EnvironmentError: mysql_config not found,须要先执行这个命令再安装mysqldb组件:app
apt-get install libmysqlclient-dev
pip install MySQL-python
到这里基本上安装部分就介绍完了,下面讲解配置部分,首先创建web项目的文件夹,好比说我放在/var/www下,而后经过下面的命令建立名为mysite的Django项目:dom
cd /home/user/www django-admin.py startproject mysite
此时的目录结构为:socket
mysite/ ├── mysite/ │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ ├── wsgi.py └── manage.py
2. 配置Nginx
因为Nginx默认配置文件中包含了" /etc/nginx/sites-enabled/* "目录下的全部配置文件,因此只须要在此目录新建配置文件便可,新建 websites.conf
server { listen 80; server_name mydomain.com www.mydomain.com; charset utf-8;
if ($host = 'www.mydomain.com'){rewrite ^/(.*)$ http://mydomain.com/$1 permanent;}
location / { root /var/www/mysite; uwsgi_pass 127.0.0.1:3031; include /etc/nginx/uwsgi_params; } location /static/ { alias /var/www/mysite/static/; autoindex off; } }
if ($host = 'www.mydomain.com'){rewrite ^/(.*)$ http://mydomain.com/$1 permanent;} 去掉域名前的 www,自动跳转不带www的
loation /static/ 配置静态文件目录。
uwsgi_pass 127.0.0.1:3032; 每一个域名的端口不同, 而且要和uwsgi的端口同样。
3. 配置uWSGI
配置文件支持ini,xml等各类方式配置,我的比较喜欢ini,文件位置放在哪里均可以,最好是方便管理,能够分别放在不一样项目的目录内,也能够统一放在uWSGI的安装目录内。
[uwsgi] socket = 127.0.0.1:3031 chdir = /var/www/mysite/mysite pythonpath = /var/www/mysite module = mysite.wsgi:application env = DJANGO_SETTINGS_MODULE=mysite.settings processes = 4 threads = 1 stats = 127.0.0.1:9191 vacuum = true master = true py-autoreload = 1 daemonize = /tmp/uwsgi.log
processes/threads 分别表示进程、线程数。
配置好 pythonpath 确保能找到 mysite.settings
py-autoreload 这个能够在项目内源码变化的时候自动重启uwsgi
4. 启动测试
启动方式:进入ini配置文件所在目录:uwsgi mysite.ini
启动多个网站的话,uwsgi mysite2.ini
killall -9 uwsgi 杀死有uwsgi进程 uwsgi mysite.ini 开启uwsgi配置 service nginx restart 重启 service nginx reload 平滑从新加载
能够经过 netstat -lpnt 列出端口占用状况,查看对应的端口是否开启,就能够知道配置文件是否生效。