独立开发这个项目之后,各种杂事也要单独处理了,也许这就是服务端「杂」的原因之一吧。
之前已经在自己的机器上去除了XAMPP的开发环境,手动部署了MAMP的环境,只差mysql环境没装好,brew安装mysql有些权限的问题,mysql还是使用的XAMPP中的mysql。把Apache服务器切换到Nginx(openresrty),本来以为部署这个环境已经没有什么问题。以下今天早上将代码部署到 内部测试机器 沙箱 遇到的坑。
1、scp 沙箱没有scp,需要传一些文件到沙箱服务器,当时确实考虑到换一个方法来发文件。也是年轻,想着沙箱现在也是内部使用,我装个scp应该不会有问题,yum安装,机器竟然就挂了 orz,找运维重启了机器。以后遇到这种事情还是不要轻举妄动。
2、机器重启,个人目录下的文件全部没了,这个点,我竟然就想过要先解决!这个坑最深。
3、我直接jenkins部署了项目管理后台的代码,jenkins应该是root权限运行,直接clone了最新代码,权限为root,坑3。因为使用smarty,会生成模板缓存文件,nginx的运行用户为www,无法读写某个文件夹,产生不了文件,导致后台进去一只是白屏,也没有报错。一度认为是rewrite的原因。后来查看了nginx的error.log才发现这个问题。
4、沙箱是一台docker机器,不是我熟悉的centos,开启各种环境的指令也不一样。
5、线上是集群,代码里面一些host指向各个机器,沙箱机器却无法编辑/etc/hosts文件,也无法修改为可写。无法执行sudo命令。只能手动更改代码里面的host了。机器挂掉之前hosts文件是被修改过的,后面要找运维询问如何修改这个文件,否则每次部署代码都要修改host。
6、数据库变更文件没有先导入。
7.沙箱是测试机器,一起开发人员上传过很多测试文件,但是因为坑1,文件全没了....找运维恢复后,以上步骤请重新来过......
总结一下我犯的错误:
1、不该随便在陌生的机器上执行会产生修改机器的指令,安装软件,修改陌生的系统文件等。
2、遇到问题一定不能着急,一定要先想办法进行最大程度的恢复。
3、由于项目部分没有设置jenkins,需要手动进行代码合并,对于代码的修改我必须现有一个记录。
4、先想好一个部署的checklist,确保万无一失。
在总结一下之后需要部署这台服务器的步骤。
1、代码合并提交到svn仓库。
2、数据库迁移文件。
3、需要手动合并的代码,一定要现有一个记录,好进行文件替换。
4、重启nginx
暂时想到这些,其实也不是全是坏消息。
好消息是 scp 能用了