Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。其中的vue
+python-flask
的组合,非常时髦,跟本站上个月做的COVID19疫情图是一样的,实际上不管本地还是服务器端的部署,都一样。因此就一此篇为例,详细讲述搭建过程。
0.项目地址
前端开源地址:https://github.com/TaleLin/lin-cms-vue
后端开源地址:https://github.com/TaleLin/lin-cms-flask
DEMO演示站:http://face.cms.7yue.pro
文档地址:http://doc.cms.talelin.com
为啥该项目值得学习?前后端分离设计,是当前的主流趋势,vue
在国内的受众广泛,入门门槛低,学习曲线也是,数据驱动型整体设计,跟python的基础数据定义相似,因此只要你会点python,再去学习下vue
是非常好理解的。而后端flask
就没啥好说的,按需定制,文档及教程也很多,是处理web编程的最佳选择。
1.开始安装准备(服务器版)
本地安装官方文档已经很详细了,无需过多说明。本篇主要以服务器端,使用宝塔面板+自带的MySQL数据库+Docker做部署。
首先准备项目源码
cd /opt
git clone https://github.com/TaleLin/lin-cms-vue.git #获取前端源码
git clone https://github.com/TaleLin/lin-cms-flask.git #获取后端源码
2. 前端VUE项目构建
使用docker进行打包并输出最终为dist
目录
cd /opt/lin-cms-vue
docker run -it -v "$PWD":/usr/src/app -w /usr/src/app node sh
#等待镜像加载完毕,继续执行下面的命令
npm install #安装依赖环境
npm run build #打包输出
#完成后输入exit退出。
打包完毕后,会在当前目录生成dist文件夹,里面就是前端最后需要的内容。
3. 宝塔添加网站
宝塔添加网站,设置网站运行目录为/opt/lin-cms-vue/dist
,并添加数据库lin-cms
。
此时访问域名,就可以看到网站首页了。下面开始搭建后端
4. 对接后端数据库
在/opt/lin-cms-flsk
目录下,找到app/config/secure.py
文件。修改里面的数据库信息
# 数据库配置示例
SQLALCHEMY_DATABASE_URI = 'mysql+cymysql://root:123456@localhost:3306/lin-cms'
5. 构建后端容器
在/opt/lin-cms-flask
目录下,创建Dockerfile
文件,内容写为下面的信息:
FROM python:3.8
# 设置代码文件夹工作目录 /app
WORKDIR /app
# 复制当前代码文件到容器中 /app
ADD requirements.txt /app
# 安装所需的包,使用清华源加速安装
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install --no-cache-dir -r requirements.txt
#暴露 5000端口
EXPOSE 5000
# 运行程序
ENTRYPOINT ["python", "starter.py"]
然后在当前目录下运行构建命令:
docker build -t flask-cms . #构建后端运行环境
等待一分钟后,打包完毕,可以直接运行后端程序了。
6. 运行后端
docker run -itd --name lin-cms-flask -p 5000:5000 -v /opt/lin-cms-flask:/app flask-cms
至此,所有工作已就绪,可以开始享用了。后端验证,输入http://你的ip:5000 就可以看到一段内容“心上无垢,林间有风"
7. 其他说明
这种方法也可以本地操作,尤其是vue前端,本地打包好后,上传到网站跟目录就行,而后端使用python开发,建议是打包成docker,进行挂载。
8. 小结
前厚端分离设计,其实很大程度上提高了生产效率,后端使用python做开发,处理的都是纯数据关系,因此开发速度飞快,而前端使用vue
开发,这种单页组件化的设计,也非常容易增删改。两者的结合,肯定会是未来的一种趋势。