1.更新yum
sudo yum update y
2. 安装git
sudo yum install git
如果是Ubuntu下:
sudo apt-get update
sudo apt-get install git
3.安装python3.8 到 /usr/local/下
安装依赖包:命令可以在任意位置
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
安装wget
yum install wget
下载python3.8
wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
# 解压压缩包
tar -zxvf Python-3.8.1.tgz
# 进入文件夹
cd Python-3.8.1
# 配置安装位置
./configure prefix=/usr/local/python3
# 安装
make && make install
# 添加软连接
因为腾讯云的Centos7.6 默认安装了python3.6 软连接的python3 pip3 被占 这里使用了 python38 和 pip38
#添加python3的软链接
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python38
#添加 pip3 的软链接
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip38
4.安装python 虚拟环境(virtualenv)
下载虚拟环境包
pip38 install virtualenv
# 配置软连接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
# 返回根目录 创建虚拟环境的管理目录
cd /
# 创建虚拟环境的管理目录
mkdir -p /data/env
# 进入管理目录
cd /data/env
# 创建虚拟环境
virtualenv -p /usr/bin/python38 flask_one_env
# 进入虚拟环境
# 如果是在/data/env 目录下:
source /flask_one_env/bin/activate
# 如果是其他目录下:
source /data/env/flask_one_env/bin/activate
# 退出虚拟环境
deactivate
5.安装MySQL数据库
在线下载mysql安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装MySQL
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
安装mysql服务
cd /etc/yum.repos.d/
yum -y install mysql-server
此时如果出现 Public key ....is not installed 说明秘钥过期
执行下面命令:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再次执行
yum -y install mysql-server
启动MySQL
systemctl start mysqld
获取MySQL临时密码
grep 'temporary password' /var/log/mysqld.log
进入MySQL
mysql -uroot -p 使用临时密码进入 C4iro:f1lj(l
把MySQL的密码校验强度改为低风险
set global validate_password_policy=LOW;
修改MySQL密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bysjx123#';
设置远程访问:
允许任意ip访问 也可以指定ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Bysjx123#' WITH GRANT OPTION;
刷新设置
FLUSH PRIVILEGES;
创建项目使用的数据库
create database ys_flask_db charset=utf8mb4;
create database ys_game charset=utf8mb4;
# 退出数据库
\q
关闭Cenots的防火墙
sudo systemctl disable firewalld
6.安装项目以及项目所需要的安装包
进入home目录下
cd /home
创建project文件夹
mkdir project
进入 project文件夹下
cd project
clone 后台项目
git clone https://gitee.com/xxxxx/ai-backend.git
# 项目拉取成功后进入项目
cd ai-backend/
# 在这个目录下进入虚拟环境
source /flask_one_env/bin/activate
# 在虚拟环境下 下载python所需要有的安装包
pip3 install -r requirements.txt
# 特别说明 包安装成功后 将这个包卸载掉重新安装 因为这个2.x的包 代码中使用的功能是 1.x的
pip3 uninstall itsdangerous
# 重新安装
pip3 install itsdangerous==1.1.0
# 安装成功后运行项目 (运行一次就行 用初始化 Falsk-migrate迁移工具)
python app.py
出现如下就是运行成功了
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8848
* Running on http://10.0.0.9:8848]
ctrl+c 退出项目运行
# 查看Falsk-migrate 数据管理工具是否启动
flask --help
出现如下:如果有db 命令 就是成功了
(flask_one_env) [root@VM-0-9-centos ai-backend]# flask --help
Usage: flask [OPTIONS] COMMAND [ARGS]...
A general utility script for Flask applications.
An application to load must be given with the '--app' option, 'FLASK_APP'
environment variable, or with a 'wsgi.py' or 'app.py' file in the current
directory.
Options:
-e, --env-file FILE Load environment variables from this file. python-
dotenv must be installed.
-A, --app IMPORT The Flask application or factory function to load, in
the form 'module:name'. Module can be a dotted import
or file path. Name is not required if it is 'app',
'application', 'create_app', or 'make_app', and can be
'name(args)' to pass arguments.
--debug / --no-debug Set debug mode.
--version Show the Flask version.
--help Show this message and exit.
Commands:
db Perform database migrations.
routes Show the routes for the app.
run Run a development server.
# 下面是通过迁移命令生成表结构
flask db init :一个项目只需要执行一次
flask db migrate
flask db upgrade
# 具体执行如下:
(flask_one_env) [root@VM-0-9-centos ai-backend]# flask db init
Creating directory '/home/project/ai-backend/migrations' ... done
Creating directory '/home/project/ai-backend/migrations/versions' ... done
Generating /home/project/ai-backend/migrations/alembic.ini ... done
Generating /home/project/ai-backend/migrations/env.py ... done
Generating /home/project/ai-backend/migrations/README ... done
Generating /home/project/ai-backend/migrations/script.py.mako ... done
Please edit configuration/connection/logging settings in '/home/project/ai-backend/migrations/alembic.ini' before proceeding.
(flask_one_env) [root@VM-0-9-centos ai-backend]# flask db migrate
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'chatgpt_notice'
INFO [alembic.autogenerate.compare] Detected added table 'sys_config'
INFO [alembic.autogenerate.compare] Detected added table 'userinfo'
INFO [alembic.autogenerate.compare] Detected added table 'user_title'
INFO [alembic.autogenerate.compare] Detected added table 'user_token'
INFO [alembic.autogenerate.compare] Detected added table 'userinfo_log'
INFO [alembic.autogenerate.compare] Detected added table 'chatgpt_log'
Generating /home/project/ai-backend/migrations/versions/50fbb9f45f60_.py ... done
(flask_one_env) [root@VM-0-9-centos ai-backend]# flask db upgrade
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 50fbb9f45f60, empty message
# 这样项目的数据库表就是添加完成
7.配置uwsgi
# 全局下载 uwsgi
pip38 install uwsgi
# 全局链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
在项目目录下创建配置文件
touch uwsgi.ini
touch uwsgi.pid
touch uwsgi.log
touch uwsgi.status
uwsgi.ini 的配置
[uwsgi]
# uwsgi启动时所使用的地址与端口
socket=127.0.0.1:8000
# 必须全部为绝对路径
# 项目的路径 ,pwd指令中显示的路径
chdir=/home/project/ai-backend
# flask的wsgi文件 启动文件
wsgi-file=/home/project/ai-backend/app.py
# python 程序内用以启动的 application 变量名
callable=app
# Python虚拟环境的路径 , 进入到虚拟环境目录里面执行pipenv --venv得到
virtualenv=/flask_one_env
daemonize=/home/project/ai-backend/uwsgi.log
stats=/home/project/ai-backend/uwsgi.status
pidfile=/home/project/ai-backend/uwsgi.pid
# 进程相关
# 主进程
master=True
# 最大数量的工作进程
processes=10
# 线程数
threads=4
#状态检测地址
# stats = 127.0.0.1:9191
# 停止 uwsgi
uwsgi --stop uwsgi.pid
# 重启 uwsgi
uwsgi --reload uwsgi.pid
8.配置nginx
# 查看是否已经下载了nginx
nginx -v
#下载:
安装 EPEL 仓库
Nginx 不是 CentOS 官方软件源的一部分。所以,要安装 Nginx,需要添加 Extra Packages for Enterprise Linux (EPEL) 存储库。使用以下命令安装 EPEL 仓库:
sudo yum install epel-release
安装 Nginx
使用以下命令安装 Nginx:
sudo yum install nginx
# 配置nginx的conf文件
不需要在nginx的初始文件下修改
初始文件会自动加载.d下的所有conf文件
cd /etc/nginx/conf.d/
touch xxx.conf
配置xxx.conf
纯后台的配置 .conf 文件
server {
listen 80; # 监听请求的端口号
server_name 43.134.178.153; # 域名或 IP 地址
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; # uWSGI 服务器监听的 IP 和端口号
}
}
前后台一起配置的 .conf文件
server {
listen 80; # 前端端口
server_name 43.134.178.153;
location = / {
return 301 /ai;
}
location / {
root /home/project/ai-vue/dist; #前端静态dist文件的路径
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://127.0.0.1:8848/; # 反向代理到后端
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;
}
}
server {
listen 8848; # 监听请求的端口号 这是后台的配置
server_name 43.134.178.153; # 域名或 IP 地址
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; # uWSGI 服务器监听的 IP 和端口号
}
}
启动nginx
systemctl status nginx
此时应该就能访问了
如果不能访问
重启 uwsgi 试试
uwsgi --ini uwsgi.ini
# 检查nginx 下的 .conf 文件格式是否正确
sudo nginx -t
# 重启ngnix
sudo systemctl restart nginx
网友评论