Apache HTTP Server
优质
小牛编辑
121浏览
2023-12-01
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 创建站点/虚拟主机
在虚拟主机配置目录下创建后缀为
.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>
重启 Apache 服务
Apache 配置域名
- 在虚拟主机配置目录下找到默认创建的虚拟主机配置文件(例如:example.conf)
- 编辑虚拟主机配置文件
- 找到并修改
ServerName
和ServerAlias
ServerName www.example.com # ServerName 主域名/主机地址 ServerAlias example.com # ServerAlias 副域名,多个域名用空格间隔
- 重启 Apache 服务
Apache 配置SSL证书
- 上传或下载SSL证书到
/var/lib/ssl
目录 在虚拟主机配置文件中新增以下内容,并做对应修改:
<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>