www服务-apache服务软件


1.http服务软件分类
实现http的软件(www服务是在http协议之上的服务):
  

2.http服务软件发型版本
   

       

  

3.linux系统软件包的企业场景安装方式
以安装apache为例:

等。。。
4.apache简介
  apache HTTP Server(简称apache)是apache软件基金会(该基金会有很多软件产品)的一个高性能、功能强大、健壮可靠、又很灵活的开放源代码的web服务软件,它可以运行在广泛使用的计算机平台上,如:unix,linux,windows。因其多平台性和安全性而被广泛使用,是当今互联网最流行的web服务器软件之一。
  apache源于NCSA http服务,经过多次修改,成为世界上最流行的web服务器软件之一。apache取自"a patchy server"读音,意思是充满补丁的服务器,因为它是自由软甲,所以不断有人来为它开发新的功能、新的特性。修复原来的缺陷才成为今天使用的安全稳定的web服务器。
  apache对于linux的支持相当好,apache有多种产品,可以支持SSL技术,支持多个虚拟主机。到目前为主,它仍然是世界上使用最多的web服务器软件,市场占用率过半。apache成功之处在于它的源代码开放,有一支开放的开发队伍、支持跨平台的应用以及可移植性等方面,经过多年的开发代码很健壮稳定。

5.1 apache服务特点
特点:功能强大,配置简单,速度快,应用广泛,性能稳定可靠,并可做代理服务器或者负载均衡应用。
应用场合:
使用apache运行静态HTML网页、图片(处理静态小文件能力不如nginx);
使用apache结合PHP引擎运行PHP、Perl、Python等程序,LAMP被称为经典组合;
使用apache结合Tomcat、Resin运行jsp、java等程序称为中小企业的首选;
使用apache作代理、负载均衡、rewrite规则过滤等等。
说明:nginx在处理静态小文件能力方面支持大并发效果好,占用内存资源少。但是在结合PHP引擎提供php服务及其他很多功能上稳定性不如apache。

[root@httpd ~]# ifconfig //10.0.0.17
[root@oldboyedu-01 ~]# hostname httpd
[root@oldboyedu-01 ~]# logout
[root@httpd ~]# rpm -qa httpd
[root@httpd ~]# rpm -e httpd
[root@httpd opt]# rpm -e --nodeps httpd //直接卸载自身软件包不考虑依赖包。

5.2 官网下载软件:
http://www.apache.org/
http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.28.tar.gz
[root@httpd opt]# wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.28.tar.gz

[root@httpd opt]# ll httpd-2.2.27.tar.gz -sh
7.2M -rw-r--r-- 1 root root 7.2M Feb 11 2018 httpd-2.2.27.tar.gz
[root@httpd opt]# tar -xf httpd-2.2.27.tar.gz
[root@httpd opt]# cd httpd-2.2.27
[root@httpd httpd-2.2.27]# ls
ABOUT_APACHE BuildBin.dsp configure.in httpd.mak LAYOUT Makefile.in os server
acinclude.m4 buildconf docs httpd.spec libhttpd.dep Makefile.win README srclib
Apache.dsw CHANGES emacs-style include libhttpd.dsp modules README.platforms support
build config.layout httpd.dep INSTALL libhttpd.mak NOTICE README-win32.txt test
BuildAll.dsp configure httpd.dsp InstallBin.dsp LICENSE NWGNUmakefile ROADMAP VERSIONING

./configure \
--prefix=/application/apache2.2.27 \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--with-mpm=worker \
--enable-rewrite

