centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
无论是apache 还是nginx,都会有一个默认的虚拟主机 virtual host
多个vhost都可以用同一个配置文件
安装两个Apache,两个apache可以共存,但是要使用不同的端口
主配置文件:/usr/local/apache2/conf/httpd.conf
虚拟主机配置文件:/usr/local/apache2/conf/extra/httpd-vhosts.conf
上半节课
下载discuz!
配置第一个虚拟主机
安装Discuz!
配置mysql,给Discuz!增加一个账户
Discuz设置注意事项
5. 用户认证
下半节课
6. 配置域名跳转
7. 配置apache的访问日志
8. 配置静态文件缓存(其他类型文件可以到apache官方文档里面去搜)
9. 配置防盗链
10. 访问控制(一般用在限制用户登录论坛后台管理页面)
11. apache rewrite相关
tcpdump
步骤
1. 下载discuz!
cd /download/
wget -c http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
mkdir /data/www //放网站根目录
cd /data/www
mv /download/Discuz_X3.2_SC_GBK.zip .
unzip Discuz_X3.2_SC_GBK.zip
mv upload/* . //把upload/目录里面的东西放到www目录,即上一层目录
cd ..
rm -rf Discuz_X3.2_SC_GBK.zip readme/ utility/ upload/ //把无用目录删掉
DiscuzX的包有两种 一种是utf8 一种是gbk:DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
2. 配置第一个虚拟主机
删除/usr/local/apache2/conf/httpd.conf中的这行前面的井号
#Include conf/extra/httpd-vhosts.conf
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
默认已经有两个vhost,先删除一个,再配置另一个如下:
<VirtualHost *:80>
DocumentRoot "/data/www"
ServerName www.123.com
</VirtualHost>
示例解释
<VirtualHost *:>
ServerAdmin webmaster@dummy-host.example.com 管理员邮箱
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com" 网站根目录
ServerName dummy-host.example.com 域名
ServerAlias www.dummy-host.example.com 另一个域名
ErrorLog "logs/dummy-host.example.com-error_log" 日志
CustomLog "logs/dummy-host.example.com-access_log" common 访问日志
</VirtualHost>
测试配置文件是否正常: /usr/local/apache2/bin/apachectl -t
检查/usr/local/apache2/conf/httpd.conf里面是不是Allow from all
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
3. 安装Discuz!
修改Windows机器的hosts文件,将Linux机器的ip跟www.123.com绑定:192.168.11.190 www.123.com
浏览器输入:
www.123.com/install/
根据提示,修改对应目录的权限
cd /data/www
chown -R daemon:daemon data uc_server/data uc_client/data config // 让这几个目录支持apache运行帐号可写
4. 配置mysql,给Discuz!增加一个账户
检查mysql是否已经启动:ps aux |grep mysql
将mysql 加入到PATH环境变量
在/etc/profile加入:export PATH=$PATH:/usr/local/mysql/bin ,然后source一下: source /etc/profile
给root指定一个密码:mysqladmin -uroot password '123456'
给mysql root账户设置密码,然后命令行进入mysql,创建新的库,并创建一个新的帐号对该库有所有权限:
> create database discuz;
> grant all on discuz.* to 'root'@'localhost' identified by '123456';
> quit
5. Discuz设置注意事项
1、论坛里面的验证码要安装php的gd模块
2、管理中心里的install/index.php 要删除
cd /data/www
rm -f install/index.php
功能设置
5. 用户认证
http://www.lishiming.net/thread-554-1-1.html
虚拟主机配置文件中,需要加入
<Directory /data/web/test>
AllowOverride AuthConfig
</Directory>
然后在虚拟主机的主目录,即DocumentRoot 目录下
vi /data/web/test/.htaccess
加入
AuthName "frank share web"
AuthType Basic
AuthUserFile /data/web/test/.htpasswd
require valid-user
保存后,然后
创建apache的验证用户
htpasswd -c /data/web/test/.htpasswd test
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
如果你想修改密码,可以如下
htpasswd -m .htpasswd test2
重启apache,即可。
到此,你已经配置完成。下面介绍另一种方式:
##################################
vi http.conf
在相应的虚拟主机配置文件段,加入
<Directory *> 也可以写虚拟主机目录路径:<Directory /data/web/test>
AllowOverride AuthConfig
AuthName "自定义的"
AuthType Basic
AuthUserFile /data/.htpasswd # 这里的/data/.htpasswd你可以随便写一个路径或名字,没有限制
require valid-user
</Directory>
保存后,然后
创建apache的验证用户
htpasswd -cm /data/.htpasswd test
增加第二个用户的时候,就不要加-c了,因为-c是创建的意思,如果加上会把这个文件重写。
--MD5加密
/usr/local/apache2/bin/htpasswd -cm /data/.htpasswd aming
看一下第35行为什麽报错:vi +35 /usr/local/apache2/conf/extra/httpd-vhosts.conf
操作系统没有GBK编码,用的是utf8
discuz用的GBK版本
修改apache字符集
http://blog.chinaunix.net/uid-23078678-id-2974411.html
修改apache的配置文件httpd.conf
默认为:AddDefaultCharset UTF-8
修改为:AddDefaultCharset GBK2312
然后重启apache生效!
6. 配置域名跳转
/usr/local/apache2/conf/extra/httpd-vhosts.conf
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>
如果是多个域名,可以这样设置:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com [OR] //注意www.domain.com [OR] 之间有空格
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>
或者: <IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain2.com$
RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>
www.a.com跳转到www.1.com
示例
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
//添加 #配置域名跳转
<IfModule mod_rewrite.c>
RewriteEngine on //首先把引擎打开
RewriteCond %{HTTP_HOST} ^www.a.com$ //判断条件 域名是www.a.com的时候
RewriteRule ^/(.*)$ http://www.1.com/$1 [R=301,L] //跳转到www.1.com 302暂时跳转 301永久跳转
</IfModule>
7. 配置apache的访问日志
apache访问日志,日志切割,归档 ,防止大文件爆满,有4种log
日志格式
/usr/local/apache2/conf/httpd.conf
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common %h 远程主机
%l 远程主机登录名称
%u 认证用户
%t 事件产生时间
%r 请求报文的第一行(方法、资源、版本号)
%>s 最后一个请求对应的状态吗
%b 响应报文的大小
%Referer 从哪个页面来的,比如从百度来的
%user-Agent 客户端浏览器类型
配置日志
/usr/local/apache2/conf/extra/httpd-vhosts.conf
#配置日志
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/oem.discuz.qq.com-error_%Y%m%d.log 86400"
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/oem.discuz.qq.com-access_%Y%m%d.log 86400" combined env=!image-request //不记录图片请求日志
配置完日志后检查语法
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
配置文件中下面这一段的意思是不记录静态文件访问的日志
*********************************
env=!image-request
SetEnvIf Request_URI ".*\.gif$" image-request 正则 .*任意个任意字符 \脱义. gif $结尾的
*********************************
#配置日志
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/www.123.com-error_%Y%m%d.log 86400"
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/www.123.com-access_%Y%m%d.log 86400" combined env=!image-request
8. 配置静态文件缓存(其他类型文件可以到apache官方文档里面去搜)
/usr/local/apache2/conf/extra/httpd-vhosts.conf
# 配置静态文件缓存
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
或者使用mod_headers模块实现
<ifmodule mod_headers.c>
# htm,html,txt类的文件缓存一个小时
<filesmatch "\.(html|htm|txt)$">
header set cache-control "max-age=3600"
</filesmatch>
# css, js, swf类的文件缓存一个星期
<filesmatch "\.(css|js|swf)$">
header set cache-control "max-age=604800"
</filesmatch>
# jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年
<filesmatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
header set cache-control "max-age=29030400"
</filesmatch>
</ifmodule>
配置完静态文件缓存后检查语法
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
在网站根目录下创建一个jpg文件进行测试
浏览器
应用
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
touch /data/www/.jpeg
curl -x127.0.0.: www..com/.jpeg -I
HTTP/1.1 OK
Date: Tue, Oct :: GMT
Server: Apache/2.2. (Unix) DAV/ PHP/5.3.
Last-Modified: Tue, Oct :: GMT
ETag: "e35a8-0-5228cadd9f7c1"
Accept-Ranges: bytes
Cache-Control: max-age=
Expires: Wed, Oct :: GMT
Content-Type: image/jpeg
9. 配置防盗链
/usr/local/apache2/conf/extra/httpd-vhosts.conf
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
# 配置防盗链
SetEnvIfNoCase Referer "^http://www.1.com" local_ref
SetEnvIfNoCase Referer "www.a.com" local_ref
SetEnvIfNoCase Referer "www.b.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref //local_ref是配置的别名,允许local_ref配置里面的内容
</filesmatch>
测试
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
curl -e "http://www.baidu.com/sdfsdf" -x127.0.0.1:80 www.1.com/1.txt -I
或者不加-e
curl -x127.0.0.1:80 www.1.com/1.txt -I
可以看vhost的访问日志
应用
# 配置防盗链
SetEnvIfNoCase Referer "^http://www.123.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
------------------------------------------------------ # touch /data/www/.txt
# curl -e "http://www.baidu.com/sdfsdf" -x127.0.0.: www..com/.txt -I
HTTP/1.1 Forbidden
Date: Tue, Oct :: GMT
Server: Apache/2.2. (Unix) DAV/ PHP/5.3.
Content-Type: text/html; charset=iso-- # curl -x127.0.0.: www..com/.txt -I
HTTP/1.1 OK
Date: Tue, Oct :: GMT
Server: Apache/2.2. (Unix) DAV/ PHP/5.3.
Last-Modified: Tue, Oct :: GMT
ETag: "e35ae-0-5228cd3cca4c1"
Accept-Ranges: bytes
Cache-Control: max-age=
Expires: Tue, Oct :: GMT
Content-Type: text/plain
马上产生errorlog
# tail www..com-error_20151021.log
[Wed Oct :: ] [error] [client 127.0.0.1] File does not exist: /data/www/1jpeg
[Wed Oct :: ] [error] [client 127.0.0.1] client denied by server configuration: /data/www/.txt, referer: http://www.baidu.com/sdfsdf
10. 访问控制(一般用在限制用户登录论坛后台管理页面)
/usr/local/apache2/conf/extra/httpd-vhosts.conf
# 访问控制
<Directory /data/www/admin> //一般只对非常重要的网站后台管理目录做限制
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
测试
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
curl -x127.0.0.1:80 www.1.com/1.txt -I
参考文档来源: http://jingyan.baidu.com/article/4b07be3c193d1648b380f3a9.html
<Files ~ "\.insc$">等价于<Filesmatch (.*)php>
1. 禁止访问某些文件/目录
增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
<Files ~ "\.insc$">
2. 禁止访问某些指定的目录:(可以用 <DirectoryMatch> 来进行正则匹配)
<Directory ~ "/var/www/(.+)*[0-9]{3}">
当然也可以写目录全局路径
<Directory /var/www/111>
3. 通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
<Filesmatch (.*)php>
4. 针对URL相对路径的禁止访问
<Location /dir/>
<Directory /data/www/admin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
针对请求的uri去限制
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
某个目录下禁止解析php
<Directory /data/www/path>
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
</Directory>
主配置文件里有这麽一段:/usr/local/apache2/conf/httpd.conf
找了半天终于找到了问题的根源,其实是配置对了,只是我们访问的有点问题。
我们访问的地址是1.txt ,而在配置文件中我们有配置一段防盗链
针对1.txt referer是空或者是1.com 都会直接允许访问,问题就在这里。当我再次访问 forum.php的时候 效果达到了。
应用
<Directory /data/www> //只对网站后台管理页面进行控制
<filesmatch "admin.php">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
</Directory>
匹配
http://www.1.com/admin/admin.phpsdfsdfsdf
http://www.1.com/admin.phpwerewrwerwer
http://www.1.com/ewfwewefadmin.phpwerewrwerwer
<Directory /data/www/admin.php>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
匹配
http://www.1.com/admin.php
#某个目录下禁止解析php
<Directory /data/www/uc_server>
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
</filesmatch>
</Directory>
应用
<Directory /data/www>
<filesmatch "admin.php">
Order deny,allow
Deny from all
Allow from 192.168.0.100
Allow from 192.168.0.101
</filesmatch>
</Directory>
非上面两个ip的都不行
11. apache rewrite相关
RewriteCond 重写条件
RewriteRule 重写规则
[R=302]临时跳转 rewrite
[R=301]永久跳转 rewrite
伪静态就是你访问一个动态页面的时候URL是一串动态的字符,而配置了伪静态之后URL变为静态,跟rewrite域名跳转不一样
apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
apache 限制某些目录不能访问通过rewrite实现 http://www.lishiming.net/thread-3587-1-1.html
apache rewrite 出现死循环 http://www.lishiming.net/thread-1043-1-1.html
apache rewrite 出现死循环
网站夜间升级 ,全部页面跳转到网站公告页面
除了公告页面不跳转,否则会出现死循环,公告页面跳入公告页面
discuz伪静态配置:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/article-([0-9]+)-([0-9]+)\.html$ /portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/group-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/blog-([0-9]+)-([0-9]+)\.html$ /home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/archiver/(fid|tid)-([0-9]+)\.html$ /archiver/index.php?action=$1&value=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$1:$2&%1
应用
将下面的代码放在域名跳转下面
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/article-([-]+)-([-]+)\.html$ /portal.php?mod=view&aid=$&page=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/forum-(\w+)-([-]+)\.html$ /forum.php?mod=forumdisplay&fid=$&page=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/thread-([-]+)-([-]+)-([-]+)\.html$ /forum.php?mod=viewthread&tid=$&extra=page\%3D$&page=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/group-([-]+)-([-]+)\.html$ /forum.php?mod=group&fid=$&page=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/blog-([-]+)-([-]+)\.html$ /home.php?mod=space&uid=$&do=blog&id=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/archiver/(fid|tid)-([-]+)\.html$ /archiver/index.php?action=$&value=$&%
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$:$&%
vhost下面加功能
多个vhost对应多个端口
#
NameVirtualHost *: //多个vhost写多个端口
NameVirtualHost *:
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost> <VirtualHost *:>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
curl的浏览器标识 user-agent
http://www.jbxue.com/article/10287.html
今天学习使用apache系统自带的rotatelogs工具对日志进行截断处理。
一,修改文件httpd.conf
注意:以下日志文件存储路径均为绝对路径。
复制代码 代码示例:
CustomLog "logs/access.log" common 原来的样子
ErrorLog "logs/error.log"原来的样子
CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common 修改后的样子
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common 修改后的样子
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
二,重启apache服务,在指定的日志目录中验证。
三:语法分析
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]
该命令其实只有两种选项用以对日志文件logfile进行操作。且必须选择其中一种方式。
第一种,rotationtime
日志文件以秒为单位滚动
第二种, filesizeM
指定以filesizeM文件大小滚动,而不是按照时间或时差滚动
举例:ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
此配置会在错误日志大小增长到5兆字节时滚动该日志,日志文件名后缀会按照如下格式创建:errorlog.YYYY-mm-dd-HH_MM_SS 。
选项 -l 和offset都是和时区相关的。
四:文件名称格式
errorlog.%Y-%m-%d-%H_%M_%S-------------------errorlog.YYYY-mm-dd-HH_MM_SS
%A 星期名全称(本地的)
%a 3个字符的星期名(本地的)
%B 月份名的全称(本地的)
%b 3个字符的月份名(本地的)
%c 日期和时间(本地的)
%d 2位数的一个月中的日期数
%H 2位数的小时数(24小时制)
%I 2位数的小时数(12小时制)
%j 3位数的一年中的日期数
%M 2位数的分钟数
%m 2位数的月份数
%p am/pm12小时制的上下午(本地的)
%S 2位数的秒数
%U 2位数的一年中的星期数(星期天为一周的第一天)
%W 2位数的一年中的星期数(星期一为一周的第一天)
%w 1位数的星期几(星期天为一周的第一天)
%X 时间(本地的)
%x 日期(本地的)
%Y 4位数的年份
%y 2位数的年份
%Z 时区名
%% 符号"%"本身
接下来介绍,按日期生成apache日志文件及限制apache日志文件大小的方法。
需要用到apache自带的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文件大小滚动,而不是按照时间或时差滚动。
例子:
1、按时间滚动日志文件:
错误日志:
ErrorLog "|/data/apache/bin/rotatelogs 日志存放目录/%Y%m%d_error.log 86400 480"
访问日志:
CustomLog "|/data/apache/bin/rotatelogs 日志存放目录/%Y%m%d_access.log 86400 480" common
其中:
/data/apache:为apache的安装目录,根据自己实际情况确定;
86400:秒,24小时,表示生成的日志文件按天滚动,也就是每天生成一个日志文件;
480:分,时间偏移。
同理可以按小时滚动日志文件,每隔一个小时,几个小时。。。生成一个日志文件。
扩展:可以写个脚本定时删除日志文件,只保留几天的日志,如果网站访问量比较大,一天会生成几十上百M甚至更大的日志文件,既占硬盘又影响服务器性能。
2、按大小滚动日志文件:
错误日志:
ErrorLog "|/data/apache/bin/rotatelogs -l 日志存放目录/%Y%m%d_error.log 5M"
访问日志:
CustomLog "|/data/apache/bin/rotatelogs -l 日志存放目录/%Y%m%d_access.log 5M" common
当日志文件达到5M时,滚动该日志文件。
另外,说下apache日志管理的相关知识。
web服务器日志滚动的方法,常用的有如下三种:
1,利用Linux系统自身的日志文件轮循机制:logrotate;
2,利用apache自带的日志轮循程序rotatelogs;
3,使用在apache的FAQ中推荐发展已经比较成熟的一个日志轮循工具cronolog。
这里介绍下apache自带的日志滚动程序rotatelogs,并用shell脚本定期删除日志文件,只保留近3天的文件,以免日志文件占满磁盘空间。
修改apache服务器的主配置文件httpd.conf,找到以下内容,并修改成:
ErrorLog /var/log/httpd/error_log
CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/access_log 86400 400M" combined
86400 ---日志滚动的时间是一天
400---日志文件最大400M就滚动
combined ---采用复合格式
然后,建立清除日志文件的shell脚本,文件名为clean_log
#! /bin/bash
logdir=/var/log/httpd
cd ${logdir}
declare -i filesum=`ls access_log.* | wc -l`
declare -i delnum=$filesum-
if [ "${delnum}" -ge ];then
rm -rf `ls -tr access_log.* | head -${delnum}`
fi
#加上执行权限
chmod clean_log
保留最近3天的日志文件。
创建自动化任务:
* * * /usr/local/crontab/clean_log
PHP的扩展库
GD图片处理库
修改目录权限
根据提示,修改对应目录的权限
cd /data/www
chown -R daemon:daemon data uc_server/data uc_client/data config // 让这几个目录支持apache运行帐号可写
配置开机启动apache
echo '/usr/local/apache2/bin/apachectl start'>>/etc/rc.local
注意:不能使用/etc/init.d/httpd的方式!
还有虚拟机安装了两个httpd,一个rpm版本,一个编译安装版,导致修改了vhosts配置文件之后,执行apachectl -restart的时候新修改的内容不生效
解决办法是删除rpm版本的httpd
rpm -qa |grep httpd
rpm -e httpd-2.2.15-39.el6.centos.x86_64
rpm -qa |grep httpd
http://www.apelearn.com/bbs/thread-9146-1-1.html
编译安装安装方式不支持将apachectl放入/etc/init.d/httpd
RPM包方式才支持将apachectl放入/etc/init.d/httpd
tcpdump抓包
tcpdump -nn -i eth1 -s 0 host 192.168.0.100 and dst port 80 and dst 192.168.0.106 //因为只显示目标端口和目标ip所以单向
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
06:44:35.903095 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [S], seq 1723280863, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
06:44:35.905358 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 3341746770, win 16425, length 0
06:44:35.905378 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [P.], seq 0:1163, ack 1, win 16425, length 1163
06:44:35.967826 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 2921, win 16425, length 0
06:44:35.968025 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 5841, win 16425, length 0
06:44:35.968165 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 8761, win 16425, length 0
06:44:35.968295 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 11681, win 16425, length 0
06:44:35.968466 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 14601, win 16425, length 0
06:44:35.968693 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [.], ack 16254, win 16425, length 0
06:44:36.016064 IP 192.168.0.100.61934 > 192.168.0.106.80: Flags [P.], seq 1163:2416, ack 16259, win 16423, length 1253
点击一下默认板块产生很多包
# tcpdump -nn -i eth1 -s 0 tcp and port 80 and host 192.168.0.100 and host 192.168.0.106 //指定了端口一般也要指定协议 因为两个都是host所以会显示双向
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
06:55:33.624605 IP 192.168.0.100.62324 > 192.168.0.106.80: Flags [S], seq 1337810073, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
06:55:33.624658 IP 192.168.0.106.80 > 192.168.0.100.62324: Flags [S.], seq 3180963847, ack 1337810074, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
06:55:33.625110 IP 192.168.0.100.62324 > 192.168.0.106.80: Flags [.], ack 1, win 16425, length 0
06:55:33.625122 IP 192.168.0.100.62324 > 192.168.0.106.80: Flags [P.], seq 1:1149, ack 1, win 16425, length 1148
06:55:33.625162 IP 192.168.0.106.80 > 192.168.0.100.62324: Flags [.], ack 1149, win 264, length 0
06:55:33.684537 IP 192.168.0.106.80 > 192.168.0.100.62324: Flags [.], seq 1:2921, ack 1149, win 264, length 2920
06:55:33.684796 IP 192.168.0.100.62324 > 192.168.0.106.80: Flags [.], ack 2921, win 16425, length 0
06:55:33.684886 IP 192.168.0.106.80 > 192.168.0.100.62324: Flags [.], seq 2921:5841, ack 1149, win 264, length 2920
06:55:33.685506 IP 192.168.0.100.62324 > 192.168.0.106.80: Flags [.], ack 5841, win 16425, length 0
06:55:33.685576 IP 192.168.0.106.80 > 192.168.0.100.62324: Flags [.], seq 5841:8761, ack 1149, win 264, length 2920
06:55:33.685782 IP 192.168.0.100.62324 > 192.168.0.106.80: Flags [.], ack 8761, win 16425, length 0
06:55:33.687586 IP 192.168.0.106.80 > 192.168.0.100.62324: Flags [.], seq 8761:11681, ack 1149, win 264, length 2920
httpd的访问日志
C:\Users\Name\Desktop\apache -- logs\access_log 127.0.0.1 - - [/Oct/::: +] "GET /1.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /favicon.ico HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /1.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /1.php HTTP/1.1"
127.0.0.1 - - [/Oct/::: +] "GET /1.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /1.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /1.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /1.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /favicon.ico HTTP/1.1"
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
192.168.0.101 - - [/Oct/::: +] "GET /install/ HTTP/1.1" 192.168.0.101 - - [/Oct/::: +] "GET /install/images/bg_footer.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /install/index.php?step=1&uchidden=&submit=%CE%D2%CD%AC%D2%E2 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /install/images/bg_stepstatus.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /install/images/stepnum.gif HTTP/1.1"
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
192.168.0.101 - - [/Oct/::: +] "POST /install/index.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "POST /install/index.php HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /install/index.php?step=3&install_ucenter=yes HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "-" -
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
192.168.0.101 - - [/Oct/::: +] "POST /install/index.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=initsys HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /install/index.php?method=ext_info HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET / HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /forum.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/style_1_forum_index.css?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/style_1_common.css?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/style_1_widthauto.css?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/js/common.js?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/js/forum.js?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/js/logging.js?pss HTTP/1.1" 192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/search.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/nv.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/nv_a.png HTTP/1.1" 192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=misc&ac=sendmail&rand=1445358368 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/scrolltop.png HTTP/1.1"
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
192.168.0.101 - - [/Oct/::: +] "GET /static/js/ajax.js?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "POST /member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /member.php?mod=logging&action=login&auth=29daT789VZ8C8zjE0ImpSpwPwzApkK2NKDrzbc6qlNvfyAN112%2FCRomzwA&referer=http%3A%2F%2Fwww.123.com%2Fforum.php&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/js/common_extra.js?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/cls.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/right.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=update&idhash=cSAnX92XB&0.24064634722004718&modid=member::logging HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/none.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&update=40780&idhash=cSAnX92XB HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/loading.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=check&inajax=1&modid=member::logging&idhash=cSAnX92XB&secverify=ctcj HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/check_right.gif HTTP/1.1"
- 192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/refresh.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=misc&ac=sendmail&rand=1445358408 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/common_smilies_var.js?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=spacecp&ac=pm&op=checknewpm&rand=1445358408 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/swfupload.swf?preventswfcaching=1445765216946 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=update&idhash=cSLszz2X&0.721008357087331&modid=forum::forumdisplay HTTP/1.1" 192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/shutup.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/sleepy.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/hug.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/victory.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/time.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/kiss.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/handshake.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/smiley/default/call.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=checkpatch&rand=1445358408 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/folder_new.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/pollsmall.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&update=62355&idhash=cSLszz2X HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=ipnotice&_r=0.15455305205052006&inajax=1&ajaxtarget=ip_notice HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/uploadbutton_small.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=pluginnotice&inajax=1&ajaxtarget=plugin_notice HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/style_1_forum_post.css?pss HTTP/1.1" 192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/line5.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/0.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/line4.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/line1.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/line9.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/5.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/line2.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/line7.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/hrline/2.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?css=1_wysiwyg&pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/style_1_forum_calendar.css?pss HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=misc&ac=sendmail&rand=1445358410 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=spacecp&ac=pm&op=checknewpm&rand=1445358410 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/swfupload.swf?preventswfcaching=1445765219307 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/swfupload.swf?preventswfcaching=1445765219353 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=checkpatch&rand=1445358410 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=update&idhash=cSaG588y&0.2836799351813733&modid=forum::post HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=ipnotice&_r=0.9286310464287497&inajax=1&ajaxtarget=ip_notice HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&update=42232&idhash=cSaG588y HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /forum.php?mod=relatekw&subjectenc=&messageenc=&inajax=1&ajaxtarget=tagselect HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=pluginnotice&inajax=1&ajaxtarget=plugin_notice HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /forum.php?mod=relatekw&subjectenc=test&messageenc=&inajax=1&ajaxtarget=tagselect HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=check&inajax=1&modid=forum::post&idhash=cSaG588y&secverify=cj6j HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=check&inajax=1&modid=forum::post&idhash=cSaG588y&secverify=cj6j HTTP/1.1"
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
192.168.0.101 - - [/Oct/::: +] "POST /forum.php?mod=post&action=newthread&fid=2&extra=&topicsubmit=yes HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/uploadbutton.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/uploadbutton.png HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /forum.php?mod=viewthread&tid=1&extra= HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /data/cache/style_1_forum_viewthread.css?pss HTTP/1.1" 192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/fastreply.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/common/swfupload.swf?preventswfcaching=1445765254727 HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=misc&ac=sendmail&rand=1445358446 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&action=update&idhash=cSUsRRzX&0.7534482570377987&modid=forum::viewthread HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /home.php?mod=spacecp&ac=pm&op=checknewpm&rand=1445358446 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=checkpatch&rand=1445358446 HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=seccode&update=24492&idhash=cSUsRRzX HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=ipnotice&_r=0.2202783499608713&inajax=1&ajaxtarget=ip_notice HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /misc.php?mod=patch&action=pluginnotice&inajax=1&ajaxtarget=plugin_notice HTTP/1.1"
127.0.0.1 - - [/Oct/::: +] "OPTIONS * HTTP/1.0" -
192.168.0.101 - - [/Oct/::: +] "GET /admin.php HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/admincp/admincp.css HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/admincp/bg_login.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/admincp/login_title.gif HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "POST /admin.php? HTTP/1.1" -
192.168.0.101 - - [/Oct/::: +] "GET /admin.php? HTTP/1.1"
192.168.0.101 - - [/Oct/::: +] "GET /static/image/admincp/admincp.css?pss HTTP/1.1"
192.168.0.101
httpd的错误日志
C:\Users\Name\Desktop\apache -- logs\error_log [Mon Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Mon Oct :: ] [notice] Digest: done
[Mon Oct :: ] [notice] Apache/2.2. (Unix) DAV/ configured -- resuming normal operations
[Mon Oct :: ] [notice] SIGHUP received. Attempting to restart
[Mon Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Mon Oct :: ] [notice] Digest: done
[Mon Oct :: ] [notice] Apache/2.2. (Unix) DAV/ configured -- resuming normal operations
[Mon Oct :: ] [error] [client 192.168.0.101] File does not exist: /usr/local/apache2/htdocs/favicon.ico
[Mon Oct :: ] [notice] SIGHUP received. Attempting to restart
[Mon Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Mon Oct :: ] [notice] Digest: done
[Mon Oct :: ] [notice] Apache/2.2. (Unix) DAV/ PHP/5.3. configured -- resuming normal operations
[Mon Oct :: ] [notice] caught SIGTERM, shutting down
[Mon Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Mon Oct :: ] [notice] Digest: done
[Mon Oct :: ] [notice] Apache/2.2. (Unix) DAV/ PHP/5.3. configured -- resuming normal operations
[Mon Oct :: ] [error] [client 127.0.0.1] PHP Warning: phpinfo() [<a href='function.phpinfo'>function.phpinfo</a>]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/apache2/htdocs/1.php on line 3
[Mon Oct :: ] [error] [client 192.168.0.101] PHP Warning: phpinfo() [<a href='function.phpinfo'>function.phpinfo</a>]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/apache2/htdocs/1.php on line 3
[Mon Oct :: ] [error] [client 192.168.0.101] File does not exist: /usr/local/apache2/htdocs/favicon.ico
[Mon Oct :: ] [notice] caught SIGTERM, shutting down
[Wed Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Wed Oct :: ] [notice] Digest: done
[Wed Oct :: ] [notice] Apache/2.2. (Unix) DAV/ PHP/5.3. configured -- resuming normal operations
[Wed Oct :: ] [error] [client 192.168.0.101] File does not exist: /data/www/static/js/common_postimg.js, referer: http://www.123.com/forum.php?mod=post&action=newthread&fid=2
[Wed Oct :: ] [notice] SIGHUP received. Attempting to restart
[Wed Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Wed Oct :: ] [notice] Digest: done
[Wed Oct :: ] [notice] Apache/2.2. (Unix) DAV/ PHP/5.3. configured -- resuming normal operations
[Wed Oct :: ] [notice] SIGHUP received. Attempting to restart
[Wed Oct :: ] [notice] Digest: generating secret for digest authentication ...
[Wed Oct :: ] [notice] Digest: done
[Wed Oct :: ] [notice] Apache/2.2. (Unix) DAV/ PHP/5.3. configured -- resuming normal operations
[Wed Oct :: ] [notice] SIGHUP received. Attempting to restart
[Wed Oct :: ] [notice] Digest: generating secret for digest authentication ...
vhosts访问日志
C:\Users\Name\Desktop\apache -- logs\www..com-access_20151021.log
192.168.0.122 - - [/Oct/::: +] "GET /admin.php HTTP/1.1" "http://www.123.com/forum.php?mod=viewthread&tid=1&extra=" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)"
192.168.0.122 - - [/Oct/::: +] "GET /admin.php HTTP/1.1" "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)"
vhosts错误日志
www..com-error_20151021
[Wed Oct :: ] [error] [client 127.0.0.1] File does not exist: /data/www/1jpeg
[Wed Oct :: ] [error] [client 127.0.0.1] client denied by server configuration: /data/www/.txt, referer: http://www.baidu.com/sdfsdf
[Wed Oct :: ] [error] [client 192.168.0.122] client denied by server configuration: /data/www/admin.php, referer: http://www.123.com/forum.php?mod=viewthread&tid=1&extra=
[Wed Oct :: ] [error] [client 192.168.0.122] client denied by server configuration: /data/www/admin.php
[Wed Oct :: ] [error] [client 192.168.0.122] client denied by server configuration: /data/www/admin.php, referer: http://www.123.com/forum.php
[Wed Oct :: ] [error] [client 192.168.0.122] client denied by server configuration: /data/www/admin.php
[Wed Oct :: ] [error] [client 192.168.0.122] client denied by server configuration: /data/www/admin.php, referer: http://www.123.com/forum.php?mod=viewthread&tid=1&extra=page%3D1
[Wed Oct :: ] [error] [client 192.168.0.122] client denied by server configuration: /data/www/admin.php
[Wed Oct :: ] [error] [client 192.168.0.106] client denied by server configuration: /data/www/admin.php
[Wed Oct :: ] [error] [client 192.168.0.133] client denied by server configuration: /data/www/admin.php, referer: http://www.123.com/forum.php?mod=forumdisplay&fid=2
[Wed Oct :: ] [error] [client 192.168.0.133] client denied by server configuration: /data/www/admin.php
[Wed Oct :: ] [error] [client 192.168.0.133] client denied by server configuration: /data/www/admin.php
[Wed Oct :: ] [error] [client 192.168.0.133] client denied by server configuration: /data/www/admin.php
安装centos的时候一定要最小化安装,否则会默认安装上rpm版的apache
rpm -qa |grep httpd ,公司台机不是最小化安装
腾讯云也是已经安装rpm版httpd
扩展阅读
http://zhidao.baidu.com/link?url=wXZsevUwcgavOX6Sc3eBDHlA2ApifsdEvL4wBHYxODCmaK3VIFLFuDMecjhZZuVJPYJVou2zhHtnBRXeKTtRMa
http://www.server110.com/apache/201310/1984.html
/usr/local/apache/bin/apachectl -k start 启动apache服务是 -k 是什么意思呢?请大侠帮助,谢谢!
是源于UNIX的kill命令向运行中的进程发送信号。
apache官方的解释如下:
为了停止或者重新启动Apache ,必须向正在运行的httpd进程发送信号。有两种发送信号的方法。第一种方法是直接使用UNIX的kill命令向运行中的进程发送信号。也许你会注意到你的系统里运行着很多httpd进程。但你不应该直接对它们中的任何一个发送信号,而只要对已经在PidFile中记载下了自身PID的父进程发送信号。也就是说,你不必对父进程以外的任何进程发送信号。你可以向父进程发送三种信号:TERM、HUP、USR1 。
你可以用下面这样的命令来向父进程发送信号:
kill -TERM `cat /usr/local/apache2/logs/httpd.pid`
第二种方法是使用下面将要描述的httpd二进制可执行文件的 -k 命令行选项:stop、restart、graceful、graceful-stop 。
不过推荐你使用apachectl控制脚本来向httpd二进制可执行文件传递这些选项。
当你向httpd发送信号后,你可以这样来读取它的进行过程:
tail -f /usr/local/apache2/logs/error_log
比如--立即停止
使用信号:TERM
apachectl -k stop发送TERM或stop信号到父进程可以使它立刻杀死所有子进程。这将花费一些时间来杀死所有子进程。然后父进程自己也退出。所有进行中的请求将被强行中止,而且不再接受其它请求。
其实在man httpd有这样一个介绍
-k start|restart|graceful|stop|graceful-stop
Signals httpd to start, restart, or stop. See Stopping Apache for more information.
apachectl是Apache HTTP服务器的前端程序。其设计意图是帮助管理员控制Apache httpd后台守护进程。
apachectl脚本有两种操作模式。
1、首先,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd ,并传递所有的命令行参数。
2、其次,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop ,并把他们翻译为适当的信号发送给httpd
。
如果你的Apache安装在非标准的路径中,你将需要修改apachectl脚本使其中的路径正确地指向httpd程序。此外,还可以指定任何必要的httpd命令行参数。细节可以参见脚本中的注解。
apachectl脚本如果执行成功,则返回0 ;如果出错,则其返回值>0 。更多细节可以参见脚本中的注解。
在扮演传递角色时,apachectl可以接受对httpd程序有效的所有参数。
apachectl [ httpd-argument ]
在SysV初始化模式中,apachectl只接受简单的一个单词的命令,如下:
apachectl command
下列仅说明了SysV初始化类型的选项,其他参数的说明见httpd手册页。
start
启动Apache httpd后台守护进程。如果已经启动,则产生一个错误。它等价于 apachectl -k start 。
stop
停止Apache httpd后台守护进程。它等价于 apachectl -k stop 。
restart
重新启动Apache httpd后台守护进程。如果守护进程尚未运行,则启动它。在重新启动守护进程之前,此命令会使用configtest自动检查配置文件,以确保Apache不会死掉。它等价于 apachectl -k restart 。
fullstatus
显示由mod_status提供的完整的状态报告。要使用这个功能,需要启用服务器上的mod_status模块,并且系统中有一个基于文本的浏览器,如lynx 。修改脚本中的STATUSURL变量,可以修改访问状态报告的URL 。
status
显示一个简要的状态报告。它类似于fullstatus选项,但是省略了正在处理的请求的列表。
graceful
优雅地重新启动Apache httpd后台守护进程。如果守护进程尚未启动,则启动它。它和标准重新启动的不同之处在于:不会中断当前已经打开的连接,也不会立即关闭日志。这意味着,如果在日志滚动脚本使用它,则在处理日志之前必须加入一个实实在在的延迟,以确保老的日志文件在被处理前已经关闭。在重新启动守护进程之前,此命令会使用configtest自动检查配置文件,以确保Apache不会死掉。它等价于 apachectl -k graceful 。
graceful-stop
优雅地停止Apache httpd后台守护进程。它和标准停止的不同之处在于:不会中断当前已经打开的连接,也不会立即关闭日志。它等价于 apachectl -k graceful-stop 。
configtest
执行一次配置文件语法检查。它解析配置文件,并报告 Syntax Ok 或者是特定的语法错误详细信息。它等价于 apachectl -t 。
下列选项仅在早期版本中使用,现在已经被废弃了。
startssl
以支持SSL的方式启动httpd ,你应当编辑配置文件,并在其中包含与SSL支持相关的指令,然后使用 apachectl start 启动服务器。
伪静态
http://baike.baidu.com/link?url=I-21EmJmbOmzvK6HuhS1-R39lITINPdgHPeIrSMiuf9PxRcryz8hSWX5E5FzkuZs8qihikAGQUifbQuZGdhOo4PSDZQg4k41dX2Xk6pvXsOHNpbHiaPXpi0pjC9JfMc2
伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。
用IIS的404错误处理机制来实现的。这个比rewrite技术要灵活的多。
这样。用户或蜘蛛看到的URL还是他访问的URL.而我们对内容的处理上可以用到了动态技术。这就是我们想要的结果。说得简单了一些。但是基本思路就是这样了。
区别静态
从URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是html htm 或者是目录格式
伪静态只是改变了URL的表现形式,实际上还是动态页面
静态页面可以节省服务器资源,而伪静态严格说是增加服务器资源消耗的
总结,在SEO方面,伪静态和静态页面的功能是相同的,但是伪静态本质上还是动态页面,所以消耗资源是和动态页面一样的,而且因为Rewrite服务器还需要消耗额外的资源。
logstash的角色:shipper和indexer P83
logstash作为无状态的软件,配合消息队列系统,可以做线性扩展,两个消息队列系统:kafka和redis
rsyslog P95
rsyslog从v6版本开始,设计了一套rainerscript作为配置中的DSL
rsyslog从v7版本开始带有omelasticsearch插件可以直接写入数据到elasticsearch集群
rsyslog当前官方稳定版是v8
rpm -qa|grep syslog
rsyslog-5.8.10-10.el6_6.x86_64
f