1 月 202017
 

使用AWK对日志中的列进行处理

awk '$11="";{print $0}' www.access.log.20170119 > www.log.20170119
awk '$NF="";{print}' www.log.20170119 > wwww.20170119

已开启Nginx日志$request_body输出

101.28.172.41 - - [19/Jan/2017:00:00:08 +0800] "POST /api/cash/request/datareceive HTTP/1.1" 200 306 
data=disjddVLpuifVtaEdDDp28EEKLHhTtTmmkNBJnmKu7ALTHoF7j4W7aX31NLpVHN46WmvJj2UZ5G762ZorivmMEhyhoGlW6TeEWoqGkljWbuS9vEzAzr9AA 
gUPqghPTnGFLRvzL7Ty4%2BEEuzXOcqST%2BYMjvNLqsHAHSF7TauREm8%3D& "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"

使用Awk删除指定列后,重新输出最新内容并重定向至文件,处理掉包含$request_body输出的部分后,产生了一个连续空格符号

101.28.172.41 - - [19/Jan/2017:00:00:08 +0800] "POST /api/cash/request/datareceive HTTP/1.1" 200 306 "-" 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"

再次使用awk输出所有列并重定向至文件

101.28.172.41 - - [19/Jan/2017:00:00:08 +0800] "POST /api/cash/request/datareceive HTTP/1.1" 200 306 "-" 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"
12 月 182016
 

 

添加密码配置文件及用户帐号

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

修改<Directory “…”>配置开启基本登录认证

AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
Require user rbowen

Options None
AllowOverride None
#Require all granted
11 月 092016
 

 

查看所有视图表

[root@localhost ~]# mysql -uroot -p dbname -e "show full tables where table_type='view'"
Enter password:

编辑视图导出脚本

#vi backupViews.sh

#!/bin/bash
#
/usr/bin/mysql --skip-column-names --batch -e \
"select table_name from information_schema.views \
where table_schema = database()" $* |
xargs --max-args 1 /usr/bin/mysqldump $*

执行视图导出脚本

[root@localhost ~]# ./backupViews.sh -uusername -ppassword dbname > views.sql
Warning: Using a password on the command line interface can be insecure.
......
Warning: Using a password on the command line interface can be insecure.
[root@localhost ~]#
11 月 072016
 

CentOS 7 Apache 2.4开启Gzip压缩配置

确认以下模块配置未禁用

# vi /etc/httpd/conf.modules.d/00-base.conf

LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule filter_module modules/mod_filter.so

增加以下配置文件(文件类型或文件扩展名)

# vi /etc/httpd/conf.d/gzip.conf
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
DeflateCompressionLevel 9

# vi /etc/httpd/conf.d/gzip.conf
<filesMatch "\.(js|html|css)$">
 SetOutputFilter DEFLATE
</filesMatch>
11 月 032016
 

查看已挂载的10GB容量磁盘

centos-7-xfs-project-quota-config-01

对磁盘进行分区
[root@localhost ~]# fdisk /dev/xvdb

centos-7-xfs-project-quota-config-02

查看分区后的磁盘列表信息

centos-7-xfs-project-quota-config-03

使用XFS文件系统格式化磁盘

centos-7-xfs-project-quota-config-04

挂载已格式化的磁盘分区并查看磁盘容量列表
[root@localhost ~]# mkdir -p /data
[root@localhost ~]# mount -o prjquota /dev/xvdb5 /data/

centos-7-xfs-project-quota-config-05
建立一个使用配置文件的Project Quota文件目录并设置配额

 [root@localhost ~]# mkdir -p /data/app
 [root@localhost ~]# echo 42:/data/app >> /etc/projects
 [root@localhost ~]# echo application:42 >> /etc/projid
 [root@localhost ~]# xfs_quota -x -c 'project -s application' /data/
 Setting up project application (path /data/app)...
 Processed 1 (/etc/projects and cmdline) paths for project application with recursion depth infinite (-1).
 [root@localhost ~]# xfs_quota -x -c 'limit -p bhard=1g application' /data/

查看配额报告信息

centos-7-xfs-project-quota-config-06

尝试对新建立的Project Quota文件目录写入一个超过限制的文件centos-7-xfs-project-quota-config-07
命令xfs_quota用法详见man xfs_quota手册

centos-7-xfs-project-quota-config-08

11 月 022016
 

