CentOS7部署Flask项目

1,404 阅读1分钟

一、安装python3

先通过 ssh root@公网ip 登录到服务器,此时在root目录下。

1. 安装相应的编译工具
yum -y groupinstall "Development tools"
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
yum install -y libffi-devel zlib1g-dev
yum install zlib* -y
2. 安装Python3
mkdir /usr/local/python3  # 创建安装目录

wget wget https://www.python.org/ftp/...tar.xz # 建议选择和开发环境一致的python版本

tar -xvJf  Python-...tar.xz  # python安装包解压

cd Python-..  # 进入解压目录

./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl  # 指定创建的目录

make && make install # 编译安装

执行./configure时可能会报错,configure: error: no acceptable C compiler found in $PATH,这是因为未安装合适的编译器,执行 sudo yum install gcc-c++ 安装下就好了

3. 创建软连接
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
python3 -V  # 验证python3版本

这样就可以通过python 命令试用Python2, python3命令试用Python3

4.安装pip3
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz  # 下载源代码
tar -zvxf 9.0.1.tar.gz    # 解压文件
cd pip-9.0.1
python3 setup.py install # 使用 Python 3 安装
ln -s /usr/local/python3/bin/pip /usr/bin/pip3  # 创建软连接
pip3 -V  # 验证一下

到这我们的Python环境安装好了, 接下来要开始安装一下MySQL.

二、安装MySQL

1. 下载并安装MySQL官方的 Yum Repository
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm'  # 下载 Yum Repository 这里版本也尽量选择和本地MySQL相一致的
yum -y install mysql57-community-release-el7-10.noarch.rpm  # 安装 Yum Repository
yum -y install mysql-community-server  # 安装MySQL服务器
2. MySQL数据库设置
systemctl start  mysqld.service  # 启动MySQL
systemctl status mysqld.service  # 查看运行状态
grep "password" /var/log/mysqld.log # 获取root用户的密码
mysql -uroot -p # 登录数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';  # 修改数据库密码 new password 为新密码  一般这步会出现密码复杂度不符合的错误提示
SHOW VARIABLES LIKE 'validate_password%';  # 查看MySQL默认密码复杂度
set global validate_password_policy=LOW;   # 设置安全度为low
set global validate_password_length=6;     # 设置密码长度为6位  这个无所谓
SHOW VARIABLES LIKE 'validate_password%';  # 查看MySQL默认密码复杂度是否修改
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';  # 可以重新设置下新密码
3. 修改数据库默认编码
status # 查看数据库的状态
--------------
...
Server characterset:	latinl   # 我们需要修改为utf8
Db     characterset:	latinl   # 我们需要修改为utf8
Client characterset:	utf8
Conn.  characterset:	utf8
...
--------------

我们需要使用exit; 命令退出mysql, 然后到 /etc 目录下的 my.cnf 文件增加四行代码

# 在顶部添加
[client]
default-character-set=utf8

# 在尾部添加
character-set-server=utf8
collation-server=utf8_general_ci

保存修改后的my.cnf 文件, 重启mysql service mysqld restart , 然后输入 status 再次查看状态, 应该会发生变化了

到这MySQL安装完毕

三、整理项目

1. 创建虚拟环境
cd /home/project/demo	 # 一般都会将项目创建在home 下面 这里自己起文件名
git clone ...  # 讲项目从git上拉下来
mkdir venv  # 创建文件夹
python3 -m venv venv	# 创建虚拟环境
2. 激活虚拟环境
source venv/bin/activate	
3. 安装项目依赖包

首先我们从本地项目的根目录执行 pip freeze > requirements.txt 生成requirements.txt 文件

pip3 install -r requirements.txt
4. 安装gunicorn

Gunicorn (独角兽)是一个高效的Python WSGI Server,通常用它来运行 wsgi application或者 wsgi framework,地位相当于Java中的Tomcat。

pip3 install gunicorn
5. 使用gunicorn运行项目

在项目中新建 wsgi.py 文件 输入一下内容

from app import create_app
app = create_app('production')

这时使用命令 gunicorn -w 4 -b 0.0.0.0:5000 wsgi:app 访问云服务器的公网IP:5000就可以看到你的应用首页

四、使用nginx提供反向代理

1. 安装nginx
sudo apt-get install nginx  # 使用apt-get安装

这时候在浏览器输入服务器ip地址, 应该能看到Nginx的欢迎页面, 这时Nginx安装成功

2.配置nginx

Nginx的配置文件地址为/etc/nginx/nginx.conf

server {
	listen 80 default_server;
	listen [::]:80 default_server;
        
	server_name ....; # 如果没有域名直接填写本机的公网IP地址
	access_log /var/log/nginx/access.log; # 权限日志记录文件
	error_log /var/log/nginx/error.log; # 错误日志记录文件

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		# try_files $uri $uri/ =404;
		proxy_pass http://127.0.0.1:8000; # 转发的本地端口连接,后文会讲述
		proxy_redirect off;
		
		proxy_set_header Host 			$host;
		proxy_set_header X-Real_IP		$remote_addr;
		proxy_set_header X-Forwarded-For	$proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto	$scheme;		
	}
	

	location /static { # 静态文件缓存
		alias /home/用户名/项目名/.../static/; # 项目的静态文件目录
		expires 30d; # 缓存有效期
		
	}
	
}

接着使用sudo nginx -t检查下配置文件

没有问题的话使用命令sudo service nginx restart重启nginx

使用nginx+gunicorn运行应用

这时我们进入项目根目录,使用 gunicorn -w 4 wsgi:app 运行项目

到这基本工作就算结束了,现在可以自己写一些小的接口配合MySQL试一试啦

参考资料

CentOS7安装Python3

CentOS7安装Nginx及配置

CentOS7安装MySQL

CentOS 部署 flask项目

Python3+Gunicorn+Nginx 部署Flask项目

使用nginx、gunicorn部署项目