龚哥哥 - 山里男儿 爱生活、做自己!
CentOS下PHP7安装mysql扩展
发表于 2016-7-12 | 浏览(9936) | 服务器

从PHP7开始mysql扩展正式移除,如果系统db需要mysql方式操作数据库,我们可以手动安装(建议使用PDO操作数据库)

1、下载mysql扩展包

git clone https://github.com/php/pecl-database-mysql     mysql   --recursive
cd mysql
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

2、vim /etc/php.ini 添加扩展包

extension=mysql.so

保存后重启php-fpm服务

php -m 查看就有了

阅读全文

终端高亮 vim高亮 彩色 变色
发表于 2016-7-10 | 浏览(6486) | 服务器

mac终端彩色配置   vim ~/.bash_profile   在文件中添加

alias ls="ls -G"
保存后重启终端使用 ls 测试即可

vim语法高亮   vim ~/.vimrc  在文件中添加

彩色
  syntax on

行号
  set nu

底部显示行号和百分比
  set ruler

保存后使用vim打开一个文件瞧一瞧即可看见效果了

阅读全文

Mac安装PHP Swoole扩展
发表于 2016-7-10 | 浏览(7851) | 服务器

系统软件版本

Swoole Version swoole-1.8.9
PHP    Version 5.6.30
MAC    Version 10.12.4

开始安装

wget http://pecl.php.net/get/swoole-1.8.9.tgz
tar -zxvf swoole-1.8.9.tgz
cd swoole-1.8.9
/usr/bin/phpize    # phpize(如果执行 phpize 出错的话,在博客中搜索 phpize 查看解决方案)
./configure --with-php-config=/usr/bin/php-config
make
sudo make install

在 /etc/php.ini 中添加扩展记录

extension=swoole.so

重启apache

sudo apachectl restart

make可能会报错

错误1
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found #include "pcre.h"

排查问题 php -m 已经安装pcre扩展了,是本机未安装pcre服务
我们安装一下pcre服务
  brew install pcre
  sudo cp /usr/local/include/pcre.h /usr/include/php/ext/pcre/

错误2
./php_swoole.h:22:10: fatal error: 'php.h' file not found
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include /usr/include

阅读全文

Nginx支持htpasswd 访问需要用户和密码认证
发表于 2016-5-26 | 浏览(5738) | 服务器

准备、创建脚本目录

/data/server/nginx/conf/htpasswd

一、创建文件 htpasswd.sh  内容如下

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

echo "========================================"
echo "# A tool like htpasswd for Nginx       #"
echo "#--------------------------------------#"
echo "# Author:Devil http://gongfuxiang.com  #"
echo "========================================"

# file path
dir=$(pwd);
user="user.conf";
userfile="${dir}/${user}"

#set username
    username=""
    read -p "Please input username:" username
    if [ "$username" = "" ]; then
            echo "Error:username can't be NULL!"
            exit 1
    fi
    echo "==========================="
    echo "username was: $username"
    echo "==========================="

#set password
    unpassword=""
    read -p "Please input the Password:" unpassword
    if [ "$unpassword" = "" ]; then
            echo "Error:Password can't be NULL!"
            exit 1
    fi
    echo "==========================="
    echo "Password was: $unpassword"
    echo "==========================="
    password=$(perl -e 'print crypt($ARGV[0], "pwdsalt")' $unpassword)

# create file
if [ ! -f ${userfile} ]; then
  touch ${userfile} 

  echo "Create Auth file......"
fi

# delete original user
for file in $userfile;
do         
    sed -i "/^$MON[\t ]*$username/d" $file  
done

# add user
echo $username:$password >> $userfile
if [ $? == 0 ]; then
    echo $username:$password;
    echo "user add success, Auth file  path:${userfile}."
else
        echo "error"
        exit 1
fi

二、修改虚拟机配置文件 server 中添加以下配置信息

auth_basic "Authorized users only";
auth_basic_user_file /data/server/nginx/conf/htpasswd/user.conf;

三、添加授权用户(根据提示输入用户名和密码)

sh htpasswd.sh

阅读全文

Shell脚本发布系统
发表于 2015-12-18 | 浏览(6357) | 服务器
#!/bin/sh

# desc      项目上线脚本
# time      2015-12-18
# author    Devil
# version   2.0

