目录

前言

一、CentOS7的开局

1.网卡配置

2、下载工具的安装

3、yum工具的源换成阿里云进行源

4、安装网络管理工具

 二、Python3环境的部署

1、CentOS7下的Python环境说明

2、Python3环境部署的前置准备工作

2.1、前置准备列表

2.2、安装编译依赖包

2.3、下载Python3.8.9.tar.zx源码包

2.4、创建Python3.8.9安装目录

3、安装Python3.8.9

3.1、进入到Python3.8.9.tar.zx的下载目录

3.2、解压Python3.8.9.tar.xz

3.3、生成Makefile文件

3.4、修改Makefile文件

3.5、编译并安装Python3.8.9

3.6、建立python3.8.9的软连接

3.7、创建pip的软连接

3.8、更换pip源

3.9、升级pip

3.10、安装python虚拟环境管理

3.11、创建virtualenv的软连接

三、MariaDB环境部署

1、准备工作

2、安装MariaDB相关服务

2.1、安装

2.2、调整用户密码

2.3、放行mysql的默认端口3306

2.4、开启启动Mariadb服务

四、Apache相关部署

 1、准备工作

2、安装Apache服务

2.1、基础服务安装

 2.2、开发工具包安装

2.3、mod_wsgi模块的安装

2.4、调整Apache配置文件开启应用监听

2.5、增加5001相对站点的配置

2.6、增加Flask应用虚拟站点配置文件

2.7、配置Apache加载mod_wsgi模块

2.8、关闭SELinux

2.9、调整SELinux的策略放行5001端口

2.10、启动Apache服务

五、附例

1、Python虚拟环境

1.1、使用virtualenv创建虚拟环境

2、Flask应用发布所需的wsgi文件内容

3、将站点文件上传上传至上文配置的站点根目录中

4、调整站点配置文件

5、根据实际情况初始化数据库及脚本

总结



前言

一步一步的在CentOS下部署Flask站点的生产环境,其中包含基础环境的配置与Python3.8.9,Apache、mod_wsgi和MariaDB的安装。

一、CentOS7的开局

 完成CentOS7的最小化安装后,需要对系统的基础环境进行调整,并安装必要的软件包。在此环节需要完成的配置如下表:

基础配置清单

序号

配置项

描述

1

网卡配置

调整网卡配置文件,配置IP相关信息

2

下载工具安装

安装下载工具wget用于后续下载资源做准备

3

yum源安装

将yum仓库源,将其指向阿里云镜像站点

4

网络管理工具安装

CentOS7默认没有常用工具ifconfig,需要自行安装

1.网卡配置

1.1、首先使用命令查看服务器网卡列表所用命令以及效果如下:

  • 命令:

        ip add

  • 效果图

centos部署ovs_flask

  • 备注

      图中红线部分是本服务器的网卡,因为我的主机做了双网卡绑定,所以显示的信息可能有所不        同,另外不同的主机加载网卡后网卡名称会有所不同。

 1.2、根据实际情况调整网卡的配置文件

  • 命令

vi /etc/sysconfig/network-scripts/ifcfg-ens33

systemctl restart network

  •  效果图

centos部署ovs_centos部署ovs_02

  • 备注

        IPADDR=根据实际情况配置网址

        NETMASK=子网掩码

        GATEWAY=网关

        DNS1=首选DNS

        DNS2=备选DNS

        ONBOOT=yes随系统启动而启动

2、下载工具的安装

  • 命令

yum install wget

  • 效果图

centos部署ovs_flask_03

  • 备注

        出现交互提示时选择y进行安装,安装完成后可以使用rpm -qa wget查看安装结果

3、yum工具的源换成阿里云进行源

3.1、换源操作

  • 命令

        下载:

wget http://mirrors.aliyun.com/repo/Centos-7.repo

        备份原有:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

        换源:

mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo

  • 效果图

centos部署ovs_python_04

centos部署ovs_centos部署ovs_05

 3.2、重建yum缓存

  • 命令

       yum clean all

yum makecache

  • 效果图

centos部署ovs_python_06

 4、安装网络管理工具

  • 命令

        yum  install net-tools

  • 效果图

centos部署ovs_flask_07

 二、Python3环境的部署

