php网站运维主要做什么?
总结两句话
1.保证业务的长期稳定运行(如网站服务器、游戏服务器等。).
2.保证数据安全可靠(如用户名和密码、游戏数据、博客文章、交易数据等。).
从这两句话中推导出运维工程师应该学习的内容。
(一)确保业务长期稳定运行。
稍有差错,用户就会投诉。
1.企业靠什么运行?
网站服务器一般是apache,nginx,tomcat等。但是真正的运行过程还需要Mysql数据库来存储用户密码等。很多程序需要php解析,所以部署LNMP、LAMP(即nginx、apache、mysql、php)环境是必须掌握的技能。
2.怎么才能及时知道业务有没有问题?
这就需要监控软件通过邮件或者短信通知你,比如zabbix,nagios。要向警方发送电子邮件,你必须有一个电子邮件程序,sendmail或postfix。
3.家里接到报警,但是服务器是内网IP。我该如何解决这个问题?
在公司设置openvpn或者pptp或者openswan,在家里通过vpn拨入内网,24小时解决问题,半夜起来解决问题,不发工资。
第二,确保数据的安全性和可靠性
一点小失误,领导想和你喝茶。
1.有时需要手动更改数据库的内容。
因此,有必要了解基本的Mysql数据库添加、删除、查询和更改命令。
2.数据库服务器硬件坏了怎么办?
你需要一个备份库以备不时之需,所以需要Mysql主从复制。
3.我应该如何恢复数据库?
因此,需要在crond中定期准备Mysql数据,以便进行恢复。如果想恢复到指定的时间点,还应该学习Mysql增量备份和恢复。
4.用户上传的图片或者文件服务器坏了怎么办?
定时备份可能不够,需要使用rsync加inotify进行实时备份。这样主服务器随时崩溃,所有图片都可以备份恢复。
5、提防黑客,增加服务器安全性?
Ssh不能被外人轻易访问,所以只允许公司的IP或跳板IP访问,由iptables控制。
第三,大性能
小公司总有一天会牛逼,但如果不行,我们可以跳到大公司。
1.越来越多的用户访问我们的网站。如果web服务器无法抵抗怎么办?
那就需要多个web服务器来承担,但是如何在多个服务器之间均衡负载,就需要nginx反向代理或者LVS+keepalived或者haproxy+heartbeat。
2.用户注册的文章和评论太多。一个数据库抗不住怎么办?
数据库压力可以分为读和写。如果写不下去,需要分表分数据库到多台服务器。如果阅读压力不够,可以用mysql-proxy把阅读和写作分开来分担阅读压力。更简单、更方便的方法是将数据库的内容放入内存,这使用memcache或redis。
3.N个用户上传下载文件,磁盘无法抵抗怎么办?
将多个磁盘做成raid,或者使用MFS、GlusterFS等分布式存储文件系统,提高磁盘的读写能力。
4.网站上图片很多,总有用户抱怨网站加载太慢。我该怎么办?
这时候可以通过squid或者varnish把网站上的图片缓存到网站前端,尽可能提高访问速度。当然,最好买个商用的CDN来加速。
5.运营商是个大问题。它们之间的带宽似乎很小。为什么联通IP访问我们电信网站这么慢?
此时可以使用bind搭建DNS服务器,将网站的DNS记录指向自建的DNS服务器,配置解析规则。之后联通IP解析到联通网站,电信IP解析到电信网站,体验会好很多。
第四,自动化
最终目的:把机器跑死,把死人空转。
1,公司新买了100台服务器,公司实际有1台移动光盘。这个系统是什么时候得到的?
使用kickstart或cobbler在网络上远程安装系统。
2.每次装机都需要优化很多内容。有哪些文件描述符、端口和软件安装?手动操作不累人。
快速学习shell会解放很多工作。
3.系统安装后,登录时需要输入密码。这么多套?
使用expect,自动读取提示输入密码并执行命令。
4.想把新代码批量发布到在线服务器上,该怎么做?
使用盐堆、木偶或安斯比尔。绝对酷毙了。
动词 (verb的缩写)其他人
1.搭建一个完整的测试环境需要五台服务器,公司穷,只有一台闲置的服务器?
学xen或者kvm或者docker。虚拟多服务器可以解决资源问题。特别推荐Docker。未来,R&D的工作人员将要求您部署一个新环境,并在几分钟内帮助他解决这个问题。
2.R&D人员的代码控制和权限控制必须始终由运维人员管理。
Svn或者git,这个肯定是有的。
结尾:
现在我们回过头来想,运维工程师一般都做些什么?
1,随时解决报警故障。
2.业务计划更新。
3.写一些脚本来监控或者完成其他可以自动完成的功能。
4.完善运维框架,部署一些更方便、可靠或性能更好的开源工具,制定运维流程规范。
5.打零工,比如切换交换机,安装系统,部署新环境。