echo "---------- 准备中... ----------"
user=`whoami`
date=$(date +%Y%m%d%H%M%S)
time=$(date +%Y-%m-%d" "%H:%M:%S)
name="fangao"
tar_name="${date}_${name}.tar.gz"
test_dir="test/test_app"
bak_dir="bak"
bak_log_dir="bak_log/"$(date +%Y/%m)
date_name=$(date +%d)".txt"
time_start=$(date +%s)

# 日志写入方法
function LogInsert()
{
    echo "user:${user}, date:${time}, msg:${1}, code:${2}" >> "${bak_log_dir}/${date_name}"
    if [ $2 == "success" ]
    then
        echo -e "\e[1;32m ${1} \e[0m"
    else
        echo -e "\e[1;31m ${1} \e[0m"
        exit
    fi
}

# 恢复脚本是否正在运行
is_restore=$(ps -ef | grep "restore" | grep -v grep | wc -l)
if [ $is_restore != 0 ]
then
        LogInsert "恢复脚本正在运行,请先停止再上线项目" "error"
fi

# 当前脚本是否在运行多个
is_online=$(ps -ef | grep "online" | grep -v grep | wc -l)
if [ $is_online -gt 2 ]
then
        LogInsert "当前脚本正在多处运行,请确认一人操作" "error"
fi

# 备份路径不存在则创建
if [ ! -x "$bak_dir" ]
then
    mkdir -p $bak_dir
fi

# 日志目录不存在则创建
if [ ! -x "$bak_log_dir" ]
then
    mkdir -p $bak_log_dir
fi

# 需要上线的目录不存在则退出
if [ ! -x "$test_dir" ]
then
    LogInsert "$test_dir 目录不存在" "error"
fi

echo "---------- 准备结束 ----------"

echo -e
echo "---------- 确定需要上线么?确定:Y  取消:N ----------"
read start_state
if [[ $start_state != "Y" ]]
then
    LogInsert "你取消了操作" "error"
fi

echo -e
echo "---------- 开始压缩,请稍候... ----------"
tar -cf $tar_name --exclude=img --exclude=audio --exclude=tpl_c --exclude=db_log $name
if [ $? == 0 ]
then
    LogInsert "压缩成功" "success"
    echo "压缩包文件名 ${tar_name}" >> "${bak_log_dir}/${date_name}"
else
    LogInsert "压缩失败" "error"
fi
echo "---------- 压缩结束 ----------"

echo  -e
echo "---------- 开始移动压缩包,请稍候... ----------"
mv $tar_name $bak_dir
if [ $? == 0 ]
then
    LogInsert "压缩包移动成功" "success"
else
    LogInsert "压缩包移动失败" "error"
fi
echo "---------- 压缩包移动结束 ----------"

echo  -e
echo "---------- 开始更新项目代码,请稍候... ----------"
cd $test_dir
git checkout master
git pull origin master
if [ $? == 0 ]
then
    echo -e "\e[1;32m git更新master成功 \e[0m"
else
    echo -e "\e[1;31m git更新失败 \e[0m"
    exit
fi
echo "---------- 项目代码更新结束 ----------"

echo -e
echo "---------- 确定迁移项目么?确定:Y  取消:N ----------"
read success
if [[ $success != "Y" ]]
then
        echo -e "\e[1;31m 你终止了迁移操作 \e[0m"
    exit
fi
echo "---------- 开始迁移项目,请稍候... ----------"
cp -r `ls | grep -v config | xargs` ../../$name
cp_state=$?
cd ../../
if [ $cp_state == 0 ]
then
    time_total=$[$(date +%s)-$time_start]
    LogInsert "项目迁移成功 [耗时:${time_total}秒]" "success"
else
    LogInsert "项目迁移失败" "error"
fi
echo "---------- 项目迁移结束 ----------"
echo -e
echo -e "\e[1;36m config目录下的所有文件都未迁移,如有文件需要迁移,请手动操作 \e[0m"
echo -e

阅读全文

Linux常用命令
发表于 2015-12-14 | 浏览(6034) | 服务器
exit  或  按Ctrl+D组合键   退出管理。
shutdown now   系统关机。
init 0  关机
init 3  切换到黑屏命令模式
init 5  切换到图形模式
init 6  重启
clear   清屏
su    管理员与普通用户切换,操作:su 会员名称
ifconfig              查看本机ip
setup      ip dns 修改
whereis 命令名称    查看在那个目录位置

