寫在前面
本文使用Apache+mod_wsgi部署簡單的flask網站。
ubuntu16.04
設置二級域名訪問flask網站。
1、配置
主要分爲一下幾個部分
app
配置:/var/www/app
下app.py
和app.wsgi
Apache virtualhost
配置:/etc/apache2/site-enabled
下app.conf
,同時在/etc/apache2/site-avaiable
下app.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項目