Django+uwsgi+nginx配置詳解

操作系統是ubuntu

更新源

1
apt-get update


安裝 Nginx 和 uWSGI

1
apt-get install nginx uwsgi uwsgi-plugin-python



安裝 Python 相關環境

1
apt-get install python-dev python-virtualenv python-pip

這裏如果安裝不成功,可以分開安裝,試過一次,分開安裝才成功,原因目前以我的水平還發現不了,很遺憾。


安裝 MySQL

1
apt-get install mysql-server mysql-client libmysqld-dev



安裝 MySQL 的過程中需要輸入密碼



安裝 PHP

1
apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql




配置 Django 及多站點支持


這裏假設我的網站目錄爲 /www ,每個用戶有自己一個獨立的文件夾(這裏使用兩個用戶名作爲示例,分別爲 test1 和 test2 )


前面的操作步驟爲簡單起見,只新建一個站點,文件夾名稱爲 test1


建立目錄

1
2
3
4
mkdir /www
mkdir /www/test1
mkdir /www/test1/media
mkdir /www/test1/static

這裏建立的 media 和 static 目錄分別用來存放該 Django 項目的 media 和 static 文件。


用 virtualenv 創建虛擬環境並新建測試項目

1
2
3
4
5
cd /www/test1
virtualenv env
source env/bin/activate
pip install Django
django-admin.py startproject django_test

這裏在 /www/test1/env 目錄下新建了一個虛擬環境並激活,安裝了 Django 並新建了一個項目,名稱爲 django_test 。

1
2
3
4
5
注:
創建並進入環境:mkvirtualenv env1
退出環境:deactivate
進入已存在的環境或者切換環境:workon env1或者env2
刪除環境: rmvirtualenv env1




配置 Nginx


在 Nginx 的 sites-available 下創建一個新的配置文件

1
vim /etc/nginx/sites-available/test1

文件內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
    listen  80;
    server_name test1.yourdomain.com;
    access_log /var/log/nginx/test1.access.log;
    error_log /var/log/nginx/test1.error.log;
    location / {
        uwsgi_pass  unix:///tmp/test1.sock;
        include     uwsgi_params;
    }
    location /media/  {
        alias /www/test1/media/;
    }
    location  /static/ {
        alias /www/test1/static/;
    }
}

接下來將 sites-available 文件夾中剛纔添加的文件 ln 到 sites-enabled 文件夾中

1
ln -s /etc/nginx/sites-available/test1 /etc/nginx/sites-enabled/

配置 uWSGI


接下來是配置 uWSGI,同樣在 uWSGI 的目錄下創建一個新的配置文件

1
vim /etc/uwsgi/apps-available/test1.ini

文件內容如下

1
2
3
4
5
6
7
8
9
10
11
[uwsgi]
vhost = true
plugins = python
socket = /tmp/test1.sock
master = true
enable-threads = true
processes = 4
wsgi-file /www/test1/django_test/django_test/wsgi.py
virtualenv = /www/test1/env
chdir = /www/test1/django_test
touch-reload = /www/test1/django_test/reload

注意:文件內容中的 django_test 爲剛纔創建的 Django 的項目名稱

然後將 apps-available 中的配置文件 ln 到 apps-enabled 文件夾中

1
ln -s /etc/uwsgi/apps-available/test1.ini /etc/uwsgi/apps-enabled/

重啓 Nginx 和 uWSGI

1
2
service uwsgi restart
service nginx restart

接下來訪問你在上面綁定的 server_name 域名就可以看見 It worked! 的界面了。


注意:每次更新代碼後需要執行 service uwsgi restart 修改方能生效,或者通過上面配置的 touch-reload 文件來檢測改動更新代碼。



DJANGO應用部署


首先進入/www/test1/django_test目錄,然後創建django app。

1
2
cd /www/test1/django_test
django-admin.py startapp appname

這樣在django_test目錄下就會有一個appname目錄。

就可以編輯裏面的views.py文件。同時編輯一下/django_test下的urls.py文件,然後用自己定義的URL和視圖方法,就可以正常訪問自己的應用了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章