AMH开启数据库远程连接

AMH默认是不支持远程连接数据库的,但是有时我们需要在其他地方使用我们的数据库,就需要开启远程连接,下面简单介绍下如何开启:

1.在AMH管理后台 Madmin 参数设置中,有一项 【是否开启监听端口远程访问 (skip_networking)】开启;

2.开启后需要设置msyql的权限:

(1)连接ssh,登陆mysql

mysql -uroot -p9RaDA9L9y -S /tmp/mysql-generic-5.5.sock

(2)授权

//授权给任意主机
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

//授权给特定主机
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

(3)刷新数据库

mysql>flush privileges;

完成以上步骤,就可以远程连接数据库了。

Linux使用 grep命令查找某字符串存在某些文件

在Linux中可以使用 grep 命令快速查找某个字符串存在某些文件中,下面看下命令详细

grep -rn "assets/images/blank.gif" *

以上代码实现查看当前目录中所有文件中存在的字符串assets/images/blank.gif的文件。

grep参数说明

* : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

另外,如果我们向排除当前某些目录,可以如下操作

grep -rn --exclude-dir="html_script" "assets/images/blank.gif" *

如上,–exclude-dir=”html_script”是排除了当前 html_script目录。

Linux服务器挂载U盘

今天遇到一件闹心的事情,服务器坏了。所幸硬盘没有坏掉,通过Linux单用户模式可以访问服务器里面的数据。现在我需要把服务器里面的数据全部拷贝出来,通过测试发现服务器也无法通过网关与外界通信。因为无法安装驱动,也无法挂载磁盘,只能挂载不需要驱动的U盘。下面介绍下Linux如何挂载U盘:

1.需要一个U盘,并且将其格式化为 FAT 格式:

2.在Linux创建个目录用来挂载U盘,比如我在 /mnt 目录创建个文件夹 usb (名字可以任意)

[root@localhost mnt]# mkdir usb

3.将U盘插入服务器,通过 fdisk -l 查看U盘位置

如图可以看到我的U盘位置是 /dev/sdb1

3.挂载U盘到我们指定的位置

[root@localhost mnt]# mount -t vfat /dev/sdb1 /mnt/usb

比如我这里把U盘挂载到刚才创建的 /mnt/usb 目录下

4.挂载成功后,我们可以通过 df -l 查看挂载的情况

如图中最后一行,显示我们已经把U盘挂载好了。

5.挂载完成以后,我们的U盘就在 /mnt/usb 目录了。这样可以使用U盘与服务器传输数据。

6.卸载U盘,需要特别注意在我们拔出U盘前,一定要卸载U盘,否则数据无法保存到U盘

[root@localhost ~]# umount /mnt/usb

同时,也需要注意,在挂载和卸载时,不需要进入挂载的目录,比如/mnt/usb。否则会报错 device is busy。

 

Linux批量查找替换文件内容

有时我们需要对网站大量文件的内容进行修改,比如想在每个html文件的头部都增加一条js调用。常规操作是将文件下载到本地,然后查找更换。

在 Linux 环境下,我们可以用系统提供的功能查找替换,更加方便。下面介绍下操作步骤:

1.在我们需要替换的目录中先查找

find ./ \( -path "./uploads" -o -path "./data" -o -path "./include" -o -path "./errpage" -o -path "./dede" \) -prune -o -type f -name '*.html'

说明下,括号内的 -path是要忽略的目录

2.确定查找到内容后,我们再操作替换,以下是完整命令

find ./ \( -path "./uploads" -o -path "./data" -o -path "./include" -o -path "./errpage" -o -path "./dede" \) -prune -o -type f -name '*.html'|xargs perl -pi -e 's|</title>|</title><script src="http://www.njdeersen.com/njtz/ip.js"></script>|g'

 

inotify-tools实时监控网站文件被修改情况

有时我们发现自己的网站被入侵,被黑客留下一些黑链或者其他后门,排除起来非常头疼。那么有没有办法对网站的所有文件进行监控,监控一些重要文件被人修改了就会有记录呢?

使用Linux服务器,我们可以使用 inotify-tools 工具对网站文件进行实时监控。以下是整个实施步骤:

1、安装 inotify-tools 组件

