一、安装环境说明

系统环境:

操作系统 CentOS 6.5 x86_64

软件版本 cronolog 1.6.2,软件下载地址: http://cronolog.org/download/index.html

二、Cronolog 是什么

大家都知道apache服务器,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计,而且导致单个文件过大的情况。本博文主要讲解Web服务器日志切割工具cronolog,下面我们就来详细的讲解一下 cronolog安装和使用。

Welcome to cronolog.org, the home of the cronolog web log rotation program. cronolog is a simple filter program that reads log file entries from standard input and writes each entry to the output file specified by a filename template and the current date and time. When the expanded filename changes, the current file is closed and a new one opened. cronolog is intended to be used in conjunction with a Web server, such asApache, to split the access log into daily or monthly logs.

cronolog 是一款日志轮询(rotation)工具,可以用它来把Apache, Tomcat, Nginx等WEB服务器的输出日志切分按日或者按月保存。cronolog 从标准输入中读取日志内容,然后把他们写到按指定格式命名的日志文件中。当日期改变后, cronolog会把之前的日志文件关闭,再打开一个包含新日期的日志文件。利用cronolog可以完美的解决web服务器日志文件不断增大,且不能在运行时删除的问题。

三、Cronolog 特点

cronolog可以按月、日甚至按小时进行日志轮询,也可以配置每个日志文件的最大值,当文件大小达到这个最大值时,自动记录到下一个日志文件中。

cronolog稳定版本为 1.6.2。但此版本有一个弊端:当日志文件的大小到2G(2150726147字节)时,cronolog进程就变成僵尸进程,即日志无法再写入。 cronolog 1.7 版本解决了这个问题。

需要注意的是,日期改变后,cronolog并不是马上切换日志文件,而是需要有新的日志输出才能触发cronolog切换日志文件。所以如果你想在 2015-06-08 删除 2015-06-07的日志文件,如果从2015-06-08的00:00开始到你执行删除时都没有日志输出,则 2015-08-07的日志文件可能仍然被占用着,导致删除失败。
cronolog主要和Web服务器配置使用,特别是Apache服务器,Apache 默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。下面是与Apache配置的一些指令:

TransferLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log"
ErrorLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"

效果:
/web/logs/2015/12/31/access.log /web/logs/2015/12/31/errors.log
/web/logs/2015/01/01/access.log /web/logs/2015/01/01/errors.log

三、Cronolog 安装

1、安装 epel 源(源码编译:可选; yum 安装:必须)

1、安装 epel 源

# wget http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

2、安装ntpdate
# yum -y install ntpdate

3、时间同步
# ntpdate time.nist.gov

2、安装cronolog

方式一:直接用yum安装
# yum install -y cronolog

#################################

方式二:源码编译安装
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
# tar xf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure
# make && make install

# which cronolog
/usr/local/sbin/cronolog

不知道是否网络原因, 我这边没办法载下来, 可以到下面的地址下载:

http://download.chinaunix.net/download.php?id=3457&ResourceID=1851

好了,到这里我们的cronolog就安装完成了,下面我们来说一下cronolog如何使用。

四、Cronolog 使用
(1)、基本使用

# cronolog -h
usage: cronolog [OPTIONS] logfile-spec
   -H NAME,   --hardlink=NAME maintain a hard link from NAME to current log
   -S NAME,   --symlink=NAME  maintain a symbolic link from NAME to current log
   -P NAME,   --prev-symlink=NAME  maintain a symbolic link from NAME to previous log
   -l NAME,   --link=NAME     same as -S/--symlink
   -h,        --help          print this help, then exit
   -p PERIOD, --period=PERIOD set the rotation period explicitly
   -d DELAY,  --delay=DELAY   set the rotation period delay
   -o,        --once-only     create single output log from template (not rotated)
   -x FILE,   --debug=FILE    write debug messages to FILE
                              ( or to standard error if FILE is "-")
   -a,        --american         American date formats
   -e,        --european         European date formats (default)
   -s,    --start-time=TIME   starting time
   -z TZ, --time-zone=TZ      use TZ for timezone
   -V,      --version         print version number, then exit

cronolog 一般是采取管道的方式来工作的,采用如下的形式:

# loggenerator | cronolog log_file_pattern

其中,loggenerator为产生log的程序,而log_file_pattern是日志文件的路径,可以在其中加入cronolog所支持的时间相关的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern  %为占位符,其后跟一特殊字符,简述如下:

% 占位符后可跟下面的字符:

## 转义符
%    %字符
n    换行
t    水平制表符

