<p>从事运维三年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题。</p><h2><b>今天简单整理一下,分享给各位小伙伴。</b>
一、线上操作规范</h2><p><b>1. 测试使用</b>
当初学习Linux的使用,从基础到服务到集群,都是在虚拟机做的,虽然老师告诉我们跟真机没有什么差别,可是对真实环境的渴望日渐上升,不过虚拟机的各种快照却让我们养成了各种手贱的习惯,以致于拿到服务器操作权限时候,就迫不及待的想去试试,记得上班第一天,老大把root密码交给我,由于只能使用putty,我就想使用xshell,于是悄悄登录服务器尝试改为xshell+密钥登录,因为没有测试,也没有留一个ssh连接,所有重启sshd服务器之后,自己就被挡在服务器之外了,幸好当时我备份了sshd_config文件,后来让机房人员cp过去就可以了,幸亏这是一家小公司,不然直接就被干了……庆幸当年运气比较好。</p><p>
第二个例子是关于文件同步的,大家都知道rsync同步很快,可是他删除文件的速度大大超过了rm -rf,在rsync中有一个命令是,以某目录为准同步某文件(如果第一个目录是空的,那么结果可想而知),源目录(有数据的)就会被删除,当初我就是因为误操作,以及缺乏测试,就目录写反了,关键是没有备份……生产环境数据被删了
没备份,大家自己想后果吧,其重要性不言而喻。</p><p>
<b>2. Enter前再三确认</b>
关于rm -rf / var 这种错误,我相信手快的人,或者网速比较慢的时候,出现的几率相当大
当你发现执行完之后,你的心至少是凉了半截。
大家可能会说,我按了这么多次都没出过错,不用怕,我只想说
当出现一次你就明白了,不要以为那些运维事故都是在别人身上,如果你不注意,下一个就是你。</p><p>
<b>3. 切忌多人操作</b>
我在的上一家公司,运维管理相当混乱,举一个最典型的例子吧,离职好几任的运维都有服务器root密码。
通常我们运维接到任务,都会进行简单查看如果无法解决,就请求他人帮忙,可是当问题焦头烂额的时候,客服主管(懂点linux),网管,你上司一起调试一个服务器,当你各种百度,各种对照,完了发现,你的服务器配置文件,跟上次你修改不一样了,然后再改回来,然后再谷歌,兴冲冲发现问题,解决了,别人却告诉你,他也解决了,修改的是不同的参数……这个,我就真不知道哪个是问题真正的原因了,当然这还是好的,问题解决了,皆大欢喜,可是你遇到过你刚修改的文件,测试无效,再去修改发现文件又被修改的时候呢?真的很恼火,切忌多人操作。</p><p>
<b>4. 先备份后操作</b>
养成一个习惯,要修改数据时,先备份,比如.conf的配置文件
另外,修改配置文件时,建议注释原选项,然后再复制,修改
再者说,如果第一个例子中,有数据库备份,那rsync的误操作不就没事了吧
所以说丢数据库非一朝一夕,随便备份一个就不用那么惨。</p><h2><b>二、涉及数据</b></h2><p>
<b>1. 慎用rm -rf</b>
网上的例子很多,各种rm -rf /,各种删除主数据库,各种运维事故……
一点小失误就会造成很大的损失。如果真需要删除,一定要谨慎。
<b>2. 备份大于一切</b>
本来上面都有各种关于备份,但是我想把它划分在数据类再次强调,备份非常之重要哇
我记得我的老师说过一句话,涉及到数据何种的谨慎都不为过
我就职的公司有做第三方支付网站和网贷平台的
第三方支付是每两个小时完全备份一次,网贷平台是每20分钟备份一次
我不多说了,大家自己斟酌吧
<b>3. 稳定大于一切</b>
其实不止是数据,在整个服务器环境,都是稳定大于一切,不求最快,但求最稳定,求可用性
所以未经测试,不要再服务器使用新的软件,比如nginx+php-fpm,生产环境中php各种挂啊
重启下就好了,或者换apache就好了。
<b>4. 保密大于一切</b>
现在各种艳照门漫天飞,各种路由器后门,所以说,涉及到数据,不保密是不行的。</p><h2>
三、涉及安全</h2><p><b>1. ssh</b></p><ol><li>更改默认端口(当然如果专业要黑你,扫描下就出来了)</li><li>禁止root登录</li><li>使用普通用户+key认证+sudo规则+ip地址+用户限制</li><li>使用hostdeny类似的防爆里破解软件(超过几次尝试直接拉黑)</li><li>筛选/etc/passwd中login的用户</li></ol><p><b>2. 防火墙</b>
防火墙生产环境一定要开,并且要遵循最小原则,drop所有,然后放行需要的服务端口。</p><p>
<b>3. 精细权限和控制粒度</b>
能使用普通用户启动的服务坚决不使用root,把各种服务权限控制到最低,控制粒度要精细。</p><p>
<b>4. 入侵检测和日志监控</b>
使用第三方软件,时刻检测系统关键文件以及各种服务配置文件的改动
比如,/etc/passwd,/etc/my.cnf,/etc/httpd/con/httpd.con等;
使用集中化的日志监控体系,监控/var/log/secure,/etc/log/message,ftp上传下载文件等报警错误日志;
另外针对端口扫描,也可以使用一些第三方软件,发现被扫描就直接拉入host.deny。这些信息对于系统被入侵后排错很有帮助。有人说过,一个公司在安全投入的成本跟他被安全攻击损失的成本成正比,安全是一个很大的话题
也是一个很基础的工作,把基础做好了,就能相当的提高系统安全性,其他的就是安全高手做的了</p><h2>
四、日常监控</h2><p><b>1. 系统运行监控</b> 好多人踏入运维都是从监控做起,大的公司一般都有专业24小时监控运维。系统运行监控一般包括硬件占用率 常见的有,内存,硬盘,cpu,网卡,os包括登录监控,系统关键文件监控 定期的监控可以预测出硬件损坏的概率,并且给调优带来很实用的功能</p><p><b>2. 服务运行监控</b> 服务监控一般就是各种应用,web,db,lvs等,这一般都是监控一些指标 在系统出现性能瓶颈的时候就能很快发现并解决。</p><p><b>3. 日志监控</b> 这里的日志监控跟安全的日志监控类似,但这里一般都是硬件,os,应用程序的报错和警报信息 监控在系统稳定运行的时候确实没啥用,但是一旦出现问题,你又没做监控,就会很被动了</p><h2>
五、性能调优</h2><p>
<b>1. 深入了解运行机制</b>
其实按一年多的运维经验来说,谈调优根本就是纸上谈兵,但是我只是想简单总结下,如果有更深入的了解,我会更新。在对软件进行优化之前,比如要深入了解一个软件的运行机制,比如nginx和apache,大家都说nginx快,那就必须知道nginx为什么快,利用什么原理,处理请求比apache,并且要能跟别人用浅显易懂的话说出来,必要的时候还要能看懂源代码,否则一切以参数为调优对象的文档都是瞎谈。
<b>2. 调优框架以及先后</b>
熟悉了底层运行机制,就要有调优的框架和先后顺序,比如数据库出现瓶颈,好多人直接就去更改数据库的配置文件,我的建议是,先根据瓶颈去分析,查看日志,写出来调优方向,然后再入手,并且数据库服务器调优应该是最后一步,最先的应该是硬件和操作系统,现在的数据库服务器都是在各种测试之后才会发布的
适用于所有操作系统,不应该先从他入手。
<b>3. 每次只调一个参数</b>
每次只调一个参数,这个相比大家都了解,调的多了,你就自己就迷糊了。
<b>4. 基准测试</b>
判断调优是否有用,和测试一个新版本软件的稳定性和性能等方面,就必须要基准测试了,测试要涉及很多因素
测试是否接近业务真实需求这要看测试人的经验了,相关资料大家可以参考《高性能mysql》第三版相当的好
我的老师曾说过,没有放之四海皆准的参数,任何参数更改任何调优都必须符合业务场景
所以不要再谷歌什么什么调优了,对你的提升和业务环境的改善没有长久作用</p><h2>
六、运维心态</h2><p>
<b>1. 控制心态</b>
很多rm -rf /data都在下班的前几分钟,都在烦躁的高峰,那么你还不打算控制下你的心态么
有人说了,烦躁也要上班,可是你可以在烦躁的时候尽量避免处理关键数据环境
越是有压力,越要冷静,不然会损失更多。
大多人都有rm -rf /data/mysql的经历,发现删除之后,那种心情你可以想象一下,可是如果没有备份,你急又有什么用,一般这种情况下,你就要冷静想下最坏打算了,对于mysql来说,删除了物理文件,一部分表还会存在内存中,所以断开业务,但是不要关闭mysql数据库,这对恢复很有帮助,并使用dd复制硬盘,然后你再进行恢复
当然了大多时候你就只能找数据恢复公司了。
试想一下,数据被删了,你各种操作,关闭数据库,然后修复,不但有可能覆盖文件,还找不到内存中的表了。
<b>2. 对数据负责</b>
生产环境不是儿戏,数据库也不是儿戏,一定要对数据负责。不备份的后果是非常严重的。
<b>3. 追根究底</b>
很多运维人员比较忙,遇到问题解决就不会再管了,记得去年一个客户的网站老是打不开,经过php代码报错
发现是session和whos_online损坏,前任运维是通过repair修复的,我就也这样修复了,但是过了几个小时,又出现了
反复三四次之后,我就去谷歌数据库表莫名损坏原因:一是myisam的bug,二是mysqlbug,三是mysql在写入过程中
被kill,最后发现是内存不够用,导致OOM kill了mysqld进程
并且没有swap分区,后台监控内存是够用的,最后升级物理内存解决。
<b>4. 测试和生产环境</b>
在重要操作之前一定要看自己所在的机器,尽量避免多开窗口。</p>
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好
文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分
如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack
我在LinuxMint17.2上。我最近使用apt-getpurgeruby删除了ruby。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,
我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby所需的包和安装过程;它引
目录POSIXAPI大集合五元组三次握手的过程,内核协议栈分析listen函数DDOS攻击,洪水攻击DDOS攻击的应对措施数据发送 怎么保证顺序?如何保证包地顺序到达(序号+确认应答机制+重传)TCP断开连接的过程问题1.大量的CLOSE_WAIT+FIN_WAIT2是为啥?time_wait状态存在的原因?POSIXAPI大集合五元组(sip,sport,dip,dport,protocol)三次握手的过程,内核协议栈分析内核协议栈中是有内核数据结构的. 我们send/write数据,都是先发送到内核协议栈中,然后由内核协议栈封装发送到物理介质中传输到对端的对端的接收过程也是经有内核协议栈
背景:Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法:export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。实例:列出当前所有的环境变量#export-p//列出当前的环境变量值定义环境变量赋值#exportMYENV=7//定义环境变量并赋值添加环境变量:默认保存在
Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存
Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目
文章目录🔥Linux系统目录结构🔥Linux用户和用户组🔥Linux用户管理🔥Linux系统目录结构文件系统组织结构⭐ /lib系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。⭐ /lost+found一般情况下是空的,当系统非法关机后,这里就存放了一些文件。⭐ /etc所有系统管理所需要的配置文件和子目录my.conf⭐ /usr用户的很多应用程序和文件都放在这个目录下。⭐ /bin是Binary的缩写,这个目录存放着经常使用的命令⭐ /sbin(usr/sbin、/usr/local/sbin)sbin就是peruse