在CentOS 7上安装Apache Web服务器的方法

打印 上一主题 下一主题

主题 794|帖子 794|积分 2382

前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,忍不住分享一下给各人。点击跳转到网站。
简介

Apache HTTP 服务器是天下上使用最广泛的 Web 服务器。它提供许多强大的功能,包括动态加载模块、强大的媒体支持以及与其他流行软件的广泛集成。
在本指南中,您将在 CentOS 7 服务器上安装一个带有虚拟主机的 Apache Web 服务器。
先决条件

您需要以下内容才能完成本指南:


  • 在服务器上配置了具有 sudo 特权的非 root 用户,可以按照 CentOS 7 的初始服务器设置指南进行设置。
  • 配置了指向您的服务器的域名。您可以按照《怎样在 DigitalOcean Droplets 上设置主机名》教程来相识怎样将域名指向 DigitalOcean Droplets。
  • 按照《为新的 CentOS 7 服务器进行额外推荐步骤》指南进行了基本防火墙配置。
步骤 1 — 安装 Apache

Apache 可以在 CentOS 的默认软件仓库中找到,这意味着您可以使用 yum 软件包管理器来安装它。
作为先决条件中配置的非 root sudo 用户,更新本地 Apache httpd 软件包索引以反映最新的上游更改:
  1. sudo yum update httpd
复制代码
一旦软件包更新完成,安装 Apache 软件包:
  1. sudo yum install httpd
复制代码
确认安装后,yum 将安装 Apache 和所有必需的依靠项。
如果您已经按照先决条件部分提到的《为新的 CentOS 7 服务器进行额外推荐步骤》指南安装了 firewalld,您需要打开端口 80 以允许 Apache 通过 HTTP 提供请求。如果您还没有如许做,可以使用以下下令启用 firewalld 的 http 服务:
  1. sudo firewall-cmd --permanent --add-service=http
复制代码
如果您计划配置 Apache 通过 HTTPS 提供内容,还需要通过启用 https 服务来打开端口 443:
  1. sudo firewall-cmd --permanent --add-service=http
  2. s
复制代码
接下来,重新加载防火墙以使这些新规则收效:
  1. sudo firewall-cmd --reload
复制代码
防火墙重新加载后,您就可以启动服务并检查 Web 服务器了。
步骤 2 — 检查您的 Web 服务器

在 CentOS 上,安装完成后 Apache 不会主动启动。您需要手动启动 Apache 进程:
  1. sudo systemctl start httpd
复制代码
使用以下下令验证服务是否正在运行:
  1. sudo systemctl status httpd
复制代码
当服务正在运行时,您将看到一个 active 状态:
  1. Redirecting to /bin/systemctl status httpd.service
  2. ● httpd.service - The Apache HTTP Server
  3.    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  4.    Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago
  5.      Docs: man:httpd(8)
  6.            man:apachectl(8)
  7. Main PID: 1290 (httpd)
  8.    Status: "Processing requests..."
  9.    CGroup: /system.slice/httpd.service
  10.            ├─1290 /usr/sbin/httpd -DFOREGROUND
  11.            ├─1291 /usr/sbin/httpd -DFOREGROUND
  12.            ├─1292 /usr/sbin/httpd -DFOREGROUND
  13.            ├─1293 /usr/sbin/httpd -DFOREGROUND
  14.            ├─1294 /usr/sbin/httpd -DFOREGROUND
  15.            └─1295 /usr/sbin/httpd -DFOREGROUND
  16. ...
复制代码
从此输出中可以看出,服务似乎已乐成启动。不外,测试的最佳方法是从 Apache 请求页面。
您可以通过 IP 地址访问默认的 Apache 落地页,以确认软件是否正常运行。如果您不知道服务器的 IP 地址,可以从下令行以几种不同的方式获取。
在服务器的下令提示符下输入以下下令:
  1. hostname -I
复制代码
此下令将表现主机的所有网络地址,因此您将得到几个由空格分隔的 IP 地址。您可以尝试在 Web 浏览器中使用每个地址,看看它们是否有效。
大概,您可以使用 curl 从 icanhazip.com 请求您的 IP,这将给您另一个位置在互联网上看到的公共 IPv4 地址:
  1. curl -4 icanhazip.com
复制代码
当您获得服务器的 IP 地址后,将其输入到浏览器的地址栏中:
  1. http://your_server_ip
复制代码
您将看到默认的 CentOS 7 Apache 网页:
!Default Apache page for CentOS 7
此页面表示 Apache 正常工作。它还包括有关重要 Apache 文件和目录位置的一些基本信息。现在服务已安装并运行,您可以使用不同的 systemctl 下令来管理服务。
步骤 3 — 管理 Apache 进程

