咱们这些给人做项目的,都有这样的一种场景:
1、不同的客户需求不一样,环境不一样,有的是微信小程序、有的是PHP、有的是C#、有的是活字格
2、随着客户服务的越来越多,需要验证的环境越来越复杂
3、有的项目完成后,仍需要持续的维护、迭代、升级
4、自有一台云端服务器,但随着服务客户越来越多,环境的准备、软件的版本不同带来的成本越来越高
我呢,之前有一台2核4G的云服务器,随着服务客户的数量增多,配置服务器就成了一个非常头疼的事情。
一个客户是PHP5.6+TP3.0,之后的客户就变成了PHP7.0 + TP6.0.
再后来就是Java + Nginx,活字格7.102。7.0版本做完到现在还在维护,但是新项目来了,又换成了8.104
中间还有Wyn,还有C#的Asp.net服务。
同一个linux服务器配置的东西越来越多,常常都是卸载+全新配置,换项目再来一遍。烦不胜烦。
以前用的宝塔面板,我觉得已经是一大进步,但是随着环境频繁变化,开始各种出错,权限啦、配置文件啦、卸载残留啦。
就一个数据库就够我喝一壶。
一直想像虚拟机一样,把这些客户的环境统统隔离开,随用随开,还能随身携带。但开发环境和生产环境还是需要重新配一遍。
曾经考虑过Esxi或者VMware虚拟化,但是穷啊,我要是能像我的某客户一样,自己攒一台100核2T内存的服务器,我会开一大堆的虚拟机。
后来新项目用到了Docker,我突然觉得这是个比较有意思的工具,就想着能不能把活字格服务器装进Docker,本着踩坑的目的,尝试了8.104和8.105,都成功了。
现在把教程放上来,就不放镜像了,照着我的步骤,一次搞定,没必要再打包一个镜像。
教程如下。
我的环境:Linux服务器,4核 8G 100G硬盘,实体机安装的是CentOS 7.9,使用了腾讯的宝塔联名版CentOS7.9,安装完之后内置一个宝塔如下
内置的宝塔自带Docker管理,就在左边菜单里
这样就很方便了,我下面讲的都是默认大家懂Docker,不懂得我推荐去b站看看狂神的课,讲得很好,还免费。
1、首先,需要一个基础镜像:CentOS7.9,8.0以上不建议装活字格,因为.NetCore6.0以上不再支持CentOS8.0以上版本了。
大家可以通过官方镜像拉取CentOS7.9,这个镜像是一个非常非常非常基础的镜像,里面很多命令都没有,比如连sudo都没得。
但是活字格服务器安装的时候,会使用很多常用命令:wget、which、service之类的,具体缺什么,大家看下linux下的installForguncy_cn.sh文件就知道它用到什么了。
2、添加缺少的命令
将CentOS7.9镜像运行起来,然后进去,开始给这个系统添加各种命令即可,命令列表如下:
缺少wget命令:
yum install wget -y
缺少service命令:
yum install initscripts -y
缺少which命令:
yum install which -y
缺少sudo命令:
yum -y install sudo
缺少systemctl命令:
curl https://raw.githubusercontent.co ... docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl
缺少firewall命令:
yum install firewalld -y
3、执行安装活字格服务端即可
其实活字格官方的命令是好几个命令拼在一起的,有需要的话,可以自己下载,然后自行安装就行了。
rm -f huozige-installer-linux.tar && wget https://downloads.grapecity.com. ... installer-linux.tar && tar -xvf huozige-installer-linux.tar && chmod +x installForguncy_cn.sh && ./installForguncy_cn.sh
之后等待安装完毕,一个活字格服务器的Docker就创建完成了。友情提示,最后你会发现有一行报错,没关系,不理他就好。
你可以将这个docker打包成镜像,方便给客户部署时使用。
其他的玩法有很多,比如再打包一个8.104的,或者7.102的都是可以的。
高级点的,就是将opt/share下的ForguncyServer 和ForguncyWebSite挂载到实体机,这样,无论镜像出任何问题,你发布的站点、服务器配置都不会丢失,相当于备份。
其他的高级玩法大家自行开发。
由于发布端口22345是固定的,本地设计器无法选择发布端口,所以Docker端口映射也就没有什么意义,就是麻烦在每次发布的时候,将需要发布的那个Docker启动起来,测试,运行,完成后关闭,切换另一个Docker。
目前我的做法是,Mysql会有4个版本跑在Docker里,用于服务4个不同客户,活字格有3个版本,每次用哪个启动哪个。
PHP两套环境,Java一套环境,微信小程序一套环境,抖音小程序一套环境。
光Nginx都有3个。。。。。
起码,我不用纠结配置服务器了,每次切换只需要启动不同的Docker就好。
之后无论是换服务器,还是备份,迁移都很方便。
以上,谢谢。
|