为Apache虚拟主机配置Laravel项目的文档根目录咨询
嘿,很高兴你已经成功把Laravel应用在Ubuntu虚拟机的Apache上跑起来了!针对文档根目录的配置,我给你梳理几个关键步骤和注意事项——毕竟Laravel的目录结构和普通PHP项目有差异,正确配置文档根是保障安全和功能正常的核心:
Laravel + Apache 文档根目录配置指南
首先要明确:Laravel的文档根目录必须指向项目的public文件夹,而不是项目根目录。这个设计是为了避免.env、配置文件等敏感内容直接暴露在Web环境中,是官方推荐的安全最佳实践。
方法1:修改Apache默认站点配置
如果你只是用虚拟机做测试,修改默认站点配置最直接:
- 打开Apache默认站点配置文件:
sudo nano /etc/apache2/sites-available/000-default.conf - 找到
DocumentRoot指令,把默认的/var/www/html替换成你的Laravel项目public目录的绝对路径,比如:DocumentRoot /var/www/your-laravel-project/public - 同时修改下方的
<Directory>块,确保路径匹配,并开启AllowOverride All(让Laravel的.htaccess生效):<Directory /var/www/your-laravel-project/public> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> - 启用Apache的
rewrite模块(Laravel的路由依赖这个):sudo a2enmod rewrite - 重启Apache服务让配置生效:
sudo systemctl restart apache2
方法2:新建虚拟主机配置(推荐用于多站点场景)
如果以后需要部署多个应用,新建独立的虚拟主机会更规范:
- 创建新的站点配置文件:
sudo nano /etc/apache2/sites-available/your-app.conf - 写入以下配置(替换对应的路径和域名):
<VirtualHost *:80> ServerName your-app.local # 可以自定义本地域名,需修改hosts文件对应 ServerAlias www.your-app.local DocumentRoot /var/www/your-laravel-project/public <Directory /var/www/your-laravel-project/public> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> # 日志配置(可选,便于排查问题) ErrorLog ${APACHE_LOG_DIR}/your-app-error.log CustomLog ${APACHE_LOG_DIR}/your-app-access.log combined </VirtualHost> - 启用这个新站点:
sudo a2ensite your-app.conf - (可选)禁用默认站点:
sudo a2dissite 000-default.conf - 同样启用
rewrite模块并重启Apache:sudo a2enmod rewrite sudo systemctl restart apache2
额外权限注意事项
Laravel需要storage和bootstrap/cache目录有写权限,确保Apache用户(www-data)能读写这些目录:
sudo chown -R www-data:www-data /var/www/your-laravel-project/storage /var/www/your-laravel-project/bootstrap/cache sudo chmod -R 775 /var/www/your-laravel-project/storage /var/www/your-laravel-project/bootstrap/cache
内容的提问来源于stack exchange,提问作者bcrimmins
相关产品推荐
相关产品推荐

