GCP SSH部署Laravel应用频繁宕机,如何保持持续运行?
问题解答
1. php artisan serve是否仅在SSH登录状态下运行?
是的,你使用的sudo php artisan serve --host=10.134.0.2 --port=80命令仅在当前SSH会话活跃时运行。php artisan serve是Laravel提供的开发级服务器,默认以前台进程方式运行,会绑定当前SSH终端的会话资源——一旦你关闭终端、SSH连接超时断开,这个进程就会被系统终止,网站随之宕机。
2. 如何让Laravel网站持续保持运行?
根据使用场景(测试/生产),推荐以下几种方案:
方案1:临时测试用nohup后台运行
适合快速测试,无需复杂配置:
- 执行命令让进程脱离终端后台运行,同时记录日志:
nohup sudo php artisan serve --host=10.134.0.2 --port=80 > laravel.log 2>&1 &
- 终止进程时,先查询进程ID:
ps aux | grep php artisan serve,再执行kill <进程ID>。
方案2:生产环境用systemd托管服务
让Laravel作为系统服务运行,支持开机自启、进程崩溃自动重启:
- 创建systemd服务文件:
sudo nano /etc/systemd/system/laravel.service
- 粘贴配置(替换
/path/to/your/laravel/project为你的项目实际路径):
[Unit] Description=Laravel Artisan Serve After=network.target [Service] User=root Group=root WorkingDirectory=/path/to/your/laravel/project ExecStart=/usr/bin/php artisan serve --host=10.134.0.2 --port=80 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
- 保存退出后,重新加载配置并启动服务:
sudo systemctl daemon-reload sudo systemctl start laravel sudo systemctl enable laravel
- 查看服务状态:
sudo systemctl status laravel
方案3:生产环境最佳实践——用Nginx/Apache部署
php artisan serve仅适合开发,生产环境推荐搭配专业Web服务器(以Nginx为例):
- 安装依赖:
sudo apt update && sudo apt install nginx php-fpm php-mysql php-cli php-mbstring php-xml php-curl
- 创建Nginx虚拟主机配置:
sudo nano /etc/nginx/sites-available/laravel
- 粘贴配置(替换项目路径和IP/域名):
server { listen 80; server_name 10.134.0.2; root /path/to/your/laravel/project/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 根据你的PHP版本调整 } location ~ /\.ht { deny all; } }
- 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者Faizal K
相关产品推荐
相关产品推荐

