Ubuntu 17.10下Apache虚拟主机无法运行问题求助
刚从Windows转Linux做PHP开发确实容易踩坑,尤其是Apache虚拟主机配置——Ubuntu 17.10的配置逻辑和旧版Linux或者Windows有不少细节差异,我当初转的时候也踩过类似的坑,帮你一步步排查解决:
1. 先修正Hosts文件的格式问题
你当前的Hosts文件把多个IP映射写在了同一行,这不符合规范,会导致解析异常。正确的格式应该每行对应一组IP与域名的映射,修改后的/etc/hosts应该是这样:
127.0.0.1 localhost 127.0.1.1 ubuntu.dev ubuntu # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
修改完成后,记得刷新系统DNS缓存:
sudo systemctl restart systemd-resolved
2. 按Ubuntu规范配置Apache虚拟主机
Ubuntu的Apache默认采用sites-available/sites-enabled的配置模式,和Windows直接修改httpd.conf的方式完全不同,步骤如下:
- 首先在
/etc/apache2/sites-available/目录下创建你的站点配置文件,比如ubuntu.dev.conf:
<VirtualHost *:80> ServerName ubuntu.dev ServerAlias www.ubuntu.dev # 替换成你的PHP项目实际根目录 DocumentRoot /var/www/ubuntu.dev/public_html # 日志文件路径,默认不用改 ErrorLog ${APACHE_LOG_DIR}/ubuntu.dev.error.log CustomLog ${APACHE_LOG_DIR}/ubuntu.dev.access.log combined # 给项目目录配置必要的权限和重写规则支持 <Directory /var/www/ubuntu.dev/public_html> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
- 启用这个站点配置:
sudo a2ensite ubuntu.dev.conf
- 如果不需要默认的Apache欢迎页,可以禁用默认站点:
sudo a2dissite 000-default.conf
3. 启用PHP和URL重写必需的Apache模块
Ubuntu默认可能没启用PHP模块和URL重写模块,这会导致PHP项目无法运行或者伪静态失效:
- 启用
mod_rewrite(URL重写模块):
sudo a2enmod rewrite
- 启用PHP模块(以PHP7.1为例,根据你安装的PHP版本调整,比如php7.0/php7.2):
sudo a2enmod php7.1
4. 修正项目目录的权限问题
Apache运行用户是www-data,如果项目目录的所有者或权限不对,会导致403访问错误:
# 把项目目录所有者改为Apache运行用户 sudo chown -R www-data:www-data /var/www/ubuntu.dev # 设置合理的目录权限 sudo chmod -R 755 /var/www/ubuntu.dev
5. 重启Apache使所有配置生效
所有修改完成后,必须重启Apache服务:
sudo systemctl restart apache2
最后测试排错
现在打开浏览器访问http://ubuntu.dev,如果还是无法正常访问,查看站点错误日志定位具体问题:
tail -f /var/log/apache2/ubuntu.dev.error.log
日志里会明确提示错误原因,比如目录不存在、权限不足、PHP模块未加载等,根据提示调整即可。
内容的提问来源于stack exchange,提问作者n00n
相关产品推荐
相关产品推荐

