在 Linux 环境中实现 Laravel 应用的热更新(无需重启服务即可应用代码更改)有以下几种常用方法:
适用于前端资源的实时更新:
npm install
npm run hot
配置 webpack.mix.js
:
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.version()
.browserSync('your-domain.test'); // 可选,添加 BrowserSync
对于小型项目,可以使用内置开发服务器:
php artisan serve --host=0.0.0.0 --port=8000
对于生产环境或更正式的开发环境:
; /etc/php/7.x/fpm/php.ini
opcache.enable=1
opcache.validate_timestamps=1 ; 开发环境设为1,生产环境设为0
opcache.revalidate_freq=0 ; 开发环境设为0,立即检查文件更改
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.x-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_read_timeout 300;
# 禁用缓存
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
}
对于高性能热更新需求:
composer require laravel/octane
php artisan octane:install
php artisan octane:start --watch
Laravel Valet (macOS/Linux):
valet install
cd your-project
valet link
Docker + Laravel Sail:
配置 docker-compose.yml
使用卷挂载实现文件同步
使用 inotifywait
监控文件变化并自动清除缓存:
sudo apt-get install inotify-tools
创建监控脚本:
#!/bin/bash
while inotifywait -r -e modify,create,delete /path/to/your/project; do
php artisan view:clear
php artisan route:clear
php artisan config:clear
done
开发环境:
php artisan serve --watch
或 Octane 的 --watch
选项生产环境:
php artisan optimize:clear
和 php artisan optimize
团队开发:
注意:热更新在开发环境中非常有用,但在生产环境中应谨慎使用,确保有适当的部署流程和缓存策略。