cd     进入目录命令。 操作:cd /***/***
cd ..  返回上一个目录,表示父目录。
ls     查看当前所在目录下的文件与目录。 操作:ls
ls -a    查看当前目录下所有文件包含隐藏文件。
ls *.txt  意思是只查看当前txt的文件类型。
ls ?.txt  意思是只显示一个名称的文件
pwd    查看当前所在目录。 操作:pwd
ls -al /home  操作加命令的方式

tail   查看文件内容

cp     复制文件命令。 进入文件所在目录后操作或者直接在根目录这样操作:cp /文件操作:cp /路径/路径/文件名称 / 路径/路径名称 /需要存放的目录/目录。  空格然后一点就是复制到当前目录。如:cp /a/b/c/88.txt .

fdisk /dev/sdb  m  n  p  1  +200M 按n开始安装第二个磁盘。
fdisk -l  查看磁盘分区
mkfs -t ext3     磁盘格式化。操作:mkfs -t ext3 /dev/磁盘名称
mount    磁盘挂载, 操作:mount /dev/磁盘名称 /mnt/需要挂载的文件名
umount   磁盘挂载卸载,操作:umount /dev/磁盘名称
开机自动挂载 vim /etc/fstab
/dev/vdb1 /dbdata ext3 defaults 0 0

touch      创建空文件。 操作:touch 文件名称
mkdir      创建目录。 操作:mkdir 目录名称。
mkdir -p   直接创建多个目录 如:mkdir -p /a/aa/aaa/aaaa

rmdir    删除目录。 操作:rmdir 目录名称
rm -fr  直接强制删除 不会提示 可以直接删除多层目录
rm -f   删除文件命令。 操作:rm -f /文件名称
mv      移动文件,文件或目录更名。操作:mv t.txt tt.txt
vim 文件名.txt   编辑器,或者打开文件编辑

先按esc键再输入命令
:w        保存
:q        退出
:q!       放弃修改退出
:wq       保存+退出
shutdown-r now     重启
shutdown -r+15     15分钟后关机
reboot       挂起
man ls       获得帮助,获得帮助手册。帮助手册返回按 q
history      命令操作记录
history -c   清空操作的所有命令记录。

lynx localhost         测试  返回按Q
service httpd start    服务器启动
service httpd restart  服务器重启

service vsftpd start     FTP开启。
service vsftpd restart   FTP重启
service network restart   重启网卡。

anonymous       查看FTP
service smb start  测试服务器
service mysqld start   开启myspl 数据库
myspl -u root -p      登录数据库
cd /var/www/html      进入PHP
vim index.php         打开文件添加内容

tab键    自动补齐
反斜杠“\”强制换行
快捷键:ctrl+u   清空
快捷键:ctrl+l   清屏
快捷键:ctrl+k   清空至尾行
快捷键:ctrl+c   奇效本次命令编辑
ls > **.txt      重定向输出
wc < /etc/passwd 重定向输入
less    查看文件内容,操作:less 文件名称

useradd -d 创建FTP用户直接给目录登录权限
操作:useradd -d 目录名 会员名
useradd    创建用户,用户都在在home目录下。
passwd    设置用户密码。操作:passwd 用户名 回车后还要按两次密码。
userdel -r   删除会员及所有数据表

setup     图形查看

:set nu     显示文本行数
:set nonu   去掉文本行数
groupadd   创建用户组
gpasswd    往用户组里面添加一个用户操作:gpasswd -a 会员名 用户名名。

tar -czvf t.tar文件或目录名 -C /       解压缩
tar -xzvf t.tar -C /需要存放的目录     解压
unzip 压缩包名称  zip格式解压

chmod   设置文件或目录权限,操作:chmod 777 文件或目录名称。

/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0   网关IP配置文件
/etc/sysconfig/network    网卡配置文件
/etc/resolv.conf       DNS配置文件 ip 配置
ggVG   d   清空vim 文件里面的所有内容  恢复 按 u

cat /dev/null > log.txt      清空文件里面的所有内容

grep -rn "hello" ./     在当前目录下(包括子目录)查找所有文件包含hello的文件
find / -name hello.txt  查看文件
find / -name hello -type d   查看目录所在位置
netstat -tnlp  查看正在运行的服务

