一.简介
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器.Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
Apache官网:http://apache.org/
Apache Httpd网站:http://httpd.apache.org/
Apache httpd Web服务器特性
1.事先创建进程
2.模块多元化,各种功能模块的添加
3.可以支持SSL技术
4.支持多种方式的虚拟主机配置
虚拟主机常用配置主要分为:
基于IP的虚拟主机
基于端口的虚拟主机
基于域名的虚拟主机
5.支持多种方式的HTTP认证
6.支持URL重写;等多种特性
二.httpd安装方式
主要安装方式分为两种:一种为rpm包安装;另一种为源码包安装
安装httpd软件包时,请现将SELinux处于permssive或disabled,否则可能某些服务无法启动
修改SELinux配置文件/etc/selinux/config,修改“SELINUX=permssive”
httpd软件包安装:yum -y install httpd (yum的搭建不多说了,可以查看本博客yum源的搭建)
三.Httpd端口,目录介绍
httpd默认端口为tcp/80端口;ssl 协议端口为443/tcp端口
httpd工作的默认根目录为/etc/httpd
http的配置文件目录为/etc/httpd/conf
httpd主配置文件为httpd.conf文件
以 /etc/httpd/conf.d/*.conf结尾的配置文件均为httpd.conf的主配置文件的组成部分
Apache Httpd模块化目录为/etc/httpd/modules
Apache Httpd日志目录为/etc/httpd/logs -->/var/log/httpd 指向/var/log/httpd目录文件
日志文件分为:访问日志access_log;错误日志err_log 两种
Apache Httpd网页目录为/var/www目录
/var/www目录下分为html目录和cgi-bin目录:html目录为静态网页目录如html语言开发的;
cgi-bin目录为动态网页目录如asp,php,jsp,Java等开发的网站程序。
CGI简介:
Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。cgi是外部应用程序(CGI程序)与Web服务器之间通信的接口,CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
四.httpd主配置文件/etc/httpd/conf/httpd.conf 详解
### Section 1: Global Environment 全局配置
ServerRoot "/etc/httpd" httpd服务器根目录
PidFile run/httpd.pid httpd服务进程pid,保存在httpd.pid文件中
KeepAlive Off 是否启用长链接【on or off】使用长连接可以有效的提高性能
MaxKeepAliveRequests 100 在启用长连接后用户最多一次请求的资源数,0表示无限制请求
KeepAliveTimeout 15 长连接的断开时常
# prefork MPM 多处理模块
mpm_winnt windows下多线程处理机制;
prefork Linux下预先生成进程处理机制,一个请求用一个进程进行响应;
worker多个线程处理,一个请求一个线程响应;
event一个进程处理多个请求
可以使用httpd -l命令查看当前Linux所支持那些mpm处理模块
httpd服务器默认使用worker处理模块,如果更改其他处理模块可修改httpd启动脚本来实现,httpd启动脚本配置文件为/etc/sysconfig/httpd,修改配置文件中#HTTPD=/usr/sbin/httpd.worker
<IfModule prefork.c>
StartServers 8 服务器启动时启动8个空闲进程
MinSpareServers 5 最少空闲5个进程接受用户请求
MaxSpareServers 20 最大空闲进程
ServerLimit 256 为MaxClients指定最大上限,修改时当前服务器必须关闭服务器kill所有进程,在重新启动
MaxClients 256 最大客户端数,最多只允许256个客户端同时请求,不能超过Serverlimit限定数
MaxRequestsPerChild 4000 一个进程最多响应4000次的用户请求
</IfModule>
<IfModule worker.c>
StartServers 4 服务器启动时启动4个进程
MaxClients 300 最大客户端数,最多只允许300个客户端同时请求
MinSpareThreads 25 最小空闲线程
MaxSpareThreads 75 最大空闲线程
ThreadsPerChild 25 每 一个进程生成25个线程
MaxRequestsPerChild 0 不做限定的用户请求
</IfModule>
#Listen 12.34.56.78:80
Listen 80 Httpd服务器默认监听端口80,可以同时监听多个端口
Listen 8080 或 127.0.0.1:8080
### Section 2: 'Main' server configuration server主配置
ServerAdmin root@localhost 服务器管理员
ServerName www.example.com:80 服务器Name
DocumentRoot "/var/www/html" 网站文档根目录,可直接修改目录路径
如要修改默认www文档根目录,必须要定义<Directory />Apache服务和功能是否被允许和访问
也可修改相应的配置文件中<Directory "/var/www/html"> 中的目录即可。
自定义<Directory />,格式如下
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Options选项参数
# 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
Indexes 索引网站目录,在网站安全中Indexes不可启用
None 不支持任何选项
FollowSymLinks 允许符号链接所指向的源文件
Includes 允许执行服务端包含SSI
ExecCGI 允许运行
MultiViews 多视图模式,耗费资源
ALL 支持所有选项
AllowOverride参数
# 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 允许覆盖服务器控制访问列表
AuthConfig 用户认证,提供用户帐号密码提供登录
Order:用于定义基于主机的访问功能的Ip,网络地址或主机定义访问控制
列子:如有一网站不想被192.168.100.1 和192.168.100.4 两个Ip地址访问如何配置Order?
AllowOverride None
Order deny,allow
Deny from 192.168.100.1 192.168.100.4
httpd -t 检测配置文件语法是否正确
纯文本浏览器 elinks 127.0.0.1
elinks -dump 127.0.0.1 打开网站后直接退出
elinks -source 127.0.0.1 显示网站源码
列子:基于用户认证,本地有baishouqijia 、白手起家、zhang,3个用户在访问网站时必须输入帐号密码进行访问,否则无法访问,该如何做?配置文件如下
创建htpasswd中的用户帐号密码
[root@localhost httpd]# htpasswd -c -m /etc/httpd/htpasswd baishouqijia
[root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd 白手起家
[root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd zhang
[root@localhost httpd]# httpd -t
[root@localhost httpd]# /etc/init.d/httpd restart
[root@localhost httpd]#
-m选项md5加密方式
-c选项创建htpasswd文件,创建第一个用户时使用,第二个用户则无效加-c,否则重新创建htpasswd文件并替换第一次添加用户时所创建的文件
测试:
开始登录提示输入帐号密码
输入帐号密码后
删除用户 htpasswd -D
DirectoryIndex index.html index.html.var 首页索引文件,如果一个网站程序中都包含,自左往右开始索引
ErrorLog logs/error_log 错误日志目录
LogLevel warn 日志级别
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h 客户端地址
%l 远程主机登录名称
%u 登录网站时登录的用户名称
%t 日志产生的时间
%r 请求报文的第一行
%>s 最后一次的请求的状态码
%b 响应报文的大小
%{Referer}i 网站来源
%{User-Agent}i 客户端浏览器的类型
Alias /icons/ "/var/www/icons/" 路径别名
列子:在/mnt/www/bbs下创建index.html 并使用别名/bbs访问
测试:
四、创建添加虚拟主机
[root@localhost conf]# vim /etc/httpd/conf/httpd.conf ### Section 2: 'Main' server configuration #DocumentRoot "/var/www/html" 注释掉 ### Section 3: Virtual Hosts 添加以下部分 NameVirtualHost *:80 <V<VirtualHost *:80> ServerName www.a.net DocumentRoot "/var/www/html/a.net" </VirtualHost> <VirtualHost *:80> ServerName www.b.com DocumentRoot "/var/www/html/b.com" </VirtualHost>
“51cto十周年博客活动”正在进行,你也来参加吧~
活动地址:http://51ctoblog.blog.51cto.com/26414/1679643