Linux Bash使用小技巧

在bash中检查远程端口是否打开:

1
echo >/dev/tcp/8.8.8.8/53 && echo "open"

将进程挂起:

1
Ctrl + z

将进程移到前台:

1
fg

(译注,挂起的进程是不执行的,如果希望在后台执行,可以使用bg命令,并且指定通过jobs命令获得的任务号。)

生成随机16进制数字,n是字符的数量:

1
openssl rand -hex n

在当前shell中执行一个文件中的命令(译注:这个文件不是一个bash脚本,比如.bashrc、bash_profile等):

Zabbix:企业微信告警配置

Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。

先决条件

准备事项

  • 微信企业号
  • 企业号已经被部门成员关注
  • 企业号有一个可以发送消息的应用,一个授权管理员,可以使用应用给成员发送消息

需要得到的信息

  • CorpIDSecretAgentId
  • 记录用户的账号

说明

一些nginx配置小技巧

nginx文件处理

有些时候需要在网站中创建一些文本文件已实现某些功能,如当前获取免费SSL证书的文件验证,又不想在网站新建文件,这时候可以配置nginx返回text/plain格式文本以达到直接访问文件的效果。如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80;
server_name www.example.com;
access_log /var/log/nginx/www-example-com.log access;
root /etc/nginx/html;
......
#Aliyun ssl by txt
location = /.well-known/pki-validation/fileauth.txt
{
default_type text/plain;
return 200 '201708090000005cpmpl49g1psxj1r86w70mmpi27g61r4f7u2bthwedki0trwtx';
}
......
}

访问效果如下:

Nginx日志统计分析常用命令

IP相关统计

  • 统计IP访问量

    1
    awk '{print $1}' access.log | sort -n | uniq | wc -l
  • 查看某一时间段的IP访问量(4-5点)

    1
    grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l
  • 查看访问最频繁的前100个IP

    1
    awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 100
  • 查看访问100次以上的IP

    1
    awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn
  • 查询某个IP的详细访问情况,按访问频率排序

MegaCli:如何使用命令行监控RAID卡状态

简介

MegaCli是一款管理维护硬件RAID软件,可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid 上各磁盘状态,等等。通常,我们对硬盘当前的状态不太好确定,一般通过机房人员巡检来完成,有没有通过软件的方式来检查确定这个问题呢。MegaCli就可以做到,一般通过 MegaCli 的Media Error Count: 0 Other Error Count: 0 这两个数值来确定阵列中磁盘是否有问题;Medai Error Count 表示磁盘可能错误,可能是磁盘有坏道,这个值不为0值得注意,数值越大,危险系数越高,Other Error Count 表示磁盘可能存在松动,可能需要重新再插入。MegaCli 可以对阵列中所有的磁盘进行检测,我们可以通过脚本的方式来检测相关参数,从而通知管理人员。

下载MegCli

猛击以下链接下载:安装包下载

安装

在CentOS7中部署php7.1及开启MySQL扩展

之前在CentOS7安装php7.1的时候有遇到PHP源PHP7.1不支持MySQL扩展问题,上午抽空安装了下终于解决了这两个问题,特此记录备忘。

简单安装(yum方式)

安装软件源

添加epel源

1
2
[root@opstrip.com opt]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
[root@opstrip.com opt]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

备用源:http://mirrors.rit.edu/fedora/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

添加remi源

1
[root@opstrip.com opt]# rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

安装并更新软件

安装yum-config-manager实用程序

1
[root@opstrip.com opt]# yum -y install yum-utils

更新系统当前软件版本

阿里云:在ECS上挂载ossfs

OSS与CDN

OSS

阿里云OSS(Object Storage Service,对象存储服务)是阿里云提供的对象存储服务,具有以下特点:

  • 可以提供海量的文件存储,具有无限可伸缩能力;
  • 有遍布全国及海外的数据中心,满足不同区域用户的使用;
  • 服务稳定,达到7个9;
  • 价格便宜;
  • 与阿里云其他云产品组成生态体系,无缝衔接,自带图片处理服务,可以满足多种多样的业务场景;
  • 技术团队可以提供7×24小时的技术支持。除此之外,OSS还支持更加强大的权限体系,可以满足更加复杂的场景,并且具有极好的数据安全性。

CDN

CDN(Content Delivery Network,即内容分发网络),其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

综上,OSS就是云存储(也有些计算能力,如图片处理等),CDN就是网络优化。

权限配置

9个常用iptables配置实例

iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙、NAT。咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面我们通过具体实例,学习iptables的详细用法。

删除已有规则

在新设定iptables规则时,我们一般先确保旧规则被清除,用以下命令清除旧规则:

1
2
iptables -F
(or iptables --flush)

设置chain策略

对于filter table,默认的chain策略为ACCEPT,我们可以通过以下命令修改chain的策略:

1
2
3
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

以上命令配置将接收、转发和发出包均丢弃,施行比较严格的包管理。由于接收和发包均被设置为丢弃,当进一步配置其他规则的时候,需要注意针对INPUTOUTPUT分别配置。当然,如果信任本机器往外发包,以上第三条规则可不必配置。

配置屏蔽指定ip

有时候我们发现某个ip不停的往服务器发包,这时我们可以使用以下命令,将指定ip发来的包丢弃:

在CentOS7上配置LNMP环境:PHP篇

上篇介绍了Nginx的安装配置及Let's Encrypt证书的自动签发与自动续期。这里主要介绍PHP的安装及在Nginx中的转发配置。

安装PHP

1、安装依赖

编译安装PHP之前需要安装PHP依赖包:

1
[root@opstrip opt]# yum -y install gd-devel libjpeg-devel libpng-devel libiconv-devel freetype-devel libxml2 libxml2-devel curl-devel libxslt-devel libmcrypt-devel mhash mcrypt php-mysql

完成后需在 https://downloads.mysql.com/archives/community/ 下载安装mysql-develmysql-sharedmysql-client三个rpm包。
对于64位系统的主机,还需如下操作:

1
2
[root@opstrip opt]# ln -s /usr/lib64/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
[root@opstrip opt]# ln -s /usr/lib64/libmysqlclient_r.so.16.0.0 /usr/lib/libmysqlclient_r.so

http://php.net/get/php-5.6.30.tar.gz/from/a/mirror 下载php-5.6.30.tar.gz并上传至虚拟主机,此处为/opt

1
2
[root@opstrip opt]# tar xf php-5.6.30.tar.gz
[root@opstrip opt]# cd php-5.6.30

2、编译安装PHP

在CentOS7上配置LNMP环境:Nginx篇

早就听说AWS的大名了,信用卡办下来后第一件事就是申请了个AWS的账号,买了美东的EC2(CentOS7)及RDS(MySQL5.6)资源各一。当然都是免费套餐中的,不管怎样总算是终于有了自己的主机了。
老规矩,初始化CentOS7,放上自己的key,配置好安全组打通EC2与RDS之间的网络,测试了下发现通了。

因为之前使用的GitHub Pages博客一直都是静态的Html,所以这次打算直接丢到EC2上先用nginx跑起来,然后将国外线路解析到这台EC2上,国内线路用 七牛的CDN 的,相册中的照片也是存贮在七牛的。
一步步来吧,先整个Nginx。

安装Nginx

1、安装Nginx依赖及常用软件包

1
[root@opstrip opt]# yum -y install net-tools git gcc rsync lrzsz telnet wget ntp dstat mlocate bind-utils nscd psmisc python-devel python-pip mtr chrony gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel

2、安装前的准备

1
2
3
4
5
6
7
# 创建Nginx运行用户
[root@opstrip opt]# groupadd -r www
[root@opstrip opt]# useradd -s /sbin/nologin -g www -r www
# 获取Nginx源码并解压
[root@opstrip opt]# wget http://nginx.org/download/nginx-1.11.12.tar.gz
[root@opstrip opt]# tar xf nginx-1.11.12.tar.gz
[root@opstrip opt]# cd nginx-1.11.12