概要简介:
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
历史进程:
Apache最开始是Netscape网页服务器之外的开放源代码选择。后来它开始在功能和速度超越其他的基于Unix的HTTP服务器。1996年4月以来,Apache一直是Internet上最流行的HTTP服务器: 1999年5月它在 57% 的网页服务器上运行;到了2005年7月这个比例上升到了69%。在2005年11月的时候达到接近70%的市占率,不过随着拥有大量域名数量的主机域名商转换为微软IIS平台,Apache市占率近年来呈现些微下滑。而Google自己的网页服务器平台GWS推出后,加上Lighttpd这 个轻量化网页服务器软件使用的网站慢慢增加,反应在整体网页服务器市占率上,根据netcraft在2007年7月的最新统计数据,Apache的市占率已经降为52.65%,8月时又滑落到50.92%。尽管如此,它仍旧是现阶段因特网市场上,市占率最高的网页服务器软件。
名称来源:
对于Apache的名称,广泛的解释是(也是最显而易见的):这个名字来自这么一个事实:当Apache在1995年初开发的时候,它是由当时最流行的HTTP服务器NCSA HTTPd 1.3 的代码修改而成的,因此是“一个修补的(a patchy)”服务器。然而在服务器官方网站的FAQ中是这么解释的:“‘Apache’这个名字是为了纪念名为Apache(印地语)的美洲印第安人土著的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论如何,Apache 2.x 分支不包含任何 NCSA 的代码。
基本配置
环境安装
安装apache软件包:
yum install -y httpd
systemctl start httpd ##启动apache服务
systemctl enable httpd
查看服务开启的端口 :
http : 80
https : 443
配置文件
Apache 主配置文件 :
/etc/httpd/conf/httpd.conf
其中一些配置信息的解释:
ServerRoot "/etc/httpd" //用于指定 Apache 的运行目录
Listen 80 //监听端口
User apache 运行 apache //程序的用户和组
Group apache
ServerAdmin root@localhost //管理员邮箱
DocumentRoot "/var/www/html" //网页文件的存放目录(默认发布目录)
<Directory "/var/www/html"> // <Directory> 语句块自定义目录权限
Require all granted
</Directory>
ErrorLog "logs/error_log" //错误日志存放位置
AddDefaultCharset UTF-8 //默认支持的语言
IncludeOptional conf.d/*.conf //加载其它配置文件
DirectoryIndex index.html //默认主页(默认发布文件)名称
更改默认发布文件:
<IfModule dir_module>
164 DirectoryIndex index.html westos
//指定默认发布文件index.html,按顺序,如果顺序在前的文件不存在,读后面的文件westos
</IfModule>
systemctl restart httpd //重启服务生效
vim /var/www/html/index.xml //去编写你的网页文件
更改默认发布目录
mkdir /westos/html -p //递归创建
echo `hostname` > /westos/html/index.html
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/westos/html" ##默认目录改为/westos/html
121 <Directory "/westos/html">
122 Require all granted ##允许所有人登陆
123 </Directory>
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
//如果selinux开启,需要修改安全上下文,因为/var/www/html的安全上下文与/westos不同,所以/westos需要改变
restorecon -RvvF /westos ##同步安全上下文
systemctl restart httpd
允许指定用户访问
vim /etc/httpd/conf/httpd.conf
121 DocumentRoot "/westos/html"
122 <Directory "/westos/html">
123 Require all granted
124 Order Allow,Deny //不管写多少,只看最后面的
125 Allow from ALL|IP //允许所有人或者IP访问
126 Deny from ALL|IP //拒绝所有人或者IP访问
127 </Directory>
systemctl restart httpd //重启生效
配置基于用户的身份验证
Apache 无格式文件用户身份验证
在此配置中 , 用户账户和密码存储在本地 .htpasswd 文件中。处于安全原因 , 该文件不能保存在网站的 DocumentRoot 中 ,而应保存在 Web 服务器不提供服务的一些目录中。
htpasswd 命令用于在 .htpasswd 文件中管理用户 :
htpasswd -cm authfile admin //第一次创建新的用户,需要加-c
htpasswd -m authfile admin1... //后面的都是额外添加的,不用-c,如果有-c就会重新创建用户,之前创建的就没了
//只能/etc/httpd/conf/在这个目录下生成认证文件
修改主配置文件
vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" ##默认的根目录
120 DocumentRoot "/westos/html" //看哪个文件
121 <Directory "/westos/html">
122# Require all granted ##允许所有人登陆,通过密码访问需要注释掉,单独指定
123 AuthUserFile /etc/httpd/conf/authfile ##指定用户密码访问的文件
124 AuthName "please input your name and password" ##提示
125 AuthType basic ##一种基本认证方式
126# Require user admin 指定用户##这个设定只有admin用户可以访问
127 Require valid-user 指定文件中的用户 ##允许认证文件中所有用户通过帐号密码登陆
128 </Directory>
systemctl restart httpd //重启生效
//重新打开网站,需要输入用户及认证密码
虚拟主机
虚拟主机允许您从一个 httpd 服务器同时为多个网站提供服务。
现在讲解基于名称的虚拟主机其中多个主机名都指向同一个 IP 地址 , 但是 Web 服务器根据用于到达站点的主机名提供具有不同内容的不同网站。
mkdir -p /var/www/westos
mkdir /var/www/westos/news.westos.com -p
mkdir /var/www/westos/gongyi.westos.com -p
vim /var/www/westos/news.westos.com/index.html
vim /var/www/westos/gongyi.westos.com/index.html
cd /etc/httpd/conf.d/
//在其中添加news.conf gongyi.conf default.conf(这个文件是用来指定未定义的域名,将他们都引导到这个文件)'
default.conf
<Virtualhost _default_:80> //默认:指定端口
DocumentRoot "/var/www/html" //指定默认目录
CustomLog "logs/default.log" combined //combined : 四种类型文件都访问这个目录(access,warning,error,deny)
</Virtualhost>
//查看主配置文件中的说明,里面有对四种log文件的描述
vim news.conf //编辑其中的news.conf文件
<Virtualhost *:80> //*代表access:指定端口
ServerName news.westos.com
DocumentRoot /var/www/westos/news.westos.com
CustomLog "logs/news.log" combined
</Virtualhost>
//指定的要做授权,不然看不了:'
<Directory "/var/www/westos/news.westos.com">
Require all granted ##对此目录授权
</Directory>
客户端配置
本地解析是告诉是谁的浏览器,是谁的浏览器,就在谁上作本地解析
vim /etc/hosts 在最后添加
172.25.254.109 www.westos.com news.westos.com gongyi.westos.com
在配置了本地解析的浏览器上检测:
//同一个域,可以看到三个不同的网页