第一个月工作心得

简介:

    7月8号入职,到现在20多天的时间,本事也没有学到多少,就是越来越觉得自己水平太菜,到现在也就只有6台测试服务器和100台节点服务器的权限。今天月初,写点东西,总结一下这个月的收获与不足。


    应当说这个月我就是熟悉了开发流程,叫这个名字不太恰当,毕竟只是运维,但是部署和维护都是我们来干,省得想新的名字,那就这么叫吧。


    花了几天时间了解了一下git的作用,分布式集群管理系统(听名字还是很高端的),所以那位linux之父花了两个星期的时间开发出来的东西让现在全IT界的人都在使用,什么叫牛逼?这就叫牛逼!so,我们公司的代码也是放在上面托管的。


    公司在github上面购买了空间,接着主要就是CTO在管理github上的项目什么的,开发把写好的代码上传到github上托管,要发布的时候,先在jenkins机器上修改发布脚本,把主机名称改为我们要部署的目标机器,使得jenkins机器与目标机器可以通信。然后在jenkins上新建个github上对应的项目,对github的代码进行build(当然,一般不用新建,就算新建我也只能拷贝项目),build好之后,也不用手动执行脚本(build的过程就是自动执行了),代码就部署到目标机器的对应目录了。最后部署nginx的配置文件,一切OK。


    下面重点来了,如果单单只是这么简单的流程,我也不会搞得挺吃力(说真的,很丢人,出来之前觉得自己纵横江湖没有问题,结果刚进公司就被没接触过的东西搞得要死要活),然而在工作的过程中遇到并且解决了很多的问题(好吧,不是我一个人解决的),下面主要来总结一下这些问题,也算是积累了经验了:


一、两台机器的通信问题


    在学校的时候,一直用的阿里云与自己的虚拟机,一路root下去,也不觉得有什么错,root多方便,开始还以为来公司的第一天他们会给我一堆的root密码(我现在都觉得我自己傻得可爱),真正来了之后,为了安全性,各种权限问题(而且亚马逊云默认root用户不能登录),而我几乎都不了解,经过一段时间,总算是熟悉了什么密钥和权限。


    一般来说,我们登录服务器,都需要通过密钥验证(root密码估计只有CTO知道),密钥分为公钥和私钥,用命令 ssh-keygen 生成(记得一定要是jenkins用户生成的密钥),默认的密钥名字叫做 isa_rd、isa_rd.pub,当然我们也可以指定别的名字,这里不详述,有需要的可以上网搜(其实我也忘记了),如果要加权限的话,拿到别人的公钥,加到 /home/username/.ssh/authorized_keys 文件里面,注意这个文件的权限一定要改成600,文件的属主与属组也要改为该用户 username,这样基本就可以了,如果要给 root 权限,要在服务器的配置文件 /etc/sudoers 文件里的“root    ALL=(ALL)       ALL”下面加上“username    ALL=(ALL)       ALL”,这样我们新加的用户就可以通过 sudo -s 命令获得 root 权限。


    如果要通过主机名来登录服务器的话,需要在 /~/.ssh/config 文件中加入主机名和ip,host=主机名、hostname=主机ip、user 用户名、PreferredAuthentications publickey、IdentityFile ~/.ssh/id_rsa


二、build出错问题


    如果我们在jenkins机器上通过jenkins用户可以登录到目标服务器了,就说明第一步完成,接下来就可以build了,但是在build的过程中我们也同样会遇到很多的错误。


    2.1、一般来说,最常见的错误就是build的时候提示找不到什么文件或者目录,这个时候我们可以登录到目标机器上手动创建,并且修改它们的主与组为nginx(目标服务器上部署的代码文件全部要改成nginx)。


    2.2、还有就是提示找不到网站目录下的某些东西/var/www/html/justpay/node_modules/下的vendor或者不能绑定vendor目录下的某个文件,这个时候我们可以根据提示信息用 npm 来安装缺少的东西(npm install ... -d ),如果我们要安装的包已经存在,可以卸载后再装 (npm uninstall ... ),如果一直出错的话,可以考虑把所有的包全部卸载后重装( rm -rf node_modules ;npm install -d)。注意,安装的时候一定要使用 nginx 用户来装。


三、启动 nginx 提示找不到 key 的问题


    在 /etc/nginx/ssl 目录下,创建 *.crt 的文件,然后可以去某台机器上将 /etc/nginx/ssl/*.crt 的内容拷贝过去即可。

四、502问题


    以前还专门写过一篇文章总结 nginx 的502问题,然而到公司之后发现502基本是因为后端服务挂掉,比如python进程没有起来,如果我们手动启动之后会自动死掉,可能是因为我们从命令行启动服务,可以用 start  service 的方式来启动(启动脚本在/etc/init/目录下,.conf 文件)。或者是因为启动参数中的某些东西不存在,我们可以手动创建。


五、yum 安装服务问题


    之前一直喜欢用二进制包来安装服务,尤其是配置网站环境,但是公司的大牛们全部使用yum安装软件包,好吧,据说红帽官方都在推 yum,那么总结一些 yum 安装的问题。


    我们在安装lamp的话,本人亲测,安装好 http、http-devel 、php、php-devel 就行,可以通过yum list 命令查看我们需要装哪些包,要使php解析,需要在httpd,conf中指定index.php、AddType .......、.so 模块等等,.so 模块其实在yum 安装的时候就已经安装上了,只需在配置文件中指定就好:LoadModule php5_module        modules/libphp5.so


六、nginx 配置文件问题


    其实在 build 成功后

本文转自奇迹的少年博客51CTO博客,原文链接http://blog.51cto.com/raffaelexr/1833618如需转载请自行联系原作者


liliangchun

相关文章
|
1月前
|
Java C# 开发工具
第一个C#程序
第一个C#程序
12 0
|
6月前
|
Cloud Native Java API
开发第一个gPRC的开发
开发第一个gPRC的开发
28 0
|
小程序 开发工具 开发者
【小程序】第一个小程序——创建小程序项目
【小程序】第一个小程序——创建小程序项目
99 0
【小程序】第一个小程序——创建小程序项目
|
Java 编译器 Linux
第一个程序 | 学习笔记
快速学习第一个程序
119 0
第一个程序 | 学习笔记
|
测试技术
软件测试面试题:已知一个队列,如: [1, 3, 5, 7], 如何把第一个数字,放到第三个位置,得到:[3, 5, 1, 7]
软件测试面试题:已知一个队列,如: [1, 3, 5, 7], 如何把第一个数字,放到第三个位置,得到:[3, 5, 1, 7]
88 0
|
Java 应用服务中间件
我的的第一个服务器
通过一周的使用,分享一下自己初次使用服务器部署文本项目的心得
|
Java 编译器 Linux
第一个程序
一、C语言被淘汰了吗? 二、编程是做什么的 三、机器码 四、汇编语言 五、C语言 六、使用C语言编程 七、C语言的优势 八、第一个程序
第一个程序
|
架构师 程序员 Go
有趣的“第二个系统”
什么是”第二个系统“? 这是一个有趣的概念,简单描述下:
有趣的“第二个系统”
工作中必会的6个IF函数,学会了够你玩的
工作中必会的6个IF函数,学会了够你玩的
工作中必会的6个IF函数,学会了够你玩的
|
自然语言处理
在以阶段划分的编译过程中,判断程序语句的形式是否正确属于()阶段的工作。
在以阶段划分的编译过程中,判断程序语句的形式是否正确属于()阶段的工作。
127 0