1. 程式人生 > >debian下python flask環境搭建

debian下python flask環境搭建

先來說明開發環境:

  • debian 8 jessie
  • python 3.4版本
  • virtualenv,pip
  • uwsgi 2.0.12
  • nginx 1.8(自行編譯安裝)

環境搭建步驟:

-已經安裝python(debian自帶)
-安裝pip
-安裝virtualenv
-建立專案目錄
-安裝uwsgi
-安裝nginx

安裝pip

$ sudo apt-get install python-pip

安裝virtualenv

$ sudo pip install virtualenv

建立虛擬環境並生效

$ mkdir example_flask
$ 
virtualenv venv (預設建立python2.7的環境)

或者是

$ virtualenv -p python3 venv (建立python3.4的環境)

虛擬環境生效:

$ source ./venv/bin/activate

這個時候命令列頭部會新增:

(venv) yourLinux@adsfas:~ $ 

這時虛擬環境生效!

專案目錄

www/
└── exmaple_flask  
│   ├── logs  // 日誌目錄
│   └── venv  // 虛擬環境(前面已經建立)
│   │   ├── bin
│   │   │         ├── activate
│   │   │         ├── easy_install
│   │   │         ├── gunicorn
│   │   │         ├── pip
│   │   │         └── python
│   │   ├── include
│ │ │ └── python2.7 -> /usr/include/python2.7 │ │ ├── lib │ │ │ └── python2.7 │ │ ├── local │ │ │ ├── bin -> /home/shenye/shenyefuli/bin │ │ │ ├── include -> /home/shenye/shenyefuli/include │ │ │ └── lib -> /home/shenye/shenyefuli/lib │ └── app //Flask 程式目錄
│ │ └── __init__.py //這是程式包檔案。這個目錄下還有其它的檔案此處略過 │ ├── manager.py // 管理檔案 | |--project_nginx.conf // nginx配置檔案 | |--project_uwsgi.ini // uWSGI配置檔案 │ ├── requirements.txt // 依賴庫檔案

按照檔案目錄先進行建立,最後再一併說明程式碼編寫以及配置

安裝uWSGI

(venv) yourd@dsfas:~$ pip install uWSGI

安裝nginx

直接安裝:

(venv) youtdebian@aasdfa:~$ sudo apt-get update
(venv) youtdebian@aasdfa:~$ sudo apt-get install nginx

從原始碼安裝:參考這篇文章

編寫程式碼

首先從app資料夾下的 init.py 來開始編寫程式碼

# __init__.py
#!/usr/bin/env python
# encoding: utf-8

from flask import Flask  

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World"    

然後在專案根目錄下,編寫manager.py檔案程式碼

# manager.py
# !/usr/bin/env python
# encoding: utf-8

from app import app

if __name__ == "__main__":
    app.run()    

這樣我們的程式碼就寫好了,你可以在專案根目錄下執行下面程式碼執行:

(venv) yourdebian@adfa:~$ python manager.py

然後在瀏覽器中訪問127.0.0.1:5000,即可看到顯示”Hello World”的字串,說明我們的程式碼正確有效!

配置nginx

這裡我們先從nginx進行配置,由於我是從原始碼安裝的,只是檔案所在目錄有所不同。
那麼我們先來編輯根目錄下的project_nginx.conf檔案:

server { 
    listen  80;
    server_name localhost;
    charset utf-8;
    client_max_body_size 75M;
    location / { try_files $uri @yourapplication; }
    location @yourapplication {
         include uwsgi_params;
         uwsgi_pass unix:~/project_example_uwsgi.sock
         # 上面一行是建立專案根目錄下的socket檔案,通過socket實現代理
     }    
}      

然後需要將這個檔案通過連結檔案的方式放到nginx安裝目錄下:

(venv) yourdebian@afdsa:~$ sudo ln project_nginx.conf /usr/local/nginx/conf/

光這樣操作是不行的,還需要的內容是將配置檔案載入到啟動檔案中。那麼在啟動檔案中就需要新增這樣一行程式碼:

http {
    include ./project_nginx.conf;
    ..........
}

這時候是不能啟動nginx執行的,如果執行nginx的話,會報502錯誤。原因在於配置檔案中的 .sock 檔案並未建立。那麼需要我們在下面設定完uWSGI的配置檔案後才可以執行。

配置uWSGI

直接上配置檔案:

[uwsgi] 
#application's base folder
base = ~/project_python/project_flask/ # 專案根目錄

#python module to import
app = manager     # 啟動app名稱
module = %(app)   # app例項
home = %(base)/venv_aichebao/ # 虛擬環境名稱
pythonpath = %(home)/bin/python3.4 # 虛擬環境中的python版本

#socket file's location
socket = %(base)/%n.sock # socket通訊檔案

#permissions for the socket file
chmod-socket = 666  

#the variable that holds a flask application inside the module imported at line #6
callable = app # 啟動項

#location of log files
logto = %(base)/logs/%n.log  # 日誌檔案

這樣我們的uWSGI也就配置完成了。現在就可以嘗試執行一下了。

專案執行

在命令列中執行下面命令:

(venv) yourdebian@dfas:~$ uwsgi --ini project_uwsgi.ini

然後啟動你的nginx:

(venv) yourdebian@dfas:~$sudo nginx

最後直接訪問localhost,出現HelloWorld字串即為成功!