当前位置:首页>行业动态> 正文

阿帕奇服务器linux

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 httpdsudo systemctl start apache2
停止服务sudo systemctl stop httpdsudo systemctl stop apache2
重启服务sudo systemctl restart httpdsudo systemctl restart apache2
设置开机自启sudo systemctl enable httpdsudo systemctl enable apache2

核心配置文件解析

Apache 主配置文件为httpd.conf(CentOS)或apache2.conf(Ubuntu),常见配置项:

Listen 指令

指定监听端口,默认监听 80(HTTP)和 443(HTTPS):

阿帕奇服务器linux  第1张

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 和对应模块:

  • CentOSsudo yum install php php-fpm -y,启用libphp.so 模块。
  • Ubuntusudo apt install php libapache2-mod-php -y,重启 Apache。
    配置AddType application/x-httpd-php .phphttpd.conf

问题 2:如何限制单个 IP 的访问频率?

解答
使用mod_evasive 模块防御 CC 攻击:

  1. 安装模块:sudo yum install mod_evasive -y(CentOS)或sudo apt install libapache-mod-evasive -y(Ubuntu)。
  2. httpd.conf 中添加:
    <IfModule mod_evasive20.c>
        DOSHashTableSize 3097
        DOSPageCount 10
        DOSSiteCount 100
    </IfModule