第一个月工作心得

简介:

    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

相关文章
|
3月前
|
数据采集 存储 JavaScript
构建你的第一个Python网络爬虫
【9月更文挑战第34天】在数字信息泛滥的时代,快速有效地获取和处理数据成为一项重要技能。本文将引导读者通过Python编写一个简易的网络爬虫,实现自动化地从网页上抓取数据。我们将一步步走过代码的编写过程,并探讨如何避免常见陷阱。无论你是编程新手还是想扩展你的技术工具箱,这篇文章都将为你提供有价值的指导。
110 18
|
3月前
|
存储 缓存 索引
字典是怎么扩容的?它会经历哪些过程?
字典是怎么扩容的?它会经历哪些过程?
64 3
|
8月前
|
Java C# 开发工具
第一个C#程序
第一个C#程序
|
8月前
7-7 念数字 (15 分)(用数组简化判断过程)
7-7 念数字 (15 分)(用数组简化判断过程)
59 0
|
Cloud Native Java API
开发第一个gPRC的开发
开发第一个gPRC的开发
68 0
|
Java 编译器 Linux
第一个程序 | 学习笔记
快速学习第一个程序
162 0
第一个程序 | 学习笔记
|
人工智能
LeetCode 1389. 按既定顺序创建目标数组
给你一个字符串 s,它由数字('0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符
93 0
FXS与FXO:有什么区别以及它是如何工作的
出于显而易见的原因,切换到VoIP电话系统已成为许多中小型企业的热门选择。最常见的是更好的连接、扩展的通话功能和工具,以及拨打和接听本地和国际电话的可能性。在VoIP之前,普遍采用模拟电话系统,它们使用FXO和FXS端口建立连接。以及如何使用它们将模拟电话和PBX连接到VoIP系统,以构建混合通信基础设施并实现业务通信现代化。
|
Java 编译器 Linux
第一个程序
一、C语言被淘汰了吗? 二、编程是做什么的 三、机器码 四、汇编语言 五、C语言 六、使用C语言编程 七、C语言的优势 八、第一个程序
第一个程序
|
架构师 程序员 Go
有趣的“第二个系统”
什么是”第二个系统“? 这是一个有趣的概念,简单描述下:
有趣的“第二个系统”