在Linux中实现Laravel的自动化部署,可以使用多种工具和方法。以下是一个基本的步骤指南,使用Git、SSH、Composer和Laravel的内置命令来实现自动化部署。
确保你的Web服务器(如Nginx)配置正确,指向你的Laravel项目的public目录。
在你的本地机器上生成SSH密钥,并将公钥添加到服务器的~/.ssh/authorized_keys文件中。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub | ssh user@your_server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
在你的项目根目录下创建一个部署脚本,例如deploy.sh。
#!/bin/bash
# 项目路径
PROJECT_PATH="/path/to/your/laravel/project"
# 远程服务器信息
SERVER_USER="user"
SERVER_HOST="your_server_ip"
SERVER_PROJECT_PATH="/path/to/your/laravel/project"
# Git仓库URL
GIT_REPO="https://github.com/your_username/your_laravel_project.git"
# 备份旧版本
echo "Backing up old version..."
ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PROJECT_PATH && tar czf backup_$(date +%Y%m%d%H%M%S).tar.gz ."
# 克隆最新代码
echo "Cloning latest code..."
ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PROJECT_PATH && git pull $GIT_REPO master"
# 安装依赖
echo "Installing dependencies..."
ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PROJECT_PATH && composer install --no-interaction --prefer-dist --optimize-autoloader"
# 运行迁移
echo "Running migrations..."
ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PROJECT_PATH && php artisan migrate --force"
# 清理缓存
echo "Clearing cache..."
ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PROJECT_PATH && php artisan config:clear && php artisan cache:clear && php artisan view:clear"
# 重启Web服务器
echo "Restarting web server..."
ssh $SERVER_USER@$SERVER_HOST "sudo systemctl restart nginx"
echo "Deployment completed successfully!"
确保部署脚本有执行权限。
chmod +x deploy.sh
每次需要部署时,只需运行部署脚本。
./deploy.sh
你可以使用CI/CD工具(如Jenkins、GitLab CI、GitHub Actions等)来进一步自动化这个过程。以下是一个简单的GitHub Actions示例:
在你的项目根目录下创建一个.github/workflows/deploy.yml文件。
name: Deploy to Production
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: composer,vendor/bin
- name: Install dependencies
run: composer install --no-interaction --prefer-dist --optimize-autoloader
- name: Run migrations
run: php artisan migrate --force
- name: Clear cache
run: |
php artisan config:clear
php artisan cache:clear
php artisan view:clear
- name: Restart Web Server
run: sudo systemctl restart nginx
这样,每次你向master分支推送代码时,GitHub Actions会自动执行部署脚本。
通过这些步骤,你可以在Linux中实现Laravel的自动化部署。根据你的具体需求,你可以进一步自定义和扩展这些步骤。