现在你已经启动并运行了你的 Web 服务器,让我们来相识一些基本的管理下令。
要停止你的 Web 服务器,请输入:
  1. sudo systemctl stop httpd
复制代码
要在停止状态下启动 Web 服务器,请输入:
  1. sudo systemctl start httpd
复制代码
要停止然后再次启动服务,请输入:
  1. sudo systemctl restart httpd
复制代码
如果你只是在进行配置更改,Apache 通常可以在不中断连接的情况下重新加载。要做到这一点,请使用以下下令:
  1. sudo systemctl reload httpd
复制代码
默认情况下,Apache 被配置为在服务器启动时主动启动。如果这不是你想要的,可以通过输入以下下令来禁用此行为:
  1. sudo systemctl disable httpd
复制代码
要重新启用服务以在启动时启动,请输入:
  1. sudo systemctl enable httpd
复制代码
Apache 现在将在服务器再次启动时主动启动。
Apache 的默认配置将允许你的服务器托管一个网站。如果你计划在服务器上托管多个域名,你需要在 Apache Web 服务器上配置虚拟主机。
步骤 4 — 设置虚拟主机(推荐)

在使用 Apache Web 服务器时,你可以使用 虚拟主机(雷同于 Nginx 中的服务器块)来封装配置细节,并从单个服务器上托管多个域。在这一步中,你将设置一个被称为 your_domain 的域,但你应该将其替换为你本身的域名。要相识有关怎样在 DigitalOcean 上设置域名的更多信息,请参阅我们的《DigitalOcean DNS 入门》。
在 CentOS 7 上,Apache 默认启用了一个服务器块,配置为从 /var/www/html 目录提供文档。虽然这对于单个站点运行良好,但如果你要托管多个站点,这大概会变得难以管理。你将在 /var/www 中创建一个目录结构,用于 your_domain 站点,同时保留 /var/www/html 作为默认目录,以便在客户端请求不匹配任何其他站点时提供服务。
按照以下方式创建 your_domain 的 html 目录,使用 -p 标志创建任何必要的父目录:
  1. sudo mkdir -p /var/www/your_domain/html
复制代码
创建另一个目录来存储站点的日志文件:
  1. sudo mkdir -p /var/www/your_domain/log
复制代码
接下来,使用 $USER 环境变量分配 html 目录的所有权:
  1. sudo chown -R $USER:$USER /var/www/your_domain/html
复制代码
确保你的 Web 根目录设置了默认权限:
  1. sudo chmod -R 755 /var/www
复制代码
接下来,使用 vi 或你喜欢的编辑器创建一个示例 index.html 页面:
  1. sudo vi /var/www/your_domain/html/index.html
复制代码
按 i 切换到 INSERT 模式,并将以下示例 HTML 添加到文件中:
  1. <html>
  2.   <head>
  3.     <title>Welcome to your website!</title>
  4.   </head>
  5.   <body>
  6.     <h1>Success! The your_domain virtual host is working!</h1>
  7.   </body>
  8. </html>
复制代码
按 ESC,输入 :wq,然后按 ENTER 保存并关闭文件。
现在,你的站点目录和示例索引文件已经准备就绪,你险些可以创建虚拟主机文件了。虚拟主机文件指定了你的各个站点的配置,并告诉 Apache Web 服务器怎样响应各种域请求。
在创建虚拟主机之前,你需要创建一个 sites-available 目录来存储它们。你还将创建 sites-enabled 目录,告诉 Apache 虚拟主机已准备好为访问者提供服务。sites-enabled 目录将保存我们想要发布的虚拟主机的符号链接。使用以下下令创建这两个目录:
  1. sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
复制代码
接下来,你将告诉 Apache 在 sites-enabled 目录中查找虚拟主机。为此,请编辑 Apache 的主配置文件,并添加一行声明一个可选目任命于额外的配置文件:
  1. sudo vi /etc/httpd/conf/httpd.conf
