Apache基础知识:安装和配置故障排除
###介绍
Apache Web 服务器是一种开源 Web 服务器,因其灵活性、强大功能和广泛支持而广受欢迎。 在本指南中,我们将介绍一些管理 Apache 服务器的常用过程,包括停止、启动和启用服务,使用虚拟主机文件和目录,以及在服务器上定位重要文件和目录。
本指南面向在 Ubuntu 上使用 Apache 的用户。 使用 CentOS 和其他基于 RHEL 的发行版的用户可以查看 本教程 中的第一节,了解有关在 CentOS 上安装 Apache 的信息。
如何使用本指南:
- 每个部分都可以独立于其他部分使用,因此请随意跳到与您的需求相关的部分。
- 每个命令都是独立的,允许您用自己的值替换红色的值。
- 每个部分都有链接资源,您可以查阅这些资源以获取有关所涵盖主题的更多信息。
- 安装Apache服务
要安装 Apache 服务,请更新您的包索引,然后安装:
sudo apt-get update sudo apt-get install apache2
有关安装过程的更多详细信息,请按照我们关于 如何在 Ubuntu 16.04 上安装 Apache Web 服务器的教程进行操作。
- 启用和禁用 Apache 单元
我们的 Apache 服务配置为在启动时自动启动。 但是,如果我们想修改此行为,我们可以键入以下内容:
sudo systemctl disable apache2.service
要允许 Apache 在启动时再次启动:
sudo systemctl enable apache2.service
- 停止、启动和重新加载 Apache
要停止 Apache 服务器,请键入以下命令:
sudo systemctl stop apache2
要启动 Apache 服务器,请键入:
sudo systemctl start apache2
要停止服务并重新启动它,请键入:
sudo systemctl restart apache2
如果您正在进行配置更改,您可以重新加载 Apache 而不会断开连接。 键入以下命令:
sudo systemctl reload apache2
要了解有关 systemd
初始化系统和 systemctl
命令的更多信息,请查看此 systemd Essentials 简介 。
- 检查服务器状态
要检查 Apache 服务器的状态,请键入:
sudo systemctl status apache2
此命令的输出将告诉您 Apache 是否正在运行,并将显示日志文件中的最后几行。
- 为静态网站创建文档根目录
在使用 Apache 构建网站时,开发人员经常使用 virtual hosts
— 包含单个站点或域的单元。 此过程涉及为 document root
创建一个目录,这是 Apache 在提供内容时检查的顶级目录。
创建目录:
sudo mkdir -p /var/www/example.com/public_html
将目录的所有权分配给您的非 root 用户:
sudo chown -R $USER:$USER /var/www/example.com/public_html
允许对一般 Web 目录进行读取访问:
sudo find /var/www -type d -exec chmod 775 {} \;
有关权限的更多信息,请参阅我们的 Linux 权限简介。 请记住,您的权限可能会随着您的需求和用例而变化。
- 为动态处理模块创建文档根目录
如果您正在使用像 PHP 这样的动态处理模块,您将创建文档根目录,如下所示:
sudo mkdir -p /var/www/example.com/public_html
将目录的所有权分配给您的非 root 用户,并将组所有权分配给 www-data
组:
sudo chown -R sammy:www-data /var/www/example.com/public_html
- 修改配置设置
使用虚拟主机时,有必要修改配置设置以反映域的具体情况,以便 Apache 可以正确响应域请求。
打开您的虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/example.com.conf
修改以下内容:
ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html
修改后,文件应如下所示(前提是之前没有修改过):
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
进行故障排除时,请务必仔细检查此文件及其指令。
有关使用虚拟主机的更多详细信息,请参阅我们关于 在 Ubuntu 16.04 上使用 Apache 虚拟主机的讨论。
- 启用和禁用配置文件
- 虚拟主机文件
要启用虚拟主机配置文件:
sudo a2ensite example.com.conf
要禁用配置文件(在此特定示例中,Apache 默认虚拟主机配置文件):
sudo a2dissite 000-default.conf
- 模块
要启用 /etc/apache2/mods-available
中的模块,请使用以下命令:
sudo a2enmod example_mod
要禁用特定模块:
sudo a2dismod example_mod
- 配置文件
要启用 /etc/apache2/conf-available
中的配置文件(与虚拟主机无关的文件),请键入:
sudo a2enconf example-conf
要禁用配置文件:
sudo a2disconf example-conf
- 配置测试
每当您在 Apache 中更改配置文件时,请务必运行以下命令来检查语法错误:
sudo apache2ctl configtest
- 重要文件和目录
当您继续使用 Apache 时,您将遇到以下目录和文件:
###内容
/var/www/html
:此目录包含您网站的 Web 内容,并且是其默认根目录。 您可以修改 Apache 的默认配置设置以指向var/www
中的其他目录。
- 服务器配置
/etc/apache2
:Apache 中的配置目录,所有配置文件的主目录。/etc/apache2/apache2.conf
:Apache 的主配置文件,存储其全局配置设置。 配置目录中的其他文件是从此文件加载的。 它还存储FollowSymLinks
指令,这些指令控制配置启用和禁用。/etc/apache2/sites-available/
:此目录包含虚拟主机配置文件,这些文件通过指向sites-enabled
目录的链接启用。 对服务器块文件的修改发生在此目录中,并通过a2ensite
命令启用。/etc/apache2/sites-enabled/
:激活的虚拟主机配置文件存放在这里。 当 Apache 启动或重新加载时,它会读取此目录中的配置文件和链接,因为它符合完整配置。/etc/apache2/conf-available
和/etc/apache2/conf-enabled
:与sites-available
和sites-enabled
的关系相同,这些目录包含未附加到虚拟主机配置文件的配置片段。/etc/apache2/mods-available
和/etc/apache2/mods-enabled
:包含可用和启用的模块,这些目录有两个组件:以.load
结尾的文件,其中包含加载特定模块的片段,以及以.conf
,存储这些模块的配置。
- 服务器日志
/var/log/apache2/access.log
:此文件包含对 Web 服务器的每个请求,除非 Apache 的配置设置已被修改。/var/log/apache2/error.log
:此文件包含错误。 要修改错误日志中的详细信息量,请修改/etc/apache2/apache2.conf
中的LogLevel
指令。
访问有关 Apache 单元的信息的另一种方法是通过 journald
组件,该组件从应用程序和内核收集日志信息。 要查看 Apache 单元的条目,请输入:
sudo journalctl -u apache2
##结论
在本指南中,我们介绍了管理 Apache 服务器的一些常见过程,包括停止、启动和启用服务,使用虚拟主机文件和目录,以及在服务器上定位重要文件和目录。 要了解有关使用 Apache 的更多信息,请查看以下资源:
- 如何在 Ubuntu 16.04 上安装 LAMP 堆栈。
- 如何在 Ubuntu 16.04 上将 Apache Web 根目录移动到新位置。
- 如何在 Ubuntu 16.04 上使用 Let's Encrypt 保护 Apache。
- 如何使用.htaccess文件。
- 如何在 Ubuntu 16.04 上使用 mod_rewrite 为 Apache 重写 URL。
- 如何在 Ubuntu 16.04 上使用 Apache 作为带有 mod_proxy 的反向代理。