首页主机资讯如何在Debian上利用Laravel进行自动化部署

如何在Debian上利用Laravel进行自动化部署

时间2025-10-17 17:41:03发布访客分类主机资讯浏览576
导读:如何在Debian上利用Laravel实现自动化部署 在Debian系统上,Laravel项目的自动化部署可通过Git钩子、**CI/CD工具(GitHub Actions/Jenkins)或专用部署工具(Laravel Forge/Env...

如何在Debian上利用Laravel实现自动化部署

在Debian系统上,Laravel项目的自动化部署可通过Git钩子、**CI/CD工具(GitHub Actions/Jenkins)专用部署工具(Laravel Forge/Envoyer)**实现。以下是具体步骤:

一、基础环境准备

在部署前,需确保Debian服务器安装必要的软件包:

sudo apt update &
    &
 sudo apt upgrade -y
sudo apt install -y git nginx php8.2-fpm php8.2-cli php8.2-mysql php8.2-curl php8.2-xml php8.2-mbstring php8.2-zip unzip composer mariadb-server

配置Nginx虚拟主机(以example.com为例):

sudo nano /etc/nginx/sites-available/example.com

添加以下内容(替换example.com为你的域名):

server {
    
    listen 80;
    
    server_name example.com;
    
    root /var/www/example.com/public;
    
    index index.php;

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

    }

    location ~ \.php$ {
    
        include snippets/fastcgi-php.conf;
    
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;

    }

    location ~ /\.ht {
    
        deny all;

    }

}
    

启用配置并重启Nginx:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo systemctl restart nginx

创建Laravel项目并配置环境:

cd /var/www
composer create-project laravel/laravel example.com
cd example.com
cp .env.example .env
php artisan key:generate

设置目录权限:

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

二、使用Git钩子实现自动化部署

Git钩子可在代码推送时自动触发部署脚本,适合小型项目。

  1. 在服务器上创建裸仓库
    cd /var/repo
    sudo mkdir your-laravel-repo.git
    cd your-laravel-repo.git
    sudo git init --bare
    
  2. 创建部署脚本
    在裸仓库的hooks目录下创建post-receive文件:
    sudo nano /var/repo/your-laravel-repo.git/hooks/post-receive
    
    添加以下内容(替换/var/www/example.com为项目部署路径):
    #!/bin/bash
    TARGET="/var/www/example.com"
    GIT_DIR="/var/repo/your-laravel-repo.git"
    BRANCH="main"
    
    while read oldrev newrev ref
    do
        if [[ $ref = refs/heads/$BRANCH ]];
    
        then
            echo "Ref $ref received. Deploying ${
    BRANCH}
     branch to production..."
            git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
            cd $TARGET
            composer install --optimize-autoloader --no-dev
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            php artisan view:clear
            chown -R www-data:www-data $TARGET/storage
            chown -R www-data:www-data $TARGET/bootstrap/cache
            systemctl restart nginx
            echo "Deployment completed."
        else
            echo "Ref $ref received. Doing nothing: only the ${
    BRANCH}
     branch may be deployed on this server."
        fi
    done
    
  3. 赋予执行权限
    sudo chmod +x /var/repo/your-laravel-repo.git/hooks/post-receive
    
  4. 本地配置远程仓库
    在本地Laravel项目中添加远程仓库:
    git remote add production ssh://user@your-server-ip/var/repo/your-laravel-repo.git
    
    推送代码时自动触发部署:
    git push production main
    

三、使用GitHub Actions实现自动化部署

GitHub Actions适合需要版本控制集成的项目,无需在服务器上安装额外工具。

  1. 在项目根目录创建.github/workflows/deploy.yml
    name: Deploy Laravel to Debian
    on:
      push:
        branches:
          - main
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
          - name: Setup PHP
            uses: shivammathur/setup-php@v2
            with:
              php-version: '8.2'
              extensions: mbstring, xml, curl, zip
          - name: Install dependencies
            run: composer install --optimize-autoloader --no-dev
          - name: Generate application key
            run: php artisan key:generate
          - name: Deploy to server via SSH
            uses: appleboy/ssh-action@v1
            with:
              host: ${
    {
     secrets.SERVER_HOST }
    }
    
              username: ${
    {
     secrets.SERVER_USER }
    }
    
              key: ${
    {
     secrets.SSH_PRIVATE_KEY }
    }
        
              script: |
                cd /var/www/example.com
                git pull origin main
                composer install --optimize-autoloader --no-dev
                php artisan migrate --force
                php artisan config:cache
                php artisan route:cache
                php artisan view:clear
                systemctl restart nginx
    
  2. 配置GitHub Secrets
    进入项目Settings > Secrets and variables > Actions,添加以下变量:
    • SERVER_HOST: Debian服务器IP或域名
    • SERVER_USER: 服务器SSH用户名(如ubuntu
    • SSH_PRIVATE_KEY: 服务器SSH私钥(生成ssh-keygen -t rsa -b 4096,将公钥添加到服务器~/.ssh/authorized_keys
  3. 推送代码触发部署
    将代码推送到GitHub的main分支,GitHub Actions会自动执行部署流程。

四、使用专用部署工具(Laravel Forge/Laravel Envoyer)

1. Laravel Forge(官方推荐)

Laravel Forge是Laravel官方提供的服务器管理工具,支持一键部署、Git集成、数据库备份等功能。

  • 步骤
    • 注册Forge账号,添加Debian服务器(提供SSH访问权限)。
    • 在Forge中创建Laravel项目,关联Git仓库(GitHub/GitLab/Bitbucket)。
    • 配置部署脚本(自动执行composer installmigrate等命令)。
    • 点击“Deploy”按钮即可触发自动化部署。
  • 优势:界面友好、支持零停机部署、集成Let’s Encrypt SSL。

2. Laravel Envoyer(零停机部署)

Laravel Envoyer专为Laravel设计,支持零停机部署、实时监控、回滚功能。

  • 步骤
    • 注册Envoyer账号,添加Debian服务器。
    • 配置项目仓库和部署路径。
    • 设置部署钩子(如composer installmigrate)。
    • 点击“Deploy Now”即可实现零停机部署。
  • 优势:零停机、实时健康检查、一键回滚。

以上方法覆盖了不同场景下的自动化部署需求,可根据项目规模和团队习惯选择合适的方式。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Debian上利用Laravel进行自动化部署
本文地址: https://pptw.com/jishu/729180.html
ubuntu ifconfig如何配置IP转发 Debian环境下Laravel的多语言支持如何实现

游客 回复需填写必要信息