2020-09-28

【技能展示】

	【技能展示】

1.学会编译安装httpd服务器
2.熟悉httpd服务的部署过程及常见配置
3.学会构建AWStats日志分析系统

【Apache简介】

【Apache简介】

【Apache起源】
1.源于 A Patchy Server,著名的开源Web服务软件
2.1995年时,发布Apache服务程序的1.0版本
3.由Apache软件基金会(ASF)负责维护
4.最新的名称为 “Apache HTTP Server”
5.官方站点:http://httpd.apache.org/

【主要特点】
1.开放源代码、跨平台应用
2.支持多种网页编程语言
3.模块化设计 、运行稳定、良好的安全性

【软件版本】
1.1.X
*目前最高版本是1.3,运行稳定

  • 向下兼容性较好,但缺乏一些较新的功能

2.2.X

  • 目前主要包括2.0和2.2两个版本
    *具有更多的功能特性
    *与1.X相比,配置管理风格存在较大差异

【编译安装的优点】
1.具有较大的自由度,功能可定制
2.可及时获得最新的软件版本
3.普遍适用于大多数Linux版本,便于移植使用

【获得Apache服务器的源码包 】
1.参考地址:http://httpd.apache.org/download.cgi

【安装httpd服务器——编译安装】

  	【安装httpd服务器——编译安装】

1.准备工作
卸载httpd及相关依赖包

[root@www ~]# rpm -e httpd --nodeps

[root@www ~]# yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre

2.源码编译及安装
解包
[root@www ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/

[root@www ~]# cd /usr/src/httpd-2.4.25/

配置
[root@www httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

–prefix:指定将httpd服务程序安装到哪个目录,如/usr/local/httpd。

–enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力。

–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。

–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。

–enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力。

Httpd的安装目录是由前面的—prefix指定的路径,
默认安装在/usr/local/apache2目录下

编译及安装
[root@www httpd-2.4.25]# make
[root@www httpd-2.4.25]# make install

3.确认安装结果
[root@www ~]# ls /usr/local/httpd/

bin cgi-bin error icons lib man modules
build conf htdocs include logs manual

主要目录和文件:
服务目录:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
网页目录:/usr/local/httpd/htdocs/
服务脚本:/usr/local/httpd/bin/apachectl
执行程序:/usr/local/httpd/bin/httpd
访问日志: /usr/local/httpd/log/access_log
错误日志: /usr/local/httpd/log/error_log
模块目录:/usr/local/httpd/modules

4.优化执行路径
[root@www ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/

[root@www ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl

lrwxrwxrwx 1 root root 30 04-06 13:08 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl

lrwxrwxrwx 1 root root 26 04-06 13:08 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd

[root@www ~]# httpd -v

5.添加httpd系统服务

*以便通过chkconfig进行管理

[root@www ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

[root@www ~]# vi /etc/init.d/httpd
编辑和添加

#!/bin/bash
#chkconfig: 35 85 15
description: Startup script for the Apache HTTP Server


注释:chkconfig识别配置
chkconfig— 服务识别参数,在运行级别3,5中启动。服务启动和关闭顺序分别为85、15.

description----服务描述信息


[root@www ~]# chkconfig --add httpd

[root@www ~]# chkconfig --list httpd

httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭

[root@localhost ~]# ll /etc/rc.d/rc3.d


【 httpd服务器的基本配置】

(一)Web站点部署过程

1.确定网站名称、IP地址
若要向internet中发布一个web站点,需要申请一个合法的互联网公网ip地址,并向dns服务提供商注册一个完整的网站名称。

[root@www ~]# cat /etc/sysconfig/network

#Created by anaconda
NETWORKING=yes
HOSTNAME=www.bdqn.com

[root@www ~]# cat /etc/hostname
www.bdqn.com

[root@www ~]# reboot

2.配置并启动httpd服务

[root@www ~]# vi /usr/local/httpd/conf/httpd.conf

200 #ServerName www.example.com:80
201 ServerName www.bdqn.com

[root@www ~]# /usr/local/httpd/bin/apachectl -t

Syntax OK

[root@www ~]# /etc/init.d/httpd start

[root@www ~]# netstat -anput | grep httpd

3.部署网页文档
[root@www ~]# cat /usr/local/httpd/htdocs/index.html
< html >< body >< h1 > It works! < /h1 > < /body > < /html >

4.在客户机中访问Web站点

5.查看Web站点的访问情况
查看访问日志
[root@www ~]# tail /usr/local/httpd/logs/access_log
192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] “GET / HTTP/1.1” 200 44
192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] “GET /favicon.ico HTTP/1.1” 404 209

记录客户机的ip地址、访问服务器的日期和时间、请求的网页对象等

查看错误日志(排查服务器运行故障)
[root@www ~]# tail /usr/local/httpd/logs/error_log

记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述


若要对web站点进行更加具体、更加强大的配置,需要做进一步配置。

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

【全局配置项】

ServerRoot “/usr/local/httpd”
Listen 80
User daemon
Group daemon
ServerAdmin webmaster@benet.com
ServerName www.benet.com
DocumentRoot “/usr/local/httpd/htdocs”
DirectoryIndex index.html index.php
ErrorLog logs/error_log
LogLevel warn
CustomLog logs/access_log common
PidFile logs/httpd.pid
CharsetDefault UTF-8
Include conf/extra/httpd-default.conf


常用的全局配置参数

如果配置文件中指定目录或文件位置不使用绝对路径,则认为在服务器根目录下(apache安装目录/usr/local/httpd)

ServerRoot:服务器根目录。要与DocumentRoot区分开

ServerAdmin:管理员邮箱

User:运行服务的用户身份

Group:运行服务的组身份

ServerName:网站服务器的FQDN(主机名+域名)

DocumentRoot:网页文档的根目录

Listen:监听的IP地址、端口号

PidFile:保存httpd进程PID号的文件

DirectoryIndex:默认的索引页文件

ErrorLog:错误日志文件的位置

CustomLog:访问日志文件的位置

LogLevel:记录日志的级别,默认为warn以上级别

AddDefaultCharset:设置站点中的网页默认使用的字符集编码

Timeout:网络连接超时,默认为300秒

KeepAlive:是否保持连接,可选On或Off

MaxKeepAliveRequests:每次连接最多请求文件数

KeepAliveTimeout:保持连接状态时的超时时间

Include:需要包含进来的其他配置文件


【区域配置项】

使用一对组合标记,限定了配置项的作用范围
定义‘/’目录区域的开始
Options FollowSymLinks 控制选项,允许使用符号连接
AllowOverride none 不允许隐含控制文件中的覆盖位置
Require all denied 禁止任何人访问此区域
定义/’目录区域的结束

Options FollowSymLinks 控制选项,允许使用符号连接

就是允许你的网页文件夹下的链接文件链接到首页目录以外的文件。举例来说,如果你把首页目录设置为/var/www/html,那么你的网页程序最多只能访问到/var/www/html目录,上层目录是不可见的。但是你可以通过链接把文件链接到/var/www/html目录以外的文件以访问该文件,如果FollowSymLinks被设置的话

从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override


Apache Options Indexes FollowSymLinks详解

禁止显示Apache目录列表-Indexes FollowSymLinks
如何修改目录的配置以禁止显示 Apache 目录列表。
缺省情况下如果你在浏览器输入地址:
http://localhost:8080/
如果你的文件根目录里有 index.html,浏览器就会显示 index.html的内容,如果没有 index.html,浏览器就会显示文件根目录的目录列表,目录列表包括文件根目录下的文件和子目录。
同样你输入一个虚拟目录的地址:
http://localhost:8080/b/
如果该虚拟目录下没有 index.html,浏览器也会显示该虚拟目录的目录结构,列出该虚拟目录下的文件和子目录。
如何禁止 Apache 显示目录列表呢?
要禁止 Apache 显示目录结构列表,只需将 Option 中的 Indexes 去掉即可。
比如我们看看一个目录的目录配置:
<Directory “D:/Apa/blabla”>
Options Indexes FollowSymLinks #---------->Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

你只需要将上面代码中的 Indexes 去掉,就可以禁止 Apache 显示该目录结构。用户就不会看到该目录下的文件和子目录列表了。
Indexes 的作用就是当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。
第二种方法
解决办法:
1、编辑httpd.conf文件
vi ./conf/httpd.conf
找到如下内容:
?BR> <Directory “C:/Program Files/Apache2.2/htdocs”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named explicitly — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

……
在Options Indexes FollowSymLinks在Indexes前面加上 – 符号。
即: Options -Indexes FollowSymLinks
【备注:在Indexes前,加 + 代表允许目录浏览;加 – 代表禁止目录浏览。】
这样的话就属于整个Apache禁止目录浏览了。
如果是在虚拟主机中,只要增加如下信息就行:
<Directory “D:test”>
Options -Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all

这样的话就禁止在test工程下进行目录浏览。
备注: 切记莫把“Allow from all”改成 “Deny from all”,否则,整个网站都不能被打开。

还有一种方法:
可以在根目录的 .htaccess 文件中输入
<Files *>
Options -Indexes

就可以阻止Apache 将目录结构列表出来。


AllowOverride从字面上解释是允许覆盖的意思,即Apache允许另一配置文件覆盖现有配置文件。

我们通常利用Apache的rewrite模块对URL进行重写,rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。

从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即:

< Directory />
AllowOverride None
< /Directory>
在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。

而对于 URL rewrite 来说,至少需要把目录设置为:

< Directory /myblogroot/>
AllowOverride FileInfo
< /Directory>
以下是AllowOverride的详细参数:

AuthConfig

允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。

FileInfo

允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。

Indexes

允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。

Limit

允许使用控制主机访问的指令(Allow, Deny, Order)。

Options[=Option,…]

允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值