硬盘管理
fdisk -l  查看还未挂载的硬盘
monut 需要挂载的硬盘 指定挂载的目录名称
如: mount test data
umount 需要被卸载硬盘目录名称
如: umount test

进程查看
 netstat -ntlp | grep 80     //查看指定进程
killall nginx    //杀死进程

vim内容替换
:s/hello/newhello/g
:%s/hello/newhello/g

在指定目录下所有文件中的内容替换
sed -i "s/content/newcontent/g" `grep content -rl /dir/path`
原始字符串 content
新的字符串 newcontent
替换的路径 /dir/path

查看进程
    所有进程:ps -ef
    指定nginx进程:ps -ef | grep nginx

杀死进程
    kill 进程号(如:kill 8899)

查看负载(进程,内存,硬盘,CPU信息,运行时间)
    top

查看占用CPU最高的5个进程
ps -aux | sort -k3nr | head `5`

查看前10个占用内存最高的程序
ps aux | sort -k4,4nr | head -n 10

查看网路请求
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

正常数据传输状态-并发
    netstat -nat|grep ESTABLISHED|wc -l
    6945

无连接是活动的或正在进行
    netstat -nat|grep CLOSED|wc -l
    0

服务器在等待进入呼叫
    netstat -nat|grep LISTEN|wc -l
    9

一个连接请求已经到达,等待确认
    netstat -nat|grep SYN_RECV|wc -l
    236

应用已经开始,打开一个连接
    netstat -nat|grep SYN_SENT|wc -l
    56

应用说它已经完成
    netstat -nat|grep FIN_WAIT1|wc -l
    1400

另一边已同意释放
    netstat -nat|grep FIN_WAIT2|wc -l
    422

等待所有分组死掉
    netstat -nat|grep ITMED_WAIT|wc -l
    0

两边同时尝试关闭
    netstat -nat|grep CLOSING|wc -l
    64

另一边已初始化一个释放,处理完毕,等待超时结束的请求数
    netstat -nat|grep TIME_WAIT|wc -l
    56090

等待所有分组死掉
    netstat -nat|grep LAST_ACK|wc -l
    3627

阅读全文

CentOS设置自动连接网络
发表于 2015-8-31 | 浏览(7477) | 服务器

vi /etc/sysconfig/network-scripts/目录下 ifcfg-eth0文件

ONBOOT=                    yes         //自动连接网络
DEVICE=                 eth0        //由eth0来启动
BOOTPROTO=              dhcp        //获取IP的方式是自动获取,static是固定IP,none是手动
TYPE=                   Ethernet    //网络类型

重启网络

service network restart

阅读全文

CentOS和Linux使用crontab运行定时任务(做一些你想做的)
发表于 2015-8-31 | 浏览(5438) | 服务器

安装crontab:

yum install crontabs

说明:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动

chkconfig –level 35 crond on

1、crontab 命令

功能说明:设置计时器。
语  法:crontab [-u <用户名称>][配置文件] 或crontab [-u <用户名称>][-elr]
补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

2、crontab 格式

基本格式:
* * * * *  command
分 时 日 月 周  命令
第1列表示分钟1~59 每分钟用*或者*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

crontab文件的一些例子:

30 21 * * * /etc/init.d/nginx restart
每晚的21:30重启nginx。

45 4 1,10,22 * * /etc/init.d/nginx restart
每月1、10、22日的4 : 45重启nginx。

10 1 * * 6,0 /etc/init.d/nginx restart
每周六、周日的1 : 10重启nginx。

0,30 18-23 * * * /etc/init.d/nginx restart
每天18 : 00至23 : 00之间每隔30分钟重启nginx。

0 23 * * 6 /etc/init.d/nginx restart
每星期六的11 : 00 pm重启nginx。

* */1 * * * /etc/init.d/nginx restart
每一小时重启nginx

* 23-7/1 * * * /etc/init.d/nginx restart
晚上11点到早上7点之间,每 隔一小时重启nginx

0 11 4 * mon-wed /etc/init.d/nginx restart
每月的4号与每周一到周三 的11点重启nginx

0 4 1 jan * /etc/init.d/nginx restart
一月一号的4点重启nginx 

*/30 * * * * /usr/sbin/ntpdate 210.72.145.20
每半小时同步一下时间

阅读全文

MySQL mysql-5.1升级到mysql-5.6
发表于 2015-8-31 | 浏览(5584) | 数据库

