Apache网站服务基础
Apache HTTP Server是广泛应用的Web 应用系统之一,要运用好它,必须先了解它的特点及其 编译安装过程。
Apache简介
Apache HTTP Server是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务, 在Web服务器领域中长期保持着超过半数的份额,Apache服务器可以运行在Linux,UNX,Windows 等多种操作系统平台中。
Apache 的主要特点
Apache服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足Web服务 器用户的应用需求,其主要特点包括以下几个方面。
开放源代码:这是Apache服务器的重要特性之一,也是其他特性的基础。Apache 服务程序 由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的 精神。
跨平台应用:这个特性得益于Apache的源代码开放。Apache服务器可以运行在绝大多数软 硬件平台上,所有UNX操作系统都可以运行Apache服务器,Apache服务器甚至可以良 好地运行在大多数Windows系统平台中,Apache服务器的跨平台特性使其具有被广泛应用 的条件。
支持各种Web编程语言:Apache 服务器可支持的网页编程语言包括Perl.PHP.Python.Java 等,甚至微软的ASP技术也可以在Apache服务器中使用,支持各种常用的Web编程语言 使Apache 具有更广泛的应用领域。
模块化设计:Apache并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过 标准的模块实现专有的功能,这为Apache服务器带来了良好的扩展性,其他软件开发商 可以编写标准的模块程序,从而添加Apache本身并不具有的其他功能。
运行非常稳定:Apache服务器可用于构建具有大负载访问量的Web站点,很多知名的企业 网站都使用Apache作为Web 服务软件.
良好的安全性:Apache服务器具有相对较好的安全性,这是开源软件共同具有的特性。并 且,Apache的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供 尽可能安全的服务器程序。
实验案例 构建http网站服务器
1. 先进行挂载
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
下载相关的软件和开发包
[root@localhost ~]# rpm -ivh apx-1.4.8-3.el7.x86_64.xpm
[root@localhost ~]# rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm
[root@localhost ~]# rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh openldap-devel-2.4.40-13.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh apr-uti1-devel-1.5.2-6.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm
[root@localhost ~]# rpm -ivh pere-8.32-15.e17_2.1.x86_64.rpm
去ftp把 httpd-2.4.25.tar.gz 压缩包下载下来
[root@localhost ~]# wget --ftp-user=135 --ftp-password=123.123
ftp://172.16.37.13/软件下载/y2/y2c/httpd-2.4.25.tar.gz
2.源码编译及安装
源码编译安装httpd服务的过程主要包含解包,配置、编译及安装。
1)解包 将下载获得的httpd源码包解压并释放到/usr/src目录下,且切换到展开后的源码目录中。
[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/httpd-2.4.25/
2)配置
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd -enable-so
-enable-rewrite -enable-charset-lite --enable-cgi
3)编译及安装
[root@localhost httpd-2.4.25]# make
[root@localhost httpd-2.4.25]# make install
3.确认安装结果
由于指定的安装目录为/usr/local/httpd,因此httpd服务的各种程序、模块,帮助文件等都将复 制到此目录下
[root@localhost httpd-2.4.25]# ls /usr/local/httpd/
4.优化执行路径
[root@localhost httpd-2.4.25]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@localhost httpd-2.4.25]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
这样,再执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd -v”命令(用于查看 程序版本)时,即相当于执行"/usr/local/httpd/bin/httpd -v”命令。
[root@localhost httpd-2.4.25]# httpd -v
5.添加httpd系统服务
[root@localhost httpd-2.4.25]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.25]# vim /etc/init.d/httpd
[root@localhost ~]# chkconfig --add httpd //将httpd添加为系统服务
2) 建立[service].service配置文件
[root@localhost ~]# vim /lib/systemd/httpd.service
并在文档中插入
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=graphical.target
编写完成后,执行如下命令设置httpd 服务开机启动
[root@localhost ~]# systemctl enable httpd.service
[root@localhost ~]# systemctl is-enabled httpd.service
1.2.1 Web站点的部署过程
1.确定网站名称、IP地址
若要向hternet 中发布一个Web站点,需要申请一个合法的互联网P地址,并向DNS服务提供 商注册一个完整的网站名称,在企业内部网络中,这些信息可以自行设置,例如,Web主机的P地 址为192.168.4.123.网站名称为www.bdqn.com。
当然,若要在客户机的浏览器中通过地址www.bdqn.com来访问此Web站点,还应该有可用的 DNS域名服务。例如,客户机所使用的DNS 服务器应能够将www.bdqn.com解析为IP地址 192.168.4.123.
在Web服务器本机中,将IP地址设置为192.168.4.123,将主机名称设置为www.bdqn.com: 并修改/etc/hosts文件,添加相应的映射记录以提高本地解析速度。
2.配置并启动httpd服务
1)配置httpd服务
编辑httpd 服务的主配置文件httpd.conf,查找配置项“ServerName“.在附近添加一行内容 “ServiceName www.bdgn.com”,用于设置网站名称.关于httpd.conf文件中的更多配置项,将在1.2.2 小节中详细介绍。
[root@node01 ~]# vim /usr/local/httpd/conf/httpd.conf
[root@localhost ~]# apachectl -t
2)启动httpd服务
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# netstat -anpt | grep httpd
3)部署网页文档
[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html
[root@localhost ~]# vim /usr/local/httpd/htdocs/index.html 更改网页文档
5.查看Web站点的访问情况
httpd 服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别为 access_log和error_log.均位于/usr/local/httpd/logs目录下。
通过查看访问日志文件access_log.可以及时了解Web站点的访问情况,访问日志中的每行对 应一条访问记录,记录了客户机的P地址,访问服务器的日期和时间,请求的网页对象等信息,例 如,当从客户机192.168.4.110访问Web站点以后,访问日志将会记录“192.168.4.110…… GET/HTTP/1.1……的消息。
[root@localhost ~]# tail /usr/local/httpd/logs/access_log
1.2.2 httpd.conf配置文件
若要对Web站点进行更加具体,更加强大的配置,仅仅学会添加“ServerName”配置项显然是远远不够的,还需要进一步熟悉httpd.conf 配置文件,了解其他各种常见的配置项。
主配置文件htpd.conf 由注释行、设置行两部分内容组成。与大多数Linux配置文件一样,注释 性的文字以“#”开始,包含了对相关配置内容进行的说明和解释,除了注释行和空行以外的内容 都是配置行,构成了Web服务的有效配置,根据配置所作用的范围不同,设置行又可分为全局配置. 区域配置。
1.全局配置项
全局配置决定httpd服务器的全局运行参数,使用“关键字值的配置格式。例如,配置网站名 称时使用的“ServerName www.bdon.com”.其中“ServerName”为配置关键字,而“www.bdon.com” 为对应的值。
每条全局配置都是一项独立的配置,不需要包含在其他任务区域中.以下列出了 htpd.conf 文件 中最常用的一些全局配置项。
在上述设置行中,各全局配置项的含义如下。
> ServerRoot:设置httpd服务器的根目录,该目录下包括了运行Web站点必需的子目录和文 件,默认情况下,httpd服务器的根目录为httpd的安装目录,因此本章中默认的根目录为 /us/local/httpd,与编译安装时所指定的httpd 安装目录相同,在httpd.conf 配置文件中 如果指定目录或文件位置时不使用绝对路径,则该目录或文件位置都认为是在服务器的根 目录下。
Listen:设置 httpd 服务器监听的网络端口号,默认为80。
User:设置运行 httpd进程时的用户身份,默认为daemon。
Group:设置运行htpd进程时的组身份,默认为daemon。
ServerAdmin:设置htpd服务器的管理员E-mail 地址,可以通过此E-mail 地址及时联系 Web 站点的管理员。
ServerName:设置Web站点的完整主机名(主机名+域名).
DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易 和 ServerRoot 混淆,需要格外注意。
Directorylndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格分开,默 认的首页文件为index.html.
ErorLog:设置错误日志文件的路径,默认路径为logs/eror_log.
LogLevel:设置记录日志的级别,默认级别为wamn(警告).
CustomLog:设置访问日志文件的路径、日志类型,默认路径为logs/access_log,使用的类 型为common(通用格式).
PidFile:设置用于保存httpd进程号(PID)的文件,默认保存地址为logs/httpd.pid,logs目 录位于Apache的服务器根目录下。
AdoDefaultCharset:设置站点中的网页默认使用的字符集编码,如utf-8.gb2312等。
Include:包含另一个配置文件的内容,可以现将一些特殊功能的配置放到一个单独的文 件中,再使用lnclude 配置项将其包含到httpd.conf文件中,这样便于独立进行配置功能的 维护而不影响主配置文件。
2.区域配置项
除了全局配置项以外,httpd.conf文件中的大多数配置是包括在区域中的,区域配置使用一 对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。
在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对根目录 有效,而不会作用于全局或其他目录区域,需要注意的是,这里所说的根目录是指设置httpd服务器 的根目录(ServerRoot 所设置的值),而不是CentOS系统的根目录。