centos7服务部署flask项目

centos7语言配置问题

登录服务器,注意观察是否出现以下警告提示

warning: setlocale: LC_CTYPE: cannot change locale (en_US.utf8): No such file or directory

如果有提示说明系统语言配置有问题,我们可以编辑/etc/environment文件进行语言设置,具体设置如下:

1
2
3
4
vi /etc/environment

LANG=en_US.utf8
LC_CTYPE=en_US.utf8

最后执行 source /etc/environment 使设置生效

参考链接

如果不进行该设置后面在运行项目的时候会出现语言设置错误

1. python3.6.5 安装

1 环境准备:

1
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc

2 下载python3安装包并解压

1
2
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -xzvf Python-3.6.5.tgz -C

3 把Python3.6安装到 /usr/local目录,使用make altinstall,如果使用make install,在系统中将会有两个不同版本的Python在/usr/bin/目录中。这将会导致很多问题

1
2
3
4
5
6
7
1. 进入解压目录下
cd /Python-3.6.5

2. 执行以下命令
./configure --prefix=/usr/local
make
make altinstall

4 建立python3和pip3软连接

1
2
3
ln -s /xxx/Python-3.6.5/bin/python3.6 /usr/bin/python3

ln -s /xxx/Python-3.6.5/bin/pip3.6 /usr/bin/pip3

参考连接

2. Virtualenv 环境搭建

1. 执行安装 Virtualenv

1
pip3 install virtualenv

2. 在项目中安装 Virtualenv环境

执行以下命令创建Virtualenv环境

1
virtualenv venv

如果出现以下错误:

virtualenv command not found

可用下面方法解决:

1
2
3
4
5
6
1: 先找到virtualenv.py的位置(find . -name 'virtualenv.py')
一般在python3安装包目录下 ../lib/python/sitepackages/virtualenv.py

2: 直接执行 python3 ../sitepackages/virtualenv.py venvName

3: 或者可以把直接把该操作添加到虚拟环境变量,然后直接执行 virtualenv venvName

3. 启动 Virtualenv

启动命令:

1
source venv/bin/activate

退出命令:

1
deactivate

3.1 安装依赖包

下面使用pip和pip3效果是一样的,都是运行在python3环境下

1
pip install -r requirements.txt

此处不能使用sudo命令,使用sudo是安装系统环境下

3.2 配置并启动web服务器

很重要:设置 FLASK_APP 环境变量,如果没设置后面执行flask命令会抛出各种错误提示

1
2
export FLASK_APP=flasky.py
flask run -h 0.0.0.0 -p 5000

4. 数据库操作

该操作在FLASK_APP 环境变量设置完成后执行

1
2
3
4
5
6
7
8
1: 生成migriation文件目录(执行一次)
flask db init

2: 生成小版本version文件
flask db migrate

3: 升级数据库
flask db upgrade

如果出现以下错误:

ModuleNotFoundError: No module named ‘MySQLdb’

由于 MySQL-python 不支持 Python 3(MySQL-3.23 through 5.5 and Python-2.4 through 2.7 are currently supported)因此我们可以使用 PyMySQL 来代替

解决方法:

1
2
3
4
5
1. 检查是否安装 PyMySQL,如果没有安装执行下面命令安装:
pip install PyMySQL

2. 检查 SQLALCHEMY_DATABASE_URI 数据库地址配置:
需要使用 mysql+pymysql 开头的的配置