PHP程序员的简单运维
所谓的简单运维就是保证自己开发的程序能正常运行和使用。
当一个程序员需要兼作运维时候需要掌握以下技能
1、linux系统基础命令和Windows Server操作
是基础中的基础,ls, rm, top, w, mkdir, find, cp, mv, kill, killall, cat, chown, chmod, time... 等等,命令参数没必须全部掌握,需要用的时候度娘去查。
2、WEB服务环境配置
常用的NGINX和APACHE要熟悉,WIN下可以使用IIS,有些情况下需要TOMCAT也要了解,一般使用安装包或者安装命令比较省事。后面会介绍一些安装命令。
3、SHELL脚本或BAT批处理
简单写个备份脚本或者文件处理之类的,方便快捷。
4、数据库
大部分使用MYSQL,一般掌握数据迁移,坏损数据修复即可。
5、防火墙(安全规则)
WIN一般使用IP策略,linux用IPTABLES和hosts.allow即可防范常规的非授权访问,后面也有详细介绍。
6、监控工具(存货监控)
相对来说比较重要,保证业务正常运行的手段,有条件的话可以自己写监控报警脚本,也可以使用第三方工具 cacti,nagios,zabbix等等。也有部分公司提供监控服务,如监控宝,阿里云监控,百度云观测,360监控,业务出错后都有短信或者邮件等渠道通知。
7、集群和热备
有很多工具可以实现,根据实际情况部署即可,对于WEB服务基本就两点:文件和数据库。
8、数据备份
通过脚本或者工具把所有业务数据定期异地备份,一般情况是凌晨1点-3点在服务器空闲时间。
下面详细介绍一些常规操作方法
查看服务器负载 top
load average: 0.76, 0.72, 0.70 一般查看这个数值,第一个数据一般在1以内表示运行状况良好,其他数据具体含义可以度娘去查,这里不详述。这个load average数据也可以用w命令快速查看。
编辑本本或配置文件命令 vim
一般系统新装时候没有自带vim的情况下,也可以使用vi代替
具体使用方法网上也有很多教程,可以查找学习
安装软件
centos下一般使用 yum install 如
yum install bash-compleition
ubuntu下使用 apt-get install
win下直接执行EXE即可(小白都会)
bash-compleition 可以自动补全命令参数,比较好用
碰到需要编译的软件,有的精简系统里面需要先 yum install -y gcc gcc-c++ 装一些必要的扩展库才能通过,不过的时候根据错误提示查找解决方法。
安装apache 一般使用 yun install httpd,根据提示装好后执行service httpd start,
出现绿色的OK即代表安装成功,后续的PHP环境就根据具体需求执行安装命令即可。
nginx 一般安装命令是
yun install nginx
重点讲解一下安全策略
apache下目录访问权限如下
- <Directory "/www">
- Options FollowSymLinks
- AllowOverride None
- Order Deny,Allow
- Deny From all
- Allow From 2.2.2.2
- Allow From 2.2.2.3
- </Directory>
- </VirtualHost>
意思是/www目录只允许指定的ip2.2.2.2 2.2.2.3 可以访问到,这种配置适合内部系统使用。
为了保险起见,可以在IPTABLES里面也同时做好限制
- vim /etc/sysconfig/iptables
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- -A INPUT -s 1.1.1.1 -j DROP
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- -A INPUT -p icmp -j ACCEPT
- -A INPUT -i lo -j ACCEPT
- -A INPUT -s 2.2.2.2 -j ACCEPT
- -A INPUT -s 2.2.2.3 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
- -A INPUT -j REJECT --reject-with icmp-host-prohibited
- -A FORWARD -j REJECT --reject-with icmp-host-prohibited
- COMMIT
-A INPUT -s 1.1.1.1 -j DROP 这句话代表禁止1.1.1.1这个IP任何请求。
其他规则的意思是 放行2.2.2.2和2.2.2.3的所有请求,开放22和80端口。
同时在hosts.allow里面加入信任主机的ip
- vim /etc/hosts.allow
- ALL:2.2.2.2
- ALL:2.2.2.3
- sshd:ALL:deny
这样只允许授权的Ip可以远程连接到此台server,其他任何机器都无法登录。
win server如下设置就可以达到同样效果 开始->管理工具->本地安全策略 拿2008举例,其他版本类似
默认添加一条所有ip所有端口拒绝访问的规则,这步远程时需要小心操作,需要在规则未生效前添加,否则会断开连接。
第二条添加自己信任的ip,规则为放行。
第三条开放需要对外的端口,如80
整体规则,具体的设置步骤需要实际操作几次后即可熟练。
最后右键此条策略,选择分配,立即生效
其他1
本地数据备份脚本
tar -zcvf /home/bak/file_$(date -d "yesterday" +"%Y%m%d").bak.tar.gz /www
脚本文件放到/apptool/bak.sh,内容意思是把/www目录压缩到/home/bak目录下面,以file_日期_bak.tar.gz命名。
然后放到crontab里面定时每天夜里执行
crontab -e
00 00 * * * /bin/bash /apptool/bak.sh
异地备份可以选择使用flashfxp做好定时任务周期性拉取文件即可。
数据库备份可以选择使用navicat做好远程连接设置,然后做好备份规则。
其他2
为了开发和维护方便,可以部署一些自动化程式,可以在测试环境设置周期性拉取版本库里面的内容,实现自动更新,开发者只需在本地提交后即可实时预览修改后的内容。
正式环境也可以使用脚本完成一键更新。
其他3
掌握一些常规压测工具,检验程序和服务器的性能,如wrk, ab, webbench, hping
ab 一般装有apache的机器上都可以直接使用,一般目标主机都是自己的server,如
ab -c100 -n1000 http://www.host.com/
请求目标主机100并发,总请求1000次,命令结束后会出现一些信息总结检测情况,同时需要观察目标主机的资源消耗情况。
hping工具也很好用,具体使用方法可以查阅使用文档。
其他4
iptraf, tcpdump, ngrep, nethogs, nload, iftop 等网络检测和诊断工具使用可以有效发现并解决相关问题。
基础命令 netstat, ping, traceroute...等需要熟练掌握并使用。
也可以借助一些检测网站,如17ce,alibench 等一些网站质量检测站点帮助发现问题。
其他5
待整理。。。
PHP程序员的简单运维的更多相关文章
- Rocket Mq 常用API 及简单运维
RocketMQ 常用API 消息 消息消费模式 消息消费模式由消费者来决定,可以由消费者设置MessageModel来决定消息模式. 消息模式默认为集群消费模式 consumer.setMessag ...
- 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)
经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...
- 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)
上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...
- shell 脚本实战笔记(11)--Mysql在linux下的安装和简单运维
前言: linux中安装mysql以及配置的管理, 基础的运维和管理还是需要会一些的. 这边作下笔记, 以求天天向上(^_^). 安装流程:*). 安装mysql-server1). 借助yum检索相 ...
- InfluxDB系列之一安装及简单运维(未完成,需要继续写)
InfluxDB 是一个开源分布式时序.事件和指标数据库.使用 Go 语言编写,无需外部依赖.其设计目标是实现分布式和水平伸缩扩展. 它有三大特性: 1. Time Series (时间序列):你可以 ...
- 作为一个Java程序员连简单的分页功能都会写,你好意思嘛!
今天想说的就是能够在我们操作数据库的时候更简单的更高效的实现,现成的CRUD接口直接调用,方便快捷,不用再写复杂的sql,带吗简单易懂,话不多说上方法 1.Utils.java工具类中的方法 1 /* ...
- Python自动化运维工具fabric的安装
使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...
- Python自动化运维工具-Fabric部署及使用总结
使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...
- 谈谈我的windows服务器运维管理
我们开发的页游General War(http://gw.gamebox.com)上线运营也有半年多了,服务器的开发到运维基本都由我一手包办,在服务器上线之后我们又招了一个程序员接手后续功能的开发,而 ...
随机推荐
- Java IO 之 System类
1.使用System.in.read读取,使用System.out.println 输出 package org.zln.io; import java.io.IOException; /** * C ...
- [NOIP2017 TG D2T3]列队
题目大意:有一个$n \times m$的方阵,第$i$行第$j$列的人的编号是$(i-1) \times m + j$. 现在有$q$个出列操作,每次让一个人出列,然后让这个人所在行向左看齐,再让最 ...
- 种树 by yoyoball [树分块+bitset]
题面 给定一棵树,有点权 每次询问给出一些点对,求这些点对之间的路径的并集上不同权值的个数,以及这些权值的$mex$ 思路 先考虑只有一对点对,只询问不同权值个数的问题:树上莫队模板题 然后加个$me ...
- nowcoder 提高组模拟赛 选择题 解题报告
选择题 链接: https://www.nowcoder.com/acm/contest/178/B 来源:牛客网 题目描述 有一道选择题,有 \(a,b,c,d\) 四个选项. 现在有 \(n\) ...
- 清理/var/spool/clientmqueue目录释放大量空间
清理/var/spool/clientmqueue目录可以释放大量空间,具体命令是:ls | xargs rm -f 文件太大,rm -rf会由于参数太多而无法删除,所以需要用上面的命令. “Argu ...
- 精通javascript笔记(智能社)——简易tab选项卡及应用面向对象方法实现
javascript代码(常规方式/面向过程): <script type="text/javascript"> window.onload=function(){ v ...
- WebView使用--文章集锦
对于android WebView加载不出Html5网页的解决方法 在android4.4中webview的使用相对于之前版本的一些区别 理解WebKit和Chromium: Android 4.4 ...
- eclipse 4.2生成wsdl 客户端
eclipse版本 4.2 64位 ,jdk 1.6 64位 Eclipse Java EE IDE for Web Developers. Version: Juno Service Rel ...
- HDU1878 欧拉回路---(并查集+图论性质)
http://acm.hdu.edu.cn/showproblem.php?pid=1878 欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- 【BZOJ2820】YY的GCD [莫比乌斯反演]
YY的GCD Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 求1<=x<=N, ...