Apache 服务器介绍


Apache HTTP Server(简称 Apache)是一个开源的 Web 服务器软件,由 Apache 软件基金会维护和开发。它具有以下特点:

1. 开源免费


Apache 遵循开源许可协议,用户可以自由使用、修改和分发,降低了使用成本,适合各种规模的项目。

2. 跨平台性


可以在多种操作系统上运行,如 Linux、Windows、macOS 等,具有良好的兼容性和可移植性。

3. 高度可定制


支持模块化设计,用户可以根据需要选择加载不同的模块来扩展服务器的功能,例如支持 SSL/TLS 加密的 mod_ssl 模块、实现 URL 重写的 mod_rewrite 模块等。

4. 稳定性和性能


经过长期的发展和优化,Apache 在处理大量并发请求时表现稳定,能够提供高效的服务。

5. 广泛的社区支持


拥有庞大的用户社区,用户可以在社区中获取丰富的文档、教程和技术支持,遇到问题时也能快速得到帮助。

Apache 配置文件


Apache 的配置文件通常位于不同的位置,具体取决于操作系统和安装方式:


  • Linux(以 Ubuntu 为例):主配置文件为 /etc/apache2/apache2.conf,其他配置文件存放在 /etc/apache2/ 目录下,如 /etc/apache2/sites-available/ 存放虚拟主机配置文件。

  • Windows:默认安装路径下的 conf/httpd.conf 是主配置文件。

配置 Apache 配置文件


以下以在 Ubuntu 系统上配置 Apache 为例,介绍一些常见的配置项和操作:

1. 启用和禁用模块


Apache 的功能通过模块实现,可以通过修改配置文件来启用或禁用模块。


步骤


  • 打开终端,使用以下命令启用 mod_rewrite 模块:


收起

bash

sudo a2enmod rewrite


  • 编辑主配置文件 /etc/apache2/apache2.conf,找到以下内容:


收起

apache

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


将 AllowOverride None 修改为 AllowOverride All,以允许 .htaccess 文件覆盖部分配置。


  • 重启 Apache 服务器使配置生效:


收起

bash

sudo systemctl restart apache2

2. 配置虚拟主机


虚拟主机允许在同一台服务器上托管多个网站。


步骤


  • 在 /etc/apache2/sites-available/ 目录下创建一个新的虚拟主机配置文件,例如 example.com.conf


收起

bash

sudo nano /etc/apache2/sites-available/example.com.conf


  • 在文件中添加以下内容:


收起

apache

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>


  • 启用该虚拟主机配置文件:


收起

bash

sudo a2ensite example.com.conf


  • 禁用默认的虚拟主机配置文件(可选):


收起

bash

sudo a2dissite 000-default.conf


  • 重启 Apache 服务器:


收起

bash

sudo systemctl restart apache2

3. 配置 SSL/TLS 加密


为网站启用 HTTPS 可以提高网站的安全性。


步骤


  • 安装 mod_ssl 模块:


收起

bash

sudo a2enmod ssl


  • 生成 SSL 证书(这里以自签名证书为例):


收起

bash

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt


  • 创建一个新的 HTTPS 虚拟主机配置文件,例如 example.com-ssl.conf


收起

apache

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html

        ErrorLog ${APACHE_LOG_DIR}/example.com-ssl-error.log
        CustomLog ${APACHE_LOG_DIR}/example.com-ssl-access.log combined

        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
        SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
    </VirtualHost>
</IfModule>


  • 启用该配置文件:


收起

bash

sudo a2ensite example.com-ssl.conf


  • 重启 Apache 服务器:


收起

bash

sudo systemctl restart apache2

测试配置


在修改配置文件后,可以使用以下命令检查配置文件是否存在语法错误:


收起

bash

sudo apache2ctl configtest