linux

Laravel在Linux上如何实现自动化部署

小樊
50
2025-09-12 15:54:10
栏目: 智能运维

在Linux上实现Laravel项目的自动化部署,可以使用多种工具和方法。以下是一个常见的使用Git、SSH、PHP和Shell脚本的自动化部署流程:

1. 准备工作

1.1 安装必要的软件

确保你的Linux服务器上已经安装了以下软件:

1.2 配置SSH密钥

为了安全地从本地机器部署到服务器,你需要配置SSH密钥。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub

将公钥添加到服务器的~/.ssh/authorized_keys文件中。

2. 配置Web服务器

2.1 Nginx配置示例

server {
    listen 80;
    server_name example.com;

    root /path/to/your/laravel/project/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

2.2 Apache配置示例

<VirtualHost *:80>
    ServerName example.com

    DocumentRoot /path/to/your/laravel/project/public

    <Directory /path/to/your/laravel/project/public>
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

3. 编写部署脚本

创建一个Shell脚本来自动化部署过程。

#!/bin/bash

# 配置变量
REPO_URL="git@example.com:username/laravel-project.git"
BRANCH="main"
DEPLOY_DIR="/path/to/your/laravel/project"
BACKUP_DIR="/path/to/backup"

# 进入项目目录
cd $DEPLOY_DIR

# 拉取最新代码
git pull origin $BRANCH

# 安装依赖
composer install --no-interaction --prefer-dist --optimize-autoloader

# 备份旧版本
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup-$TIMESTAMP.tar.gz"
tar -czf $BACKUP_FILE -C $DEPLOY_DIR .

# 清理缓存
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear

# 运行迁移
php artisan migrate --force

# 重启Web服务器
systemctl restart nginx  # 或 systemctl restart apache2

# 删除旧备份
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;

4. 设置定时任务

使用cron来定期运行部署脚本。

crontab -e

添加以下行来每天凌晨2点运行部署脚本:

0 2 * * * /path/to/deploy.sh

5. 安全性和权限

确保你的部署脚本和Web服务器配置文件具有适当的权限。

chmod +x /path/to/deploy.sh
chown www-data:www-data /path/to/deploy.sh

6. 测试部署

手动运行部署脚本以确保一切正常:

/path/to/deploy.sh

通过以上步骤,你可以在Linux上实现Laravel项目的自动化部署。根据你的具体需求和环境,可能需要调整配置和脚本。

0
看了该问题的人还看了