centos

laravel在centos上如何实现自动化部署

小樊
33
2025-03-29 15:35:26
栏目: 智能运维

在CentOS上实现Laravel的自动化部署可以通过多种方式完成,以下是使用Docker和GitLab CI/CD的示例流程:

使用Docker实现自动化部署

  1. 安装Docker及相关工具

    sudo yum install -y epel-release
    sudo yum install -y docker
    sudo systemctl start docker
    sudo systemctl enable docker
    
  2. 创建Dockerfile: 在你的Laravel项目根目录下创建一个Dockerfile,内容如下:

    FROM php:7.4-fpm
    
    # 安装依赖
    RUN yum install -y git zip unzip
    
    # 安装Composer
    COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
    
    # 设置工作目录
    WORKDIR /var/www/html
    
    # 复制项目文件
    COPY . /var/www/html
    
    # 安装项目依赖
    RUN composer install --optimize-autoloader --no-dev
    
    # 配置文件权限
    RUN chown -R www-data:www-data /var/www/html
    RUN chmod -R 755 /var/www/html/storage
    RUN chmod -R 755 /var/www/html/bootstrap/cache
    
  3. 创建docker-compose.yml

    version: '3'
    services:
      web:
        build: .
        volumes:
          - .:/var/www/html
        ports:
          - "8000:8000"
        depends_on:
          - db
    
      db:
        image: mysql:5.7
        volumes:
          - db_data:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: example
          MYSQL_DATABASE: laravel
          MYSQL_USER: user
          MYSQL_PASSWORD: password
    
    volumes:
      db_data:
    
  4. 初始化Docker Compose

    docker-compose up -d
    
  5. 配置Nginx(可选): 如果你想使用Nginx作为Web服务器,可以按照以下步骤进行配置:

    server {
        listen 80;
        server_name your_domain_or_IP;
        root /var/www/html/public;
        index index.php index.html index.htm;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php-fpm/php7.4-fpm.sock;
        }
    
        location /\.ht {
            deny all;
        }
    }
    
  6. 重启Nginx

    sudo systemctl restart nginx
    

使用GitLab CI/CD实现自动化部署

  1. 配置.gitlab-ci.yml: 在你的Laravel项目根目录下创建一个.gitlab-ci.yml文件,内容如下:

    stages:
      - build
      - test
      - deploy
    
    build:
      stage: build
      script:
        - composer install --optimize-autoloader --no-dev
        - php artisan key:generate
        - php artisan config:cache
    
    test:
      stage: test
      script:
        - vendor/bin/phpunit --coverage-clover build/logs/clover.xml
    
    deploy:
      stage: deploy
      script:
        - rsync -avz --delete --exclude='.git' --exclude='.env' . user@your_server_ip:/path/to/your/laravel/public
      only:
        - master
    
  2. 配置SSH密钥: 在GitLab CI/CD Runner上配置SSH密钥,以便能够安全地访问你的服务器。

  3. 部署到服务器: 在.gitlab-ci.yml中配置的deploy阶段会自动将代码同步到你的服务器。

通过以上步骤,你可以在CentOS上实现Laravel的自动化部署。根据你的具体需求,可以选择使用Docker或GitLab CI/CD来实现更高效的部署流程。

0
看了该问题的人还看了