本项目是一个前后端分离的图书管理系统
class Book(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(50), nullable=False)
author = Column(String(30), default="未名")
summary = Column(String(1000))
image = Column(String(100))
# MySQL数据库配置示例:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://username:password@ip_address:port/db_name'
# PostgrepSQL数据库配置示例:
SQLALCHEMY_DATABASE_URI = 'postgresql://username:password@ip_address:port/db_name'
Tips: 记得去掉注释,即SQLALCHEMY_DATABASE_URI前的 ' # ' 符号;
您所使用的数据库账号必须具有创建数据表的权限,否则将无法为您自动创建数据表
ip_address: 数据库IP地址
port: 数据库端口
username: 用户名
password: 用户密码
db_name: 数据库名
# 超级管理员用户密码修改文件路径 LibraryManagement/flask_backend/app/cli/db/init.py
root.username = "username"
root.password = "password"
Tips: 如果您需要一些业务样例数据,可以执行脚本 flask db fake 添加它
服务默认端口为5000,指定端口方法 flask run -p 5000
访问 http://localhost:5000 , 出现“Redoc Swagger” 两个API文档超链接
点击“Redoc”,将跳转到Redoc页面;点击“Swagger”,跳转到Swagger页面
这证明您已经成功的将服务运行起来了
上一步启动的flask服务访问地址:http://localhost:5000
Tips:依赖包出现问题可尝试根据错误信息删除相应依赖包重新安装
遇到 Node Sass 兼容性问题,可尝试下面的命令 npm rebuild node-sass
指定端口启动npm run serve -- --port 8080,默认端口为8080
通过超级管理员账号登录,出现以下页面
恭喜您,本项目成功运行起来了!
当前ECS镜像为Huawei Cloud EulerOS 2.0 标准版 64位
# 安装 Git
yum install -y git
# 进入指定路径,存放项目文件,如 /home 路径
cd /home
# 获取项目
git clone git@gitee.com:HuaweiCloudDeveloper/huaweicloud-python-quick-start-samples.git
注:当前项目文件路径为 /home/python/LibraryManagement
cd /home/python/LibraryManagement/flask_backend
若安装超时,可替换pip的镜像源,pip配置文件路径 /~/.pip/pip.conf(不存在可自行创建),文件内容如下
# 华为PyPI镜像
[global]
index-url = http://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120
pip install -r requirements-prod.txt
配置 LibraryManagement/flask_backend/.production.env 文件中的 SQLALCHEMY_DATABASE_URI 选项
# MySQL数据库配置示例:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://username:password@ip_address:port/db_name'
# PostgrepSQL数据库配置示例:
SQLALCHEMY_DATABASE_URI = 'postgresql://username:password@ip_address:port/db_name'
配置文件 LibraryManagement/flask_backend/.flaskenv
FLASK_ENV=production
配置文件 LibraryManagement/flask_backend/gunicorn.conf.py
# 监听外网端口5000,可外网访问 (如127.0.0.1:5000表示监听内网端口5000,只能内网访问)
bind = "0.0.0.0:5000"
# 初始化命令
flask db init
# 生成图书示例数据命令
flask db fake
# 启动命令
gunicorn -c gunicorn.conf.py starter:app
后端服务启动成功
cd /home/python/LibraryManagement/vue_frontend
# 下载nodejs安装包
wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-darwin-x64.tar.gz
# 解压
tar xf node-v16.17.0-linux-x64.tar.xz
# 可以删除压缩包
rm -rf node-v16.17.0-linux-x64.tar.xz
# 创建目录
mkdir /usr/local/lib/node
# 移动目录并重命名
mv node-v16.17.0-linux-x64 /usr/local/lib/node/nodejs
# 编辑文件/etc/profile,在文件底部添加环境变量
echo -e "export NODEJS_HOME=/usr/local/lib/node/nodejs\nexport PATH=$NODEJS_HOME/bin:$PATH" >> /etc/profile
# 刷新修改
source /etc/profile
# 查看版本
node -v
npm install
配置文件 LibraryManagement/vue_frontend/.env.production
# 配置为后端服务对应URL
VUE_APP_BASE_URL = 'http://{ECS弹性公网IP}:5000/'
# 构建命令,会生成dist目录
npm run build
yum install -y nginx
将 3.1.12 生成的dist目录的绝对路径替换到nginx配置文件中/etc/nginx/nginx.conf,
并在配置文件开头指定对应用户,如: user root;
# nginx 启动命令
nginx
# nginx 重载命令 重载配置文件
nginx -s reload
至此,我们的项目在ECS上部署成功啦!
yum install -y docker
docker login -u {区域项目名称}@{密文} -p {密文} swr.{区域项目名称}.myhuaweicloud.com
出现 Login Succeeded,登录成功
# 进入后端根路径
cd /home/python/LibraryManagement/flask_backend
# 根据Dockerfile构建构建后端镜像
docker build -t "{镜像名称}:{版本名称}" .
可通过 docker images 命令查看镜像是否构建成功
构建前设定访问后端服务路由,修改文件 LibraryManagement/vue_frontend/.env.production 中选项
# 后续会在ELB中将后端服务配置为该URL
VUE_APP_BASE_URL = '/api/'
# 前端代码被修改,则需要重新构建
npm run build
# 进入前端根路径
cd /home/python/LibraryManagement/vue_frontend
# 根据Dockerfile构建前端镜像
docker build -t "{镜像名称}:{版本名称}" .
# 需要运行两次,两个镜像分别进行上传
# 使用SWR信息标记本地镜像
docker tag {镜像名称}:{版本名称} swr.{区域项目名称}.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
# 示例
docker tag nginx:v1 swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1
# 上传镜像
docker push swr.{区域项目名称}.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
# 示例
docker push swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1
终端显示如下信息,表明上传镜像成功
返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息
此时即可通过 http://{ELB弹性公网IP}/ 进行访问
原因1:权限配置不正确,为保证文件能正确执行,nginx既需要文件的读权限,又需要文件所有父目录的可执行权限
解决方法:将权限修改为root,在nginx的nginx.conf文件的顶部使用 user root,指定操作用户为root
原因2:目录索引设置错误,如运行PHP网站,nginx配置文件中 index index.html index.htm index.php,当访问该网站,nginx会按照以上index配置的先后顺序在根目录查找文件,都不存在则返回403
解决方法:确保配置的目录正确无误
原因:安全组配置错误
解决方法:配置弹性云主机ECS安全组,打开启动服务的端口
原因:数据库安全组未配置
解决方法:根据集群中的容器网段配置云数据库安全组的入方向规则
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。