上一篇
阿帕奇服务器linux
- 行业动态
- 2025-05-04
- 3353
Apache服务器在Linux平台运行稳定,支持模块化配置,通过修改/etc/httpd/conf/httpd.conf可设置虚拟主机与SSL,常配合Linux
Apache HTTP Server 简介
Apache 是世界使用最广泛的 Web服务器软件,支持跨平台(Linux/Windows/Unix),具备模块化设计、高性能、灵活配置等特点,在 Linux 环境下,Apache 通常与 PHP/MySQL 搭配构建 LAMP 架构。
在 Linux 上安装 Apache
依赖安装
- Yum/DNF(CentOS/RHEL):
sudo yum install httpd -y
- APT(Debian/Ubuntu):
sudo apt update && sudo apt install apache2 -y
启动与服务管理
操作 | CentOS/RHEL 命令 | Debian/Ubuntu 命令 |
---|---|---|
启动服务 | sudo systemctl start httpd | sudo systemctl start apache2 |
停止服务 | sudo systemctl stop httpd | sudo systemctl stop apache2 |
重启服务 | sudo systemctl restart httpd | sudo systemctl restart apache2 |
设置开机自启 | sudo systemctl enable httpd | sudo systemctl enable apache2 |
核心配置文件解析
Apache 主配置文件为httpd.conf
(CentOS)或apache2.conf
(Ubuntu),常见配置项:
Listen
指令
指定监听端口,默认监听 80(HTTP)和 443(HTTPS):
Listen 80 Listen 443
DocumentRoot
指令
设置网站根目录:
DocumentRoot "/var/www/html"
Directory
指令
配置目录权限:
<Directory "/var/www/html"> AllowOverride None Require all granted </Directory>
LogLevel
指令
日志输出级别:
| 级别 | 描述 |
|———–|————————–|
|emerg
| 紧急错误 |
|alert
| 重要警告 |
|crit
| 关键错误 |
|error
| 普通错误 |
|warn
| 警告信息 |
|notice
| 普通通知 |
|info
| 详细信息 |
|debug
| 调试信息(含敏感数据) |
虚拟主机配置
通过虚拟主机实现多站点托管,支持基于域名和端口的两种模式。
基于域名的虚拟主机
<VirtualHost :80> ServerName www.example.com DocumentRoot "/var/www/example" ErrorLog "${APACHE_LOG_DIR}/example_error.log" CustomLog "${APACHE_LOG_DIR}/example_access.log" combined </VirtualHost>
基于端口的虚拟主机
<VirtualHost :8080> ServerName www.example.com DocumentRoot "/var/www/example" </VirtualHost>
安全加固配置
禁用目录浏览
<Directory "/var/www/html"> Options -Indexes </Directory>
限制访问权限
<Files ".ht"> Require all denied </Files>
启用mod_security
(防注入攻击)
- 安装模块:
sudo yum install mod_security -y # CentOS sudo apt install libapache2-mod-security2 -y # Ubuntu
- 启用模块并配置规则文件:
<IfModule mod_security2.c> SecRuleEngine On Include /etc/modsecurity/modsecurity.conf </IfModule>
日志管理与监控
日志文件路径
类型 | 默认路径(CentOS) | 默认路径(Ubuntu) |
---|---|---|
错误日志 | /etc/httpd/logs/error_log | /var/log/apache2/error.log |
访问日志 | /etc/httpd/logs/access_log | /var/log/apache2/access.log |
自定义日志格式
LogFormat "%h %l %u %t "%r" %>s %b" common CustomLog "logs/access_log" common
SSL/TLS 配置(HTTPS)
生成自签名证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/conf.d/ssl.key -out /etc/httpd/conf.d/ssl.crt
配置虚拟主机启用 HTTPS
<VirtualHost :443> ServerName www.example.com DocumentRoot "/var/www/example" SSLEngine on SSLCertificateFile "/etc/httpd/conf.d/ssl.crt" SSLCertificateKeyFile "/etc/httpd/conf.d/ssl.key" </VirtualHost>
常见问题与解决
问题描述 | 解决方案 |
---|---|
端口被占用(如 80/443) | 修改Listen 指令端口,或关闭占用进程(如sudo lsof -i :80 ) |
虚拟主机不生效 | 检查ServerName 是否正确解析,确保 DNS 或本地hosts 文件配置正确 |
权限不足导致页面无法访问 | 确保DocumentRoot 目录权限为755 ,且属主为apache:apache (CentOS)或www-data:www-data (Ubuntu) |
【相关问题与解答】
问题 1:如何将 Apache 配置为支持 PHP?
解答:
需安装 PHP 和对应模块:
- CentOS:
sudo yum install php php-fpm -y
,启用libphp.so
模块。 - Ubuntu:
sudo apt install php libapache2-mod-php -y
,重启 Apache。
配置AddType application/x-httpd-php .php
到httpd.conf
。
问题 2:如何限制单个 IP 的访问频率?
解答:
使用mod_evasive
模块防御 CC 攻击:
- 安装模块:
sudo yum install mod_evasive -y
(CentOS)或sudo apt install libapache-mod-evasive -y
(Ubuntu)。 - 在
httpd.conf
中添加:<IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 10 DOSSiteCount 100 </IfModule