or

从新购服务器到后端服务部署,我biu的一下就完成了

2019年7月19日

提前PS: 我的本机环境是Win10哦,所以下面的一些软件都是以Win10为准的。


之前从阿里云购买了一个1G内存的轻量应用服务器,确实很轻量哇,运行了两个mongodb节点、两个node程序加上些零碎进程,服务器已无法胜任了,经常卡死,小白的我起初还以为是代码写的有问题导致CPU爆炸了呢😂。

经过这次事件,我倒是深深记住了topfree这俩命令,时不时就用他们看看内存情况。

我必须要一台内存更大的服务器才行!

由于自己运行的也不是啥大项目,对性能没啥要求,只要运存别是1G就行,于是自然而然想到去买学生机啦。本想顺便在阿里云买,谁知道早九点多就显示售空了,等不急的我只能“你好腾讯云”咯 (腾讯云的控制台确实是比阿里云用着舒服)。

购买时的系统选择我选的是CentOS系统(因为以前接触的第一个linux实例也不知道为啥选了CentOS,所以后面一直都用这个系统了,现在对yumsystemctl也很有好感的)。

买完服务器然后进入实例控制界面,配置下安全组,直接“一键放通”所有常用端口就行啦,然后将安全组规则关联到对应的实例,这样外网就可以访问这些端口了。

添加安全组规则
添加安全组规则

关联安全组
关联安全组

接下来是生成SSH密钥来更便捷登录服务器。

在页面左侧菜单里选择“SSH密钥”,创建密钥并及时把文件下载至本地(只有一次下载机会哦),然后进行实例绑定。

然后将下载的密钥文件使用PuTTYgen转为putty可用的.ppk密钥文件 (点这里下载putty和puttyGen)。

然后妥善保管好这俩文件。

然后打开putty输入root@IP,然后在右侧SSH菜单下的Auth里加载.ppk文件,然后回到Session菜单点击open,登录成功。

开始安装docker咯,我现在深刻体会到docker的方便呀,在没用docker前,每换一台服务器就需要重新配置环境,现在我把应用容器化了,所以只要在任一台服务器下可以正常使用,那么换一台服务器,我只需要安装docker然后build然后run就完事了,不需要处理杂七杂八的东西。

docker的安装也是很简单的,直接参考阿里云文档的教程复制粘贴命令即可。

当docker安装完后,还有最重要的一步---镜像配置,少了这一步,在后面的镜像下载中会把人憋屈死。

镜像配置无须去找其他教程,直接用阿里云的方式,配好后网速快到爆炸🤑,唯一的缺点是需要登录阿里云账号才能获取到,但利远大于弊。具体的操作步骤就是打开“阿里云的方式”这个网站,然后登入账号,左侧菜单最底部点击“镜像加速器”,里面有会你的网址和操作文档,照着复制粘贴就完事了。

好了,基础设施准备完毕,开始把我的含有Dockerfile的代码文件夹复制到服务器上。怎么复制呢?当然是用winSCP这个工具啦,一款图形化的文件传输工具,如下图,它可以直接导入putty里已有的站点哦,方便的不要不要。

winSCP导入站点
winSCP导入站点

登陆winSCP成功后,把自己电脑的代码拖过去就行咯。

一切就绪,回到putty登录的ssh页面,cd到上传代码的文件目录下,运行docker build . -t "tagName""生成image,然后运行docker run -d -p 443:443 tagName运行容器。然后可以docker logs containerID来看下程序的日志有报错啥的没,如果一切ok,那么就部署完毕啦。

当然万事不会一帆风顺,我的日志随没啥问题,但是线上服务却确无法访问🥶,挠了下脑袋一想,我的域名解析还没修改呢呀,因为我的这个后台应用之前是运行在阿里服务器,域名解析也是指向阿里服务器的,但现在已经转移到腾讯云了,所以得把IP指向改一下。

域名解析
域名解析

至此应用转移部署完毕!

结尾独白:

其实上面那些并不是最后。由于我的数据库每个复制集节点的host设置的不合理,并且现在要我处理俩服务器,这域名解析突然把我搞得乱糟糟的,所以最后我决定给数据库一个单独的域名,这样以后就不用再更改代码里的数据库连接地址了。然后花了一阵功夫把复制集的host修改了。虽然这期间服务长期处于不可用态,但我的服务几乎没人用哇,所以根本不担心这个问题(苦笑、哭了)。

or