debian下python flask環境搭建
阿新 • • 發佈:2019-02-12
先來說明開發環境:
- 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字串即為成功!