文章目录
- 写在前面
- ubuntu16.04
- 1、配置
- 2、二级域名设置
- 3、github博客二级域名
- 4、参考
- centos7
- 1、安装配置Apache
- 2、安装配置mod_wsgi
- 3、部署flask
写在前面
本文使用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 syssys.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.topWSGIDaemonProcess app threads=5 python-path=/var/www/app/env/lib/python3.6/site-packagesWSGIScriptAlias / /var/www/app/app.wsgi<directory /var/www/app>WSGIProcessGroup appWSGIApplicationGroup %{GLOBAL}WSGIScriptReloading OnOrder deny,allowAllow from all</directory>ErrorLog ${APACHE_LOG_DIR}/app.error.logLogLevel warnCustomLog ${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项目