使用Apache+mod_wsgi部署flask網站

寫在前面

本文使用Apache+mod_wsgi部署簡單的flask網站。

ubuntu16.04

設置二級域名訪問flask網站。

1、配置

主要分爲一下幾個部分
app配置:/var/www/appapp.pyapp.wsgi
Apache virtualhost 配置:/etc/apache2/site-enabledapp.conf,同時在/etc/apache2/site-avaiableapp.conf

配置目錄

- var/www
	- html # Apache默認Page
	- app # 創建application
		- app.py # applicaton
		- app.wsgi # 配置

app.py
flask app文件

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
	return "hello"
if __name__=="__main__":
	app.run()

app.wsgi
運行flask app前運行

import sys

sys.path.insert(0, "/var/www/app")
from app import app as application

注意:如果日誌顯示 No Module named flask;參考mod_wsgi (Apache)使用虛擬環境出現問題修改;最好在 app.conf中加入python-path,直接在app.wsgi 啓動虛擬環境可能報錯

app.conf
添加apache virtualhost

<virtualhost *:80>
    ServerName app.seesaw.top
	
    WSGIDaemonProcess app threads=5 python-path=/var/www/app/env/lib/python3.6/site-packages
    WSGIScriptAlias / /var/www/app/app.wsgi

    <directory /var/www/app>
        WSGIProcessGroup app
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </directory>
    ErrorLog ${APACHE_LOG_DIR}/app.error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/app.access.log combined
</virtualhost>

其中python-path需要填寫虛擬環境位置,否則將無法加載模塊
虛擬環境配置參考使用virtualenv搭建python3開發環境

2、二級域名設置

在這裏插入圖片描述

3、github博客二級域名

域名解析設置
在這裏插入圖片描述
github設置在這裏插入圖片描述
與在根目錄下添加CNAME文件相同,其中CNAME文件中寫入blog.seesaw.top

4、參考

flask+mod_wsgi+apache站點部署(Ubuntu16.04)
mod_wsgi (Apache)
Ubuntu Apache Server 部署 Flask 程序
使用virtualenv搭建python3開發環境

centos7

1、安裝配置Apache

首先需要注意的是,Apache在centos上叫做httpd
安裝Apache服務

yum install httpd

配置Apache服務

vi /etc/httpd/conf/httpd.conf

在#Listen 12.34.56.78:80下面模仿註釋添加listen的IP地址或域名加上端口號
啓動或關閉Apache服務
啓動

systemctl start httpd.service

關閉

systemctl stop httpd.service

訪問
訪問服務器地址(配置中Listen的地址),默認顯示Apache的測試頁面。
/etc/httpd是httpd的根目錄
/var/www/html下是放置請求頁面的目錄,直接把靜態網頁的index.html網頁放在該目錄下,訪問服務器地址即可訪問網站。

2、安裝配置mod_wsgi

首先安裝httpd-devel

yum install -y httpd-devel

安裝mod__wsgi

yum install mod_wsgi

安裝完成之後,mod_wsgi.so會在Apache的modules目錄中
需要將mod_wsgi.so加載到httpd.conf

vi /etc/httpd/conf/httpd.conf

在最後添加

LoadModule wsgi_module modules/mod_wsgi.so

3、部署flask

上傳
首先使用將flask項目包上傳到 /var/www/html下
推薦使用WinSCP
這裏寫圖片描述
配置app.wsgi
在/var/www/html/app下配置app.wsgi文件

vi /var/www/html/app/app.wsgi

文件中寫入

import sys
sys.path.insert(0, '/var/www/html/app')
from app import app as application

配置wsgi.conf
在/etc/httpd/conf.d/下配置wsgi.conf
新建一個wsgi.conf文件

vi /etc/httpd/conf.d/wsgi.conf

在文件中輸入

#配置虛擬環境地址
WSGIDaemonProcess app python-path=/var/www/app/lib/python3.6/site-packages
WSGIProcessGroup app
#路由是/app,通過訪問服務器域名:端口/app直接訪問項目
#/var/www/app.wsgi是配置文件,下面的/var/www/html/app是項目包,其中有app.py文件
WSGIScriptAlias /app /var/www/html/app/app.wsgi

<Directory /var/www/html/app>
    Require all granted
</Directory>

其中需要注意,第一行使用了一個python虛擬環境,其中包含項目所需的所有包(包括flask),否則即使服務器上的python環境配置了flask環境,仍然無法使用,會報錯找不到模塊;這個問題時踩得最大的坑。

使用虛擬環境
下面介紹需要使用的虛擬環境,可以通過Pycharm獲取,Pycharm每次創建項目,可以選擇使用虛擬環境或本地環境。
也可以通過anaconda的conda來配置虛擬環境
創建python3.6虛擬環境,其中myenv是自己取得虛擬環境名

conda create -n myenv python=3.6

給虛擬環境安裝包

conda install -n myenv package

創建的虛擬環境在anaconda3/env下面,可以複製到項目中,在上面改爲相應的位置即可

訪問
使用服務器地址:端口,仍然顯示的是/var/www/html/下的index頁面
使用服務器:端口/路由(如上面的是12.34.56.78:80/app),顯示的是flask網站

日誌
使用下面命令訪問網站的錯誤日誌

vi /var/log/httpd/error_log

使用域名
當然有域名的話,可以直接將域名解析到服務器地址,可以直接使用域名訪問
解析參數配置如下
這裏寫圖片描述
訪問/var/www/html/index.html
這裏寫圖片描述
訪問/var/www/html/app下的flask項目
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章