## 时间域
H    小时(00..23)
I    小时(01..12)
p    该locale下的AM或PM标识
M    分钟(00..59)
S    秒 (00..61, which allows for leap seconds)
X    该locale下时间表示符(e.g.: "15:12:47")
Z    时区。若时区不能确定,则无意义

## 日期域
a    该locale下的工作日简名(e.g.: Sun..Sat)
A    该locale下的工作日全名(e.g.: Sunday ..  Satur-ay)
b    该locale下的月份简称(e.g.: Jan .. Dec)
B    该locale下的月份全称(e.g.:  January .. December)
c    该locale下的日期和时间(e.g.: "Sun Dec 15  14:12:47 GMT 1996")
d    当月中的天数 (01 .. 31)
j    当年中的天数 (001 .. 366)
m    月数 (01 .. 12)
U    当年中的星期数,以周日作为一周开始,其中第一周为首个含星期天的星期(00..53)
W    当年中的星期数,以星期一作为一周的开始,其中第一周为首个含星期天的星期(00..53)
w    工作日数(0 .. 6, 0表示星期天)
x    该locale下的日期表示(e.g. "13/04/97")
y    两位数的年份(00 .. 99)
Y    四位数的年份(1970 .. 2038)

(2)、结合apache使用

编辑httpd.conf文件,将其中的

[root@localhost ~]# vim /etc/httpd/httpd.conf
将默认日志: 
CustomLog "logs/access_log" combined

修改为:
CustomLog "|/usr/local/sbin/cronolog /log/www/access_%Y%m%d.log" combined 
其中%Y%m%d为日志文件分割方式,即为“年月日”。

[root@localhost ~]# service httpd restart

[root@localhost www]# ll
total 15072
-rw-r--r-- 1 root root   16028 Dec 26 15:16 access_20131225.log
-rw-r--r-- 1 root root 2406307 Dec 26 23:59 access_20131226.log
-rw-r--r-- 1 root root 8292792 Dec 27 23:59 access_20131227.log
-rw-r--r-- 1 root root 4682211 Dec 28 18:56 access_20131228.log

关键点在于: 被轮询的日志一定要是绝对路径,不能是相对路径。

老男孩学习笔记:

请输入图片描述
请输入图片描述

五、Windows 下使用Cronolog 轮询日志

Windows平台下也有 cronolog 对应的版本。我们下载Win32版本: cronolog-1.6.1.win32.zip

安装:

1、解压cronolog-1.6.1.win32.zip, 复制 cronolog.exe到 apache 的bin 目录。

2、编辑 httpd.conf

CustomLog "|bin/cronolog.exe D:/apache/logs/access_%Y%m%d.log" combined
ErrorLog "|bin/cronolog.exe D:/apache/logs/error_%Y%m%d.log"

这句话可以取代主要的CustomLog语句,也可以在虚拟主机中使用,如:
<VirtualHost *:80>
ServerName www.xxx.com
CustomLog "|bin/cronolog.exe D:/apache/logs/xxxcom/access%Y%m%d.log" combined
ErrorLog "|bin/cronolog.exe D:/apache/logs/xxxcom/error%Y%m%d.log"
</VirtualHost>

## Apache配置中即便是windows系统,目录分隔符也必须按照unix格式填写"/"而不是"\"

3、重启 apache

其实不管是在linux还是windows下,cronolog接受的日期格式都是“%Y%m%d%H%M“这样的格式。%Y表年,%m表月,%d表日,%H表小时,%M表分钟。只有使用这样的格式指定日志输出文件的名称,cronolog才会按日期、时间的变化生成新的日志文件。

然而,在Windows下需要分两种情况(刚在cronolog-1.6.1.win32所带的INSTALL说明中看到):

Configuration for use with NT service:
TransferLog "|c:/apache/bin/convlog.exe  c:/apache/logs/access%Y%m%d.log"

       

Configuration for use from command line:
TransferLog "|c:/apache/bin/convlog.exe  c:/apache/logs/access%%Y%%m%%d.log"

这是因为批处理机制所致,命令行必须用%%引用。

六、引入 rotatelogs (不推荐使用)
好了,到这里我们的cronolog工具就讲解完成了。有博友会问为什么不用apache自带的日志分割工具?apache自带的日志分割工具rotatelogs,据专家说在进行日志切割时容易丢日志,所以这里我们就用cronolog来做日志切割。

=========== 华丽分割线 ===========

apache自带日志轮询工具rotatelogs(不推荐使用 rotatelogs 进行日志轮询)

