<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 布署 * 從uwsgi、nginx、靜態文件三個方面處理 ## 服務器介紹 * 服務器:私有服務器、公有服務器 * 私有服務器:公司自己購買、自己維護,只布署自己的應用,可供公司內部或外網訪問 * 公有服務器:集成好運營環境,銷售空間或主機,供布署自己的應用 * 私有服務器成本高,需要專業人員維護,適合大公司使用 * 公有服務器適合初創公司使用,成本低 * 常用的公有服務器,如阿里云、青云等,可根據需要,按流量收費或時間收費 * 此處的服務器是物理上的一臺非常高、線路全、運行穩定的機器 ## 服務器環境配置 * 在本地的虛擬環境中,項目根目錄下,執行命令收集所有包 ```text pip freeze > plist.txt ``` * 通過ftp軟件將開發好的項目上傳到此服務器的某個目錄 * 安裝并創建虛擬環境,如果已有則跳過此步 ```text pip install virtualenv pip install virtualenvwrapper pip install virtualenvwrapper-win  #Windows使用該命令 mkvirtualenv [虛擬環境名稱] ``` * 在虛擬環境上工作,安裝所有需要的包 ```text workon [虛擬環境名稱] pip install -r plist.txt ``` * 更改settings.py文件 ```text 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 ```text pip install uwsgi ``` * 配置uWSGI,在項目中新建立uwsgi.ini,編寫如下配置 ```text [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,再由nginx請求uwsgi,運行django框架下的python代碼 * nginx+uwsgi也可以用于其它框架的python web代碼,不限于django * 到官網下載nginx壓縮文件或通過命令安裝 ```text sudo apt-get nginx ``` * 這里以下載壓縮文件為例演示 ```text 解壓縮: 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文件 ```text 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 ```text location /static { alias /var/www/test5/static/; } ``` * 在服務器上創建目錄結構“/var/www/test5/” * 修改目錄權限 ```text sudo chmod 777 /var/www/test5 ``` * 創建static目錄,注意順序是先分配權限,再創建目錄 ```text mkdir static ``` * 最終目錄結構如下圖: ![](https://box.kancloud.cn/73b0f4c6d0dfb0b27e00528eda46ec1b_328x82.png) * 修改settings.py文件 ```text STATIC_ROOT='/var/www/test5/static/' STATIC_URL='/static/' ``` * 收集所有靜態文件到static\_root指定目錄:python manage.py collectstatic * 重啟nginx、uwsgi
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看