复制代码
在文件末端添加以下行:
  1. IncludeOptional sites-enabled/*.conf
复制代码
添加完毕后保存并关闭文件。现在你已经准备好创建虚拟主机文件了。
首先,在 sites-available 目录中创建一个新文件:
  1. sudo vi /etc/httpd/sites-available/your_domain.conf
复制代码
添加以下配置块,并将 your_domain 域更改为你的域名:
  1. <VirtualHost *:80>
  2.     ServerName www.your_domain
  3.     ServerAlias your_domain
  4.     DocumentRoot /var/www/your_domain/html
  5.     ErrorLog /var/www/your_domain/log/error.log
  6.     CustomLog /var/www/your_domain/log/requests.log combined
  7. </VirtualHost>
复制代码
这将告诉 Apache 在那里找到保存公共可访问 Web 文档的根目录。它还告诉 Apache 在那里存储此特定站点的错误和请求日志。
完成后保存并关闭文件。
现在你已经创建了虚拟主机文件,你将启用它们,以便 Apache 知道为访问者提供服务。为此,为 sites-enabled 目录中的每个虚拟主机创建一个符号链接:
  1. sudo ln -s /etc/httpd/sites-available/your_domain.conf /etc/httpd/sites-enabled/your_domain.conf
复制代码
你的虚拟主机现在已配置并准备好提供内容。在重新启动 Apache 服务之前,让我们确保 SELinux 为你的虚拟主机设置了精确的策略。
步骤 5 —— 调解虚拟主机的 SELinux 权限(推荐)

SELinux 配置为与默认的 Apache 配置一起工作。由于您在虚拟主机配置文件中设置了自定义日志目录,如果尝试启动 Apache 服务,将会收到错误。为相识决这个题目,您需要更新 SELinux 策略,允许 Apache 写入须要的文件。SELinux 为您的 CentOS 7 环境带来了更高的安全性,因此不发起完全禁用内核模块。
根据您的环境需求,可以使用不同的方式设置策略,因为 SELinux 允许您自定义安全级别。本步骤将涵盖两种调解 Apache 策略的方法:通用调解和特定目录调解。在目录上调解策略更加安全,因此是推荐的方法。
通用调解 Apache 策略

通用设置 Apache 策略将告诉 SELinux 通过使用 httpd_unified 布尔值来处理所有 Apache 进程。虽然这种方法更加方便,但不会给您与专注于文件或目录策略的方法相同的控制级别。
运行以下下令来设置通用 Apache 策略:
  1. sudo setsebool -P httpd_unified 1
复制代码
setsebool 下令会更改 SELinux 布尔值。-P 标志将更新引导时的值,使此更改持续跨重启。httpd_unified 是一个布尔值,将告诉 SELinux 将所有 Apache 进程视为相同类型,因此您使用值 1 来启用它。
在目录上调解 Apache 策略

为 /var/www/your_domain/log 目录单独设置 SELinux 权限将为您提供对 Apache 策略更多的控制,但大概需要更多的维护。由于此选项不是通用设置策略,您需要手动设置虚拟主机配置中指定的任何新日志目录的上下文类型。
首先,检查 SELinux 给 /var/www/your_domain/log 目录的上下文类型:
  1. sudo ls -dZ /var/www/your_domain/log/
复制代码
此下令列出并打印目录的 SELinux 上下文。您将看到雷同以下的输出:
  1. drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/log/
复制代码
当前上下文是 httpd_sys_content_t,告诉 SELinux Apache 进程只能读取在此目录中创建的文件。在本教程中,您将把 /var/www/your_domain/log 目录的上下文类型更改为 httpd_log_t。这种类型将允许 Apache 生成并追加到 Web 应用程序日志文件中:
  1. sudo semanage fcontext -a -t httpd_log_t "/var/www/your_domain/log(/.*)?"
复制代码
接下来,使用 restorecon 下令应用这些更改,并使其持续跨重启:
  1. sudo restorecon -R -v /var/www/your_domain/log
复制代码
-R 标志使此下令递归运行,这意味着它将更新任何现有文件以使用新的上下文。-v 标志将打印下令所做的上下文更改。您将看到以下输出来确认更改:
  1. 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
复制代码
您可以再次列出上下文以查察更改:
  1. sudo ls -dZ /var/www/your_domain/log/
复制代码
输出将反映更新后的上下文类型:
  1. drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/your_domain/log
复制代码
现在,/var/www/your_domain/log 目录正在使用 httpd_log_t 类型,您已经准备好测试您的虚拟主机配置。
步骤 6 —— 测试虚拟主机(推荐)

一旦使用任一方法更新了 SELinux 上下文,Apache 将能够写入 /var/www/your_domain/log 目录。您现在可以乐成重新启动 Apache 服务:
  1. sudo systemctl restart httpd
复制代码
列出 /var/www/your_domain/log 目录的内容,以查察 Apache 是否创建了日志文件:
  1. ls -lZ /var/www/your_domain/log
复制代码
您将看到 Apache 能够创建虚拟主机配置中指定的 error.log 和 requests.log 文件:
  1. -rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
  2. -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 堆栈的文章。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表