■ rotatelogs 日志轮询
___________________________________________________________
ErrorLog "|/usr/local/apache1.3.33/bin/rotatelogs /logs/%Y%m%d.error.log 604800"
CustomLog "|/application/apache/bin/rotatelogs /logs/access_www_%Y%m%d..log 86400 480" combined
CustomLog "|/application/apache/bin/rotatelogs /logs/access_www_%Y%m%d..log 86400" combined

提示:也可以按照达到多大文件而轮询日志,此处就不提了。

_
■ rotatelogs 日志轮询说明
_
语法
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]

选项
-l
使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果。
logfile
它加上基准名就是日志文件名。如果logfile中包含"%",则它会被视为用于strftime()的格式字符串;
否则它会被自动加上以秒为单位的".nnnnnnnnnn"后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime
日志文件滚动的以秒为单位的间隔时间。
offset
相对于UTC的时差的分钟数。如果省略,则假定为"0"并使用UTC时间。比如,要指定UTC时差为
"-5小时"的地区的当地时间,则此参数应为"-300"。
filesizeM
指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。

# 限制错误日志文件为 500M
#ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 500M"
 
# 每天生成一个错误日志文件
#ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400"
 
# 限制访问日志文件为 500M
#CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 500M" common
 
# 每天生成一个访问日志文件
#CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 86400" common

在windows下, rotatelogs.exe有个坑儿。 当apache服务器运行时间久了之后,或者说日志文件过多时。 进程列表中会产生很多 rotatelogs.exe , 以及 cmd.exe 进程, 占用大量内存。而且他们不会停止,这是一个BUG

总结:不推荐使用 rotatelogs 进行日志轮询

参考:

tomcat:

http://blog.csdn.net/mqboss/article/details/7466736

http://oldboy.blog.51cto.com/2561410/584513/

转载:https://blog.51cto.com/skypegnu1/1695187

IIS默认的是SSL 2.0协议,使用了RC4加密密钥的,这样会造成PCI DSS和Apple ATS规范不及格。

我们需要禁用SSL v2.0、SSL v3.0协议和低强度加密密钥。使用TLS1.0 TLS1.1 TLS1.2版本。

这里如果要改的话,要去注册表改,很麻烦的。我找到了IIS Crypto GUI这个软件很方便就能修改。

请输入图片描述

直接点“Best Practices”,推荐设置,然后点“Apply”应用即可,要重启一下系统。

软件下载地址:https://www.nartac.com/Products/IISCrypto/Download

点那个“IIS Crypto GUI”,下载,Windows还是用GUI版本吧。。

在上面如果取消TLS1.0勾选,会提示远程桌面使用该协议,需要一个安装一个补丁,有点麻烦。

我们兼容办法是这里先勾选上TLS1.0应用,重启后在到注册请去修改禁用TLS1.0协议,具体参照禁用不安全的SSL2.0和SSL3.0协议操作方式一样

相关链接:
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议? https://www.gworg.com/problems/548.html
IIS上部署多个SSL证书绑定https和使用TLS1.0 TLS1.1 TLS1.2协议:https://www.iamwawa.cn/blog/4-iis-ssl.html

如果https与http绑定在不同的IIS站点上,直接在https站点的web.config中添加如下配置:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Strict-Transport-Security" value="max-age=31536000" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

如果在同一个IIS站点,需要针对https响应添加如下的url重写规则(详见How to enable HTTP Strict Transport Security (HSTS) in IIS7+):

<system.webServer>
    <rewrite>
        <outboundRules>
            <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
                <match serverVariable="RESPONSE_Strict_Transport_Security"
                    pattern=".*" />
                <conditions>
                    <add input="{HTTPS}" pattern="on" ignoreCase="true" />
                </conditions>
                <action type="Rewrite" value="max-age=31536000" />
            </rule>
        </outboundRules>
    </rewrite>
</system.webServer>

相关文章:
https://q.cnblogs.com/q/85129/
https://serverfault.com/questions/417173/enable-http-strict-transport-security-hsts-in-iis-7

@echo off
echo 当前的盘符:%~d0
echo 当前的盘符及路径:%cd%
echo 当前的盘符及路径:%~dp0
echo 当前的盘符及路径的短文件名格式:%~sdp0
echo 当前批处理文件名:%~n0
color 0a 
TITLE 添加用户环境变量
echo.
REM 获取当前目录路径
set CURRENT_PATH=%~sdp0
if "%CURRENT_PATH:~-1%"=="\"  set CURRENT_PATH=%CURRENT_PATH:~0,-1%
REM 获取当前用户环境变量
set USER_PATH=
for /f "tokens=1,2,* " %%i in ('REG QUERY "HKEY_CURRENT_USER\Environment" /v Path ^| find /i "Path"') do (set USER_PATH=%%k)
REM 判断当前用户环境变量是否包含当前目录路径
echo %USER_PATH%|find /i "%CURRENT_PATH%" && set IsNull=true|| set IsNull=false
if %IsNull%==true (
    echo 用户环境变量包含当前路径,不追加
) else (
    echo 用户环境变量不包含当前路径,执行
    if not defined USER_PATH (
        echo 用户环境变量是空的,赋值
        setx Path %CURRENT_PATH%
    ) else (
        echo 用户环境变量不是空的,追加
        setx Path %USER_PATH%;%CURRENT_PATH%
    )
)
echo.
echo 用户环境变量已添加
echo.
pause

在win7上测试通过

在VM虚拟机中安装CentOS 7 时 有时候顾虑到电脑硬件性能,我们需要最小化安装,而最小化安装后与centos6的版本是有一些差异的,接下来我们就对刚安装好的最小化centos7做一些操作,来世我们使用的更得心应手。

1.最小化安装CentOS7,首先需要配置网络,和6系列一样

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

这里的eno16777736是你的网卡名称,(我使用的是NAT模式,桥接模式自行修改IP地址)修改文件中

ONBOOT = no 为 
ONBOOT = yes

2.启用你的网卡。
桥接模式修改IP地址百度一大堆,这里不再赘述。

最小化安装CentOS7后,在配置网络后,想查看我的IP,发现 ifconfig 命令是不好使得。在最小化的CentOS7中,查看网卡信息的命令应该是

ip addr 

请输入图片描述

查看网络统计信息是

ip link,

请输入图片描述

为了方便起见 我们还是启用ifconfig 命令。
首先我们看看,是哪个组件包含了ifconfig命令,用

yum provides ifconfig 
或 
yum whatprovides ifconfig 来查看

请输入图片描述

我们可以看到 ifconfig 命令是依赖于 net-tools 软件的 ,所以我们

yum install -y net-tools

安装该软件, 好了 现在 ifconfig 是不是能正常使用了!

3.下一步我们就要关闭CentOS7自带的防火墙 firewall 启用 IPtable
停止 Firewall

systemctl stop firewalld

关闭firewall自动启动

systemctl disable firewalld.service 
安装IPtables防火墙 
yum install -y iptables-services

修改iptables配置文件,开放以下端口 (默认开启了22端口,以便putty等软件的连接,实例开启80端口和3306端口,以便后期lamp环境使用,注:80 为Apache默认端口,3306为MySQL的默认端口)

vi /etc/sysconfig/iptables 
#添加下面三句话到默认的22端口这条规则的下面 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

修改后的iptables配置文件:

# sample configuration for iptables service 
# you can edit this manually or use system-config-firewall 
# please do not ask us to add additional ports/services to this default configuration 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 
-A INPUT -j REJECT –reject-with icmp-host-prohibited 
-A FORWARD -j REJECT –reject-with icmp-host-prohibited 
COMMIT

重启iptables

systemctl restart iptables.service 
添加iptables开机自启项 
systemctl enable iptables.service

4.关闭SELINUX
编辑SELINUX配置文件

vi /etc/selinux/config 
#注释掉下面两行 
#SELINUX=enforcing 
#SELINUXTYPE=targeted 
#增加一行 
SELINUX=disabled

保存,关闭

setenforce 0 
使设置启用,在这里最好重启一下系统,也可以稍后重启

5.CentOS7最小化安装后没有wget软件,但是以后我们会经常用到这个组件,所以我们安装一下

yum install -y wget

6.CentOS自带的国外源有时候会很慢,我们替换成国内的阿里源,也有很多比如163源都很好,国内很多人用,但这里我们就用阿里源做个示例,想用其他源的同学可以去百度一下。

#先进入源的目录 
cd /etc/yum.repo.d 
#备份一下官方源 
mv CentOS-Base.repo CentOS-Base.repo.bak 
#将阿里源文件下载下来 
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
#重建源数据缓存 
yum makecache 
ok,换源完成

7.CentOS自带vi编辑器,功能没有vim强大,我么再安装一个vim编辑器

yum install -y vim-enhanced

大功告成,现在我们的最小化CentOS7已经可以得心应手的使用了!
————————————————
原文链接:https://blog.csdn.net/f_srion/article/details/54910943