1、CentOS7下的Python环境说明

       CentOS7下模式默认的Python环境是Python2.7,系统中许多软件的脚本都是使用Python2.7进行编写,例如yum软件。安装Python3环境只是为了部署待上线软件的需要,不能将原有的Python2.7的环境破坏。虽然破坏Python2.7环境所产生的后果能够修复,但执行起来比较麻烦且或多或少会出现遗漏,破坏系统整体的稳定性。

2、Python3环境部署的前置准备工作

2.1、前置准备列表

序号

准备动作

说明

1

安装编译依赖包

安装编译Python3.8.9所需要的开发环境

2

下载Python3.8.9源码包

从python官网下载Python3.8.9源码包

3

准备目标安装目录

python3安装路径一般为:/usr/local/python3

2.2、安装编译依赖包

  • 命令

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc  libffi-devel

  • 效果图

centos部署ovs_后端_08

2.3、下载Python3.8.9.tar.zx源码包

  • 命令

      wget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tar.xz

       或指定下载文件路径

      wget -O

  • 效果图

centos部署ovs_python_09

centos部署ovs_后端_10

2.4、创建Python3.8.9安装目录

  • 命令

mkdir -p /usr/local/python3

  • 效果图

centos部署ovs_apache_11

3、安装Python3.8.9

 3.1、进入到Python3.8.9.tar.zx的下载目录

  • 命令

cd /usr/local/python3

3.2、解压Python3.8.9.tar.xz

  • 命令

xz -d Python3.8.9.tar.xz && tar -xvf Python.3.8.9.tar

  • 效果的部分截图    

 3.3、生成Makefile文件

  • 命令

./configure --with-ssl --prefix=/usr/local/python3

  • 效果最终部分截图

centos部署ovs_flask_12

3.4、修改Makefile文件

  • 命令

vi Makefile

  • 在Makefile文件中添加编译属性

-fPIC

  • 效果图

centos部署ovs_python_13

  • 注意

根据系统环境的不同,BASEFLAGS环境变量的位置可能存在一些差异,编译指令的位置根据实际情况添加,另外修改完成后注意保存,切记!:wq

3.5、编译并安装Python3.8.9

命令

make && make install

效果图部分截取

centos部署ovs_flask_14

 3.6、建立python3.8.9的软连接

  • 命令

创建连接:ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3

验证连接:ll /usr/bin/ | grep python3

  • 效果图

centos部署ovs_apache_15

 3.7、创建pip的软连接

  • 命令

创建连接:ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

验证连接:ll /usr/bin/ | grep pip

  • 效果图

centos部署ovs_apache_16

3.8、更换pip源

  • 命令

在root用户的根目录下创建pip配置文件目录及配置文件

mkdir .pip && cd .pip && touch pip.conf

  • 配置文件内容

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https//pypi.tuna.tsinghua.edu.cn
 

3.9、升级pip

  • 命令

python3 -m pip install  --upgrade pip

  • 效果图

centos部署ovs_apache_17

 3.10、安装python虚拟环境管理

  • 命令

pip3 install virtualenv

  • 效果图

centos部署ovs_apache_18

3.11、创建virtualenv的软连接

  • 命令

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

  • 效果图

centos部署ovs_python_19

三、MariaDB环境部署

1、准备工作

在系统中查询是否安装过MariaDB相关的软件包,如果存在对其进行反安装。

  • 相关命令列表

systemctl stop mariadb

rpm -qa mariadb

rpm -e --nodeps ***软件包名(上面命令查询出来的)

        推荐提前规划主机名称,并进行设置主机名称根据自己的实际情况命名:

hostnamectl set-hostname node1.myapplication.service

2、安装MariaDB相关服务

2.1、安装

  • 命令

yum install mariadb-server mariadb-client

  • 效果图(部分截图)

centos部署ovs_python_20

2.2、调整用户密码

  • 命令列表

序号

命令

执行位置

描述

1

systemctl start mariadb

shell

开启mariadb服务

2

systemctl status mariadb

shell

查看服务启动状态

3

mysql

shell

使用客户端进入mysql

4

use mysql;

MysqlClient

切换当前mysql数据库

6

INSERT INTO `user`(Host, User, Password) VALUES('%','root',PASSWORD('a123456.'));

