Apache HTTP Server,简称Apache,是一个非常流行的Web服务器,由Apache软件基金会开发。
本文介绍如何设置 Apache。

安装apache

sudo pacman -S apache

配置

Apache 配置文件位于/etc/httpd/conf。主要配置文件是/etc/httpd/conf/httpd.conf,其中包括各种其他配置文件。对于简单的设置,默认配置文件应该没问题。默认情况下,网站的默认目录为/srv/http

高级选项

修改配置文件/etc/httpd/conf/httpd.conf

User http
出于安全原因,一旦Apache由root用户启动(直接或通过启动脚本),它就会切换到此UID。默认用户为 http,它是在安装过程中自动创建的。

Listen 80
这是Apache将侦听的端口。对于使用路由器的互联网访问,您必须转发端口。
如果您想设置Apache进行本地开发,您可能希望它只能从您的计算机访问。然后将此行更改为:Listen 127.0.0.1:80

ServerAdmin you@example.com
这是管理员的电子邮件地址,可以在例如错误页面上找到。

DocumentRoot "/srv/http"
这是放置网页的目录。
如果愿意,可以更改它,但不要忘记更改<Directory "/srv/http">,否则当您尝试访问新的文档根目录DocumentRoot时,您可能会收到403错误(缺乏权限)。不要忘记将Require all denied行更改为Require all granted,否则您将收到403错误。请记住,DocumentRoot目录及其父文件夹必须允许其他人执行权限(可以使用 )进行设置(chmod o+x /path/to/DocumentRoot),否则您将收到 403 错误。

AllowOverride None
<Directory> 段落中的这个设置会让 Apache 完全忽略 .htaccess 文件。从 Apache 2.4开始,这个设置是默认的,所以如果要使用.htaccess,请允许Overide. 如果要在.htaccess中使用mod_rewrite 或其它设置, 可以指定哪些目录允许覆盖服务器配置。

更多设置可以访问 /etc/httpd/conf/extra/httpd-default.conf,例如

关闭服务器签名:

ServerSignature Off

隐藏 Apache 和 PHP 版本等属性:

ServerTokens Prod

用户目录

在默认设置下,可以通过 http://localhost/~yourusername/ 访问用户的主目录并显示~/public_html中的内容 (可以通过/etc/httpd/conf/extra/httpd-userdir.conf设置)。 要禁用这个访问,请注释掉/etc/httpd/conf/httpd.conf文件中的如下行:

Include conf/extra/httpd-userdir.conf

请正确设置目录的权限,使得 Apache 可以访问到文件。主目录和 ~/public_html 必须是可被其它用户执行:

chmod o+x ~
chmod o+x ~/public_html
chmod -R o+r ~/public_html

重启 httpd.service 服务以应用更改。

TLS/SSL

暂略。

Virtual Hosts虚拟主机

注意:您需要为虚拟主机 SSL 支持添加一个单独的部分。

如果需要不止一个主机,取消/etc/httpd/conf/httpd.conf行的注释:

Include conf/extra/httpd-vhosts.conf

/etc/httpd/conf/extra/httpd-vhosts.conf中设置虚拟主机,默认文件包含了一个示例。
要在本地机器测试虚拟主机,将虚拟名称加入 /etc/hosts 文件:

127.0.0.1 domainname1.dom
127.0.0.1 domainname2.dom

重启 httpd.service 服务。

管理多个主机

如果要管理的主机非常多,希望更方便的维护,建议为每一个虚拟主机创建一个配置文件并文件存储到一个文件夹中/etc/httpd/conf/vhosts
创建目录:

mkdir /etc/httpd/conf/vhosts

编写单独的配置文件:

sudo vim /etc/httpd/conf/vhosts/domainname1.dom
sudo vim  /etc/httpd/conf/vhosts/domainname2.dom

/etc/httpd/conf/httpd.confInclude单独的配置文件:

#Enabled Vhosts:
Include conf/vhosts/domainname1.dom
Include conf/vhosts/domainname2.dom

通过注释或取消注释可以单独启用或禁用一个虚拟主机。
基本的 vhost 文件:
/etc/httpd/conf/vhosts/domainname1.dom

<VirtualHost *:80>
    ServerAdmin webmaster@domainname1.dom
    DocumentRoot "/home/user/http/domainname1.dom"
    ServerName domainname1.dom
    ServerAlias domainname1.dom
    ErrorLog "/var/log/httpd/domainname1.dom-error_log"
    CustomLog "/var/log/httpd/domainname1.dom-access_log" common

    <Directory "/home/user/http/domainname1.dom">
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@domainname1.dom
    DocumentRoot "/home/user/http/domainname1.dom"
    ServerName domainname1.dom:443
    ServerAlias domainname1.dom:443
    SSLEngine on
    SSLCertificateFile "/etc/httpd/conf/apache.crt"
    SSLCertificateKeyFile "/etc/httpd/conf/apache.key"
    ErrorLog "/var/log/httpd/domainname1.dom-error_log"
    CustomLog "/var/log/httpd/domainname1.dom-access_log" common

    <Directory "/home/user/http/domainname1.dom">
        Require all granted
    </Directory>
</VirtualHost>

标签 Apache, httpd