通过日志确认每小时访问量
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:03 |wc -l
155
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:02 |wc -l
6017
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:01 |wc -l
11710
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:00 |wc -l
12679
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:23 |wc -l
12970
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:22 |wc -l
12697
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:21 |wc -l
13540
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:20 |wc -l
12147
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:19 |wc -l
3358
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:18 |wc -l
3150
#
导出特定时间段日志记录
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:20 > t1.log
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:21 >> t1.log
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:22 >> t1.log
# cat www.abc.com_access.log-20161102 |grep 01/Nov/2016:23 >> t1.log
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:00 >> t1.log
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:01 >> t1.log
# cat www.abc.com_access.log-20161102 |grep 02/Nov/2016:02 >> t1.log
确认总请求数量
# cat t1.log |wc -l
81760
#

过滤IP并排序导出文件
# cat t1.log |awk ‘{print $1}’ | sort | uniq -c |sort -k1 -n -r > t2.txt

查看IP排序列表
# less t2.txt
67989 117.65.113.164

导出异常IP的所有请求

# cat t2.txt |grep 117.65.113.164 > t3.txt

使用iptables禁止IP访问
# iptables -I INPUT -s 117.65.113.164 -j DROP
电信入口,异常流量约7个小时(20时-2时),总请求量81760次

按IP排序,117.65.113.164(安徽省 蚌埠市 电信 )总请求量 67989次(约2.69次/秒)

10 月 312016
 

使用SVNManager管理SVN服务及帐号权限

 

subversion mod_dav_svn

mariadb-server mariadb httpd php php-pdo php-mysql php-pear php-mbstring

pear install VersionControl_SVN-0.5.1

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date.timezone = Asia/Shanghai

[root@localhost ~]# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.11 stable
Console_Getopt 1.3.1 stable
PEAR 1.9.4 stable
Structures_Graph 1.0.4 stable
XML_Util 1.2.1 stable
[root@localhost ~]#

 

http://pear.php.net/package/VersionControl_SVN/download/0.5.1

 

curl -O http://ncu.dl.sourceforge.net/project/svnmanager/svnmanager/1.10/svnmanager-1.10.tar.gz

[root@localhost www]# mkdir -p /var/www/svntrash

[root@localhost www]# mkdir -p svnconfig

 

CREATE DATABASE svnmanager;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER on svnmanager.* to svnmanager identified by ‘secret’;
FLUSH PRIVILEGES;

 

MariaDB [(none)]> create database svnmanager;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant select,insert,update,delete,create,drop,alter on svnmanager.* to svnmanager@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set password for svnmanager@localhost=password(‘6yhn7ujm8ik,’);
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

<location /svn>
DAV svn

#Repository Folders Location (make sure this folder exists
#and keep location in mind)
SVNParentPath /srv/svn/repos

AuthType Basic
AuthName “Restricted Access”

#File will be created by SVNManager, keep location in mind!
AuthUserFile /srv/svn/htpasswd

Require valid-user
#SSLRequireSSL

#File will be created by SVNManager, keep location in mind
AuthzSVNAccessFile /srv/svn/accessfile

</location>

 

$lang = “en_US.UTF-8”;

$htpassword_cmd = “/usr/bin/htpasswd”;
$svn_cmd = “/usr/bin/svn”;
$svnadmin_cmd = “/usr/bin/svnadmin”;

$svn_config_dir = “/srv/svnconfig”;
$svn_repos_loc = “/srv/svn/repos”;
$svn_passwd_file = “/srv/svn/htpasswd”;
$svn_access_file = “/srv/svn/accessfile”;

$svn_trash_loc = “/srv/svn/trash”;

$dsn = “mysqli://svnmanager:secret@localhost/svnmanager”;

$admin_name = “admin”;
$admin_temp_password = “admin”;

 

mkdir -p svn
mkdir -p svntrash
mkdir -p svnconfig
touch svn/passwd
touch svn/authz
chown -R apache.apache svn/ svnconfig/ svntrash/

 

<Location /repos>
DAV svn
SVNParentPath /var/www/svn

AuthType Basic
AuthName “Authorization SVN”

AuthzSVNAccessFile /var/www/svn/authz
AuthUserFile /var/www/svn/passwd
Require valid-user

</Location>

 

——————————-
All tables are missing.
Creating requried tables…

Please reload page!
——————————-

svnroot / …
testuser / …

helloworld / hitest