如何快速将基于Laravel Sail构建的Laravel应用部署到Ubuntu云服务器?
部署基于Laravel Sail的Laravel应用到Ubuntu云服务器
1. 服务器环境准备
- 更新系统包:
sudo apt update && sudo apt upgrade -y - 安装Docker与Docker Compose:
sudo apt install docker.io docker-compose -y - 将当前用户加入Docker组(避免每次执行Docker命令都加
sudo):
执行后退出当前SSH会话,重新登录使权限生效。sudo usermod -aG docker $USER
2. 上传项目代码
- 通过Git克隆你的项目仓库(若为私有仓库,需提前在服务器配置SSH密钥):
git clone git@your-repo-url.git - 进入项目目录:
cd your-project-directory - 复制并编辑环境变量文件:
编辑cp .env.example .env.env文件,设置生产环境核心参数:APP_ENV=productionAPP_DEBUG=false- 按需配置数据库连接(使用Sail内置数据库则保持默认,用外部数据库需修改对应参数)
3. Laravel项目配置
- 安装Composer依赖(通过Sail容器执行,无需服务器本地安装PHP):
./vendor/bin/sail composer install --no-dev若项目未包含Sail,先执行
composer require laravel/sail --dev,再运行上述命令 - 生成应用密钥:
./vendor/bin/sail artisan key:generate --force - 执行数据库迁移(若有需要):
./vendor/bin/sail artisan migrate --force - 优化应用性能:
./vendor/bin/sail artisan optimize
4. 启动Sail服务
- 后台启动所有容器:
./vendor/bin/sail up -d - 检查容器运行状态:
确保./vendor/bin/sail pslaravel.test、mysql(或其他数据库容器)等状态为Up
5. 配置外部访问(可选但推荐)
方式1:直接开放容器端口
- 开放服务器防火墙端口(对应
.env中的APP_PORT,默认8000):
后续配置HTTPS时,需开放443端口:sudo ufw allow 8000/tcpsudo ufw allow 443/tcp
方式2:Nginx反向代理(推荐用于域名访问)
- 安装Nginx:
sudo apt install nginx -y - 创建域名配置文件:
写入以下配置(替换sudo nano /etc/nginx/sites-available/your-domain.confyour-domain.com和8000为实际域名与容器端口):server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/ sudo systemctl restart nginx
6. 配置HTTPS(推荐)
- 安装Certbot与Nginx插件:
sudo apt install certbot python3-certbot-nginx -y - 自动获取并配置SSL证书:
按照终端提示完成配置,Certbot会自动修改Nginx配置并启用HTTPS。sudo certbot --nginx -d your-domain.com
日常维护
- 更新项目代码:
git pull origin main ./vendor/bin/sail composer install --no-dev ./vendor/bin/sail artisan migrate --force ./vendor/bin/sail artisan optimize ./vendor/bin/sail restart - 查看容器日志:
./vendor/bin/sail logs laravel.test
内容的提问来源于stack exchange,提问作者Tyler
相关产品推荐
相关产品推荐