MysqlClient

添加外部访问用户root

7

GRANT ALL ON *.* TO root@'%';

MysqlClient

为用户授权

8

FLUSH PRIVILEGES;

MysqlClient

刷新用户授权

9

select * from user;

MysqlClient

查看用户信息表

10

quit

MysqlClient

退出MysqlClient

11

mysql -hlocalhost -uroot -p

shell

再次登录时根据情况指定登录参数进行登录

  • 部分效果截图

centos部署ovs_centos部署ovs_21

centos部署ovs_centos部署ovs_22

centos部署ovs_flask_23

2.3、放行mysql的默认端口3306

  • 命令

firewall-cmd --permanent --add-port=3306/tcp

  • 效果图

centos部署ovs_apache_24

2.4、开启启动Mariadb服务

  • 命令

systemctl enable mariadb

  • 效果图

centos部署ovs_python_25

四、Apache相关部署

 1、准备工作

        本文的主旨是部署Flask在CentOS中部署Flask框架的生产环境,支持Flask框架的Web服务应用有很多,最常用的要数Nginx和Apache两种,因为我所在的公司使用Apache环境的应用比较多,故本文将主要介绍Apache下部署Flask生产环境的方法。因为Flask应用本质上为WSGI程序,要想在Apache环境下运行Flask应用,尚需为Apache安装mod_wsgi模块。为了规避mod_wsgi因版本差异所引发的系列问题,本文将使用源码安装方式安装mod_wsgi,可以从官网下载相应的源码包。在安装mod_wsgi模块时,需要使用apache的工具包,安装Apache的同时,需将对应的开发工具包一并安装,下文中将一步一步对各环节的配置部署进行详细介绍。

2、安装Apache服务

2.1、基础服务安装

  • 命令

yum install httpd

  • 部分效果图

centos部署ovs_后端_26

 2.2、开发工具包安装

  •  命令

yum install httpd-devel.x86_64

  • 部分效果截图

centos部署ovs_flask_27

2.3、mod_wsgi模块的安装

  • 命令列表

序号

命令

描述

1

wget -O /tmp/mod_wsgi.4.9.3 https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/refs/tags/4.9.3

 

下载mod_wsgi源码包

2

cd /tmp

进入到文件存放目录

3

tar -xvf mod_wsgi.4.9.3

解压缩源码文件

4

 whereis apxs

查看apxs存放路径,我的路径是在/usr/bin/apxs

5

cd /tmp/mod_wsgi-4.9.3/ && ./configure --with-apxs=/usr/bin/apxs --with-python=/usr/bin/python3

 

进入源码目录并生成Makefile文件

6

make && make install

编译并安装mod_wsgi

  • 部分效果截图

centos部署ovs_flask_28

 

centos部署ovs_后端_29

2.4、调整Apache配置文件开启应用监听

        本次我所部署的应用分为两部分,第一部分是纯javascript构建的UI站点,第二部分为PythonFlask构建的WebAPI站点,因为数据吞吐比较小,所以将两个站点全都部署在同一台服务器上,利用80端口提供UI站点服务,5001端口提供WebAPI的服务。

命令

vi /etc/httpd/conf/httpd.conf

  • 效果结果

centos部署ovs_后端_30

2.5、增加5001相对站点的配置

  • 命令列表

序号

命令

描述

1

mkdir /var/iemoniterserver

创建Flask站点根目录

2

adduser wsgiuser

添加新用户,此用户将配置到wsgi站点的配置文件中,用于启动wsgi进程

3

passwd wsgiuser

修改wsgiuser的密码

  •  部分效果截图

centos部署ovs_python_31

centos部署ovs_python_32

2.6、增加Flask应用虚拟站点配置文件

  • 命令

创建应用虚拟站点的配置文件:touch /etc/httpd/conf.d/youapp.conf

编辑虚拟站点的配置文件:vi /etc/httpd/conf.d/youapp.conf

  • 效果图

centos部署ovs_centos部署ovs_33

  • 关键字解释列表

关键字解释

序号

行号

关键字

解析

1

2

IEmoniterServer

虚拟站点名称

2

3

user=wsgiuser

