CentOS部署Nginx+uWSGI+Django
本人環境CentOS 6.x,是剛安裝上的Linux系統。
CentOS IP:192.168.1.1
Python:2.7.11
Django:1.9.5
Nginx:1.10.1
進入伺服器後,要安裝一大堆東西。
pip(下載django,uwsgi需要用pip下載)
yum install wget -y
tar zxvf pip-8.1.2.tar.gz
cd ./pip-8.1.2
wget
http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install
cd ../
python setup.py install
然後利用pip下載django和uwsgi
pip install django==1.9.5
pip install uwsgi
下載完成之後就可以把你所寫的專案放到伺服器上面。我這裡距離是放在/project/
然後測試django
python /project/manage.py runserver 192.168.1.1:8000 #按需求更改IP
然後內網訪問192.168.1.1:8000,如果可以正常訪問則OK。
uwsgi
首先新建1個test.uwsgi.py檔案在專案的根目錄。即/project (與manage.py同目錄)
檔案內容如下:
1 #coding:utf-8
2 import os
3 import sys
4 reload(sys)
5 sys.setdefaultencoding('utf8')
6
7 from django.core.wsgi import get_wsgi_application
8
9 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") #project為專案名,請按需求修改
10
11 application = get_wsgi_application()
uwsgi的話有2種開啟方法
第一種是直接在命令列輸入命令開啟,如:
uwsgi --http 192.168.1.1:8000 --chdir /project --module test_uwsgi --chmod-socket=666
第二種就是新增ini或xml配置檔案
新建檔案test.ini在專案根目錄
vi /project/test.ini
[uwsgi]
http = 192.157.1.1:8000 #監聽IP和埠
chdir = /project #專案根目錄
module = test_uwsgi #uwsgi檔案,注意不用把字尾.py加上去
processes = 4 #開啟4個程序(按需更改)
threads = 2 #每個程序開啟4個執行緒
enable-threads = True #支援執行緒啟動
daemonize = /var/log/uwsgi.log #後臺啟動,並把日誌記錄到指定檔案
buffer-size = 21573
stats = 192.157.1.1:9000
示例中用的是ini配置檔案,如需使用xml配置,請另行百度xml配置檔案。更多的引數使用也可以自行百度新增上去
當ini配置檔案寫好後執行
uwsgi --ini /project/blog.ini #--ini 表示使用ini配置檔案,xml檔案就用--xml
做完這些之後就訪問192.168.1.1:8000埠,如無意外的話是可以訪問成功的,但是我搭建的時候是可以訪問成功,但是訪問不了css,js,圖片等靜態檔案。
如果出現問題無法訪問成功,請仔細閱讀啟動uwsgi之後彈出來的一系列資訊,裡面一般都包含有錯誤資訊。按照提示修改即可。
因為網頁可以訪問成功而且靜態檔案本來就是打算放在nginx上讓使用者直接訪問,所以我就繼續把配置進行下去了。
安裝nginx
因為途方便,所以我直接選擇yum 安裝。
如無法安裝成功,就在百度上搜其他的安裝方法把nginx裝上。
安裝成功之後,nginx的目錄會在/etc/nginx 下
接下來就要修改nginx 的預設配置了。
檢視預設配置檔案
cat /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
這是我的預設配置檔案,如果我沒記錯的話應該是沒做過任何修改的。請確保裡面有include /etc/nginx/conf.d/*.conf;這行
這行的意思就是包含了所有/etc/nginx/conf.d/下 字尾是.conf的配置檔案
然後我們在/etc/nginx/conf.d/目錄下建立test.conf
vi /etc/nginx/conf.d/test.conf
server{
listen 80 ; #監聽80埠
access_log /var/log/nginx/access.log; #日誌檔案位置
error_log /var/log/nginx/error.log;
location / {#訪問/時
include uwsgi_params; #載入uwsgi模組
proxy_pass http://192.168.1.1:8000; #將連線轉到該IP
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /static/ {
alias /project/static/; #訪問/static時直接訪問到/project/static
}
}
然後就大功告成了。當用戶直接訪問192.168.1.1:80 時 nginx 就會把連線轉到192.168.1.1:8000上。
如果文章內有出錯的地方,或者對文章有任何意見,可在評論下說明。