“Apache服务器配置与管理”的版本间的差异
(→Apache虚拟主机的配置) |
(→本章目标) |
||
第2行: | 第2行: | ||
− | == | + | == Web服务器简介 == |
+ | |||
− | |||
Internet上最热门的服务之一就是环球信息网WWW(World Wide Web)服务, Web已经成为很多人在网上查找、浏览信息的主要手段。 | Internet上最热门的服务之一就是环球信息网WWW(World Wide Web)服务, Web已经成为很多人在网上查找、浏览信息的主要手段。 | ||
第21行: | 第21行: | ||
− | Apache简介 | + | |
+ | == Apache简介 == | ||
Apache起源(http://httpd.apache.org) | Apache起源(http://httpd.apache.org) | ||
第39行: | 第40行: | ||
*Apache的工作性能和稳定性远远领先于其他同类产品。 | *Apache的工作性能和稳定性远远领先于其他同类产品。 | ||
− | Apache的安装 | + | |
+ | == Apache的安装 == | ||
+ | |||
*RPM安装 | *RPM安装 | ||
*编译安装 | *编译安装 | ||
第47行: | 第50行: | ||
可在终端命令窗口中按如下方式操作,查看是否已安装了Apache: | 可在终端命令窗口中按如下方式操作,查看是否已安装了Apache: | ||
− | + | [root@cloud17 ~]# rpm -qa |grep httpd | |
+ | |||
+ | <nowiki>httpd-2.2.15-5.el6.x86_64 | ||
+ | httpd-tools-2.2.15-5.el6.x86_64</nowiki> | ||
如果出现以上的软件包名称,则表示系统已经安装了Apache。 | 如果出现以上的软件包名称,则表示系统已经安装了Apache。 | ||
第54行: | 第60行: | ||
[root@localhost Server]# rpm –ivh httpd-2.2.3-22.el5.i386.rpm | [root@localhost Server]# rpm –ivh httpd-2.2.3-22.el5.i386.rpm | ||
− | |||
== RPM安装 == | == RPM安装 == |
2018年7月8日 (日) 06:03的版本
Web服务器搭建与配置
目录
Web服务器简介
Internet上最热门的服务之一就是环球信息网WWW(World Wide Web)服务, Web已经成为很多人在网上查找、浏览信息的主要手段。
Web服务具有如下特点
- Web是图形化的和易于导航的
- Web是与平台无关的
- Web是分布式的
- Web是动态的
- Web是交互的
- Web系统是客户/服务器式的。
- WWW服务遵从HTTP协议,默认的TCP/IP端口是80。
客户可以在浏览器的地址栏内输入统一资源定位地址(URL)来访问Web页面。
Apache简介
Apache起源(http://httpd.apache.org)
Apache版本和主要的特点
Apache简介
2007年10月,根据Netcraft公司的调查结果显示Apache是世界上排名第一的WEB服务器。 如下图所示:
Apache特性
- Apache具有跨平台性,可以运行在UNIX、Linux和Windows等多种操作系统上。
- Apache凭借其开放源代码的优势发展迅速,可以支持很多功能模块。借助这些功能模块,Apache具有无限扩展功能的优点。
- Apache的工作性能和稳定性远远领先于其他同类产品。
Apache的安装
- RPM安装
- 编译安装
在安装Apache前,需要确定系统中是否已安装了Apache软件。
可在终端命令窗口中按如下方式操作,查看是否已安装了Apache:
[root@cloud17 ~]# rpm -qa |grep httpd
httpd-2.2.15-5.el6.x86_64 httpd-tools-2.2.15-5.el6.x86_64
如果出现以上的软件包名称,则表示系统已经安装了Apache。
如果系统还未安装Apache,可以通过以下方法进行安装。
[root@localhost Server]# rpm –ivh httpd-2.2.3-22.el5.i386.rpm
RPM安装
检查是否安装RPM包
下载RPM安装包
http://rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/httpd-2.0.40-21.i386.rpm
安装RPM包
[root@webserver root]# rpm -ivh httpd-2.0.40-21.i386.rpm
另一种安装方式:
yum install httpd
Apache服务的安装软件包
httpd-2.0.52-9.ent .i386.rpm:Apache 2.0。 httpd-manual-2.0.52-9.ent.i386.rpm:Apache 2.0手册。 httpd-suexec-2.0.52-9.ent.i386.rpm:允许Apache以root用户身份运行程序的软件包。 system-config-httpd-1.3.1-1.noarch.rpm:Apache服务的图形化配置工具。
Apache服务的安装 Apache服务的启动与停止
# service httpd start # service httpd stop # service httpd restart
Httpd服务正式启动后,在浏览器的地址栏中输入:http://127.0.0.1,即可显示如下画面:
启动Apache服务之后的默认首页
RPM安装
RPM软件包安装结构
/etc/httpd/ 配置文件 /usr/bin/ 可执行命令 /usr/sbin/ 可执行脚本 /usr/share/doc Apaceh文档 /var/www/ 服务器提供客户端可访 问目录
编译安装
下载最新压缩包
http://apache.linuxforum.net/dist/httpd/httpd-2.0.48.tar.gz
解压、配置安装
解压缩 tar –xzvf httpd-2.0.48.tar.gz
配置 ./configure --prefix=/usr/local/apache --enable-so
编译 make
安装 make install
Web站点的建立
默认主机
IP:所有未分配的IP
端口:80
主目录:/var/www/html
默认主页文件
index.html
Apache简介 Apache是一个知名的Web服务器,是一个开源软件。 Apache的开发人员全部为志愿者,而不含任何商业行为。 Apache Web服务器是使用比例最高的Web服务器。Apache在功能、效率及速度方面居于领先的地位。
Apache Web服务器目录和文件
配置Apache服务器
配置文件: /etc/httpd/conf/httpd.conf 配置目录: /etc/httpd/conf.d/ 如果修改配置文件,可使用vim等。 文件中包含了许多指令,每一个指令设置了Apache服务器的一项配置信息。 以#开头的内容,是帮助信息。
2、Apache服务器基本配置参数
对Apache服务器的配置,主要是通过编辑Apache的主配置文件httpd.conf来实现的,主配置文件在/etc/httpd/conf目录下。修改httpd.conf文件后,必须重新启动httpd服务,所做的修改才能够生效。
httpd.conf是一个文本文件。
httpd.conf配置文件主要由三个部分组成,分别是全局环境变量(Global Enviroment)、主服务器配置(Main server configuration)和虚拟主机设置(Virtual Hosts)。
以下介绍httpd.conf文件中几个基本配置:
(1)ServerRoot:设置根目录的路径
Apache服务器根目录是指Apache存放配置文件和日志文件的目录,默认情况下根目录位于“/etc/httpd”。根目录下一般包含conf和logs子目录。命令如下:
ServerRoot “/etc/httpd”
2)Listen:设置监听IP地址及端口号
该参数设置web服务器监听客户端web请求的本机IP和端口号命令如下: Listen 80 Listen 192.168.18.100:8080
一般将该参数设为本服务器的某块网卡的IP地址及对应Web服务器的端口。
3)ServerAdmin:设置系统管理员E-mail
当客户端访问服务器发生错误时,服务器通常会向客户端返回错误提示网页,为了便于排除错误,这个网页中通常包含有系统管理员的E-mail地址。可使用ServerAdmin设置管理员的E-mail,例如: ServerAdmin admin@sdcet.cn
4)ServerName:设置服务器主机名称
参数ServerName可使服务器识别自身的信息,如果服务器有域名,则该参数设为服务器域名,如果没有域名则填入服务器的IP地址。命令如下:
ServerName www.sdcet.cn:8080
或:
ServerName 192.168.18.100:8080
(5)DocumentRoot:设置fwq主目录的路径
该参数指明web站点主目录的默认路径,需要发布的网页一般都放在这个目录下。为了方便管理和使用,每个web站点都有一个自己的主目录路径。例如,sdcet站点的主目录路径为:
DocumentRoot “/var/www/sdcet”
(6)DirectoryIndex:设置web站点默认主页
在一般情况下,web站点的默认主页文件名由DirectoryIndex配置参数定义,Apache的默认主页文件名为index.html,用户也可以将DirectoryIndex的参数值修改为其他文件:
DirectoryIndex index.html index.html.var
7)AddDefaultCharset:设置默认字符集
AddDefaultCharset选项定义了服务器返回给客户机的默认字符集。Apache默认字符集是UTF-8,当客户端访问中文网页时会出现乱码现象。解决的办法就是将默认字符集改为GB2312,如下例所示:
AddDefaultCharset GB2312
Apache虚拟主机的配置
虚拟主机能够实现用一个Web服务器设置多个Web站点的功能。从而实现多用户对硬件资源和网络资源的共享,大幅度降低用户建立网站的成本。
虚拟主机技术使得每一台虚拟主机都具有独立的域名和IP地址,并具有完整的Web服务器功能。各个虚拟主机之间是完全独立的,从外界来看,虚拟主机和独立主机的表现是完全一样的。
在配置虚拟主机时,需使用<VirtualHost>语句,该语句必须成对出现。<VirtualHost>和</VirtualHost>语句之间封装了设置虚拟主机属性的语句,大部分的配置语句都在<VirtualHost>和</VirtualHost>语句之间,与配置独立的Web服务器类似。
配置基于IP的虚拟主机
基于IP的虚拟主机的服务器绑定多个IP,然后通过配置Apache,把多个网站绑定在不同的IP上,用户访问服务器上不同的IP,就可看到不同的网站。
配置基于IP的虚拟主机有两种方法:一种是IP地址相同,但端口号不同;另一种是端口号相同,但IP地址不同。
配置基于域名的虚拟主机
基于域名的虚拟主机服务器只需有一个IP地址即可创建多台虚拟主机,所有的虚拟主机共享同一个IP地址,各虚拟主机之间通过域名进行区分。此时需要在DNS服务器中添加域名与IP地址的映射关系。
假设服务器的IP地址为192.168.18.100,要配置的虚拟主机是www.sdcet.cn和www.sdu.edu.cn,在DNS中应有www.sdcet.cn和www.sdu.edu.cn域名与IP地址192.168.18.100的映射关系。
1)配置DNS
在DNS服务器中建立两个主机地址A资源记录,将这两个记录解析到同一个IP地址上,即192.168.18.100。
2)在Apache服务器的主配置文件httpd.conf中,添加以下语句:
NameVirtualHost 192.168.18.100 //必须指定哪个IP地址 <VirtualHost www.sdcet.cn> ServerName www. sdcet.cn:80 ServerAdmin admin@sdcet.cn DocumentRoot “/var/www/web1” DirectoryIndex index.html </VirtualHost> <VirtualHost www.sdu.edu.cn> ServerName www.sdu.edu.cn:80 ServerAdmin admin@sdu.edu.cn DocumentRoot “/var/www/web2” DirectoryIndex index.html </VirtualHost>
(3)创建基于域名的虚拟主机时,必须先用NameVirtualHost指令指定哪个IP地址负责响应对虚拟主机的请求,然后用<VirtualHost 虚拟主机名>来指明这台虚拟主机使用哪个域名。
(4)配置服务器IP地址。
(5)重启httpd服务,即可实现基于域名的虚拟主机配置。
Apache配置时经常用到的指令
1、DocumentRoot
默认值:DocumentRoot “/var/www/html/” 设置Apache提供文件服务的目录;
2、Listen
默认值:所有能够连接到服务器的IP地址 指定如何响应除去Port指定的端口地址外的地址请求;
3、ServerName
设定Apache服务器的主机名称;
4、ServerRoot
指定一个目录,这个目录中存储了Apache服务器的配置文件,默认值:ServerRoot /etc/httpd/
Apache 的性能设置
- vi /etc/httpd/conf/httpd.conf
格式如下:
[全局设置] //设置Web服务器性能参数 全局选项 ……… … … … [主服务器的设置] //设置默认站点的相关选项 主服务器的选项 … … … … … [虚拟主机] //设置虚拟主机相关选项 … … …
配置文件语法结构
配置文件:/etc/httpd/conf/httpd.conf
文件中除了注释和空行外,其他行为指令行。指令又分为类似于shell的命令和容器指令。
shell指令用于全局配置,基本语法为:
配置参数名称 参数值
例如:DocumentRoot “/var/www/html” 设置web站点的文档根目录
Apache的基本配置指令
KeepAlive:将KeepAlive 的值设为On,以便提高访问性能。
MaxClients:最大客户连接数,根据服务容量修改此值。
ServerAdmin:将ServerAdmin的值设为Apache服务器管理员的E-Mail地址。
DirectoryIndex:在此指令后添加其他的默认主页文件名,例如可以添加index.html等。
1.Apache服务器的主配置文件
Apache服务器的主配置文件是httpd.conf,该文件不区分大小写,在该文件中以“#”开始的行为注释行。除了注释和空行外,其他行为指令。指令又分为类似于shell的命令和伪HTML标记。httpd.conf文件主要由以下三部分组成:
- 全局环境配置
- 主服务器配置
- 虚拟主机配置
全局环境配置
(1)Server Tokens OS:当服务器响应主机头(header)信息时显示Apache的版本和操作系统名称。 (2)ServerRoot "/etc/httpd":设置存放服务器的配置、出错和记录文件的根目录。 (3)PidFile run/httpd.pid:指定记录httpd守护进程的进程号的PID文件。 (4)Timeout 120:设置客户程序和服务器连接的超时时间间隔。 (5)KeepAlive Off:设置是否允许在同一个连接上传输多个请求,取值为on/off。 (6)MaxKeepAliveRequests 100:设置一次连接可以进行的HTTP请求的最大次数。 (7)KeepAliveTimeout 15:设置一次连接中的多次请求传输之间的时间。 (8)Listen 12.34.56.78:80:设置Apache服务的监听IP和端口。 (9)LoadModule 参数值:设置动态加载模块。 (10)Include conf.d/*.conf:将由Serverroot参数指定的目录中的子目录conf.d中的*.conf文件包含进来,即将/etc/httpd/conf.d目录中的*.conf文件包含进来。
主服务器配置
(1)User apache和Group apache:设置运行Apache服务器的用户和组。 (2)ServerAdmin root@localhost:设置管理Apache服务器的管理员的邮件地址。 (3)ServerName new.host.name:80:设置服务器的主机名和端口以标识网站。 (4)DocumentRoot “/var/www/html”:设置Apache服务器对外发布的网页文档的存放路径。 (5)Directory目录容器:Apache服务器可以利用Directory容器设置对指定目录的访问控制。 (6)DirectoryIndex index.html index.html.var:用于设置网站的默认首页的网页文件名。 (7)AccessFileName .htaccess:设置访问控制的文件名,默认为隐藏文件.htaccess。
虚拟主机配置
通过配置虚拟主机,可以在单个服务器上运行多个Web站点。虚拟主机可以是基于IP地址、主机名或端口号的。
- 基于IP地址的虚拟主机需要计算机上配有多个IP地址,并为每个Web站点分配一个惟一的IP地址。
- 基于主机名的虚拟主机,要求拥有多个主机名,并且为每个Web站点分配一个主机名。
- 基于端口号的虚拟主机,要求不同的Web站点通过不同的端口号监听,这些端口号只要系统不用就可以。
httpd.conf文件中关于虚拟主机部分的默认配置:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
容器指令
容器指令(container directive)的用途
可以在容器指令内配置不同对象的各种访问控制
容器指令的语法
包括在<>……</>括号内
常用的容器指令有:
<Directory>……</Directory> <Files>……</Files> <Location>……</Location> <VirtualHost>……</VirtualHost>
访问控制选项 描述 options 设置如何访问控制文件 allowoverride 设置特定目录中的配置 order 设置apache默认的访问权限及allow和deny语句的处理顺序 allow 设置允许访问apache服务器的主机 deny 设置拒绝访问apache服务器的主机
条件指令<IfDefine>和<IfModule>不是容器指令,他们是例外。
Options属性
Options可以组合设置下列选项:
All:用户可以在此目录中作任何事情。
FollowSymLinks:服务器可使用符号链接指向的文件或目录。
Indexes:允许目录访问,当访问的目录中没有directoryindex参数指定的网页时,会列出目录中的目录清单
None:不允许访问此目录。
AllowOverride
AllowOverride会根据设定的值决定是否读取目录中的.htaccess文件,来改变原来所设置的权限。
All:读取.htaccess文件的内容,修改原来的访问权限。
None:不读取.htaccess文件
为避免用户自行建立.htaccess文件修改访问权限,http.conf文件中默认设置每个目录为: AllowOverride None。
Allow
设定允许访问Apache服务器的主机
Allow from all
允许所有主机的访问
Allow from 202.96.0.97 202.96.0.98
允许来自指定IP地址主机的访问
Deny
设定拒绝访问Apache服务器的主机
Deny from all
拒绝来自所有主机的访问
Deny from 202.96.0.99 202.96.0.88
拒绝指定IP地址主机的访问
Order
Order allow,deny
Order用于指定allow和deny的先后次序。
范例:
Order deny,allow Deny from all Allow from 202.96.0.97 或者 Order allow,deny Allow from all Deny from 202.96.0.97
3种管理方式
站点内容管理
访问主机管理
访问用户管理
访问内容控制——应用别名访问
使用别名访问
别名指令
Alias <别名> <"实际路径">
alias /manual "/var/www/manual“
//设置/dir/test目录的访问权限 <Directory "/dir/test "> Options Indexes </Directory>
访问内容控制——应用符号链接访问 使用符号链接 在Apache的默认配置中已经包含了符号链接的指令 <Directory “/dir/test">
Options Indexes FollowSymLinks
</Directory> 配置举例
- cd /dir/test
- ln -s /usr/share/doc doc
访问内容控制—— URL地址重定向 重定向
当用户访问某一RUL地址时,Web服务器自动转向 另一个URL地址
语法格式: Redirect 错误响应代码 用户请求的RUL 重定向的URL 错误响应代码: 301 被请求的URL已被永久移到新的URL 302 被请求的URL被临时移到新的URL 303 被访问的页面已被替换 401 该页面不存在(该代码下的语法结构无重定
向的URL )
访问内容控制——配置每个用户的Web站点 拥有本地用户账号的每个用户都能够架设自己单独的Web站点。 配置每个用户的Web站点,需经过下面的配置步骤 修改主配置文件启用每个用户的Web站点配置。 <IfModule mod_userdir.c>
//基于安全考虑,禁止root用户使用自己的个人站点 UserDir
//配置对每个用户Web站点目录的设置 UserDir public_html </IfModule> 修改主配置文件为每个用户的Web站点目录配置访问控制。 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 配置每个用户的Web站点 用户在个人主目录下创建自己的Web站点需要执行的步骤 $ cd //创建目录public_html $ mkdir public_html $ cd public_html $vi index.html //创建index.html 基于主机的访问控制 访问控制的配置指令 Order:用于指定执行允许访问规则和执行拒绝访问规则的先后顺序 Deny:定义拒绝访问列表 Allow:定义允许访问列表 Order指令的两种形式 Order Allow,Deny 在执行拒绝访问规则之前先执行允许访问规则。 当没有定义拒绝访问列表和允许访问列表时,默认情况下将会拒绝所有没有明确被允许的客户。 Order Deny,Allow 在执行允许访问规则之前先执行拒绝访问规则。 默认情况下将会允许所有没有明确被拒绝的客户。 基于主机的访问控制 Deny和Allow Deny和Allow的语法 Allow from <访问列表> Deny from <访问列表> 访问列表的书写形式 All:表示所有客户。 域名:表示域内的所有客户,如jamond.net。 IP地址:可以指定完整的IP地址或部分IP地址。 网络/子网掩码:如192.168.1.0/255.255.255.255.0。
基于主机的访问控制 访问控制举例 允许来自jamond.net域的客户访问,拒绝所有其他客户访问。
Order Deny,Allow Deny from all Allow from jamond.net
允许来自jamond.net域的客户访问,但禁止主机osmond.jamond.net访问。
Order Allow,Deny Allow from jamond.net Deny from osmond. jamond.net
基于用户的认证访问控制 使用认证指令 在主配置文件的容器指令内使用 在.htaccess配置文件中使用 认证指令 AuthName AuthName <领域名称> 定义受保护领域的名称 AuthType AuthType Basic 定义使用的基本认证方式 AuthGroupFile AuthGroupFile <文件名> 指定认证组文件的位置 AuthUserFile AuthUserFile <文件名> 指定认证口令文件的位置 配置授权 当使用认证指令配置了认证之后,还需要为指定的用户或组进行授权。 为用户或组进行授权的指令是Require。 Require指令的三种使用格式: 授权给指定的一个或多个用户 Require user 用户名 [用户名] …… 授权给指定的一个或多个组 Require group 组名 [组名] …… 授权给认证口令文件中的所有用户 Require valid-user 管理认证口令文件和认证组文件 在添加第一个认证用户的同时创建认证口令文件
- htpasswd -c <认证口令文件名> < 用户名>
添加用户或修改已存在的用户的口令
- htpasswd <认证口令文件名> < 用户名>
设置完成后,认证口令文件的属主必须修改为apache
- chown apache:apache /etc/httpd/userpasswd
本章总结 Apache服务器是从NCSA httpd发展而来,支持多平台、线程、HTTP1.1协议、CGI和脚本程序、虚拟主机、Java Servlets、IPv6、DSO等功能 Apache安装分RPM安装和源代码编译安装,两种安装所生成的文件结构不同。源代码编译安装中默认支持DSO功能,可以使用configure命令配置模块安装为动态共享对象,而RPM包并没有包括该项功能 创建Apache服务器 (1)检查是否安装Apache服务器 (2)查看主配置文件中的DocumentRoot指令的值。显示结果说明/var/www/html是web站点的主目录,网页可以存储在这个目录中。 (3)执行ifconfig查看主机的IP地址(假设192.168.2.100)。 (4)启动Apache服务器。 (5)打开浏览器,输入http://192.168.2.100,或者http://127.0.0.1,或者http://localhost。可以看到Apache服务器输出的默认主页。 启动Apache服务之后的默认首页
(6)在目录/var/www/html中,使用vim文本编辑器,建立一个html文件,文件名称为index.html。 输入以下内容: <html> <head> <title>hello</title> </head> <body> hello,Apache</body> </html>
(7)在浏览器中输入http://192.168.2.100,即可看到新创建的网页。 (8)停止Apache服务器。