以前一直都用的是新浪的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 列出端口占用狀況,查看對應的端口是否開啓,就能夠知道配置文件是否生效。