當專案開發完成後,需要將專案**放到伺服器上,這個伺服器擁有固定的ip,再通過網域名稱繫結,就可以供其它人瀏覽,對於python web開發,可以使用wsgi、apache伺服器。
伺服器首先是物理上的一台效能高、線路全、執行穩定的機器,分為私有伺服器、公有伺服器。
私有伺服器:公司自己購買、自己維護,只佈署自己的應用,可供公司內部或外網訪問,成本高,需要專業人員維護,適合大公司使用。
公有伺服器:整合好運營環境,銷售空間或主機,供其佈署自己的應用,適合初創公司使用,成本低。
常用的公有伺服器,如阿里雲、青雲等,可按流量收費或按時間收費。伺服器還需要安裝伺服器軟體,此處需要uwsgi、nginx。
1)在本機進入虛擬環境,執行命令匯出當前需要的所有包。
pip freeze > plist.txt
2)通過ftp軟體將專案**和plist.txt檔案上傳到伺服器。
3)建立虛擬環境,在虛擬環境上安裝包。
mkvirtualenv 虛擬環境名稱
pip install -r plist.txt
uwsgi實現了wsgi的所有介面,是乙個快速、自我修復、開發人員和系統管理員友好的伺服器。uwsgi**完全用c編寫,效率高、效能穩定。
1)安裝uwsgi。
pip install uwsgi
2)配置uwsgi,在專案目錄下建立uwsgi.ini檔案,配置如下:
# 這句**必須加上
[uwsgi]
#使用nginx連線時使用
#socket=127.0.0.1:8080
#直接做web伺服器使用
#專案目錄
chdir=/home/xxoo
#專案中wsgi.py檔案的目錄,相對於專案目錄
wsgi-file=xxoo/wsgi.py
processes=4
threads=2
master=true
pidfile=uwsgi.pid
daemonize=uswgi.log
3)啟動。
uwsgi --ini uwsgi.ini
4)檢視。
ps ajx|grep uwsgi
5)停止。
uwsgi --stop uwsgi.pid
使用nginx的作用主要包括負載均衡、反向**。
使用方法如下:
tar zxvf nginx-1.6.3.tar.gz
2)進入nginx-1.6.3目錄,依次執行以下命令進行安裝。
./configure
make
sudo make install
3)預設安裝到/usr/local/nginx/目錄,進入此目錄。
cd /usr/local/nginx/
4)啟動。
sudo sbin/nginx
5)檢視程序。
ps ajx|grep nginx
6)停止。
sudo sbin/nginx -s stop
指向uwsgi專案
1)開啟conf/nginx.conf檔案。
sudo gedit conf/nginx.conf
2)在server節點下新增新的location項,指向uwsgi的ip與埠。
location /
**效果如下圖:
情景:使用者發起request,並等待response返回。在一些views中,可能需要執行一段耗時的程式,那麼使用者就會等待很長時間,造成不好的使用者體驗,比如傳送郵件、手機驗證碼等。
使用celery後,情況就不一樣了。解決:將耗時的程式放到celery中執行。
任務task:就是乙個python函式。
佇列queue:將需要執行的任務加入到佇列中。
工人worker:在乙個新程序中,負責執行佇列中的任務。
**人broker:負責排程,在布置環境中使用redis。
看下圖理解:
Web WCF和WS通過Nginx共享80埠
團隊中的乙個web專案面對的使用者網路環境多是在嚴格的防火牆安全條件下,通常只開放一些標準的埠如80,21等。上線初期,因忽略了這個問題,除了web應用是以80埠提供訪問外,wcf和ws是以其他埠進行對外訪問的,導致多數使用者無法完整的使用系統的全部功能,如涉及直接訪問wcf和ws服務的功能。同時加...
uwsgi和nginx部署Django服務
先用測試方式啟動服務 1.配置好資料庫 3.資料庫遷移 4.啟動服務 python manage.py runserver 0.0.0.0 8000 用uwsgi的方式啟動 解決3個問題 執行uwsgi啟動服務時,用的是python2直譯器,就用python3的直譯器重新裝了,解決參考文件 3.用命...
Django中session和cookie的用法
session 存在伺服器端,用request物件進行設定 設定session 在後端寫入 request.session money 100 缺省會在cookie中產生乙個sessionid 獲取session值 只能在後端獲取 print request.session.get money co...