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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part52)--项目部署

發布時間:2023/12/19 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part52)--项目部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


文章目錄

    • 項目部署
      • 項目部署的幾個步驟
        • 安裝同版本的數據庫(略)
        • django項目遷移
          • 安裝python
          • 安裝相同版本的包
          • 將當前項目源代碼復制到運程主機上(scp 命令)
          • ssh遠程登錄云主機
        • uWSGI 網關接口配置
          • WSGI規范
          • uWSGI網關接口配置
          • 安裝uWSGI
          • 配置uWSGI(這里我用Windows演示)
          • uWSGI的運行管理(Linux)
        • nginx 反射代理配置
          • nginx安裝
          • nginx配置(Linux)
          • 修改uWSGI配置
          • 重啟uWSGI服務(Linux)
          • nginx的操作(Linux)
        • nginx 配置靜態文件路徑(Linux)



項目部署


我們在軟件開發完畢后,會把開發版的軟件安裝到服務器上長期運行.


項目部署的幾個步驟


  • 在服務器上安裝和配置與開發階段同版本的數據庫
  • django項目遷移(在服務器上配置與開發環境相同的python版本及依賴的包);
  • 用 uwsgi 替代python manage.py runserver 方法啟動服務器;
  • 配置 nginx 反射代理服務器;
  • 用nginx 配置靜態文件路徑,解決靜態路徑問題。

  • 安裝同版本的數據庫(略)


    django項目遷移


    安裝python
    • Linux
    sudo apt install python3
    安裝相同版本的包

    • windows

    導出當前模塊數據包的信息:

    pip freeze > requirements.txt

    導入到另一臺新主機:

    pip install -r requirements.txt
    • Linux

    導出當前模塊數據包的信息:

    pip3 freeze > package_list.txt

    導入到另一臺新主機:

    pip3 install -r package_list.txt
    將當前項目源代碼復制到運程主機上(scp 命令)

    • Linux
    sudo scp -a 當前項目路徑 遠程主機地址和文件夾路徑 #比如 sudo scp -a /home/goatbishop/mywebsite root@12.34.56.78/root/mydjango/
    ssh遠程登錄云主機
    ssh root@darkgoat.cn

    uWSGI 網關接口配置


    WSGI規范

    • WSGI (Web Server Gateway Interface)是Python應用程序或框架和Web服務器之間的一種接口規范(接口就是函數或對象);
    • WSGI 實現了WSGI協議、http等協議。

    uWSGI網關接口配置

    python manage.py runserver 通常只在開發和測試環境中使用,當開發結束后,完善的項目代碼需要在一個高效穩定的環境中運行,這時可以使用uWSGI.

    uWSGI是WSGI規范的一種實現方式,它可以讓Django、Flask等開發的web站點運行在其中。


    安裝uWSGI

    • Linux
    sudo pip3 install uwsgi
    • Windows
    pip install uwsgi

    在Windows下pip會報出AttributeError: module 'os' has no attribute 'uname’錯誤,這里是解決辦法Windows系統安裝uWSGI報錯


    配置uWSGI(這里我用Windows演示)

    在我們的項目文件夾下創建一個uwsgi.ini 文件,在這個文件中敲入如下代碼:

    [uwsgi] #套接字方式的 IP地址:端口號 socket=127.0.0.1:8000#Http通信方式的 IP地址:端口號 http=127.0.0.1:8000#當前項目工作目錄(絕對路徑) chdir=F:/MyStudio/PythonStudio/goatbishop.project01/Django/mywebsite_bookstore#項目中wsgi.py文件的目錄,相對路徑,相對于當前工作目錄 wsgi-file=mywebsite_bookstore/wsgi.py#進程個數 process=4#每個進程的線程個數 threads=2#服務的pid記錄文件 pidfile=uwsgi.pid#服務的目志文件位置(在代碼中用print打印的信息) daemonize=uwsgi.log

    配置完uwsgi.ini,我們再配置settings.py,將DEBUG改為False,并將ALLOWED_HOSTS列表中增加'*':

    DEBUG = False ALLOWED_HOSTS = ['*'] #表示允許所有人訪問網站 #若列表中只填入'192.168.1.*'則表示只有這個網段才能訪問咱們的網站 #注意這個*有點正則的意思

    進行上面一系列配置之后,我們再用python manage.py runserver開啟服務,并向網站發起請求(故意填一個無法訪問的url),就看不到調試信息了:

    如果我們沒有對settings.py進行配置,也就是處于開發調試階段,那么我們向http://127.0.0.1:8000/asdfg發出請求,我們是會看到如下頁面的:


    uWSGI的運行管理(Linux)

    • Linux

    啟動uwsgi:

    cd 項目文件夾 sudo uwsgi --ini 項目文件夾/uwsgi.ini

    停止uwsgi:

    cd 項目文件夾 sudo uwsgi --stop uwsgi.pid
    • Windows

    啟動uwsgi:

    cd 項目文件夾 uwsgi --ini 項目文件夾/uwsgi.ini

    停止uwsgi:

    cd 項目文件夾 uwsgi --stop uwsgi.pid
    • 注意事項

    當uwsgi 啟動后,當前django項目的程序就會變成后臺守護進程,關閉當前終端時,此進程也不會停止。


    nginx 反射代理配置


    nginx是輕量級的高性能Web服務器,提供了諸如HTTP代理和反向代理、負載均衡、緩存等一系列重要特性,在實踐之中使用廣泛,它是使用C語言編寫,執行效率高


    • nginx作用
      • 負載均衡, 多臺服務器輪流處理請求
      • 反射代理

    • 反射代理圖示(nginx服務器可以通過區分路由類型,把路由指向不同的服務器進行處理)


    nginx安裝

    • Linux
    sudo apt install nginx
    • windows

    安裝配置教程:Nginx Windows詳細安裝部署教程


    nginx配置(Linux)

    現在,我們要修改nginx 的配置文件/etc/nginx/sites-available/default

    打開配置文件:

    sudo vim /etc/nginx/sites-available/default

    修改配置文件:

    #在server節點下添加新的location項,指向uwsgi的ip與端口 server {...location / {uwsgi_pass 127.0.0.1:8000; # 將/路由,映射到uwsgi的127.0.0.1:8000include /etc/nginx/uwsgi_params; #將所有的參數轉到uwsgi下}... }

    每次修改完該文件后,我們都需要重啟nginx

    重啟nginx:

    sudo /etc/init.d/nginx restart
    修改uWSGI配置

    修改項目文件夾/uwsgi.ini下的http通信方式改為socket通信方式:

    [uwsgi] # 去掉如下 # http=127.0.0.1:8000 # 改為 socket=127.0.0.1:8000
    重啟uWSGI服務(Linux)

    sudo uwsgi --stop uwsgi.pid sudo uwsgi --ini 項目文件夾/uwsgi.ini
    nginx的操作(Linux)
    • 啟動 nginx
      • sudo /etc/init.d/nginx start
      • sudo service nginx restart
    • 查看nginx進程
      • ps aux | grep nginx
      • sudo /etc/init.d/nginx status
      • sudo service nginx status
    • 停止nginx
      • sudo /etc/init.d/nginx stop
      • sudo service nginx stop
    • 重啟nginx
      • sudo /etc/init.d/nginx restart
      • sudo service nginx restart

    nginx 配置靜態文件路徑(Linux)


    對于settings.py中靜態文件的路徑STATICFILES_DIRS,只在調試階段有效,在網站運行模式(DEBUF=False)下無效,這時,我們需要再次進行配置。


    在/etc/nginx/sites-available/default文件中,我們進行如下配置:

    # file : /etc/nginx/sites-available/defaultserver {...location /static {root 項目文件夾的絕對路徑;# 將/static路由, 映射到本地主機的項目文件夾下(絕對路徑)}... }

    記得修改完該文件,重啟nginx

    總結

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

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