• 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下目录访问权限如下

    1. <Directory "/www"> 
    2. Options  FollowSymLinks 
    3.         AllowOverride None 
    4.         Order Deny,Allow 
    5.         Deny From all 
    6.         Allow From 2.2.2.2 
    7.         Allow From 2.2.2.3 
    8. </Directory> 
    9. </VirtualHost> 

    意思是/www目录只允许指定的ip2.2.2.2  2.2.2.3 可以访问到,这种配置适合内部系统使用。

    为了保险起见,可以在IPTABLES里面也同时做好限制

    1. vim /etc/sysconfig/iptables 
    1. *filter 
    2. :INPUT ACCEPT [0:0] 
    3. :FORWARD ACCEPT [0:0] 
    4. :OUTPUT ACCEPT [0:0] 
    5. -A INPUT -s 1.1.1.1 -j DROP 
    6. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
    7. -A INPUT -p icmp -j ACCEPT 
    8. -A INPUT -i lo -j ACCEPT 
    9. -A INPUT -s 2.2.2.2 -j ACCEPT 
    10. -A INPUT -s 2.2.2.3 -j ACCEPT 
    11. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
    12. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
    13. -A INPUT -j REJECT --reject-with icmp-host-prohibited 
    14. -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
    15. 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

    1. vim /etc/hosts.allow 
    1. ALL:2.2.2.2 
    2. ALL:2.2.2.3 
    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

    待整理。。。

  • 相关阅读:
    ComboBoxEdit 方法与属性设置
    Devpress.XtraGrid.GridControl 笔记
    C#中的多线程入门
    comboBox获取value中的值
    sql查询去掉以多列为条件的重复值
    DEV控件:gridControl常用属性设置
    C# MessageBox.Show 用法
    跨服务器与连接不同数据库 不跨服务器连接库存表
    无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象
    .Net Windows服务程序中获取安装程序所在目录
  • 原文地址:https://www.cnblogs.com/wenhainan/p/6207035.html
Copyright © 2020-2023  润新知