乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Django(八)部署項目到服務器nginx和uwsgi配置

       看見就非常 2020-04-29

      簡介

        在配置部署前先簡單描述一下nginx和uWSGI,只是個人學習和理解的,有不對的地方還望指出。
        

      • nginx:

          nginx是一個反向代理服務器,客戶端對Web服務器的訪問需要先經(jīng)過反向代理服務器,再由代理服務器決定目標服務器,這樣可以防止外部程序?qū)eb服務器的直接攻擊;其次可根據(jù)負載情況去請求不同的目標服務器達到負載均衡;還有可以知己處理客戶端對于靜態(tài)文件的請求,而不用在去請求目標服務器。

      • uWSGI:

          一個服務器或中間件,其實現(xiàn)了uwsgi協(xié)議,請求應用程序并返回處理后的信息。

          uWSGI是可以完成所有和瀏覽器的交互過程的,但是還是要使用nginx的原因就是上面講的nginx的功用,一個uwsgi很可能不夠用,即使開了多個process和thread也是不行,畢竟一臺機器的cpu和內(nèi)存都是有限的,有了nginx做代理,一個nginx可以代理多臺uwsgi實現(xiàn)負載均衡的。

      安裝nginx和uwsgi

      首先我是基于python3的,ubuntu版本為16.04,你想配置python3的話需先安裝python3和pip3,然后執(zhí)行如下命令安裝:

      sudo apt-get install nginx
      sudo pip3 install uwsgi

        如果沒有報錯基本就安裝成功了,這里就不再做測試。細心點會發(fā)現(xiàn)nginx是用apt-get安裝的,而uwsgi是用pip3,原因就是uwsgi是pyhon包,而nginx是一個類似sql的服務,也就是說nginx可以開機啟動,不手動關(guān)閉或者關(guān)閉服務器是不會停止的。
        我們想把項目部署到服務器上就必須使用它,假設我們在本地連接上了我們購買的服務器(遠程),然后使用uwsgi拉起我們的項目(后面講解怎么拉起項目),這時候我們就能通過外網(wǎng)訪問了,但是一旦本地的機器斷開與服務器的連接后就無法訪問了。原因就是用uwsgi拉起項目只是在服務器端創(chuàng)建了一個進程,而這個進程是遠程連接的子進程,遠程連接斷開子進程也就結(jié)束了。所以我們需要通過nginx來連接uwsgi,由于nginx是類似sql的服務,所以一旦開啟就會一直在后臺運行,只要服務器不關(guān)閉項目就處于運行狀態(tài)。

      項目上傳及環(huán)境配置

      首先找到你的本地Django項目,比如我的項目名為bsite,絕對路徑為:/home/beau/bsite

      bsite
          bsite
              __init__.py
              settings.py
              urls.py
              wsgi.py
          apps
              ...
          media
              ...
          static
              ...
          templates
              ...
          db.sqlite3
          manage.py

      將項目上傳到服務器:使用本地機器ctr+alt+t打開終端:

      # 連接服務器,輸入yes和密碼進行連接,以下IP和名稱改為你自己的,下述IP是我隨意寫的,只做樣例,我真正使用的沒有寫出
      ssh root@192.168.27.110
      # 成功后創(chuàng)建項目上傳目錄
      mkdir /var/project
      注意:服務器上的項目不要放在root目錄,放在root目錄里在使用uwsgi的時候?qū)懭?socket會出現(xiàn)權(quán)限錯誤。其它目錄都沒問題。

      ctr+c結(jié)束連接回到本機終端,進入項目所在目錄:

      # 注意需要ctr+c結(jié)束連接回到本機終端,進入項目所在目錄
      cd /home/beau/
      # 上傳項目@后為服務器的IP,需要先在服務器創(chuàng)建/var/project/目錄(上面步驟已經(jīng)做了)
      sudo scp -r bsite root@192.168.27.110:/var/project/
      cd /home/beau/

      我們再連接到服務器,然后給服務器安裝nginx、uwsgi、django、python、mysql,這些就不講了。

      配置nginx

      打開本地的終端(ctr+alt+t),連接到服務器(ssh root@192.168.27.110),將uwsgi_params文件拷貝到項目文件夾下。uwsgi_params文件在/etc/nginx/目錄下:

      cp /etc/nginx/uwsgi_params /var/project/bsite
      vim /etc/nginx/sites-enabled/default

      修改default文件為:

      # nginx需要連接的組件
      upstream django {
          # server unix:///var/project/bsite/uwsgi.sock; # 文件socket
          server 0.0.0.0:8080; # 網(wǎng)絡端口socket(我們先使用這個,8080代表在服務端項目在8080端口運行)
      }
      # 服務器配置
      server {
          # 監(jiān)聽端口,通過域名加這個端口號(192.168.27.110:9999)就可訪問項目,而不是8080端口
          listen   9999;
          server_name 192.168.27.110; 
          # 如果你有域名則配置如下,沒有域名則配置你的服務器ip(如上)
          # listen   80;
          # server_name www.nginx.; 
          charset     utf-8;
      
          # 最大上傳大小
          client_max_body_size 75M;
      
          # Django的靜態(tài)media文件路徑
          location /media  {
              alias /var/project/bsite/media;
          }
          # Django的靜態(tài)static文件路徑
          location /static {
              alias /var/project/bsite/static;
          }
          # Django的項目配置
          location / {
              # uwsgi的方式使用上面upstream django的配置,先使用服務端口
              uwsgi_pass  django;
              include     /var/project/bsite/uwsgi_params; # 復制的 uwsgi_params路徑
          }
      }

      保存然后開啟nginx服務

      /etc/init.d/nginx start

      往/var/project/bsite/media里上傳一張圖片test.png(在本地使用sudo scp -r test.png root@192.168.27.110:/var/project/上傳圖片到服務器,需要先進入test.png圖片的目錄),然后訪問http://192.168.27.110:9999/media/test.png查看到圖片則成功:

      配置uwsgi

      如下連接到服務器,并進入項目目錄,創(chuàng)建一個uwsgi.ini的配置文件

      ssh root@192.168.27.110
      cd /var/project/bsite
      vim uwsgi.ini

      然后填入以下內(nèi)容(不會vim請查詢)

      注意目錄,配置問題多半出在目錄上
      [uwsgi]
      # 項目目錄
      chdir = /var/project/bsite/
      # 指定項目的wsgi文件,我的項目是bsite所以為bsite.wsgi,你自己的對應改
      module = bsite.wsgi:application
      # 進程個數(shù)
      workers = 5
      pidfile = /var/project/bsite/uwsgi.pid
      # 指定靜態(tài)文件,指定在那里就使用哪里,必須和nginx的default文件里配置的路徑一樣(當然這個目錄可以是隨意的,在項目之外也可以,只要保證和nginx的靜態(tài)文件路徑一樣就行)
      static-map =/static=/var/project/bsite/static
      # 啟動uwsgi的用戶名和用戶組
      uid=root
      gid=root
      # 啟用主進程
      master=true
      # 自動移除unix Socket和pid文件當服務停止的時候
      vacuum=true
      # 序列化接受的內(nèi)容,如果可能的話
      thunder-lock=true
      # 啟用線程
      enable-threads=true
      # 設置自中斷時間
      harakiri=30
      # 設置緩沖
      post-buffering=4096
      # 設置日志目錄
      daemonize=/var/project/bsite/uwsgi.log
      # 指定sock的文件路徑
      socket=/var/project/bsite/uwsgi.sock

      保存(esc + :wq)然后進入uwsgi.ini目錄使用寫好的uwsgi.ini配置:

      cd /var/project/bsite/
      uwsgi --ini uwsgi.ini
      vim /etc/nginx/sites-enabled/default

      然后你會在/var/project/bsite目錄下看到生成的uwsgi.sock、uwsgi.pid、uwsgi.log文件:
      接著修改default文件,將upstream django修改為如下(這里的server unix:///var/project/bsite/uwsgi.sock; # 文件socket一定和uwsgi那里配置的socket=/var/project/bsite/uwsgi.sock路徑一樣,nginx會使用uwsgi生成的.socket文件),其它保持不變:

      # nginx需要連接的組件
      upstream django {
          server unix:///var/project/bsite/uwsgi.sock; # 文件socket
          # server 0.0.0.0:8080;
      }

      重新啟動項目:

      cd /var/project/bsite/
      uwsgi --reload uwsgi.pid
      /etc/init.d/nginx restart

      如果nginx配置的域名則訪問:http://www.nginx./home(填寫你的域名加上網(wǎng)站的首頁路由),如果是服務器則訪問:http://192.168.27.110:9999/home。這時你會看到你自己的首頁,至此配置已經(jīng)完成。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多