一 准备与原则
二 推荐的权限与所有权设置
设置项目所有权(示例路径:/var/www/laravel):
sudo chown -R www-data:www-data /var/www/laravel
目录与文件的基础权限:
sudo find /var/www/laravel -type f -exec chmod 644 {} ;
sudo find /var/www/laravel -type d -exec chmod 755 {} ;
需要写入的目录(按需细化到子目录,如 storage/logs):
sudo chmod -R 775 /var/www/laravel/storage
sudo chmod -R 775 /var/www/laravel/bootstrap/cache
sudo find /var/www/laravel/storage/logs -type d -exec chmod 775 {} ;
敏感文件:
sudo chmod 600 /var/www/laravel/.env
sudo chmod 644 /var/www/laravel/.htaccess
三 开发协作与组写入方案
将部署/开发用户加入 www-data 组,便于本地编辑同时保留 Web 服务写入能力:
sudo usermod -a -G www-data $USER
newgrp www-data # 或重新登录以生效
仅对需要协作写入的目录设置组可写,避免全站 775:
sudo chgrp -R www-data /var/www/laravel/storage /var/www/laravel/bootstrap/cache
sudo chmod -R ug+rwx /var/www/laravel/storage /var/www/laravel/bootstrap/cache
说明:若已将整个项目属主设为 www-data,加入组可写意义有限;更推荐“目录级组写 + 最小权限”的组合。
四 使用 ACL 进行精细化控制(可选)
为项目根目录启用默认 ACL,使新建文件自动继承 www-data 组与权限:
sudo setfacl -d -m u::rwx,g:www-data:rwx,o::rx /var/www/laravel
sudo setfacl -m u::rwx,g:www-data:rwx,o::rx /var/www/laravel
按需为特定目录(如 storage/framework)追加 ACL:
sudo setfacl -R -m g:www-data:rwx /var/www/laravel/storage/framework
注意:启用 ACL 需文件系统挂载时包含 acl 选项(如 ext4 在 /etc/fstab 中使用 defaults,acl)。
五 部署与验证
以 www-data 身份执行部署命令,避免生成文件属主错误:
cd /var/www/laravel
sudo -u www-data composer install --optimize-autoloader --no-dev
sudo -u www-data php artisan key:generate
sudo -u www-data php artisan config:cache
sudo -u www-data php artisan route:cache
sudo -u www-data php artisan view:cache
Web 服务器配置要点:
快速自检: