部署django到服務器


部署

服務器環境配置

  • 在本地的虛擬環境中,項目根目錄下,執行命令收集所有的包

  •  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和端口;
    }

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM