Centos7:Flask-Apache部署

系列文章目录

RHCE第0章:RHCE开始前的准备
RHCE第1章:Web服务器(上)
RHCE第1章:Web服务器(下)
RHCE第2章:DNS服务
RHCE第3章:DHCP服务器
RHCE第4章:Firewall服务、
RHCE第5章:SELinux
RHCE第6章:nfs网络文件系统
RHCE第7章:samba文件共享
RHCE第8章:链路聚合和桥接
RHCE第9章:KVM虚拟化技术
RHCE第10章:时间服务器
RHCE第11章:Mariadb数据库(上)
RHCE第11章:Mariadb数据库(中)
RHCE第11章:Mariadb数据库(下)
RHCE第11章:Mariadb数据库(后)
RHCE第12章:FTP服务
RHCE第13章:ISCSI存储网络
RHCE第14章:邮件服务器
RHCE第15章:Kickstart
Centos7:http/PhP升级
Centos7:Flask-Apache部署


文章目录

  • 系列文章目录
  • 前言
  • 一、安装Python虚拟环境
    • 1.编译安装
    • 2.虚拟环境创建
  • 二、安装mod_wsgi
  • 三、编写配置文件
    • 1.flask文件
    • 2.虚拟环境文件
    • 3.httpd文件
  • 总结


前言

之前写过几个Flask网页来完成一些操作,一直使用的都是Screen+uwsgi所以在并发上边支持的不太好(反正就我自己用),但最近完成的一个项目,对并发要求稍微高一点,前几天也在升级软件,就顺便把Flask的安装部署也记录一下。


一、安装Python虚拟环境

1.编译安装

我使用的是Flask==2.1.2官方的最新稳定版。官方建议Python环境使用3.7以上,所以我选择了3.8.5版本编译安装。
官方下载地址
在这里插入图片描述
下载完成后上传服务器,解压-编译-安装

tar -xvf Python-3.8.5.tar.xz 
cd Python-3.8.5
./configure --enable-shared
make
make install

Centos7:Flask-Apache部署_第1张图片
安装完成之后,会自动添加到环境变量

2.虚拟环境创建

自己选择一个合适的地方创建虚拟环境。

 python3 -m venv flask
 source flask/bin/activate

在这里插入图片描述
现在可以通过pip命令导入自己需要的包。

二、安装mod_wsgi

官方教程中,可以使用yum命令安装,但实际操作不行,所以还是选择编译安装。
mod_wsgi 4.9.4下载
在这里插入图片描述
编译的时候要指定之前安装好的apache和python

tar -xvf mod_wsgi-4.9.4.tar.gz
cd mod_wsgi-4.9.4
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/opt/env/flask/bin/python3
make
make install

之后将安装的模块添加到apache中
Centos7:Flask-Apache部署_第2张图片

三、编写配置文件

1.flask文件

在自己的项目,目录下创建wsgi.py文件
Centos7:Flask-Apache部署_第3张图片
具体内容如下

activate_this = '/opt/env/flask/bin/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))


import sys
sys.path.insert(0, "/var/www/web")

from app import app as application

这时固定写发只有这里面只有两个参数需要改变,一个是第一行的虚拟环境路径,一个是第五行的自己的项目目录路径。

2.虚拟环境文件

第一个文件在虚拟环境中是不存在的,需要我们自己创建
具体内容也是固定写法
vim /opt/env/flask/bin/activate_this.py

"""By using execfile(this_file, dict(__file__=this_file)) you will
activate this virtualenv environment.

This can be used when you must use an existing Python interpreter, not
the virtualenv bin/python
"""

try:
    __file__
except NameError:
    raise AssertionError(
        "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))")
import sys
import os

old_os_path = os.environ['PATH']
os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if sys.platform == 'win32':
    site_packages = os.path.join(base, 'Lib', 'site-packages')
else:
    site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
prev_sys_path = list(sys.path)
import site
site.addsitedir(site_packages)
sys.real_prefix = sys.prefix
sys.prefix = base
# Move the added items to the front of the path:
new_sys_path = []
for item in list(sys.path):
    if item not in prev_sys_path:
        new_sys_path.append(item)
        sys.path.remove(item)
sys.path[:0] = new_sys_path

3.httpd文件

编写apache的conf文件
最底下添加一行,意思是将这个目录下的.conf文件都导入
Centos7:Flask-Apache部署_第4张图片
编写.conf文件(前缀随意)

Listen 5000(可以自己设定端口)
<VirtualHost *:5000>
    ServerName 你的域名

    WSGIDaemonProcess web user=www group=www threads=5
    WSGIScriptAlias / /var/www/web/wsgi.py(你的配置文件)


    ErrorLog /var/www/web/error.log(日志目录)
    CustomLog /var/www/web/access.log combined
    DocumentRoot /var/www/web(项目目录)

    <Directory /var/www/web>
        WSGIProcessGroup web(项目名称)
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

然后重启apache服务器,浏览器访问即可。
Centos7:Flask-Apache部署_第5张图片

注意 一些常用的运维知识,比如服务器开放端口之类,请自行学习,也可以看我的RHCE系列专栏。


总结

至此Flask-Apache的部署完成

你可能感兴趣的:(flask,apache,python)