Apache与MySQL作为Web开发中最经典的服务器组合,其正确配置是搭建稳定高效动态网站的基础,本文将详细介绍从环境准备到核心配置的全流程,涵盖Linux与Windows双平台下的安装、安全加固、性能优化及协同工作配置,帮助读者构建安全可靠的Web服务环境。

环境准备与安装
系统依赖安装
在安装Apache与MySQL之前,需确保系统满足基本依赖,以Ubuntu系统为例,执行以下命令安装基础组件:
sudo apt update sudo apt install -y build-essential libpcre3-dev libssl-dev libjpeg-dev libpng-dev libmysqlclient-dev
对于CentOS系统,可使用:
sudo yum groupinstall -y "Development Tools" sudo yum install -y pcre-devel openssl-devel libjpeg-turbo-devel libpng-devel mysql-devel
安装Apache HTTP Server
Ubuntu/Debian系统:
sudo apt install -y apache2 sudo systemctl enable apache2 sudo systemctl start apache2
CentOS/RHEL系统:
sudo yum install -y httpd sudo systemctl enable httpd sudo systemctl start httpd
验证安装:浏览器访问服务器IP地址,应显示Apache默认欢迎页面。
安装MySQL数据库服务器
Ubuntu/Debian系统:
sudo apt install -y mysql-server sudo systemctl enable mysql sudo systemctl start mysql
CentOS/RHEL系统:
sudo yum install -y mysql-server sudo systemctl enable mysqld sudo systemctl start mysqld
安全配置脚本:执行sudo mysql_secure_installation设置root密码、移除匿名用户、禁止root远程登录等。
Apache核心配置
目录结构解析
Apache主要配置文件位置:
| 系统 | 主配置文件 | 站点配置目录 | 日志目录 |
|——|————|————–|———-|
| Ubuntu | /etc/apache2/apache2.conf | /etc/apache2/sites-available/ | /var/log/apache2/ |
| CentOS | /etc/httpd/conf/httpd.conf | /etc/httpd/conf.d/ | /var/log/httpd/ |

虚拟主机配置
以Ubuntu为例,创建新的站点配置文件/etc/apache2/sites-available/example.com.conf:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>启用站点并重启Apache:
sudo a2ensite example.com.conf sudo systemctl reload apache2
模块管理
常用模块启用命令:
# 启用URL重写模块 sudo a2enmod rewrite # 启用SSL模块(需配合证书使用) sudo a2enmod ssl # 启用PHP模块 sudo apt install -y libapache2-mod-php php-mysql
MySQL核心配置
配置文件优化
MySQL主配置文件/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或/etc/my.cnf(CentOS)关键参数:
[mysqld] # 字符集设置 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 连接设置 max_connections = 200 max_connect_errors = 1000 wait_timeout = 30 # 缓冲区设置 innodb_buffer_pool_size = 1G inn_log_file_size = 256M # 日志设置 slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2
用户权限管理
登录MySQL控制台:
CREATE DATABASE example_db; CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON example_db.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES;
性能优化参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
| innodb_buffer_pool_size | 物理内存的50-70% | 影响整体读写性能 |
| innodb_log_file_size | 256M-1G | 影响事务提交速度 |
| query_cache_size | 0(MySQL 8.0已移除) | 避免在高并发场景使用 |
| max_connections | 100-500 | 根据服务器负载调整 |
Apache与MySQL协同工作
PHP环境配置
确保PHP已安装MySQL扩展:
sudo apt install -y php php-mysql php-mbstring php-xml
创建测试文件/var/www/example.com/info.php:
<?php phpinfo(); ?>
访问http://example.com/info.php,查看”mysqlnd”模块是否已加载。
数据库连接示例
PHP连接MySQL代码:

<?php
$servername = "localhost";
$username = "webuser";
$password = "StrongPassword123!";
$dbname = "example_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
$conn->close();
?>安全配置协同
Apache安全加固:
- 禁用目录列表:
Options -Indexes - 限制文件访问:
<Files "*.php"> Require all granted </Files> - 设置隐藏版本信息:
ServerTokens Prod
- 禁用目录列表:
MySQL安全加固:
- 创建独立应用数据库用户
- 启用SSL连接(生产环境必需)
- 定期更新密码策略
常见问题排查
连接超时问题
检查/etc/mysql/mysql.conf.d/mysqld.cnf中的bind-address设置,确保为0.0.0或具体IP,防火墙需放行3306端口:
sudo ufw allow 3306/tcp # Ubuntu sudo firewall-cmd --permanent --add-port=3306/tcp # CentOS
Apache权限问题
确保网站目录属主正确:
sudo chown -R www-data:www-data /var/www/example.com sudo chmod -R 755 /var/www/example.com
MySQL字符集问题
检查数据库、表、字段字符集是否统一为utf8mb4:
SHOW VARIABLES LIKE 'character_set%';
通过以上系统化的配置与优化,Apache与MySQL将形成高效稳定的Web服务基石,实际部署中需根据业务负载持续调整参数,并定期进行安全审计与性能监控,确保系统长期稳定运行。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/25422.html




