自从接手了服务器管理之后...

在来公司之前,公司的所有项目都是直接外包出去(PS:公司也是很有钱呢),服务器也是第三方外包公司提供。当然,外包的成本是非常高的,公司也考虑到成本问题,于是申请了一台阿里云服务器,配置还是不错的,8G内存,4核的U,20M带宽,一年1W多,应该是够用的(我当时就是这么想的)。前面这些我没来之前我是一点儿都不知情,只知道公司是打算自己购买服务器

好的,博主加入公司,一来就是忙成狗,因为公司的业务都是不要命的,一大堆的单子来袭,毕竟有自己的技术开发人员了,什么都不怕不怕啦,单子就随意接咯。然而,事情并没有我想的那么简单。就在撸主撸代码撸的酣畅淋漓的时候,公司丢过来一台阿里云服务器。WTF?我来维护服务器?对,没错,博主要从前端开发瞬间转成运维了吗

还没等博主缓过神来,业务已经开始催 :“服务器都给你了,赶紧放上去,客户在问了,赶紧上线!”?WTFFFFFFFFFFFFFFF?好吧,既然这样了,硬着头皮上吧。虽然博主对Linux系统应该算是基础还行,但是对于服务器的日常维护,真的是毫无经验啊。好,去找网管拿到阿里云的帐号和密码(你没看错,真的是找网管拿的)。好了,拿到账号后的我简直如鱼得水啊,ssh上去就开始安装一键lnmp集成环境,速度确实很赞,一路下来OK,环境搞定。然后结合之前在自己笔记本上倒腾nginx的经验,搞定了域名绑定,终于可以用域名访问了小小成就感。然而,悲催的事情即将发生

前面撸主一路驰骋,环境神马的统统搞定,但是,有个严重的问题,上面所有的操作都是基于root权限的,因为阿里云默认给了root账户,而且撸主经常使用kali linux ,也是基于root的,囧!!这还不可怕,更可怕的是撸主居然没有意识到问题的严重性,直接开放了mysql的root用户给后端用,直到有一天...

公司有个做php的(已离职),技术很一般,linux基本不懂,mysql也是基础很差,有一天,因为项目上线,他需要创建一个用户和数据库,正好看到旁边的基友的机器的phpmyadmin还在,于是上去鼓捣一番,发现没有成功,想把刚才的误操作删掉,就这样,所有的数据库都没法访问了,连phpmyadmin都进去不了,客户电话都打爆了啊,当时博主真的是个大菜鸟,面对这种问题也是束手无策,一个人瞎鼓捣,一个小时过去了还是没有搞定,真的就只差重装系统了。无奈之下发现阿里云的自动备份快照的功能,尝试了恢复快照到凌晨5点,终于可以正常访问了,血的教训!!

意识到问题的严重性之后,博主各种百度,修改了mysql的root密码,每个项目单独分配用户和数据库,权限分配也搞定了。由于公司貌似只有我linux基础比较好点,所以只有博主自己连ssh上去维护。但是,注意安全还是好的,禁用了root的ssh。啪!博主是个傻叉,没有创建普通用户就直接禁用了root登录,这下惨了,ssh登陆不了。于是各种谷歌,发现阿里云有个网页版的ssh控制台,于是果断上去登陆成功,创建了普通用户后正常登录,谢天谢地,这可是大白天的时候,万一服务器挂了,又得遭到客户的投诉了,虽然博主深知凌晨维护服务器的重要性

好了,这个解决了,之前说到有给root权限给后端开发那边,为什么给他们呢?哎,往事不堪回首啊,博主以前玩openwrt的时候经常用WinSCP上传下载路由器里面的文件,觉得挺方便的,于是把root账号给了后端,他们用WinSCP上传下载就可以了,虽然权限真的很高。自动我修改了root密码,禁用了root登录ssh之后新问题出现了,后端用WinSCP登陆上去的权限不够,不能上传文件,看来这种不安全的方法迟早是要丢弃。于是,博主再一次各种谷歌,安装FTP!没错,一番谷歌之后决定安装VSFTP,看哪些配置看的头大,什么访问目录控制,虚拟用户,文件夹归属感觉好复杂啊,硬着头皮上去折腾了大半天,终于搞定了ftp,这些上传下载可就方便多了

接下来发生的事情简直是不想说出口,太丢人了。事情是这样的,公司有做一个小游戏,就是普通的网页游戏,由于奖品实在是丰富实用,而且数量非常多(PS:主要是客户有钱),而且客户线上线下全省推送宣传,以至于参与的人数特别大,日均IP在2W左右。刚开始其实服务器还是正常的,也没啥大问题,就是高峰期经常会出现502(PS:博主当时压根不知道nginx怎么优化),咨询过基友无果,每天高峰期都看到各种502,CPU也是满载,20M带宽也被占满,客户投诉一大堆,怎么办?没有办法,通过排查发现是mysql进程占用了几乎100%的CPU资源,加上当时游戏图片没有优化,静态资源没有加到CDN,导致服务器到高峰就崩溃。然而,这还不是最严重的。出现502了重启下nginx又可以了,直到有一天,不管怎么重启都没效果了,nginx都无法启动了,这可怎么办才好。焦头烂额的时候突然想到之前基友碰到过类似的问题,是因为磁盘满了。上去df -lh,我去,果然,磁盘可用空间只剩下几十K,得知程序基于thinkPHP之后果断推测是TP的日志导致,TP每天都要生成大量的日志文件。上去删除了TP的日志,12G的日志文件,我的天,系统盘本来就20G空间(PS:当时博主并不知道还有200G的数据盘)。删除完之后重启正常,程序快了不少。心里想其他地方会不会也有日志。继续谷歌,发现mysql也会产生大量日志,果不其然,mysql的数据目录也产生了大量的日志文件,找到mysql的配置文件,禁用了日志,删除已经产生的日志,瞬间清爽多了。找了一会发现nginx的日志也有上G的大小,删除之,重启了lnmp,暂时缓解了问题,但是mysql占用大量资源的问题依旧没有解决(PS:后面得知是因为程序里面因为关系到奖品分配的问题,使用了数据锁,导致很多用户都处于的等待状态,mysql进程休眠),就这样撑到了活动结束

虽然基本上完成了任务,责任也推到其他原因,但是博主的心情久久不能平静,又一次谷歌,立志要把服务器整顿一番。博主之前有在openwrt上面挂载U盘的经验,而且aliyun官方也有挂载数据盘的文档,很快就把200G数据盘挂载上去,目的是将项目文件转移到数据盘,数据库也转移过去,这样如果系统出错,还原系统盘也不会影响到客户的数据。说干就干,备份文件和数据库,在数据盘建立清晰的目录,复制一份备份到数据盘,修改nginx的各种配置文件,重启lnmp,顺利搞定了转移,看着系统盘1.8G used,心里面的一块石头总算落地

这些都搞定了,接下来应该安定了吧,不不不!既然是项目开发,没有版本控制怎么能行,再再一次谷歌,安装乌龟壳服务端,因为之前有过使用的经验,对它比较熟悉,一路下来没有问题,一套流程算是基本上完成,没有什么大问题了

虽然没有太大的事,但是,你知道的,广告公司每天都要上好多个广告,生成好多个域名,博主每天都需要在繁忙的项目开发同时挤出时间生成域名目录,上传代码,添加统计代码,生成数据库等等一系列的工作,每天都要登陆服务器十几次,内心几乎是崩溃了,活生生一运维了。

遇到小游戏上线,各种调试各种环境开起来,心也是累累的。最近有一些项目,流量非常大,考虑使用CDN,但是公司目前申请CDN比较麻烦,所以为了避免502,只能修改了nginx的一些参数,调整php-fpm的进程数,主要是服务器配置还不错,基本上能达到5000用户同时在线仍然没有问题的状态,当然,一旦出现502,自动跳转到一个事先准备好的502页面,提示服务器繁忙,更加友好

差不多就是这样了,一个前端程序员,自从接手服务器管理之后的艰难历程...也算是学到了不少知识了吧

如果您觉得文章有帮助到您,请到 https://www.92ez.com/index.php?action=show&id=23403 进行打赏/捐赠,谢谢!
如果您觉得文章有帮助到您,请 使劲戳这里 进行打赏/捐赠,谢谢!
本文链接:https://www.92ez.com/?action=show&id=71
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。

关键词: 近场通信 , nfc , kali linux , arduino

上一篇: 查看nginx连接数命令
下一篇: 查看php-cgi 进程数

相关文章
访客评论
#1
回复 Richard 2015-07-09, 11:47 AM
其实linux服务器的调试及维护熟练以后是一件非常有意思的事情!
#2
回复 七侠镇莫小贝 2015-11-03, 5:26 PM
猿兄来北京如何?活少妹子多,先下还有时间切几盘KOF,共同研究研究osmocombb...
发表评论

评论内容 (必填):