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

centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课的更多相关文章

  1. Apache用户认证、域名跳转、Apache访问日志

    5月29日任务 课程内容: 11.18 Apache用户认证11.19/11.20 域名跳转11.21 Apache访问日志扩展 apache虚拟主机开启php的短标签 http://ask.apel ...

  2. Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志

    一.Apache用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容 <Virtu ...

  3. apache用户认证、域名跳转、Apache访问日志(两种格式)

    1.apache 设置,用户访问时 目录或文件的认证: 对目录的认证: <Directory /var/www/222> //指定认证的目录AllowOverride AuthConfig ...

  4. centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides "*/vim" 第十节课

    centos  系统软件包管理  yum 本地yum配置  扩展源epel  rpm  清除yum缓存  yum provides "*/vim"   第十节课 你不能保证可逆化操 ...

  5. Apache的虚拟主机功能(基于IP、域名、端口号)

    Apache虚拟主机就是在一个Apache服务器上配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录. 主要有三种方法: 1.通过不同的IP地址 2.通过不同的域名 ...

  6. CentOS配置Tomcat监听80端口,虚拟主机

    2019独角兽企业重金招聘Python工程师标准>>> Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [ro ...

  7. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  8. apache的proxy代理总访问后端web的第一个虚拟主机

    先查看cat /usr/local/apache2/modules 时候有mod_proxy.so  mod_proxy_http.so mod_proxy_connect 如果没有,使用apache ...

  9. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

随机推荐

  1. mysql数据库binary log中的事件到底是什么?

    需求描述: 最近看mysql备份恢复的时候,基于时间点恢复,提到了binary log中存的是"事件" 那么到底什么是事件呢 概念解释: binary log中存的是事件(even ...

  2. ios开发之--UICollectionView的使用

    最近项目中需要实现一种布局,需要用到UICollectionView,特在此整理记录下! 贴上最终实现的效果图: 1,声明 @interface FirstViewController ()<U ...

  3. NodeJS-002-Expres启动

    1.打开app.js文件 2.在module.exports = app;之前输入: app.listen(8100,function(){ console.log("Server Star ...

  4. leetcode -- permutation 总结

    leetcode上关于permutation有如下几题 Permutation Sequence Next Permutation Permutations Permutations II

  5. M0 M4之GPIO初始化

    新唐所有的M0/M4芯片基本上所有的IO都可以发生中断,为了符合大家的习惯还是有所谓的外部中断EINT0和EINT1.有2跟GPIO脚可以配置为EINT0功能和EINT1功能,分别将发生EINT0中断 ...

  6. Android项目结构介绍

    src/存放Java源代码gen/中存放系统自动生成的配置文件Android 4.4.2下包含android.jar文件,这是一个Java归档文件,其中包含构建应用程序所需的所有的Android SD ...

  7. 什么是"抓包"?怎样"抓包"?

    你是网络管理员吗?你是不是有过这样的经历:在某一天的早上你突然发现网络性能急剧下降,网络服务不能正常提供,服务器访问速度极慢甚至不能访问,网络交换机端口指示灯疯狂地闪烁.网络出口处的路由器已经处于满负 ...

  8. MyBatis——日志

    Logging Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging ...

  9. npm更新到最新版本

    命令行运行: npm install -g npm

  10. 删除编辑文件警告Swap file “…” already exists!

    Linux下多个用户同时编辑一个文件,或编辑时非正常关闭,再下次编辑打开文件时均为显示如下警告信息: Swap file "test.xml.swp" already exists ...