跳转至

Apache HTTP Server

Apache HTTP Server(简称Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将Perl/Python等解释器编译到服务器中。

目录结构

  • /etc/httpd/conf/httpd.conf: 全局配置文件,用来配置 Apache、配置端口等
  • /etc/httpd/conf.d/: 附加配置目录,用来对 Apache 模块和模块化配置
  • /etc/httpd/vhost/: 虚拟主机配置目录,用来配置虚拟主机创建网站
  • /var/log/apache/: 日志目录,包含 Apache 错误日志以及虚拟主机访问日志和错误日志
  • /var/www/: 站点默认目录
  • /etc/apache2/apache2.conf: 全局配置文件,用来配置 Apache、配置端口等
  • /etc/apache2/conf-enabled : 附加配置目录,用来对 Apache 模块和模块化配置
  • /etc/apache2/sites-enabled: 虚拟主机配置目录,用来配置虚拟主机创建网站
  • /var/log/apache2/: 日志目录,包含 Apache 错误日志以及虚拟主机访问日志和错误日志
  • /var/www/: 站点默认目录

服务管理

systemctl start httpd     # 启动 apache
systemctl restart httpd   # 重启 apache
systemctl stop httpd      # 停止 apache
systemctl status httpd    # 查看 apache 服务状态
systemctl start apach2     # 启动 apache
systemctl restart apach2   # 重启 apache
systemctl stop apach2      # 停止 apache
systemctl status apach2    # 查看 apache 服务状态

配置参考

Tip

配置前请先阅读参考目录结构服务管理

Apache 创建站点/虚拟主机

  1. 虚拟主机配置目录下创建后缀为 .conf 文件,内容为:

    <VirtualHost *:80>
    ServerName www.example.com         # ServerName 主域名/主机地址
    ServerAlias example.com            # ServerAlias 副域名,多个域名用空格间隔
    DocumentRoot "/var/www/example"    # DocumentRoot 网站根目录
    ErrorLog "logs/example.com_error_apache.log"     # ErrorLog 错误日志存储路径(可选)
    CustomLog "logs/example.com_apache.log" common   # CustomLog 访问日志存储路径(可选)
    <Directory "/var/www/example">            # Directory 特定目录配置,一般情况下与 DocumentRoot 保持一致
    DirectoryIndex index.php index.html     # DirectoryIndex 目录索引设置
    Options Indexes FollowSymlinks          # Options 附加指定多种服务器特性,保持默认即可
    AllowOverride All                       # AllowOverride 指明Apache服务器是否去找.htacess文件作为配置文件,保持默认即可
    Require all granted                     # Require 目录访问控制
    </Directory>
    </VirtualHost>
    

  2. 重启 Apache 服务

Apache 配置域名

  1. 虚拟主机配置目录下找到默认创建的虚拟主机配置文件(例如:example.conf)
  2. 编辑虚拟主机配置文件
  3. 找到并修改 ServerNameServerAlias
    ServerName www.example.com         # ServerName 主域名/主机地址
    ServerAlias example.com            # ServerAlias 副域名,多个域名用空格间隔
    
  4. 重启 Apache 服务

Apache 配置SSL证书

  1. 上传或下载SSL证书到 /var/lib/ssl 目录
  2. 在虚拟主机配置文件中新增以下内容,并做对应修改:

    <VirtualHost *:443> 
      ServerName  www.example.com
      DocumentRoot "/var/www/example"
      ErrorLog "logs/example.com_ssl_error_log"
      CustomLog "logs/example.com_ssl_access_log" common
    <Directory "/var/www/example">
      Options Indexes FollowSymlinks
      AllowOverride All
      Require all granted
    </Directory>
      SSLEngine on
      SSLCertificateFile  /var/lib/ssl/example.com.crt
      SSLCertificateKeyFile  /var/lib/ssl/example.com.key
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName www.example.com
        ServerAlias example.com
        DocumentRoot "/var/www/example"
        ErrorLog "logs/example.com_error_apache.log"
        CustomLog "logs/example.com_apache.log" common
    <Directory "/var/www/example">
        DirectoryIndex index.php index.html
        Options Indexes FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>    
        # http 301 重定向 https(可选)
        RewriteEngine On  
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R=301,L]
    </VirtualHost>
    <VirtualHost *:443> 
        ServerName  www.example.com
        DocumentRoot "/var/www/example"
        ErrorLog "logs/example.com_ssl_error_log"
        CustomLog "logs/example.com_ssl_access_log" common
    <Directory "/var/www/example">
        Options Indexes FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>
        SSLEngine on
        SSLCertificateFile  /var/lib/ssl/example.com.crt      
        SSLCertificateKeyFile  /var/lib/ssl/example.com.key
    </VirtualHost>