使用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项目
这里写图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值