前言
出于学习和实践的目的,近期自己写了一个小项目关于flask的API项目,涉及到服务器的上线部署问题,这里就做一个详细的记录和分享吧~欢迎一起交流学习指正~
正文
一、centos7安装python3
使用centos7的服务器操作系统的小伙伴都知道,centos自带的python版本是2.7的版本,因此我们首先要做的就是针对python版本进行升级,安装python3.x版本,目前我看了虽然有3.9的版本,但是我这边使用的是3.8版本,一下是centos7安装python3.8.2版本的安装步骤:
1)、python3下载
python所有版本下载地址:所有版本下载地址
python3.8.2下载地址:3.8.2版本下载地址
下载命令:
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
注意:如果你的服务器带宽等等因素导致下载慢的话可以选在本机下载后上传,不然慢的机器你要等待很久
解压命令:
tar zxf Python-3.8.0.tgz
解压后进入软件目录:
cd Python3.8.2
2)、安装前准备工作
由于编译python的源码需要一些必要的依赖工具,因此首先我们得保证系统中具备,因此可以通过以下命令进行检测和安装更新:
yum update -y
yum groupinstall -y 'Development Tools'
yum install -y gcc openssl-devel bzip2-devel libffi-devel
3)、编译安装python3.8.2
./configure prefix=/usr/local/python3.8.2 --enable-optimizations
// 如果编译出错,可以尝试取消后面的--enable-optimizations
make && make install
export PATH=$PATH:/usr/local/python3.8.2/bin/
// 加入系统环境变量中,其中/usr/local/python3.8.2/bin为你自己服务器相应目录
4)、创建命令软连接
创建软连接的目的就是为了之后我们能够方便快速的使用python3的命令:
创建python3的命令软连接:
ln -s /usr/local/python3.8.2/bin/python3 /usr/bin/python3
创建pip3的命令软连接:
ln -s /usr/local/pip3.8.2/bin/pip3 /usr/bin/pip3
注:很多人说要去安装pip3, 其实我们在安装完成python3.8.2的同时,pip3就已经存在了,所以无需额外安装。
5)、校验是否安装成功
校验是否安装成功只需要输入检测python3版本即可知道,命令如下:
python3 -V
如果出现 Python 3.8.2 的python版本信息即安装成功了。
二、centos7安装Mysql
由于mysql 版权方面的限制, centos 7 没有内置mysql 服务器, 必须从mysql 官方进行安装。
安装mysql5.7的源:
yum install http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
进行检测更新:
yum update
快速安装mysql5.7,如果你想编译安装的可以下载mysql5.7的源码进行编译安装:
yum install mysql-server
安装成功后启动mysql服务:
systemctl start mysqld
为了后期方便,可以设置mysql服务开机自启:
systemctl enable mysqld
注意:mysql 5.7 在安装完成的时候会生成一个临时密码, 我们需要找到日志 文件`/var/log/mysqld.log`来获取这个临时密码,可以打开文件查看也可以通过以下命令获取:
grep 'temporary password' /var/log/mysqld.log
至此mysql就已经成功安装到了centos7服务器中了,建议使用临时密码登录mysql进行密码修改。
三、flask项目部署到服务器
1)、创建项目文件及虚拟环境
切换到自己的项目目录,然后创建虚拟环境文件夹
mkdir -p venv
然后创建虚拟环境
python3 -m venv venv
激活虚拟环境:
source venv/bin/activate
2)、安装项目依赖
到本地工程下导出 requirements.txt并上传到项目目录下
pip freeze >requirements.txt
然后根据 requirements.txt 文件安装依赖包:
pip3 install -r requirements.txt`
3)、安装gunicorn
在激活的虚拟环境中进行gunicorn安装,这样避免了部分软件依赖找不到的问题,安装命令如下:
pip3 install gunicorn
四、运行项目
由于使用了gunicorn,所以启动项目就非常简单了:
gunicorn start:app
// start为项目入口文件名
// app为服务对象
如果你想指定端口和支持ip端口访问项目可以使用以下命令启动:
gunicorn -b 0.0.0.0:8000 start:app
运行后看到listening 监听即启动成功了~
gunicorn启动flask项目成功截图
五、启动端口提供外网访问
1)、服务器提供商管理后台配置
现在的云服务器不论是亚马逊、阿里云还是腾讯云等都提供了一个叫做安全组的东西,这个主要是配置该服务器的一些外网通信哪一些是支持许可外网访问的,这里将8000端口配置允许外网访问即可。
2)、centos7开放端口配置
centos7开放端口其实就是将端口加入防火墙外,允许外网访问。centos7防火墙使用的是firewall
最极端的方式就是关闭防火墙(不推荐)
systemctl stop firewalld
配置防火墙允许端口
// 开启端口
firewall-cmd --zone=public --add-port=8000/tcp --permanent
// 重载配置
firewall-cmd --reload
// 或者重启防火墙
systemctl restart firewalld
至此,Centos7 + Mysql5.7 + Gunicorn + Flask的flask项目部署上线就已经做好了~
不像程序员的IT男——欢迎大家交流指正~