Django 框架16: 項目部署

佈署python

1.服務器介紹  
    ①服務器:私有服務器、公有服務器
    ②私有服務器:公司本身購買、本身維護,只佈署本身的應用,可供公司內部或外網訪問
    ③公有服務器:集成好運營環境,銷售空間或主機,供其佈署本身的應用
    ④私有服務器成本高,須要專業人員維護,適合大公司使用
    ⑤公有服務器適合初創公司使用,成本低
    ⑥經常使用的公有服務器,如阿里雲、青雲等,可根據須要,按流量收費或按時間收費
    ⑦此處的服務器是物理上的一臺很是高、線路全、運行穩定的機器nginx

2.服務器環境配置
    ①在本地的虛擬環境中,項目根目錄下,執行命令收集全部包web

pip freeze > requirements.txt

    ②經過ftp軟件將開發好的項目上傳到此服務器的某個目錄
    ③安裝並建立虛擬環境,若是已有則跳過此步django

sudo apt-get install python-virtualenv
sudo easy_install virtualenvwrapper
mkvirtualenv [虛擬環境名稱]

    ④在虛擬環境上工做,安裝全部須要的包瀏覽器

workon [虛擬環境名稱]
pip install -r reuirements.txt

    ⑤更改settings.py文件bash

DEBUG = False
ALLOW_HOSTS=['*',]表示能夠訪問服務器的ip

    ⑥啓動服務器,運行正常,可是靜態文件沒法加載服務器

3.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協議級別的數據網絡

4.uWSGIapp

    uWSGI實現了WSGI的全部接口,是一個快速、自我修復、開發人員和系統管理員友好的服務器,徹底用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協議查看網站運行狀況,運行正常,可是靜態文件沒法加載

5.nginx
    ①使用nginx的做用
        負載均衡:多臺服務器輪流處理請求
        反射代理:隱藏真實服務器
    ②實現構架:客戶端請求nginx,再由nginx請求uwsgi,運行django框架下的python代碼
    ③nginx+uwsgi也能夠用於其它框架的python web代碼,不限於django
    ④到官網下載nginx壓縮文件或經過命令安裝

sudo apt-get nginx

    ⑤默認安裝到/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 vi conf/nginx.conf

    ⑧在server下添加新的location項,指向uwsgi的ip與端口

location / {
    include uwsgi_params;將全部的參數轉到uwsgi下
    uwsgi_pass uwsgi的ip與端口;
}

    ⑨修改uwsgi.ini文件,啓動socket,禁用http
        重啓nginx、uwsgi

6.靜態文件
    ①全部的靜態文件都會由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

相關文章
相關標籤/搜索