部署
服務器環境配置
-
在本地的虛擬環境中,項目根目錄下,執行命令收集所有的包
- pip freeze > plist.txt
-
安裝並創建虛擬環境,如已創建則跳過此步 sudo apt-get install python-virtualenv
-
sudo apt-get install python-virtualenv sudo easy_install virtualenvwrapper mkvirtualenv [虛擬環境名稱]
workon [虛擬環境名稱]
pip install -r plist.txt -
更改settings.py文件
-
DEBUG = False ALLOW_HOSTS=['*',]#表示可以訪問服務器的ip
-
啟動服務器,運行正常,但靜態文件無法加載
WSGI
-
在生產環境中使用WSGI
-
WSGI:Web服務器網關接口,英文為python web server gateway interface,縮寫wsgi,是python應用程序或框架和web服務器之間的一種接口,被廣泛接受
-
WSGI沒有官方的實現,因為WSGI更像是一個協議,只要遵照這些協議,WSGI應用都可以在任何服務器上運行
-
命令
django-admin startproject
會生成一個簡單的wsgi.py文件,確定了settings、application對象- application對象:在python模塊中使用application對象與應用服務器交互
- settings模塊:Django需要導入settings模塊,這里是應用定義的地方
uWSGI
-
uwsgi實現了wsgi的所有接口,是一個快速、自我修復、開發人員和系統管理員友好的服務器
-
uWSGI代碼完全用C編寫
-
安裝uWSGI
pip install uwsgi
[uwsgi] socket=外網ip:端口(使用nginx連接時,使用socket) http=外網ip:端口(直接做web服務器,使用http) chdir=項目根目錄 wsgi-file=項目中的wsgi.py文件的目錄,相對於項目根目錄 processes=4 threads=2 master=True pidfile=uwsgi.pid daemonize=uswgi.log
- 停止:uwsgi --stop uwsgi.pid
- 重啟:uwsgi -- reload uwsgi.pid
- 使用http協議查看網站運行情況,運行正常,但是靜態文件無法加載
- socket 和http 地址選一個即可,另外一個注掉,另外需要注意端口占用
nginx
-
使用nginx的作用
- 負載均衡:多台服務器輪流處理請求
- 反射代理:隱藏真實服務器
-
實現構架:客戶端請求nginx,再由nginx請求uwsgi,運行django框架下的python代碼
-
nginx+uwsgi也可以用其他框架的python web代碼,不限於django
-
到官網下載nginx壓縮文件或通過命令安裝
-
sudo apt-get nginx
-
這里以下載壓縮文件為例
解壓縮: tar zxvf nginx-1.6.3.tar.gz 進入nginx-1.6.3目錄依次執行如下命令進行安裝: ./configure make sudo make install
-
查看版本:sudo sbin/nginx -v
-
啟動:sudo sbin/nginx
-
停止:sudo sbin/nginx -s stop
-
重啟:sudo sbin/nginx -s reload
-
通過瀏覽器查看nginx運行結果
-
指向uwsgi項目:編輯conf/nginx.conf文件
sudo conf/nginx.conf 在server下添加新的location項,指向uwsgi的ip和端口 location /{ include uwsgi_params;將所有的參數轉到uwsgi下 uwsgi_pass uwsgi的ip和端口; }