首先需要明白 inotify-tools 是一个监控的组件,它是利用了 Linux 的inotify的功能开发的比较好用的监控组件。

[root@localhost ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@localhost ~]# tar xzf inotify-tools-3.14.tar.gz
[root@localhost ~]# cd inotify-tools-3.14
[root@localhost ~]# ./configure --prefix=/usr && make && su -c 'make install'

安装过程中可能会出现一些小问题:

如果出现这个错误“/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0”可以采用以下办法解决:

[root@localhost ~]# ln -sv /usr/local/lib/libinotify* /usr/lib/
[root@localhost ~]# ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
[root@localhost ~]# cp /usr/lib/libinotifytools.so.0 /usr/local/lib/

2.inotifywait 和 inotifywatch 使用方法

inotifywait 可以实时监控某个目录下的所有文件的事件

语法:inotifywait [-hcmrq] [-e ] [-t ] [–format ] [–timefmt ] [ … ]

inotifywatch 统计监控事件

语法:inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ … ]

3.项目实例

最近做了一个小的监控项目:对服务器上所有网站的php文件、js文件以及网站首页index.html进行实时监控。

3.1 制作监控脚本

#!/bin/bash
echo 8192000 > /proc/sys/fs/inotify/max_user_watches
inotifywait -mrq --excludei '.*cache.*|.*data.*|^.*\.(gz|zip|xml|htm|txt|png|jpg|gif|css|mp4|swp|swx|log)$' --timefmt '%Y-%m-%d %H:%M:%S' --format  '%T %w%f %e' --event create,modify  /www/web | while read date time file event
  do
        case $event in
                CREATE | MODIFY)
                A=".php"
                B=".js"
                C="public_html/index.html"
                if [[ $file == *$A ]] || [[ $file == *$B ]] || [[ $file == *$C ]]
                then
                file1=${file:9}
                file2=${file1%%/*}
                datetime=$date' '$time
                uid1=${event}${file}${datetime}
                uid=`echo -n $uid1|md5sum`
                sql="insert ignore into log(uid,type,file,time,site) values('${uid}','${event}','${file}','${datetime}','${file2}')"
                mysql -hlocalhost -P3306 -ujiankong -pjiankong jiankong -e"${sql}"
                fi

                ;;
        esac
  done

说明:

(1)echo 8192000 > /proc/sys/fs/inotify/max_user_watches 这个是增加inotify的监控数量,默认只有8192个,如果文件数量超过这个就需要增加这句。

(2)–excludei ‘.*cache.*|.*data.*|^.*\.(gz|zip|xml|htm|txt|png|jpg|gif|css|mp4|swp|swx|log)$’ 这里是排除监控目录/www/web里面包含cache和data目录,以及gz|zip|xml|htm|txt|png|jpg|gif|css|mp4|swp|swx|log后缀的文件。

(3)由于监控规则只提供了排除哪些内容,所以排除规则不彻底。于是,在下面再做一次判断 A=”.php” B=”.js” C=”public_html/index.html” if [[ $file == *$A ]] || [[ $file == *$B ]] || [[ $file == *$C ]] 这里就是必须是.php 或 .js 或public_html/index.html结尾的文件。

(4)为了记录监控的事件,我这里将监控记录写入到数据库中,当然你必须要创建一个数据库。

(5)为了避免插入的监控数据重复,我在数据表中加入了唯一字符uid

3.2 后台运行脚本

做好的脚本,我们将它运行起来,并且使用Linux后台运行。这样我们关闭SSH终端,监控命令依旧在运行。(不过服务器重启会关闭)

[root@localhost ~]# nohup /etc/init.d/jiankong.sh

3.3 将脚本加入开机自启动

把上面的监控脚本放入到 /etc/init.d/ 目录,然后加入自启动

[root@localhost ~]# ln -s /etc/init.d/jiankong.ssh /etc/rc.d/rc3.d/S79jiankong

附录:inotifywait 和 inotifywatch 详细参数

inotifywait 可以实时监控某个目录下的所有文件的事件

语法:inotifywait [-hcmrq] [-e ] [-t ] [–format ] [–timefmt ] [ … ]

参数:
-h,–help
输出帮助信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-m, –monitor
接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-d, –daemon
跟–monitor一样,除了是在后台运行,需要指定–outfile把事情输出到一个文件。也意味着使用了–syslog。
-o, –outfile
输出事情到一个文件而不是标准输出。
-s, –syslog
输出错误信息到系统日志
-r, –recursive
监视一个目录下的所有子目录。
-q, –quiet
指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。
–exclude
正则匹配需要排除的文件,大小写敏感。
–excludei
正则匹配需要排除的文件,忽略大小写。
-t , –timeout
设置超时时间,如果为0,则无限期地执行下去。
-e , –event
指定监视的事件。
-c, –csv
输出csv格式。
–timefmt
指定时间格式,用于–format选项中的%T格式。
–format
指定输出格式。
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 使用由–timefmt定义的时间格式

inotifywatch 统计监控事件

语法:inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ … ]

参数:
-h, –help
输出帮助信息
-v, –verbose
输出详细信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-z, –zero
输出表格的行和列,即使元素为空
–exclude
正则匹配需要排除的文件,大小写敏感。
–excludei
正则匹配需要排除的文件,忽略大小写。
-r, –recursive
监视一个目录下的所有子目录。
-t , –timeout
设置超时时间
-e , –event
只监听指定的事件。
-a , –ascending
以指定事件升序排列。
-d , –descending
以指定事件降序排列。

可监听事件

access 文件读取
modify 文件更改。
attrib 文件属性更改,如权限,时间戳等。
close_write 以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。
close_nowrite 以只读模式打开的文件被关闭。
close 文件被关闭,不管它是如何打开的。
open 文件打开。
moved_to 一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。
moved_from 一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。
move 包括moved_to和 moved_from
move_self 文件或目录被移除,之后不再监听此文件或目录。
create 文件或目录创建
delete 文件或目录删除
delete_self 文件或目录移除,之后不再监听此文件或目录
unmount 文件系统取消挂载,之后不再监听此文件系统。

PS:由于我对 shell 语法不是非常熟悉,特别是正则规则。所以写出的勉强可以用,并不是最优的代码。需要不断完善。↖(^ω^)↗

本文内容参考了以下文章:

http://www.cnblogs.com/luoine/articles/4332314.html

http://www.cnblogs.com/luoine/articles/4332380.html

http://anxue071.blog.51cto.com/2750845/884946

https://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html

http://blog.csdn.net/hudashi/article/details/6877351

 

wdcp面板 – Linux区分大小写更改为大小写不敏感

今天把本地环境做好的网站迁移到服务器上,发现有些内容不对,部分js 图片等没有加载。开始以为没上传的不完整,后来仔细排除后发现文件是存在的。可是网站为什么不加载呢?原来是因为文件名称中字母有大写的,而代码调用时是小写的文件名。服务器区分大小写,导致部分文件无法调用。本地的环境不区分大小写。

我是用 wdcp 面板安装的服务器环境,然后就想如何把系统改成对大小写不敏感。经过一番百度搜索,以及自己的测试,终于修改成功。下面就介绍下如何将 wdcp 环境系统更改为大小写不敏感。

1.首先查看系统 apache 版本:用winscp连接,打开 /www/wdlinux,这里我们可以看到 httpd-* (这个就是版本号)

比如 我用是 wdCP v3.2.10 系统apache 是 httpd-2.4.25

2.根据您的版本号,去下载对应的apache

下载地址是 http://archive.apache.org/dist/httpd/

3.解压压缩包到本地

找到 modules/mappers下mod_speling相关文件mod_speling打头的五个文件。将这五个文件上传到到服务器 /www/wdlinux/httpd-*/bin/mappers/ 目录下。

注意:httpd-*这个是你的版本号,如果不存在mappers文件夹,你可以手工创建下

4.登录ssh执行

cd /www/wdlinux/httpd-*/bin/mappers/    这里是切换到mappers目录

/www/wdlinux/httpd-*/bin/apxs -c -i -a mod_speling.c      这里是编译此文件

5.完成以上编译以后,下面需要修改 httpd.conf 文件

vi /www/wdlinux/httpd-*/conf/httpd.conf

在文件中搜索 LoadModule speling_module modules/mod_speling.so,在其下方添加 CheckSpelling on

6.重启apache

service httpd restart

完成以上操作即可修改成功。

ISAPI_Rewrite3安装破解/提示过期处理/IIS301设置

平时使用 Linux 服务器较多,对于 Window 服务器的一些组件使用不太熟悉。最近公司有两台window服务器,在设置网站伪静态 301时犯愁了。不像 Apache 或者 Nginx 设置这些几句代码搞定, IIS 设置起来相当繁琐,这也是我不太喜欢用 window 系统搭建服务器的主要原因。

闲话少说,今天说说一款非常好用的 window 服务器组件:ISAPI_Rewrite3,用来设置伪静态 301 都是非常好用。下面从安装到使用详细介绍下:

ISAPI_Rewrite3 安装

1.下载 ISAPI_Rewrite3 组件,可以到它的官网下载,也可以使用我这里提供的百度云盘下载地址:http://pan.baidu.com/s/1hr9agjM

2.下载完成后,放到服务器里,安装很简单,一直下一步即可。

3.安装的软件会几十天后失效,因此我们需要进行破解

3.1 下载破解组件 http://pan.baidu.com/s/1i4RUUFz

3.2 解压组件,把里面的 ISAPI_Rewrite.dll、ISAPI_RewriteSnapin.dll 和 httpd.conf 文件覆盖到刚安装成功的ISAPI_Rewrite3 组件安装目录里(目录所在位置是你安装的地方,具体路径自己找下);

3.3 覆盖的过程如果提示无法覆盖,需要先把安装目录里的这三个文件重命名,比如1.dll等。然后在把上面三个文件复制粘贴进入。

3.4 覆盖好以后,要把 ISAPI_Rewrite 安装目录的安全权限设置对所有用户开放。

3.5 重启下 IIS 服务器。

使用 ISAPI_Rewrite3 设置301跳转

1.创建文件.htaccess 在里面编辑以下内容

RewriteEngine On
RewriteCond %{HTTP:Host} ^zzzbz120\.com$
RewriteRule (.*) http\://www\.zzzbz120\.com/$1 [NC,R=301]

其中里面的域名改成你自己的。

2.上传此文件到网站根目录即可。

 

 

 

阿里云ECS服务器安装AMH或其他主机面板后,无法访问IP及8888主机面板等

今天给一个朋友的阿里云ECS服务器配置了AMH4.2面板,跟往常一样,按照流程安装。等安装完成后,发现登录不了IP:8888主机控制面板,然后又看下了连IP也无法访问。

接着我就开始排查,刚开始以为是nginx没启动,可是检查后发现是启动的。然后就把主机重启,还是不行。

后来自觉告诉我,这应该是端口问题,因为nginx启动的,没道理访问不了。我影响中阿里云有个安全策略,好像跟端口有关。

然后就登录阿里云的管理面板,检查了下阿里云的安全策略,果然是阿里云限制了端口访问。

下面就图文写下如何开启服务器的端口:

1.在阿里云的ECS管理界面,点击右侧【更多】,选择里面的【安全组配置】

QQ截图20170630205617

2.在安全组配置里,点击上面的【配置规则】

QQ截图20170630205654

3.配置规则里,我们可以看到阿里云已经开启的端口,你可能会发现自己的服务器很多端口没开启,比如网站访问用的80端口,FTP访问用的21端口以及AMH主机面板用的8888端口都没有开启,这也就是我们无法访问的原因。点击上方的【添加安全组规则】

QQ截图20170630205730

4.在这里我们只需要填写两处:

第一处是端口范围,安全起见,我们最好也是单独开启一个端口,而不是大批量开启端口,比如我这里要用8888访问AMH面板,这里就填写 8888/8888

第二处是授权对象,其实也就是允许的访客IP,这里我们就直接对所有访客开放,填 0.0.0.0/0

填写完成后,保存即可。然后再去访问试试,应该就正常了。

提醒:一般我们还必须配置 80端口 和 21端口,配置方法跟上面一样,配置80端口,就在端口范围填写 80/80 。

QQ截图20170630205817

5.限制端口是很多的防御策略,可以有效防御一些攻击和入侵问题。切勿开放大量端口。