基于安全因素考虑,使用独立的用户名启动wsgi线程,wsgiuser为上一配置环节中,创建的用户

3

3

group=wsgiuser

4

4

IEmoniterServer.wsgi

为Flask站点作为wsgi服务分发的必要配置,本文的后面会附加其内容格式的实例

5

5

 /var/iemoniterserver

2.5环节所创建的站点根目录

6

8

Require all granted

apache2.4的授权命令

7

9-11

Header *

我的这个应用主要功能是提供WebAPI,所以需要拥有跨域请求的能力,此三条配置,是为了允许站点跨域访问

2.7、配置Apache加载mod_wsgi模块

  • 命令

创建文件:touch /etc/httpd/conf.modules.d/wsgi.conf

配置文件:vi /etc/httpd/conf.modules.d/wsgi.conf

配置内容:LoadModule wsgi_module modules/mod_wsgi.so

自动启动:systemctl enable httpd

启动服务:systemctl start httpd

服务状态:systemctl status httpd

  • 部分效果图

centos部署ovs_centos部署ovs_34

小节

        从上面的效果图中可以看到,Apache启动失败,失败原因为5001端口在绑定时遭到拒绝,问题引发的原味为SElinux服务的问题,目前有两种途径解决问题,第一种是关闭SELinux ,第二种在SELinux中放行端口,关闭SELinux在大多数文章中都有过描述,但小编认为,这样做会给系统带来安全隐患,本文将使用第二种方式来解决上述问题,下文中将分别介绍两种方法的操作。

2.8、关闭SELinux

  • 命令

编辑SELinux配置文件:vi /etc/selinux/config

  • 效果图

centos部署ovs_centos部署ovs_35

将SELINUX=enforcing 修改成 SELINUX=disabled

临时性放行所有可以使用 setenforce 0 命令,在不调整配置文件的情况下此命令依然好用,但重启后失效。

2.9、调整SELinux的策略放行5001端口

  • 准备

序号

命令

作用

1

yum provides semanage

查询SELinux策略管理工具的安装包

2

yum install  policycoreutils-python-2.5-34.el7.x86_64

安装第一环节查询出来的软件包

  •  在SELinux中放行5001端口

放行端口:semanage port -m -t http_port_t -p tcp 5001
查看端口:semanage port -l |grep 5001
效果图

centos部署ovs_flask_36

 2.10、启动Apache服务

  • 命令

启动:systemctl start httpd

状态:systemctl status httpd

centos部署ovs_python_37

五、附例

1、Python虚拟环境

        一般一台服务其上可能部署多个Python应用,有些是WEB应用,有些是单例程序、也有一些是自动化脚本。这些程序在编制的时候或多或少都会引用一些依赖资源及软件包,如果全局安装这些依赖程序或软件包,会造成不同Python程序资源引用的混乱,乃至报错,为了解决这个问题,最好的解决办法是利用Python虚拟环境来管理这些依赖,将不同的Python应用相互隔离,保证Python进行工作在独立的环境中,确保进行的稳定性。虚拟环境的安装及部署前文中有所提及,请到相关的章节查阅。

1.1、使用virtualenv创建虚拟环境

  • 命令

创建:virtualenv venv

激活虚拟环境:source ./venv/bin/activate

  • 命名说明

上述两个命令中的venv是虚拟环境名称,当执行完成创建命令后,将会在命令执行目录下创建以此

环境名称命名的文件。

  • 效果截图

centos部署ovs_centos部署ovs_38

2、Flask应用发布所需的wsgi文件内容

请根据自身的实际情况调整wsgi的配置,文件名为yourapplication.wsgi

activate_this = '/var/iemoniterserver/venv/bin/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

import os.path
import sys

curr_dir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, curr_dir)

from IEmoniterServer import create_app

application = create_app()

3、将站点文件上传上传至上文配置的站点根目录中

4、调整站点配置文件

5、根据实际情况初始化数据库及脚本
 

总结

        以上就是今天所讲关于CentOS7中部署Flask应用的全部内容,涉及到的内容比较多,但每一个章节中所涉及的内容在日常开展开发,运维等工作时都可以用到。限于篇幅原因不能对各个技术点掰开揉碎的细致分析,但仍希望能够为各位读者带来一些帮助。