查看是否有旧版本mysql

rpm -qa|grep mysql

CentOS卸载旧版本mysql

yum remove mysql mysql-server mysql-libs compat-mysql51
rm -rf /data/soft/mysql/*
rm /etc/my.cnf.rpmsave

删除mysql服务
  chkconfig --list | grep -i mysql
  chkconfig --del mysql

删除分散mysql文件夹
  whereis mysql 或者 find / -name mysql

安装cmake

wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -zxvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./bootstrap
gmake
gmake install

下载mysql安装包进行安装

wget http://dev.mysql.com/get/archives/mysql-5.6/mysql-5.6.11.tar.gz
tar zxvf mysql-5.6.11.tar.gz
cd mysql-5.6.11
cmake . -DCMAKE_INSTALL_PREFIX=/data/soft/mysql -DMYSQL_DATADIR=/data/dbdata -DSYSCONFDIR=/data/soft/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DMYSQL_TCP_PORT=3306 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=yes
make
make install

生成配置文件链接

cp /data/mysql/support-files/my-default.cnf /data/mysql/my.cnf
cp /data/mysql/support-files/my-default.cnf /etc/my.cnf

修改$PATH生成文件

修改$PATH生成文件
vim /etc/profile

最后一行加上
PATH=$PATH:/data/soft/mysql/bin
这样MySQL的命令行软件就可以直接使用了

复制mysql的服务shell文件

cp /data/soft/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

创建MySQL系统数据库

/data/soft/mysql/scripts/mysql_install_db --user=mysql --basedir=/data/soft/mysql --datadir=/data/dbdata

开启MySQL服务

service mysqld start

设置MySQL开机启动

echo "service mysqld start" >> /etc/rc.local

到这里mysql安装完成了, 我们开始使用客户端连接mysql

如果报错:
  SQL Error (1130): Host 'ip' is not allowed to connect to this MySQL server

首先按下面的步骤登录Mysql服务器

登录mysql需要切换到dos下的mysql的bin目录,进行如下操作:

#mysql -uroot -ppassword
mysql>use mysql;

mysql>update user set host = '%'  where user ='root';

mysql>flush privileges;

mysql>select 'host','user' from user where user='root';

mysql>quit
OK。远程连接成功!

阅读全文

CentOS防火墙配置
发表于 2015-8-31 | 浏览(4929) | 服务器

vim /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Fri Jan 16 15:48:49 2015
*filter
:INPUT ACCEPT [7:626]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5:605]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# fpt数据上传 20端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

# ftp 21端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

# ssh 22端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# email 25端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT

# http 80端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# https 443端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# mysql 3306端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

# memcached 11211端口,-s指定只能被此ip访问有效
#-A INPUT -m state --state NEW -m tcp -p tcp -s 218.1.38.194 --dport 11211 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT
# Completed on Fri Jan 16 15:48:49 2015

如果 /etc/sysconfig/iptables 文件不存在

原因一般是没有配置过防火墙,在安装linux系统时也已经禁掉了防火墙。

解决:随便写一条iptables命令配置个防火墙规则

iptables -P OUTPUT ACCEPT

然后用命令:service iptables save进行保存,默认就保存到/etc/sysconfig/iptables文件里。这时既有了这个文件。防火墙也可以启动了。接下来要写策略,也可以直接写在/etc/sysconfig/iptables 里了。

操控防火墙命令

启动:service iptables start
关闭:service iptables stop
重启:service iptables restart
查看状态:service iptables status
永久关闭:chkconfig iptables off 
永久关闭后启用:chkconfig iptables on

CentOS7下使用iptables

一直用CentOS 6 习惯了,一下没适应过来。防火墙配置后执行service iptables save 出现”Failed to restart iptables.service: Unit iptables.service failed to load: No such file or directory.”错误,在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理,当然你可以还原传统的管理方式。或则使用新的命令进行管理。

假如采用传统请执行一下命令

systemctl stop firewalld
systemctl mask firewalld

并且安装iptables-services

yum install iptables-services

设置开机启动

systemctl enable iptables

防火墙状态操作命令

systemctl [stop|start|restart] iptables
或
service iptables [stop|start|restart]

初始化配置文件

service iptables save
或
/usr/libexec/iptables/iptables.init save

配置文件所在位置,规则配置同上

/etc/sysconfig/iptables

阅读全文

TOP