在php8.4环境下,通过Apache配置多站点可以让一台服务器同时承载多个不同域名的网站,适合同时开发多个项目或者部署多个线上站点的场景。下面我们一步步完成整个配置过程。

前置准备
首先确保已经正确安装php8.4和Apache服务,并且可以单独运行单个站点。可以通过以下命令检查版本:
# 检查php版本 php -v # 检查Apache状态 systemctl status httpd # 如果是Ubuntu/Debian系统用下面的命令 systemctl status apache2
开启Apache虚拟主机模块
Apache的多站点功能依赖虚拟主机(vhost)模块,不同系统的模块配置文件路径略有区别:
- CentOS/RHEL系统:模块配置文件在
/etc/httpd/conf.modules.d/00-base.conf - Ubuntu/Debian系统:模块配置文件在
/etc/apache2/mods-available/目录
确保以下模块已经开启,如果没有开启需要去掉对应配置行的注释:
# CentOS/RHEL系统中确认00-base.conf有以下内容 LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule rewrite_module modules/mod_rewrite.so # Ubuntu/Debian系统执行以下命令开启模块 sudo a2enmod vhost_alias sudo a2enmod rewrite
配置多站点虚拟主机
1. 创建站点目录
为每个站点创建独立的根目录,比如我们配置两个站点:site1.test和site2.test:
# 创建站点目录 sudo mkdir -p /var/www/site1 sudo mkdir -p /var/www/site2 # 创建测试页面 echo "<?php phpinfo(); ?>" | sudo tee /var/www/site1/index.php echo "<?php echo 'This is site2'; ?>" | sudo tee /var/www/site2/index.php # 设置目录权限 sudo chown -R apache:apache /var/www/site1 /var/www/site2 # Ubuntu/Debian系统把apache换成www-data
2. 编写虚拟主机配置文件
不同系统的虚拟主机配置存放路径不同:
- CentOS/RHEL系统:在
/etc/httpd/conf.d/目录下新建vhost.conf - Ubuntu/Debian系统:在
/etc/apache2/sites-available/目录下新建vhost.conf
配置文件内容如下:
# 第一个站点配置
<VirtualHost *:80>
ServerName site1.test
DocumentRoot "/var/www/site1"
<Directory "/var/www/site1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 错误日志和访问日志路径
ErrorLog "/var/log/httpd/site1-error.log"
CustomLog "/var/log/httpd/site1-access.log" common
</VirtualHost>
# 第二个站点配置
<VirtualHost *:80>
ServerName site2.test
DocumentRoot "/var/www/site2"
<Directory "/var/www/site2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/site2-error.log"
CustomLog "/var/log/httpd/site2-access.log" common
</VirtualHost>3. 启用配置并重启服务
如果是Ubuntu/Debian系统,还需要执行启用站点的命令:
sudo a2ensite vhost.conf
所有系统都需要重启Apache服务让配置生效:
# CentOS/RHEL系统 sudo systemctl restart httpd # Ubuntu/Debian系统 sudo systemctl restart apache2
本地域名绑定
如果是本地开发环境,还需要修改hosts文件绑定域名到本地IP:
# Linux/Mac系统编辑/etc/hosts sudo vim /etc/hosts # Windows系统编辑C:\Windows\System32\drivers\etc\hosts # 在文件末尾添加以下内容 127.0.0.1 site1.test 127.0.0.1 site2.test
测试验证
打开浏览器分别访问http://site1.test和http://site2.test,如果第一个页面显示php8.4的信息,第二个页面显示对应文本,说明多站点配置成功。
常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 访问站点显示403禁止访问 | 目录权限不足或者Apache用户没有访问权限 | 检查目录所有者是否为Apache运行用户,设置目录权限为755 |
| 访问站点显示php代码 | php模块没有正确加载 | 检查Apache的php模块配置,确保php8.4模块已经加载 |
| 域名无法访问 | hosts文件没有配置或者虚拟主机ServerName写错 | 检查hosts文件配置,核对虚拟主机里的ServerName是否正确 |
按照以上步骤操作,就可以在php8.4环境下通过Apache实现多站点配置了,后续新增站点只需要重复添加虚拟主机配置块,然后重启服务即可。