<dl id="vorq8"><menu id="vorq8"></menu></dl>

<sup id="vorq8"></sup>
<sup id="vorq8"></sup>
<sup id="vorq8"></sup>

<optgroup id="vorq8"><address id="vorq8"></address></optgroup>

    <sup id="vorq8"><menu id="vorq8"><small id="vorq8"></small></menu></sup>

    <div id="vorq8"><tr id="vorq8"><object id="vorq8"></object></tr></div>

    當前位置:  首頁  >  PHP教程  >  PHP 應用  >  CMS建站

    在MacOS上部署Nginx和FastCGI以及Flask框架的教程

    這篇文章主要介紹了在MacOS上部署Nginx和FastCGI以及Flask框架的教程,Flask是Python下一個極簡的web開放框架,需要的朋友可以參考下
    最近在學習Flask,本文介紹一下如何部署Flask開發的應用,同時也學習一下Nginx的使用,這只是在Mac上的一個實驗。
    應用

    這里使用的應用就是官方的文檔中給出的Flaskr。
    安裝Nginx

    使用HomeBrew安裝Nginx:

    $ brew install nginx
    
    

    HomeBrew會自動安裝Nginx及其依賴的程序。在我的電腦上安裝的是Nginx 1.6.2,配置文件的路徑是/usr/local/etc/nginx/nginx.conf。

    啟動Nginx的命令:

    $ nginx
    
    

    Nginx的默認端口是8080,用瀏覽器打開localhost:8080,顯示如下所示的頁面說明Nginx已經工作了。

    201552143836668.jpg (600×358)

    配置Nginx

    修改Nginx的配置文件:

    server {
      listen 80;
      server_name localhost;
      charset utf-8;
    
      location / { try_files $uri @flaskr; }
      location @flaskr {
        include fastcgi_params;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param SCRIPT_NAME "";
        fastcgi_pass unix:/tmp/flaskr-fcgi.sock;
      }
    }
    
    

    重新啟動Nginx:

    $ nginx -s quit
    $ sudo nginx
    
    

    因為使用了80端口,啟動Nginx時需要加上sudo。

    啟動完成后,訪問localhost:

    201552143905542.jpg (600×322)

    訪問時出現了錯誤,這是因為我們的應用還沒有啟動。
    FastCGI Server

    Nginx是一個靜態WEB服務器,不能直接運行我們的Python應用,當Nginx接受到請求時,會通過FastCGI轉發給我們的應用,應用是運行在FastCGI Server上的,這個server接收Nginx的請求并調用我們的程序,將結果返回給Nginx,Nginx再將結果返回給用戶。

    我們要使用的FastCGI Server是flup,安裝方法:

    $ pip install flup
    
    

    在應用目錄下創建一個fcgi文件,例如flaskr.fcgi:

    #!/usr/bin/python
    from flup.server.fcgi import WSGIServer
    from flaskr import app
    
    if __name__ == '__main__':
      WSGIServer(app, bindAddress='/tmp/flaskr-fcgi.sock').run()
    
    

    同時給fcgi文件可執行的權限:

    $ chmod +x flaskr.fcgi
    
    

    手動啟動server:

    $ screen
    $ ./flaskr.fcgi
    
    

    使用screen使server在后臺運行,或者:

    $ nohup ./flaskr.fcgi &
    
    

    再次訪問localhost就可以看到我們的應用了。
    遇到的問題

    第一次運行FastCGI server后,任然無法訪問,查看Nginx的日志后發現Nginx服務器沒有權限訪問socket文件,修改nginx.conf添加user配置:

    代碼如下:

    user wzy;

    啟動的時候Nginx報錯:

    nginx: [emerg] getgrnam("wzy") failed in /usr/local/etc/nginx/nginx.conf:2
    
    

    Google一下后發現要加上用戶組才行,改成這樣:

    代碼如下:

    user wzy wheel;

    再次啟動Nginx后一切正常了。

    Nginx配置項user的使用方法:

    Syntax: user user [group];
    Default: user nobody nobody;
    
    

    如果忽略group,Nginx會使用和user名稱一樣的用戶組,例如我設置user wzy,那么Nginx啟動的時候會去查找用戶組wzy,我的電腦上沒有這個用戶組,所以Nginx會報錯。

    吐了個 "CAO" !
    掃碼關注 PHP1 官方微信號
    PHP1.CN | 中國最專業的PHP中文社區 | PHP資訊 | PHP教程 | 數據庫技術 | 服務器技術 | 前端開發技術 | PHP框架 | 開發工具 | PHP問答
    Copyright ? 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社區 版權所有
         
    pc蛋蛋
    <dl id="vorq8"><menu id="vorq8"></menu></dl>

    <sup id="vorq8"></sup>
    <sup id="vorq8"></sup>
    <sup id="vorq8"></sup>

    <optgroup id="vorq8"><address id="vorq8"></address></optgroup>

      <sup id="vorq8"><menu id="vorq8"><small id="vorq8"></small></menu></sup>

      <div id="vorq8"><tr id="vorq8"><object id="vorq8"></object></tr></div>

      <dl id="vorq8"><menu id="vorq8"></menu></dl>

      <sup id="vorq8"></sup>
      <sup id="vorq8"></sup>
      <sup id="vorq8"></sup>

      <optgroup id="vorq8"><address id="vorq8"></address></optgroup>

        <sup id="vorq8"><menu id="vorq8"><small id="vorq8"></small></menu></sup>

        <div id="vorq8"><tr id="vorq8"><object id="vorq8"></object></tr></div>