前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它提供许多强大的功能,包括动态加载模块、强大的媒体支持以及与其他流行软件的广泛集成。
在本指南中,您将在 CentOS 7 服务器上安装一个带有虚拟主机的 Apache Web 服务器。
您需要以下内容才能完成本指南:
Apache 可以在 CentOS 的默认软件仓库中找到,这意味着您可以使用 yum
软件包管理器来安装它。
作为先决条件中配置的非 root sudo 用户,更新本地 Apache httpd
软件包索引以反映最新的上游更改:
sudo yum update httpd
一旦软件包更新完成,安装 Apache 软件包:
sudo yum install httpd
确认安装后,yum
将安装 Apache 和所有必需的依赖项。
如果您已经按照先决条件部分提到的《为新的 CentOS 7 服务器进行额外推荐步骤》指南安装了 firewalld
,您需要打开端口 80
以允许 Apache 通过 HTTP 提供请求。如果您还没有这样做,可以使用以下命令启用 firewalld
的 http
服务:
sudo firewall-cmd --permanent --add-service=http
如果您计划配置 Apache 通过 HTTPS 提供内容,还需要通过启用 https
服务来打开端口 443
:
sudo firewall-cmd --permanent --add-service=https
接下来,重新加载防火墙以使这些新规则生效:
sudo firewall-cmd --reload
防火墙重新加载后,您就可以启动服务并检查 Web 服务器了。
在 CentOS 上,安装完成后 Apache 不会自动启动。您需要手动启动 Apache 进程:
sudo systemctl start httpd
使用以下命令验证服务是否正在运行:
sudo systemctl status httpd
当服务正在运行时,您将看到一个 active
状态:
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1290 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─1290 /usr/sbin/httpd -DFOREGROUND
├─1291 /usr/sbin/httpd -DFOREGROUND
├─1292 /usr/sbin/httpd -DFOREGROUND
├─1293 /usr/sbin/httpd -DFOREGROUND
├─1294 /usr/sbin/httpd -DFOREGROUND
└─1295 /usr/sbin/httpd -DFOREGROUND
...
从此输出中可以看出,服务似乎已成功启动。不过,测试的最佳方法是从 Apache 请求页面。
在服务器的命令提示符下输入以下命令:
hostname -I
curl -4 icanhazip.com
http://your_server_ip
您将看到默认的 CentOS 7 Apache 网页:
!Default Apache page for CentOS 7
现在你已经启动并运行了你的 Web 服务器,让我们来了解一些基本的管理命令。
要停止你的 Web 服务器,请输入:
sudo systemctl stop httpd
要在停止状态下启动 Web 服务器,请输入:
sudo systemctl start httpd
要停止然后再次启动服务,请输入:
sudo systemctl restart httpd
如果你只是在进行配置更改,Apache 通常可以在不中断连接的情况下重新加载。要做到这一点,请使用以下命令:
sudo systemctl reload httpd
默认情况下,Apache 被配置为在服务器启动时自动启动。如果这不是你想要的,可以通过输入以下命令来禁用此行为:
sudo systemctl disable httpd
要重新启用服务以在启动时启动,请输入:
sudo systemctl enable httpd
Apache 现在将在服务器再次启动时自动启动。
Apache 的默认配置将允许你的服务器托管一个网站。如果你计划在服务器上托管多个域名,你需要在 Apache Web 服务器上配置虚拟主机。
在使用 Apache Web 服务器时,你可以使用 虚拟主机(类似于 Nginx 中的服务器块)来封装配置细节,并从单个服务器上托管多个域。在这一步中,你将设置一个被称为 your_domain
的域,但你应该将其替换为你自己的域名。要了解有关如何在 DigitalOcean 上设置域名的更多信息,请参阅我们的《DigitalOcean DNS 入门》。
sudo mkdir -p /var/www/your_domain/html
sudo mkdir -p /var/www/your_domain/log
sudo chown -R $USER:$USER /var/www/your_domain/html
sudo chmod -R 755 /var/www
接下来,使用 vi
或你喜欢的编辑器创建一个示例 index.html
页面:
sudo vi /var/www/your_domain/html/index.html
按 i
切换到 INSERT
模式,并将以下示例 HTML 添加到文件中:
<html>
<head>
<title>Welcome to your website!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
按 ESC
,输入 :wq
,然后按 ENTER
保存并关闭文件。
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
sudo vi /etc/httpd/conf/httpd.conf
在文件末尾添加以下行:
IncludeOptional sites-enabled/*.conf
添加完毕后保存并关闭文件。现在你已经准备好创建虚拟主机文件了。
sudo vi /etc/httpd/sites-available/your_domain.conf
添加以下配置块,并将 your_domain
域更改为你的域名:
<VirtualHost *:80>
ServerName www.your_domain
ServerAlias your_domain
DocumentRoot /var/www/your_domain/html
ErrorLog /var/www/your_domain/log/error.log
CustomLog /var/www/your_domain/log/requests.log combined
</VirtualHost>
完成后保存并关闭文件。
sudo ln -s /etc/httpd/sites-available/your_domain.conf /etc/httpd/sites-enabled/your_domain.conf
你的虚拟主机现在已配置并准备好提供内容。在重新启动 Apache 服务之前,让我们确保 SELinux 为你的虚拟主机设置了正确的策略。
运行以下命令来设置通用 Apache 策略:
sudo setsebool -P httpd_unified 1
setsebool
命令会更改 SELinux 布尔值。-P
标志将更新引导时的值,使此更改持续跨重启。httpd_unified
是一个布尔值,将告诉 SELinux 将所有 Apache 进程视为相同类型,因此您使用值 1
来启用它。
sudo ls -dZ /var/www/your_domain/log/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/log/
sudo semanage fcontext -a -t httpd_log_t "/var/www/your_domain/log(/.*)?"
接下来,使用 restorecon
命令应用这些更改,并使其持续跨重启:
sudo restorecon -R -v /var/www/your_domain/log
-R
标志使此命令递归运行,这意味着它将更新任何现有文件以使用新的上下文。-v
标志将打印命令所做的上下文更改。您将看到以下输出来确认更改:
restorecon reset /var/www/your_domain/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0
您可以再次列出上下文以查看更改:
sudo ls -dZ /var/www/your_domain/log/
输出将反映更新后的上下文类型:
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/your_domain/log
sudo systemctl restart httpd
ls -lZ /var/www/your_domain/log
您将看到 Apache 能够创建虚拟主机配置中指定的 error.log
和 requests.log
文件:
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log
现在,您已经设置好了虚拟主机,并更新了 SELinux 权限,Apache 现在将为您的域名提供服务。您可以通过导航到 http://your_domain
来测试,您应该会看到类似以下的内容:
!成功!example.com 虚拟主机正在工作!
这证实了您的虚拟主机已成功配置并提供内容。重复步骤 4 和 5,为其他域创建新的虚拟主机,并设置 SELinux 权限。
在本教程中,您安装并管理了 Apache Web 服务器。现在您已经安装了 Web 服务器,您有许多选项可用于提供内容的类型以及可以使用的技术来创建更丰富的体验。
如果您想构建更完整的应用程序堆栈,您可以查看这篇关于如何在 CentOS 7 上配置 LAMP 堆栈的文章。