共计 6846 个字符,预计需要花费 18 分钟才能阅读完成。
在 Internet 网络环境中,Web 服务无疑是最为流行的应用系统。有了 Web 站点,企业可以充分的展示自己的产品,宣传企业形象。Web 站点还为企业提供了与客户交流,电子商务交易平台等丰富的网络应用,部署与维护 Web 服务是运维工程师必须掌握的一个技能。
Windows 搭建 Web 服务可以参考博文:Windows Server 2016 搭建 IIS(web)服务
如果想要在 CentOS 7 利用 Apache 搭建网站服务,必须要了解的知识点有:
Apache 的起源
1.Apache HTTP Server 是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供网页浏览服务,Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统中;
2.Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合,完善后形成的软件,其名称来源于“A Patchy Server”,意思就是“基于原有 Web 服务程序的代码进行修改(补丁)后形成的服务器程序”;
3. 目前 Apache 项目一直由 ASF 负责管理和维护。ASF 的官方网站是 http://www.apache.org
Apache 的主要特点:
- 开放源代码;
- 跨平台应用;
- 支持各种 Web 编程语言;
- 模块化设计;
- 运行非常稳定;
- 良好的安全性。
安装 httpd 服务器
在配置 Apache 网站服务之前,需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式。前者相对比较简单、快速,但是在功能上存在一定的局限性,在实际的生产环境中,使用源代码编译安装的方式的方式要更加普遍。
本次实验将以下载的源码包 httpd-2.4.25.tar.gz 为例,介绍安装过程。(源码包 httpd-2.4.25.tar.gz可以到 Linux 公社资源站下载:
—————————————— 分割线 ——————————————
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2019 年资料 / 8 月 /16 日 /CentOS 7 利用 Apache 搭建 Web 网站服务 /
下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm
—————————————— 分割线 ——————————————
操作步骤:
具体实验步骤
一、准备工作
为了避免发生端口冲突、程序冲突等现象,建议卸载使用 RPM 方式安装的 httpd。
[root@localhost ~]# rpm -e httpd --nodeps
错误:未安装软件包 httpd
Apache 的配置及运行需要 apr、pcre 等软件包的支持,因此应从系统光盘镜像中预先安装这些软件及其开发包(devel),以便提供相应的支持,确保 Apache 的安装顺利完成。
需要的 rpm 软件包有:
[root@localhost Packages]# rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm
[root@localhost Packages]# rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh openldap-devel-2.4.40-13.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm
[root@localhost Packages]# rpm -ivh pcre-8.32-15.el7_2.1.x86_64.rpm
按照顺利安装完成。
二、源码编译安装
将下载好的源代码 httpd-2.4.25.tar.gz 上传到服务器本地,接下来开始编译安装。
1. 解包
[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/httpd-2.4.25/
2. 配置
根据服务器的实际应用需要,可以灵活设置不同的定制项,若要获知可用的各种配置选项及其含义,可以执行“./configure –help”命令,“/”表示当前目录,下面配置一些最常用的配置项:
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
上述配置命令中,各选项的含义:
3. 编译及安装
完成配置后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“make install”命令完成最后的安装过程。
[root@localhost httpd-2.4.25]# make && make install
三、确认安装目录
由于指定的是安装目录为 /usr/local/httpd,因此 httpd 服务的各种程序、模块、帮助文件都将复制到此目录下。
[root@localhost httpd-2.4.25]# ls /usr/local/httpd
bin cgi-bin error icons logs manual
build conf htdocs include man modules
在安装后的 /usr/local/httpd 目录下,主要子目录的用途:
httpd 服务的目录结构:
主要的目录和文件
服务目录:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
网页目录:/usr/local/httpd/htdocs/
服务脚本:/usr/local/httpd/bin/apachectl
执行程序:/usr/local/httpd/bin/httpd
访问日志:/usr/local/httpd/log/access_log
错误日志:/usr/local/httpd/log/error_log
四、优化执行路径
通过源码安装的 httpd 服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
[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
lrwxrwxrwx. 1 root root 30 7 月 13 19:20 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
lrwxrwxrwx. 1 root root 26 7 月 13 19:20 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
这样在执行相关的命令就不需要输入冗长的路径了。比如:
[root@localhost httpd-2.4.25]# httpd -v // 查看程序版本
Server version: Apache/2.4.25 (Unix)
Server built: Jul 13 2019 18:49:20
五、添加 httpd 系统服务
CentOS 7 系统下,将编译安装的程序添加为系统服务有两种方式:
①通过 chkconfig 命令添加为系统服务,然后由 systemctl 进行管理(注意,通过这种方式不能设置程序开机自启动);
②在 /lib/systemd/system/ 目录下,手动编写以.service 结尾的单元(unit)配置文件。
1)使用 chkconfig 添加系统服务
若希望将 httpd 添加为系统服务,以便通过 chkconfig 进行管理,需要建立可控的服务器脚本。
[root@localhost ~]# cp /usr/local/httpd//bin/apachectl /etc/init.d/httpd
[root@localhost ~]# vim /etc/init.d/httpd // 添加如下内容
#!/bin/bash
# chkconfig: 35 85 21
\\ 服务识别参数,在级别 3、5 中启动;启动和关闭的顺序分别为 85、21
#description: Startup script for the Apache HTTP Server
\\ 服务描述信息,可以忽略
………… // 忽略部分内容
[root@localhost httpd-2.4.25]# chkconfig --add httpd
\\ 添加 httpd 为系统服务
[root@localhost httpd-2.4.25]# systemctl start httpd
// 启动 httpd 服务
[root@localhost httpd-2.4.25]# chkconfig --level 35 httpd on
// 设置 httpd 服务为开机自启动
[root@localhost httpd-2.4.25]# systemctl is-enabled httpd
httpd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig httpd --level=5
enabled
// 查看 httpd 服务是否为开机自启动,enabled 为开机自启动
2)建立 [service].service 配置文件
在 /lib/systemd/system/ 目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制 httpd 服务。配置内容分为三部分:
①控制单元(unit)的定义;
②服务 [service] 的定义;
③安装部分 [install]。
具体内容,如下:
[root@localhost ~]# vim /lib/systemd/system/httpd.service
// 填写如下内容
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=graphical.target
配置文件的个配置项的作用,如图所示:
httpd.service 文件编写完成后,就可以设置开机自启动了
[root@localhost ~]# systemctl enable httpd // 设置开机自启动
Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl is-enabled httpd // 查看自启动服务状态
enabled
通过 Apache 搭建的 httpd 服务已经完成!客户端就已经可以访问了,但是我们来认识一些基本的配置:
一、配置并启动服务
1. 配置 httpd 服务
编辑 httpd 服务的主配置文件 httpd.conf,查找到配置项“ServerName”去除前面“#”号即可!(如果有合法的域名,建议修改成合法的域名,将来通过域名访问)
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
………… // 省略部分内容
ServerName www.example.com:80
………… // 省略部分内容
修改完成后,建议使用带“-t”选项的 apachectl 命令对配置文件进行语法检查!
[root@localhost ~]# apachectl -t
Syntax OK
2. 启动 httpd 服务
[root@localhost ~]# systemctl start httpd // 启动 httpd 服务
[root@localhost ~]# netstat -anpt | grep httpd // 查看监听端口
tcp6 0 0 :::80 :::* LISTEN 59183/httpd
二、部署网页文档
httpd 服务器已提供了一个名为 index.html 的测试网页,做为访问网站的默认首页(可以自行编辑)!
[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
三、客户机访问
客户机通过 IP 访问
如果需要使用 https 的方式访问,则需要:
[root@localhost yum.repos.d]# yum -y install mod_ssl
\\ 安装所选的 ssl 模块
[root@localhost yum.repos.d]# systemctl restart httpd
\\ 重新启动 httpd 服务
客户机访问测试:
使用 https 访问,默认的首页时,将显示 APache 官网首页!
如果需要域名访问,需要搭建 DNS 服务,搭建 DNS 服务可以参考博文 CentOS 7 搭建 DNS 服务
四、查看 Web 站点的访问情况
httpd 服务器使用两种类型的日志:访问日志和错误日志。
通过查看访问日志文件 access_log,可以及时了解 Web 站点的访问情况。
访问日志中每行对应一条访问记录,记录了客户机的 IP 地址、访问服务器的日期和时间、请求的网页对象等信息。
[root@localhost ~]# tail /usr/local/httpd/logs/access_log
192.168.1.100 - - [13/Jul/2019:20:29:40 +0800] "GET / HTTP/1.1" 200 45
通过查看错误日志 err_log,可以为排查服务器运行故障提供参考依据。
错误日志文件中每行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误时间的内容描述等。
上述过程是使用 Apache 搭建 Web 服务器的基本步骤,其中涉及 httpd.conf 配置文件的改动量非常少,要搭建一台简单的 Web 服务器还是非常简单的。
我们来认识 httpd 服务的主要配置文件及各项的含义:
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
ServerRoot "/usr/local/httpd"
Listen 80
User daemon
Group daemon
ServerAdmin you@example.com
ServerName www.example.com:80
DocumentRoot "/usr/local/httpd/htdocs"
DirectoryIndex index.html
ErrorLog "logs/error_log"
LogLevel warn
CustomLog "logs/access_log" common
PidFile "logs/httpd.pid"
AddDefaultCharset UTF-8
Include conf/extra/httpd-default.conf
上述设置行中,各全局配置项的含义,如图:
以上配置项是 Httpd.conf 文件中主要的全局配置项,还有很多其他的配置项,在此就不一一介绍了,如果有需要可以查看 Apache 服务器中的相关帮助手册。
: