在Ihternet 网络环境中,Web 服务无疑是最为流行的应用系统。有了Web站点,企业可以充分 展示自己的产品,宣传企业形象。Web站点还为企业提供了与客户交流、电子商务交易平台等丰富 的网络应用。部署与维护Web 服务是运维工程师必须掌握的一个技能。 本章将介绍著名的Web网站服务—“Apache HTTP Server”的安装及httpd服务的基本配置。
Apache HTTP Server是广泛应用的Web应用系统之一,要运用好它,必须先了解它的特点及其编译安装过程。
在配置 Apache 网站服务之前,需要正确安装好httpd服务器软件。httpd服务器的安装可以选用 RPM安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。 在实际的生产环境中,使用源码编译安装的方式要更加普遍。
为了避免发生端口冲突、程序冲突等现象,建议卸载使用RPM方式安装的httpd。
Apache的配置及运行需要apr.pcre等软件包的支持,因此应从系统光盘镜像中预先安装这些软 件及其开发包(devel),以便提供相应的库和头文件,确保Apache的安装顺利完成。
(1)解包
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支 持等。
上述配置命令中,各选项的含义如下。
--prefix:指定将httpd服务程序安装到哪个目录下,如/usr/local/httpd。
--enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力。
--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。
--enable-cgi:启用CGl脚本程序支持,便于扩展网站的应用访问能力。
(3)编译及安装
完成配置以后,执行“make"命令进行编译,将源代码转换为可执行的程序;然后执行"make install” 命令完成最后的安装过程;将编译完的httpd程序及相关目录、文件复制到预设的安装目录(由配置 时的“一-prefix”选项指定)。其中“make”的过程可能会需要较长的时间。
由于指定的安装目录为/usr/local/httpd,因此 httpd服务的各种程序,模块、帮助文件等都将复制到此目录下。
在安装后的/usr/local/httpd目录下,主要子目录的用途如下.
/usr/local/httpd/bin:存放httpd服务的各种执行程序文件,包括主程序httpd、服务控制工 具apachectl等。
/usr/local/httpd/cgi-bin:存放各种CGl程序文件。
/usr/local/httpd/logs:存放httpd服务的日志文件。
/usr/local/httpd/conf:存放httpd服务的各种配置文件,包括主配置文件httpd.conf、增强 配置子目录 extra 等。
/usr/local/httpd/htdocs:存放网页文档,包括默认首页文件 index.html等。 /usr/local/httpd/modules:存放httpd 服务的各种模块文件。
通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接,添加超链接。
这样,再执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd-v”命令(用于查看 程序版本)时,即相当于执行“/usr/local/httpd/bin/httpd-v”命令。
CentOS 7系统下,将编译安装的程序添加为系统服务有两种方式:①通过chkconfig命令添加为 系统服务,然后由systemctl进行管理;②在/lib/systemd/system/目录下,手动编写以.service结尾 的单元(unit)配置文件。
(1)使用chkconfig添加系统服务
若希望将httpd添加为系统服务,以便通过chkconfig进行管理,需要建立可控的服务脚本,例如,可将apachectl脚本复制为/etc/init.d/httpd,并在文件开头添加chkconfig识别配置,然后将其 添加为标准的Linux系统服务。
(2)建立[service].service配置文件
在/lib/systemd/system/目录下,建立一个以.service结尾的单元(unit)配置文件,用于控制由 systemd控制或监控的htpd服务。配置文件主要分为三个部分,控制单元[Unit]的定义,服务[Service] 的定义以及安装部分[Install],具体内容如下所示。
配置文件的各配置项的作用如下所示
> Description:设置服务单元描述字符串。
> After:设置服务单元的启动先后顺序。例如,httpd.ervice 单元文件中出现“After= network.target“表示启动时先启动network.target.后启动httpd.service,关闭时顺序相反。 与After字段相对应的还有一个Before字段,如htpd.service 单元文件中出现 “Before=network.target”表示启动时先启动httpd.service,后启动network.target.
>Type:设置服务进程的启动类型.需要注意的是,当启动类型为forking时需要同时设置PIDFile 配置项,以帮助systemd准确定位到服务的主进程,
>PIDFile:设置服务的守护进程的PID文件.
>ExecStart:设置服务启动时执行的命令。
>ExecReload:设置服务重新加载时执行的命令。
>KillMode:设置在单元停止时,杀死进程的方法。
>process表示仅杀死主进程。
>Restart:设置服务进程正常退出.异常退出、被杀死,超时的时候,是否重启该服务.on-failure 表示仅在进程异常退出时重启。
>RestartSec:设置在重启服务前暂停多长时间,默认值是100毫秒(100ms). > WantedBy:设置该服务所在的Target(运行目标)。
>WantedBy=graphical.target(图形界面多 用户系统)是指,httpd 所在的Target是graphical.target,这个设置非常重要,因执行systemctl enable httpd.service”命令时,httpd.service 的符号链接就会放在/etc/systemd/system 目录 下的graphical.terget.wants子目录中。在系统进入graphical,target 运行目标时,该目录下的 所有服务均开机启动。该配置项常用的Target 除了 graphical.target之外,还有multi-user.target (非图形界面多用户系统)。
查看/usr/local/httpd/htdocs/index.html 可以看到网页的内容
客户机直接访问服务器IP就可以进入