安装 Apache 2.4 Web 服务器
如果您使用的是防火墙,则需要启用到端口的传入 TCP 通信80
。
安装 Apache:
# pacman -S apache
启动 Apache,并使其在每次启动后启动:
# systemctl enable --now httpd
测试 Apache 是否正在运行。访问http://YOUR-SERVER-WEB-ADDRESS-OR-IP
,您将看到显示“ /的索引”的页面。运行ip addr
如果你需要知道 IP 地址。
Apache 的配置文件是/etc/httpd/conf/httpd.conf
。尽管 Apache 由 root 用户启动,User http
但出于安全原因,使其立即切换为以该用户身份运行。 DocumentRoot "/srv/http"
设置在何处查找网络文件。 CustomLog "/var/log/httpd/access_log" common
设置将记录对 Apache 的成功访问的位置。 ErrorLog "/var/log/httpd/error_log"
设置访问 Apache 的错误记录位置。
禁用索引
默认情况下,如果给 Apache 提供了一个目录,该目录找不到配置为使用扩展名的索引文件,它将自动生成一个显示目录内容的索引。这可以被视为安全漏洞。要禁用它,编辑/etc/httpd/conf/httpd.conf
及内<Directory "/srv/http">
,从Options
删除Indexes
。重新启动后,Apache 将给出“禁止访问!” 错误消息,除非/srv/http/index.html
存在类似文件。
重新启动 Apache:
# systemctl restart httpd
用户目录
默认情况下,用户~/public_html/
目录将显示在http://YOUR-SERVER-WEB-ADDRESS-OR-IP/~USERNAME/
。但是,用户http
必须对用户目录及其public_html
目录具有可执行位访问权限:
$ mkdir ~/public_html
$ chmod o+x ~/
$ chmod o+x ~/public_html
此外,用户http
必须对单个文件具有读取权限。如有必要,运行以下命令:
$ chmod o+r ~/public_html/<FILES>
如果要禁止用户public_html
目录位于 Web 服务器上,无论目录和文件权限如何,请在以下位置注释此行(添加#
到开头)/etc/httpd/conf/httpd.conf
:
Include conf/extra/httpd-userdir.conf
重新启动 Apache:
# systemctl restart httpd
虚拟主机
您可以在同一个 Apache 服务器上托管多个域名,并为它们提供不同的内容。
创建一个文件夹来保存您的虚拟主机配置:
# mkdir /etc/httpd/conf/vhosts
为每个虚拟主机创建一个配置文件,例如/etc/httpd/conf/vhosts/YOUR-DOMAIN-NAME.com
:
<VirtualHost *:80>
ServerAdmin webmaster@YOUR-DOMAIN-NAME.com
DocumentRoot "/srv/YOUR-DOMAIN-NAME.com"
ServerName YOUR-DOMAIN-NAME.com
ServerAlias YOUR-DOMAIN-NAME.com
ErrorLog "/var/log/httpd/YOUR-DOMAIN-NAME.com-error_log"
CustomLog "/var/log/httpd/YOUR-DOMAIN-NAME.com-access_log" common
<Directory "/srv/YOUR-DOMAIN-NAME.com">
Require all granted
</Directory>
</VirtualHost>
制作虚拟主机服务目录:
# mkdir /srv/YOUR-DOMAIN-NAME.com
在的结尾/etc/httpd/conf/httpd.conf
,包括以下每个虚拟主机配置文件:
Include conf/vhosts/YOUR-DOMAIN-NAME.com
重新启动 Apache:
# systemctl restart httpd
Apache 收到的请求YOUR-DOMAIN-NAME.com
将从发出/srv/YOUR-DOMAIN-NAME.com
。请注意,对 Apache 的请求与特定的ServerName
或不匹配ServerAlias
,仅与 IP 地址或解析为您的 IP 的另一个域名不匹配,仍然会从包含的第一个虚拟主机中提供。也就是说,您仍然应该考虑将 general 的任何内容(DocumentRoot
默认为/srv/http
)以某种方式访问。