搭建 web 服务器
概述
Web(World Wide Web)是目前最常用的 Internet 协议之一。目前在 Unix-Like 系统中的 web 服务器主要通过 Apache 服务器软件实现。为了实现运营动态网站,产生了 LAMP(Linux + Apache +MySQL + PHP)。web 服务可以结合文字、图形、影像以及声音等多媒体,并支持超链接(Hyperlink)的方式传输信息。
EulixOS 系统中的 web 服务器版本是 Apache HTTP 服务器2.4版本,即 httpd,一个由 Apache 软件基金会发展而来的开源 web 服务器。
管理 httpd
概述
通过 systemctl 工具,可以对 httpd 服务进行管理,包括启动、停止、重启服务,以及查看服务状态等。本章介绍 Apache HTTP 服务的管理操作,以指导用户使用。
前提条件
为了能够使用 Apache HTTP 服务,请确保您的系统中已经安装 httpd 服务的 rpm 包。安装命令如下:
# dnf install httpd
更多关于管理服务的内容,请参见“管理服务”章节。
启动、停止和重启 httpd 服务,需要使用 root 权限。
启动服务
启动并运行 httpd 服务,命令如下:
# systemctl start httpd
假如希望在系统启动时,httpd 服务自动启动,则命令和回显如下:
# systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
说明:
假如正在运行的 Apache HTTP 服务器作为一个安全服务器,系统开机启动后需要密码,这个密码使用的是加密的私有 SSL 密钥。
停止服务
停止运行的 httpd 服务,命令如下:
# systemctl stop httpd
如果希望防止服务在系统开机阶段自动开启,命令和回显如下:
# systemctl disable httpd Removed /etc/systemd/system/multi-user.target.wants/httpd.service.
重启服务
重启服务有三种方式:
完全重启服务
# systemctl restart httpd
该命令会停止运行的 httpd 服务并且立即重新启动它。一般在服务安装以后或者去除一个动态加载的模块(例如PHP)时使用这个命令。
重新加载配置
# systemctl reload httpd
该命令会使运行的 httpd 服务重新加载它的配置文件。任何当前正在处理的请求将会被中断,从而造成客户端浏览器显示一个错误消息或者重新渲染部分页面。
重新加载配置而不影响激活的请求
# apachectl graceful
该命令会使运行的 httpd 服务重新加载它的配置文件。任何当前正在处理的请求将会继续使用旧的配置文件。
验证服务状态
验证 httpd 服务是否正在运行
# systemctl is-active httpd
回显为“active”说明服务处于运行状态。
配置文件说明
当 httpd 服启动后,默认情况下它会读取如[表1]所示的配置文件。
表 1 配置文件说明
文件 | 说明 |
---|---|
/etc/httpd/conf/httpd.conf | 主要的配置文件 |
/etc/httpd/conf.d | 配置文件的辅助目录,这些配置文件也被包含在主配置文件当中一个配置文件的辅助目录被包含在主要的配置文件中 |
虽然默认配置可以适用于多数情况,但是用户至少需要熟悉里面的一些重要配置项。配置文件修改完成后,可以使用如下命令检查配置文件可能出现的语法错误。
# apachectl configtest
如果回显如下,说明配置文件语法正确。
Syntax OK
说明:
- 在修改配置文件之前,请先备份原始文件,以便出现问题时能够快速恢复配置文件。
- 需要重启 web 服务,才能使修改后的配置文件生效。
管理模块和 SSL
概述
httpd 服务是一个模块化的应用,它和许多动态共享对象 DSO(Dynamic Shared Objects)一起分发。动态共享对象 DSO,在必要情况下,可以在运行时被动态加载或卸载。服务器操作系统中这些模块位于 /usr/lib64/httpd/modules/ 录下。本节介绍如何加载和写入模块。
加载模块
为了加载一个特殊的 DSO 模块,在配置文件中使用加载模块指示。独立软件包提供的模块一般在 /etc/httpd/conf.modules.d 目录下有他们自己的配置文件。
例如,加载 asis DSO 模块的操作步骤如下:
在 /etc/httpd/conf.modules.d/00-optional.conf 文件中,取消注释如下配置行。
LoadModule asis_module modules/mod_asis.so
加载完成后,请重启 httpd 服务以便于重新加载配置文件。
# systemctl restart httpd
加载完成后,使用 httpd -M 的命令查看是否已经加载了 asis DSO 模块。
# httpd -M | grep asis
回显如下,说明 asis DSO 模块加载成功。
asis_module (shared)
说明:
httpd 的常用命令
- httpd -v:查看 httpd 的版本号。
- httpd -l:查看编译进 httpd 程序的静态模块。
- httpd -M:查看已经编译进 httpd 程序的静态模块和已经加载的动态模块。
SSL 介绍
安全套接层 SSL(Secure Sockets Layer)是一个允许服务端和客户端之间进行安全通信的加密协议。其中,传输层安全性协议 TLS(Transport Layer Security)为网络通信提供了安全性和数据完整性保障。openEuler 支持 Mozilla NSS(Network Security Services)作为安全性协议 TLS 进行配置。加载 SSL 的操作步骤如下:
安装 mod_ssl 的 rpm 包。
# dnf install mod_ssl
安装完成后,请重启 httpd 服务以便于重新加载配置文件。
# systemctl restart httpd
加载完成后,使用 httpd -M 的命令查看是否已经加载了 SSL。
# httpd -M | grep ssl
回显如下,说明 SSL 已加载成功。
ssl_module (shared)
验证 web 服务是否搭建成功
Web 服务器搭建完成后,可以通过如下方式验证是否搭建成功。
查看服务器的 IP 地址,命令如下:
# ifconfig
回显信息如下,说明服务器 IP 为 192.168.1.60。
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.60 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::5054:ff:fe95:499f prefixlen 64 scopeid 0x20<link> ether 52:54:00:95:49:9f txqueuelen 1000 (Ethernet) RX packets 150713207 bytes 49333673733 (45.9 GiB) RX errors 0 dropped 43 overruns 0 frame 0 TX packets 2246438 bytes 203186675 (193.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 52:54:00:7d:80:9e txqueuelen 1000 (Ethernet) RX packets 149937274 bytes 44652889185 (41.5 GiB) RX errors 0 dropped 1102561 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 37096 bytes 3447369 (3.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 37096 bytes 3447369 (3.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
配置防火墙:
# firewall-cmd --add-service=http --permanent success # firewall-cmd --reload success
验证 web 服务器是否搭建成功,用户可选择 Linux 或 Windows 系统进行验证。
使用 Linux 系统验证
执行如下命令,查看是否可以访问网页信息,服务搭建成功时,该网页可以正常访问。
curl https://192.168.1.60
执行如下命令,查看命令返回值是否为0,返回值为0,说明 httpd 服务器搭建成功。
echo $?
使用 Windows 系统验证
打开浏览器,在地址栏输入如下地址,如果能正常访问网页,说明 httpd 服务器搭建成功。
如果修改了端口号,输入地址格式如下: