Linux下创建Patch的方法

当在Linux下修改了某个文件(夹)之后,如果需要把修改的部分分享出去,可以使用diff命令来创建patch(补丁)文件.

在使用diff命令创建patch之前,我们需要修改之前的原始文件,和修改过的新文件.

当为一个文件创建patch的时候可以使用以下代码:
diff -Naru file_orig.c file_updated.c > file.patch

其中

  • -N 将缺失文件视为空
  • -a 将所有文件视为文本文件
  • -r 递归比较所有子文件夹
  • -u 输出行数(默认 3)行

 

当需要为整个文件夹创建patch的时候可以使用以下代码:
diff -crB dir_orig dir > dfile.patch

其中

  • -c 输出行数(默认 3)行
  • -r 递归比较所有子文件夹
  • -B 忽略连续的换行符

当你需要应用这个patch的时候可以运行
patch -p1 --dry-run < file.patch
其中参数-p[n]中的n值为需要跳过的目录数.

以/usr/src/linux为例:

若-p0就是不跳过任何目录,

-p1将跳过/,得到usr/src/linux,

-p2将跳过/usr,得到src/linux

绝大多数情况下这个值应该为1.

 

删除–dry-run当你满意输出到屏幕上的结果.

Nginx让带www的域名跳转到根域名上和让不带www的根域名跳转到带www的域名上

在Nginx下有许多让带www域名跳转到不带www的根域名上或者让不带www跳转到www的域名上的方法

下面说一下我正在用的方法,希望对各位能有所帮助.

 

重定向非www域名到www上

单域名

server {
        server_name example.com;
        return 301 $scheme://www.example.com$request_uri;
}

全部域名

server {
        server_name "~^(?!www\.).*" ;
        return 301 $scheme://www.$host$request_uri;
}

 

重定向www域名到根域名上

单域名

server {
        server_name www.example.com;
        return 301 $scheme://example.com$request_uri;
}

全部域名

server {
         server_name "~^www\.(.*)$" ;
         return 301 $scheme://$1$request_uri ;
}

 

我们创建单独的 Server{} 块是Nginx官方推荐的最佳方法来实现跳转.

虽然WordPress下也有插件能在PHP级别上做到跳转,但是出于性能考虑,总是让Nginx来做Nginx可以做到的事.

Centos 7上配置Munin MySQL插件.

Munin自带的有MySQL插件,但是并不太好用,本文将介绍如何安装和配置第三方的Munin MySQL监控插件.
本文中所有操作都在Centos 7, MaraiDB 11.2下完成.

1.安装必要的Perl依赖

yum -y install perl-DBI perl-DBD-mysql perl-Module-Pluggable

2.下载,解压munin-mysql插件

wget https://github.com/kjellm/munin-mysql/archive/master.zip -O munin-mysql.zip
unzip munin-mysql.zip
cd munin-mysql-master

3.修改mysql.conf配置
修改 env.mysqlconnection DBI:mysql:mysql 为 env.mysqlconnection DBI:mysql:munin
修改env.mysqluser root 为 env.mysqluser munin
去掉env.mysqlpassword前面的#号,并把geheim修改成你将要使用监控MySQL账号的密码

4.编辑Makefile, 找到$(MUNIN_NODE) restart (大约45行),备注或者删除掉

5.安装, 在munin-mysql-master目录执行make install

6.配置MySQL,在phpmyadmin或者mysql -u root -p 下执行以下SQL

CREATE USER `munin` @`localhost` IDENTIFIED BY '0do8KxdWULQu'; #请自行把0do8KxdWULQu替换为你在mysql.conf里设置的密码
GRANT SUPER ON *.* TO `munin` @`localhost`;
GRANT PROCESS ON *.* TO `munin` @`localhost`;
CREATE DATABASE IF NOT EXISTS `munin`;
GRANT ALL PRIVILEGES ON `munin`.* TO 'munin'@'localhost';
FLUSH PRIVILEGES;

7.运行munin-run mysql,如果看到以下内容则安装成功.

multigraph mysql_bin_relay_log
Binlog_cache_disk_use.value 0
Binlog_cache_use.value 0
Binlog_stmt_cache_disk_use.value 0
Binlog_stmt_cache_use.value 0
ma_binlog_size.value 0
.....

7.重启munin-node,稍等片刻之后即可在Munin页面上看到MySQL的图表

systemctl restart munin-node

 

20160730163646

在Centos 7上使用Fail2ban来保护SSH服务

使用Fail2ban来保护SSH服务,减轻暴力攻击对安全性的影响.

1.Fail2ban with FirewallD

1.从EPEL库内安装Fail2ban

yum install -y epel-release
yum install -y fail2ban fail2ban-systemd

2.关闭SeLinux(如果开启)

setenforce 0
sed -i "s/SELINUX=.*/SELINUX=disabled/" /etc/selinux/config

3.配置Fail2ban, 我们选择使用Centos 7默认防火墙 FirewallD.

创建 /etc/fail2ban/jail.d/sshd.local 文件,并写入

[sshd]
enabled = true
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400

4.启用Fail2ban

systemctl enable fail2ban
systemctl start fail2ban

2.Fail2ban with iptables-services

1.从EPEL库内安装Fail2ban

yum install -y epel-release
yum install -y fail2ban fail2ban-systemd

2.关闭SeLinux(如果开启)

setenforce 0
sed -i "s/SELINUX=.*/SELINUX=disabled/" /etc/selinux/config

3.设置Fail2ban, 在这里我们使用 iptables-services

yum -y install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service

4.创建 /etc/fail2ban/jail.d/sshd.local 文件,并写入

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = %(sshd_log)s
maxretry = 5
bantime = 86400

5.启用Fail2ban

systemctl enable fail2ban
systemctl start fail2ban

Centos 7更改Hostname

在把VPS上的系统升级到Centos 7之后,我尝试修改/etc/sysconfig/network来修改hostname, 但是没有用. 修改Centos 7的Hostname的方法和以前版本不同,希望本文能帮你来修改Hostname在Centos 7 / RHEL 7上.

使用hostnamectl来修改Hostname:

检查目前的Hostname

[root@vultr ~]# hostnamectl status
   Static hostname: vultr.guest
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 19a12d5f5d824794a19caf165a9b3bca
           Boot ID: 21c75ffe0718431d800fd8159be13d99
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-123.20.1.el7.x86_64
      Architecture: x86_64

设置新的Hostname

[root@vultr ~]# hostnamectl set-hostname mysql.jzbk.org

检查当前Hostname

[root@vultr ~]# hostnamectl status
   Static hostname: mysql.jzbk.org
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 19a12d5f5d824794a19caf165a9b3bca
           Boot ID: 21c75ffe0718431d800fd8159be13d99
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-123.20.1.el7.x86_64
      Architecture: x86_64