Debian7下初次嘗試Nginx+Uwsgi部署Django開發環境

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

相關文章
相關標籤/搜索