编译安装:
root@httpd httpd-2.2.27]# ./configure \
> --prefix=/application/apache2.2.27 \
> --enable-deflate \
> --enable-expires \
> --enable-headers \
> --enable-modules=most \
> --enable-so \
> --with-mpm=worker \
> --enable-rewrite
错误:
checking for zlib location... not found
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite falures
[root@httpd httpd-2.2.27]# echo $?
1
解决:
[root@httpd httpd-2.2.27]# yum install -y zlib zlib-devel
[root@httpd httpd-2.2.27]# echo $?
0
[root@httpd httpd-2.2.27]# make ;make install
make[1]: Leaving directory `/opt/httpd-2.2.27'
[root@httpd httpd-2.2.27]#

[root@httpd httpd-2.2.27]# ln -s /application/apache2.2.27/ /application/apache
[root@httpd httpd-2.2.27]# ls /application/apache
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
检查语法:
[root@httpd httpd-2.2.27]# /application/apache/bin/apachectl -t
httpd: Could not reliably determine the server's fully qualified domain name, using 211.137.130.101 for ServerName
Syntax OK
启动apache服务:
[root@httpd httpd-2.2.27]# /application/apache/bin/apachectl start
httpd: apr_sockaddr_info_get() failed for httpd
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
查看端口:
[root@httpd httpd-2.2.27]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 61211 root 4u IPv6 59632 0t0 TCP *:http (LISTEN)
httpd 61213 daemon 4u IPv6 59632 0t0 TCP *:http (LISTEN)
httpd 61214 daemon 4u IPv6 59632 0t0 TCP *:http (LISTEN)
httpd 61215 daemon 4u IPv6 59632 0t0 TCP *:http (LISTEN)
[root@httpd httpd-2.2.27]# ps -ef |grep http //
root 61211 1 0 11:46 ? 00:00:00 /application/apache2.2.27/bin/httpd -k start
daemon 61212 61211 0 11:46 ? 00:00:00 /application/apache2.2.27/bin/httpd -k start
daemon 61213 61211 0 11:46 ? 00:00:00 /application/apache2.2.27/bin/httpd -k start
daemon 61214 61211 0 11:46 ? 00:00:00 /application/apache2.2.27/bin/httpd -k start
daemon 61215 61211 0 11:46 ? 00:00:00 /application/apache2.2.27/bin/httpd -k start
root 61299 5059 0 11:46 pts/0 00:00:00 grep http

http://10.0.0.17/
It works!
OK!

6.测试apache安装结果并设置第一个站点
如果出现问题:
(1)查看iptables是否关闭:
[root@httpd httpd-2.2.27]# /etc/init.d/iptables stop
(2)关闭selinux:
[root@httpd httpd-2.2.27]# getenforce
Disabled
[root@httpd httpd-2.2.27]# cat /etc/selinux/config |grep SELINUX
# SELINUX= can take one of these three values:
SELINUX=disabled
(3)确认httpd端口80是否存在:
[root@httpd httpd-2.2.27]# netstat -lntup|grep 80
tcp 0 0 :::80 :::* LISTEN 61211/httpd
(4)查看是否有httpd进程存在:
[root@httpd httpd-2.2.27]# ps -ef |grep http

测试服务是否正常:
[root@httpd httpd-2.2.27]# wget 10.0.0.17
--2018-02-11 11:55:44-- http://10.0.0.17/
Connecting to 10.0.0.17:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44 [text/html]
Saving to: “index.html”

100%[===========================================================================================>] 44 --.-K/s in 0s

2018-02-11 11:55:44 (8.33 MB/s) - “index.html” saved [44/44]

[root@httpd httpd-2.2.27]# curl 10.0.0.17
<html><body><h1>It works!</h1></body></html>[root@httpd httpd-2.2.27]#

[root@httpd httpd-2.2.27]# /application/apache/bin/apachectl //查看帮助
[root@httpd httpd-2.2.27]# /application/apache/bin/apachectl -l //查看编译的模块
[root@httpd ~]# /application/apache/bin/apachectl -l|egrep "_so|_rewrite|header|expire|deflate"
mod_deflate.c
mod_expires.c
mod_headers.c
mod_rewrite.c
mod_so.c

strace跟踪一个进程的使用情况:
[root@httpd ~]# strace /application/apache/bin/apachectl -M


[root@httpd httpd-2.2.27]# cd /application/apache
[root@httpd apache]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@httpd apache]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@httpd apache]# cd conf/
[root@httpd conf]# ls
extra httpd.conf magic mime.types original
[root@httpd conf]# grep -i documentroot httpd.conf //默认网站的根目录documentroot
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/application/apache2.2.27/htdocs"
# This should be changed to whatever you set DocumentRoot to.
# access content that does not live under the DocumentRoot.
[root@httpd htdocs]# cat index.html
<html><body><h1>It works!</h1></body></html>[root@httpd htdocs]#
[root@httpd htdocs]# cp index.html index.html.bak
[root@httpd htdocs]# vim index.html //修改静态程序不用重启服务!
[root@httpd htdocs]# cat index.html
<head><title>crmn blog</title></head>
<body>
hello crmn,my blog address is
<a href="http://study.163.com/my#/smarts" targe=_parent>http://study.163.com/my#/smarts</a>
</body>
</html>

7.apache服务安装故障排查
8.apache目录下重要命令及文件详解
[root@httpd apache]# ll bin/
ab //apache http服务器性能测试工具,简单易用,同类软件:jmeter,loadrunner,webbench等。
apachectl //一个脚本
apxs //为apache http服务器编译和安装扩展模块的工具,进行DSO方式编译模块时会用到。
htcacheclean//清理磁盘缓冲区命令,需要在编译时指定相关参数才可以使用。
htpasswd //建立和更新基本认证文件,如:配置nogios等监控服务时会用到。
httpd //apache的控制命令程序,apachectl执行时会调用httpd
rotatelogs //apache自带的日志轮询命令,但可以用cronlog替代之。

[root@httpd apache]# ll conf/
extra //辅配置文件
httpd.conf //主配置文件
magic
mime.types
original

[root@httpd apache]# ls htdocs/ //编译安装时apache的默认站点目录。
index.html

[root@httpd apache]# vim conf/httpd.conf
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

修改服务配置文件后:
[root@httpd conf]# ../bin/apachectl -t //检查语法
[root@httpd conf]# ../bin/apachectl graceful //平滑重启服务

[root@httpd apache]# ll logs/
access_log //默认访问日志文件(用户访问网站的信息),tailf access_log可以实时观看网站用户访问情况。
error_log //错误日志
httpd.pid //httpd的pid文件,httpd进程启动后,会把所有的ID号写到该文件。

[root@httpd apache]# ll modules/ //模块目录,比如php,memcache等模块编译后都在这里。
httpd.exp

9~10.apache服务主配置文件httpd.conf

[root@httpd conf]# grep -Ev "#|^$" httpd.conf >httpd.conf.ori 
[root@httpd conf]# cat httpd.conf.ori 
ServerRoot "/application/apache2.2.27"    //服务的根目录
Listen 80    //访问的端口
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon    //默认指定用户
Group daemon//用户组
</IfModule>
</IfModule>
ServerAdmin you@example.com //管理员的邮箱
DocumentRoot "/application/apache2.2.27/htdocs" //默认站点目录

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
//禁止其他用户访问根目录

<Directory "/application/apache2.2.27/htdocs">
Options Indexes FollowSymLinks //Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
//创建新的站点目录必须增加该 

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
ErrorLog "logs/error_log" //错误日志
LogLevel warn //日志级别、警告

<IfModule log_config_module> //访问日志的类型
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common
</IfModule>

cgi部分,过时了。
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/application/apache2.2.27/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>

<Directory "/application/apache2.2.27/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

DefaultType text/plain

<IfModule mime_module> //对什么类型做什么控制
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule ssl_module>

SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

11~12.apache服务重要扩展配置文件
[root@httpd conf]# ll extra/
httpd-mpm.conf //
httpd-vhosts.conf //
httpd-default.conf //

[root@httpd extra]# cat httpd-vhosts.conf 
NameVirtualHost *:80 //基于域名的虚拟主机,一个服务器想跑多个网站。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/application/apache2.2.27/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 *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/application/apache2.2.27/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

[root@httpd extra]# cat httpd-mpm.conf 
<IfModule !mpm_netware_module>
PidFile "logs/httpd.pid"
</IfModule>

<IfModule !mpm_winnt_module>
<IfModule !mpm_netware_module>
LockFile "logs/accept.lock"
</IfModule>
</IfModule>

<IfModule mpm_prefork_module> //
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>

<IfModule mpm_worker_module> //编译时指定该模式
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75 
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
apache的两种模式prefork和worker

[root@httpd extra]# grep -v "^#" httpd-default.conf
Timeout 300 //连接超时
KeepAlive On //连接保持
MaxKeepAliveRequests 100 //最大接收连接数
KeepAliveTimeout 5 //同一个连接上面等待下一个请求的时间
UseCanonicalName Off //
AccessFileName .htaccess //为静态开发设置
ServerTokens Full //隐藏版本
ServerSignature On
HostnameLookups Off

[root@httpd extra]# curl -I 10.0.0.17
HTTP/1.1 200 OK
Date: Sun, 11 Feb 2018 09:00:46 GMT
Server: Apache/2.2.27 (Unix) DAV/2 //可以设置换掉或者不显示
Last-Modified: Sun, 11 Feb 2018 07:16:39 GMT
ETag: "22cd4-b8-564ea8aea267f"
Accept-Ranges: bytes
Content-Length: 184
Content-Type: text/html

12.apache虚拟主机的分类及对应生产场景
虚拟机主机:部署多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,不同的IP需要虚拟主机功能。
一句话,一个http服务配置多个网站需要虚拟主机。
虚拟机分类:a.基于域名;b.基于端口;c.基于IP。
说明:基于什么就是靠什么区分站点!支持各种混合,N多个虚拟主机。

13.配置基于域名的虚拟主机
[root@httpd ~]# mkdir /var/html/{www,blog,bbs} -p
[root@httpd ~]# touch /var/html/{www,blog,bbs}/index.html
[root@httpd ~]# tree /var/html/
/var/html/
├── bbs
│   └── index.html
├── blog
│   └── index.html
└── www
└── index.html

3 directories, 3 files
[root@httpd ~]# for name in www blog bbs;do echo "http://$name.etiantian.org" >/var/html/$name/index.html;done
[root@httpd ~]#
[root@httpd ~]# for name in www blog bbs;do cat /var/html/$name/index.html;done
http://www.etiantian.org
http://blog.etiantian.org
http://bbs.etiantian.org
说明:工作中一般是开发将程序代码给运维让其放在站点里。

root@httpd extra]# cp httpd-vhosts.conf httpd-vhosts.conf.ori
[root@httpd extra]# vim httpd-vhosts.conf

[root@httpd extra]# cat httpd-vhosts.conf 
Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# 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 *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/www"
ServerName www.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/www-error_log"
CustomLog "logs/www-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/blog"
ServerName blog.etiantian.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/bbs"
ServerName bbs.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common
</VirtualHost>

[root@httpd conf]# vim httpd.conf
去掉注释:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

[root@httpd apache]# bin/apachectl -t //
Syntax OK
[root@httpd apache]# bin/apachectl graceful //

域名是私有的瞎配的,需要本地做解析:
C:\Windows\System32\drivers\etc
打开hosts文件添加:
10.0.0.17 www.etiantian.org blog.etiantian.org bbs.etiantian.org

在物理机端测试:
分别ping www.etiantian.org blog.etiantian.org bbs.etiantian.org

[root@httpd conf]# vim httpd.conf.ori
<Directory "/application/apache2.2.27/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

[root@httpd conf]# vim httpd.conf
#meng add
<Directory "/var/html">
Options FollowSymLinks //优化
AllowOverride None
Order allow,deny
Allow from all
</Directory>

[root@httpd apache]# bin/apachectl -t //
Syntax OK
[root@httpd apache]# bin/apachectl graceful //
配置完成!

页面测试:
http://www.etiantian.org/
http://www.etiantian.org

输入IP地址则出现第一个域名地址的内容:
http://10.0.0.17/
http://www.etiantian.org

14.问题解析
15.配置基于端口的虚拟主机
[root@httpd conf]# vim httpd.conf
#meng add
Listen 8000
Listen 9000

[root@httpd extra]# vim httpd-vhosts.conf
#meng add
NameVirtualHost *:8000
NameVirtualHost *:9000

<VirtualHost *:8000> //
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/blog"
ServerName blog.etiantian.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>

<VirtualHost *:9000> //
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/bbs"
ServerName bbs.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common

[root@httpd apache]# bin/apachectl -t //
Syntax OK
[root@httpd apache]# bin/apachectl graceful //
[root@httpd extra]# netstat -lntup|grep 00
tcp 0 0 :::8000 :::* LISTEN 61211/httpd
tcp 0 0 :::9000 :::* LISTEN 61211/httpd
[root@httpd extra]# netstat -lntup|grep 80
tcp 0 0 :::8000 :::* LISTEN 61211/httpd
tcp 0 0 :::80 :::* LISTEN 61211/httpd

页面测试:
http://blog.etiantian.org:8000/ //需要加端口号
http://blog.etiantian.org 等等

16.配置基于IP的虚拟主机(10.0.0.17和10.0.0.20)
[root@httpd extra]# ifconfig eth0:0 10.0.0.20/24 up //临时生效!
[root@httpd extra]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:24:38:76
inet addr:10.0.0.17 Bcast:10.0.0.255 Mask:255.255.255.0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:24:38:76
inet addr:10.0.0.20 Bcast:10.0.0.255 Mask:255.255.255.0

[root@httpd extra]# vim httpd-vhosts.conf
#NameVirtualHost *:80
#meng add
#NameVirtualHost *:8000
#NameVirtualHost *:9000

<VirtualHost 10.0.0.17:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/www"
ServerName 10.0.0.17
ServerAlias etiantian.org
ErrorLog "logs/www-error_log"
CustomLog "logs/www-access_log" common
</VirtualHost>

<VirtualHost 10.0.0.20:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/blog"
ServerName 10.0.0.20
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>

[root@httpd apache]# bin/apachectl -t //
Syntax OK
[root@httpd apache]# bin/apachectl graceful //

页面测试:
http://10.0.0.17/
http://www.etiantian.org

http://10.0.0.20/
http://blog.etiantian.org

17.调整apache启动FQDN的问题

还原回配置基于域名的虚拟主机:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/www"
ServerName www.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/www-error_log"
CustomLog "logs/www-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/blog"
ServerName blog.etiantian.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/bbs"
ServerName bbs.etiantian.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" common
</VirtualHost>
注意出问题记得多查看日志!

[root@httpd extra]# ../../bin/apachectl -t
httpd: apr_sockaddr_info_get() failed for httpd
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
[root@httpd extra]# ../../bin/apachectl graceful
httpd: apr_sockaddr_info_get() failed for httpd
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
说明:fully qualified domain name即FQDN(完整的域名解析的域名)

[root@httpd conf]# vim httpd.conf
#ServerName www.example.com:80
#meng add
ServerName 127.0.0.1:80
[root@httpd conf]# ../bin/apachectl graceful //OK了

18.apache企业级日志轮询cronolog实践
日志格式:
a.通用日志格式(common log format)
b.组合日志格式(combined log format)

[root@httpd conf]# vim httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
[root@httpd extra]# vim httpd-vhosts.conf
CustomLog "logs/bbs-access_log" combined //修改

安装日志轮询工具cronolog
[root@httpd opt]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
[root@httpd opt]# tar -xf cronolog-1.6.2.tar.gz
[root@httpd opt]# cd cronolog-1.6.2
[root@httpd cronolog-1.6.2]# ./configure
[root@httpd cronolog-1.6.2]# make;make install
[root@httpd cronolog-1.6.2]# echo $?
0
[root@httpd cronolog-1.6.2]# ll /usr/local/sbin/cronolog
-rwxr-xr-x 1 root root 40430 Feb 12 10:16 /usr/local/sbin/cronolog

apache日志轮询技术(cronolog and rotatelogs)小结
http://blog.51cto.com/oldboy/584513

cronolog日志轮询配置说明:
[root@httpd extra]# vim httpd-vhosts.conf
<VirtualHost *:80> //为例
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/bbs"
ServerName bbs.etiantian.org
ErrorLog "logs/bbs-error_log"
#CustomLog "logs/bbs-access_log" combined
CustomLog "|/user/local/sbin/cronolog /app/logs/access_bbs_%Y%m%d.log" combined
提示:多数网站的常规配置方法(按天记录日志,日志不会自动覆盖)利用刚编译的工具软件来轮询log;还可以轮询错误日志。
</VirtualHost>

[root@httpd extra]# mkdir -p /app/logs
[root@httpd extra]# ../../bin/apachectl -t
Syntax OK
[root@httpd extra]# ../../bin/apachectl graceful
我的主机好像行不通,不知为何!

可以实时查看网页访问情况:
[root@httpd ~]# tail -f /application/apache/logs/www-access_log
10.0.0.253 - - [11/Feb/2018:20:58:16 +0800] "GET / HTTP/1.1" 200 25
10.0.0.253 - - [11/Feb/2018:20:58:19 +0800] "GET / HTTP/1.1" 304 -

19.rotatelogs日志轮询-自带日志轮询工具
apache自带日志轮询工具,不推荐使用该工具进行日志轮询(有时候丢日志)

[root@httpd ~]# ll /application/apache/bin/rotatelogs
-rwxr-xr-x 1 root root 24932 Feb 11 11:41 /application/apache/bin/rotatelogs

[root@httpd ~]# vim /application/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin mnlovemin@163.com
DocumentRoot "/var/html/bbs"
ServerName bbs.etiantian.org
ErrorLog "logs/bbs-error_log"
CustomLog "logs/bbs-access_log" combined
#CustomLog "|/user/local/sbin/cronolog /app/logs/access_bbs_%Y%m%d.log" combined
CustomLog "|/application/apache/bin/rotatelogs /logs/access_www_%Y%m%d%H%M.log 86400" combined
</VirtualHost>

[root@httpd ~]# mkdir /logs/
[root@httpd ~]# /application/apache/bin/apachectl -t
Syntax OK
[root@httpd ~]# /application/apache/bin/apachectl graceful
可以实时查看网页访问情况:
[root@httpd ~]# tail -f /application/apache/logs/www-access_log

普通切割日志方法:做成定时任务即可。
[root@httpd ~]# cd /application/apache/logs/
[root@httpd logs]# ls
access_log bbs-error_log blog-error_log error_log www-access_log
bbs-access_log blog-access_log cgisock.1280 httpd.pid www-error_log
[root@httpd logs]# mv www-access_log www-access_$(date +%F)log
[root@httpd logs]# /application/apache/bin/apachectl graceful

20.不记录apache日志思想及统计访问日志IP计数

21.隐藏apache版本号及更新源码隐藏apache敏感信息

posted @ 2018-02-12 11:39  bkycrmn  阅读(1332)  评论(0)    收藏  举报