當咱們開發完django的應用程序後,須要將其部署到服務器上,部署過程當中可能出現各類各樣的問題,所以想把本身遇到的問題記錄下來,以便在之後再遇到能夠快速的查閱。nginx
uwsgi安裝:django
pip安裝:pip install uwsgi 測試:uwsgi --version瀏覽器
nginx安裝:緩存
下載:wget http://nginx.org/download/nginx-1.6.2.tar.gz安全
依賴包安裝:服務器
yum install -y pcre pcre-devel app
yum install -y zlib zlib-devel socket
yum install -y openssl openssl-develpost
解壓:tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/測試
配置:./configure --prefix=/usr/local/nginx
編譯安裝:make && make install
(備註:以上uwsgi安裝和nginx安裝均需依賴C的編譯環境,先配置環境)
啓動:/usr/local/nginx/sbin/nginx
檢查是否啓動:ps -ef|grep nginx
關閉防火牆:chkconfig iptables off(虛擬機下能夠直接關閉,實際生產環境下由於有物理防火牆,因此也能夠關閉,若是安全限制,能夠單獨開放所需端口)
頁面訪問:http://主機IP:端口 (出現歡迎頁面)
uwsgi配置文件uwsgi.ini:
chdir=/home/zhangwei/ywpt/Django-1.4.20/untitled1
# 指定項目的application
module=untitled1.wsgi:application
# 指定sock的文件路徑
socket=/home/ywpt/Django-1.4.20/untitled1/script/uwsgi.sock
# 進程個數
workers=5
pidfile=/homeywpt/Django-1.4.20/untitled1/script/uwsgi.pid
# 指定IP端口
http=192.168.2.129:8000
# 指定靜態文件
static-map=/static=/home/ywpt/Django-1.4.20/untitled1/static
#static=/home/ywpt/Django-1.4.20/untitled1/static
# 啓動uwsgi的用戶名和用戶組
uid=root
gid=root
# 啓用主進程
master=true
# 自動移除unix Socket和pid文件當服務中止的時候
vacuum=true
# 序列化接受的內容,若是可能的話
thunder-lock=true
# 啓用線程
enable-threads=true
# 設置自中斷時間
harakiri=30
# 設置緩衝
post-buffering=4096
# 設置日誌目錄
daemonize=/home/ywpt/Django-1.4.20/untitled1/script/uwsgi.log
nginx配置文件nginx.conf:
server {
listen 80;
server_name 192.168.2.129;
charset utf-8;
access_log logs/bdmp.log main;
location / { # 這個location就和我們Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 導入一個Nginx模塊他是用來和uWSGI進行通信的
uwsgi_connect_timeout 30; # 設置鏈接uWSGI超時時間
uwsgi_pass unix:/home/zhangwei/ywpt/Django-1.4.20/untitled1/script/uwsgi.sock; # 指定uwsgi的sock文件全部動態請求就會直接丟
}
}
配置完成後,從新啓動uwsgi、nginx,頁面再次訪問,就OK啦
不過須要注意的地方有STATIC_ROOT、STATIC_URL、STATICFILES_DIRS也須要配置,同時可能由於Debug=false等緣由致使靜態文件不能正常加載。
若在嘗試過程當中,發現靜態文件出現304報錯,則由於緩存影響,更換瀏覽器或清除緩存便可。