日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Django 布署6.5

發布時間:2023/11/28 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 布署6.5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

布署

  • 從uwsgi、nginx、靜態文件三個方面處理

服務器介紹

  • 服務器:私有服務器、公有服務器
  • 私有服務器:公司自己購買、自己維護,只布署自己的應用,可供公司內部或外網訪問
  • 公有服務器:集成好運營環境,銷售空間或主機,供其布署自己的應用
  • 私有服務器成本高,需要專業人員維護,適合大公司使用
  • 公有服務器適合初創公司使用,成本低
  • 常用的公有服務器,如阿里云、青云等,可根據需要,按流量收費或按時間收費
  • 此處的服務器是物理上的一臺非常高、線路全、運行穩定的機器

服務器環境配置

  • 在本地的虛擬環境中,項目根目錄下,執行命令收集所有包
pip freeze > plist.txt
  • 通過ftp軟件將開發好的項目上傳到此服務器的某個目錄
  • 安裝并創建虛擬環境,如果已有則跳過此步
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

  • python manage.py runserver:這是一款適合開發階段使用的服務器,不適合運行在真實的生產環境中
  • 在生產環境中使用WSGI
  • WSGI:Web服務器網關接口,英文為Python Web Server Gateway Interface,縮寫為WSGI,是Python應用程序或框架和Web服務器之間的一種接口,被廣泛接受
  • WSGI沒有官方的實現, 因為WSGI更像一個協議,只要遵照這些協議,WSGI應用(Application)都可以在任何服務器(Server)上運行
  • 命令django-admin startproject會生成一個簡單的wsgi.py文件,確定了settings、application對象
    • application對象:在Python模塊中使用application對象與應用服務器交互
    • settings模塊:Django需要導入settings模塊,這里是應用定義的地方
  • 此處的服務器是一個軟件,可以監聽網卡端口、遵從網絡層傳輸協議,收發http協議級別的數據

uWSGI

  • uWSGI實現了WSGI的所有接口,是一個快速、自我修復、開發人員和系統管理員友好的服務器
  • uWSGI代碼完全用C編寫
  • 安裝uWSGI
pip install uwsgi
  • 配置uWSGI,在項目中新建文件uwsgi.ini,編寫如下配置
[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 --ini uwsgi.ini
  • 停止:uwsgi --stop uwsgi.pid
  • 重啟:uwsgi --reload uwsgi.pid
  • 使用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
  • 默認安裝到/usr/local/nginx目錄,進入此目錄執行命令
  • 查看版本: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與端口;
}
  • 修改uwsgi.ini文件,啟動socket,禁用http
  • 重啟nginx、uwsgi
  • 在瀏覽器中查看項目,發現靜態文件加載不正常,接下來解決靜態文件的問題

靜態文件

  • 靜態文件一直都找不到,現在終于可以解決了
  • 所有的靜態文件都會由nginx處理,不會將請求轉到uwsgi
  • 配置nginx的靜態項,打開conf/nginx.conf文件,找到server,添加新location
location /static {alias /var/www/test5/static/;
}
  • 在服務器上創建目錄結構“/var/www/test5/”
  • 修改目錄權限
sudo chmod 777 /var/www/test5
  • 創建static目錄,注意順序是先分配權限,再創建目錄
mkdir static
  • 最終目錄結構如下圖:

?

  • 修改settings.py文件
STATIC_ROOT='/var/www/test5/static/'
STATIC_URL='/static/'
  • 收集所有靜態文件到static_root指定目錄:python manage.py collectstatic
  • 重啟nginx、uwsgi

總結

以上是生活随笔為你收集整理的Django 布署6.5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。