林云会数字经济研究院官网部署到(www.lincloudhui.cn)是一个复杂的过程。为了节省服务器资源,只购买了一个云服务器,也就是说在同一个服务器下要部署官网的前端页面、林云会的后台系统的前端页面,后台系统的后端服务三个应用。规划是官网的前端部署在域名的根目录下(www.lincloudhui.cn),后台系统的前端部署到域名的/admin目录下(www.lincloudhui.cn/admin),后台系统的后端服务通过docker中间件,用DockerFile制作成镜像,运行容器让后端服务跑起来,然后通过nginx的反向代理配置,按照前后端分离模式让官网的前端、后台系统的前端调用后端服务的接口运行起来。服务涉及到mysql、redis、nginx等中间件都是通过docker方式安装的,下面谈谈整个平台的部署流程。
一、安装docker 及mysql、nginx、redis
安装docker,按照常规安装,这里不做详细描述。
通过docker安装mysql,
首先下载mysql的镜像,运行容器挂载命令:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql -v /home/lincloud/mysql/config/my.cnf:/etc/mysql/my.cnf -v /home/lincloud/mysql/db:/var/lib/mysql 7b
注:Mysql容器里的配置文件挂载到宿主机的/home/lincloud/myql/config目录下;数据文件挂载到宿主机的/home/lincloud/mysql/db目录下。
通过docker安装nginx,
首先下载nginx的镜像,运行容器挂载命令:
docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest
注:mysql容器里的配置文件挂载到/home/nginx/conf/conf.d目录下;日志文件挂载到/home/nginx/log目录下;映射的静态页面挂载到/home/nginx/html目录下。
通过docker安装redis
下载redis镜像,运行容器挂载命令:
docker run -p 6379:6379 --name redis -v /mydata/redis/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
注:redis容器主要挂载到/mydata目录下,运行端口是 6379
运行这三个中间件容器跑起来,用docker ps命令查看
可以看到三个中间件已经运行起来了,安装完成。
二、上传官网前端页面、后台系统的前端页面到服务器上
把官网的前端页面和后台系统的页面上传到刚才nginx配置的nginx/html目录下
其中yuncloud是官网的前端页面,dist是后台系统VUE.JS打包后的前端页面。
三、nginx配置文件了配置官网和后台系统前端页面
把前端页面上传到服务器上去了,还有通过nginx服务器配置,才可以访问
配置官网的nginx配置
配置后台系统的前端配置
配置后重启nginx服务
Docker restart nginx
然后通过浏览lincloudhui.cn 和lincloudhui.cn/admin 可以访问两个前端页面了。
四、用Dockerfile制作后端服务镜像、运行容器、nginx上配置后端服务
首先在后端代码 spingboot打成一个jar包(lincloud-admin.jar)在spingboot打包及配置文件里数据库改为云服务数据库地址和redis服务改为云服务器流程这里不做详细介绍了。
编写Dockerfile文件
FROM java:8
MAINTAINER lzq19831983@126.com
VOLUME '/tmp'
ADD lincloud-admin.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
然后把 lincloud-admin.jar和Dockerfile文件上传到服务器同一目录下
通过Dockerfile制作镜像
docker build -t lincloudserver:v1 .
镜像制作成功,会生成一个镜像ID
运行容器
docker run -d --name app -p 8080:8080 lincloudserver:v1
后端服务的端口是8080,容器名称为app
Docker ps 查看后端服务app是否运行
表明后端服务已经在服务器上运行了
在nginx配置后端服务
也就是前端通过/prod-api/接口路径会映射到 http://119.23.232.49:8080/ 的后端服务。
重启nginx, 官网前台、后台系统前台调用后端服务成功,浏览官网新闻中心可以浏览后台数据的数据,登录后台系统,可以对新闻中心增删改查等功能,整个部署流程完成。
总体部署操作起来还顺畅,涉及的点还挺多的。目前调用后台服务的接口有点慢,特别是如果新闻详情了有图片的,获取详情的接口要20多秒,通过liunx查看 是因为服务器连接mysql的服务太卡了,mysql太占内存资源,现在服务器内存都是89%以上,如果停止mysql进程,内存使用率马上降下来。后期还要更新云服务器的配置,目前是2核CPU 2G内存,明显不够了。现在只是迈出了第一步,随着业务的增长,林云会数字化平台也会越来越强大。
林云会数字经济研究院研发中心于2022年9月16日凌晨宝安
本文作者是林云会数字经济研究院执行院长 理论中心首席研究员 研发中心首席架构师 骆志钦