django自帶的socket server性能太差因此找一個性能高效的socket server來代替它
部署策略1:uWSGI + django
一、uWSGI是python的一個模塊,安裝方式:pip install uwsgijavascript
啓動方式1命令啓動:a、進入django項目php
b、uwsgi --http 192.168.31.123:8080 --file teacher/wsgi.py --
static
-map=/
static
=
static
css
--http 這個就和runserver同樣指定IP 端口
--file 這個文件就裏有一個反射,若是你在調用他的時候沒有指定Web Server就使用默認的
-- static 作一個映射,指定靜態文件html
啓動方式2配置文件啓動:java
第一步:在django項目同級目錄建立script目錄,用於存放配置腳本等等python
第二步:進入/script目錄,建立一個uwsgi.ini文件nginx
# uwsig使用配置文件啓動 [uwsgi] # 項目目錄 chdir=/opt/proj/teacher/ # 指定項目的application module=teacher.wsgi:application # 指定sock的文件路徑 socket=/opt/proj/script/uwsgi.sock # 進程個數 workers=5 pidfile=/opt/proj/script/uwsgi.pid # 指定IP端口 http=192.168.2.108:8080 # 指定靜態文件 static-map=/static=/opt/proj/teacher/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=/opt/proj/script/uwsgi.log
第三步:在當前目錄下啓動命令:uwsgi --ini uwsgi.inidjango
可是,光有uwsgi還不夠,uwsgi處理動態請求能力高,但對於靜態請求(如static文件,css,js文件等)處理能力差,此時就要結合nginx一塊兒使用json
第一步:配置安裝nginx的yum源vim
vim /etc/yum.repos.d/nginx.repo
文件內容:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1
安裝:yum -y install nginx
測試是否安裝完成,命令啓動nginx:/etc/init.d/nginx start
打開瀏覽器,訪問設定好的ip測試是否啓動
第二步建立配置文件
首先建立配置文件,nginx的默認配置目錄爲/etc/nginx/conf.d
建立teacher.conf文件
文件內容
server { # 這個server標識我要配置了 listen 80; # 我要監聽那個端口 server_name 192.168.2.108 ; # 你訪問的路徑前面的url名稱 access_log /var/log/nginx/access.log main; # Nginx日誌配置 charset utf-8; # Nginx編碼 gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持壓縮的類型 error_page 404 /404.html; # 錯誤頁面 error_page 500 502 503 504 /50x.html; # 錯誤頁面 # 指定項目路徑uwsgi location / { # 這個location就和我們Django的url(r'^admin/', admin.site.urls), include uwsgi_params; # 導入一個Nginx模塊他是用來和uWSGI進行通信的 uwsgi_connect_timeout 30; # 設置鏈接uWSGI超時時間 uwsgi_pass unix:/opt/proj/script/uwsgi.sock; # 指定uwsgi的sock文件全部動態請求就會直接丟給他 } # 指定靜態文件路徑 location /static/ { alias /opt/proj/teacher/static/; index index.html index.htm; } }
最後一步,重啓nginx: /etc/init.d/nginx restart
nginx相關命令:
# 啓動Nginx經過Nginx訪問 /etc/init.d/nginx start /etc/init.d/nginx stop # 這裏有個命令configtest,Nginx配置是重啓生效的,若是你修改完了,不知道對 不對又擔憂影響其餘人可使用它測試 /etc/init.d/nginx configtest # 若是是生產環境的話Nginx正在運行,就不要直接stop start 或者 restart 直接reload就好了 # 對線上影響最低 /etc/init.d/nginx reload