EN VI

Các bước cài đặt git CI/CD trên dự án centos laravel chi tiết

Tôi có thể hướng dẫn bạn cách triển khai ứng dụng Laravel sử dụng GitLab CI/CD và Docker trên CentOS. Bạn cần thực hiện các bước sau:

  1. Cài đặt ACL trên CentOS bằng lệnh sau:
yum -y install acl
  1. Tạo một người dùng mới trên máy chủ bằng lệnh sau:
sudo adduser deployer
  1. Cấp quyền truy cập cho người dùng mới tạo vào thư mục /var/www bằng lệnh sau:
sudo setfacl -R -m u:deployer:rwx /var/www
  1. Tạo một cặp khóa SSH mới bằng lệnh sau:
ssh-keygen -t rsa -C "deployer" -f ~/.ssh/id_rsa -P ""
  1. Sao chép nội dung của khóa công khai vào tệp authorized_keys bằng lệnh sau:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  1. Sao chép khối văn bản khóa riêng tư bằng lệnh sau:
cat ~/.ssh/id_rsa
  1. Trên GitLab, thêm khóa triển khai bằng cách đi tới Cài đặt -> Khóa triển khai. Sao chép nội dung khóa riêng tư vào đó.

  2. Trong mã nguồn của bạn, sử dụng Composer để cài đặt Laravel Envoy bằng lệnh sau:

composer require laravel/envoy --dev
  1. Tạo tệp Envoy.blade.php với nội dung như sau để triển khai ứng dụng của bạn:
@servers(['web' => 'deployer@{địa chỉ IP của máy chủ}'])

@setup
    $repository = '[email protected]'; // tên repository của bạn
    $releases_dir = '/var/www/html/project'; // đường dẫn tới thư mục chứa mã nguồn trên máy chủ
    $app_dir = '/var/www/html';
    $release = date('YmdHis');
    $new_release_dir = $releases_dir . '/'. $release;
@endsetup

@story('deploy')
    pull_repository
    run_composer
    migrate
@endstory

@task('pull_repository')
    echo 'Đang tải mã nguồn...'
    cd {{ $releases_dir }}
    echo 'Reset lại HEAD...'
    git reset --hard HEAD
    echo 'Đang kéo mã nguồn từ GitLab...'
    git pull origin master
@endtask

@task('run_composer')
    echo "Bắt đầu triển khai..."
    cd {{ $releases_dir }}
    composer install --ignore-platform-reqs
@endtask

{{-- Migrate cơ sở dữ liệu --}}
@task('migrate')
    echo 'Đang di chuyển các bản cập nhật...'
    cd {{ $releases_dir }}
    php artisan migrate --force
@endtask
  1. Tạo tệp .gitlab-ci.yml với nội dung như sau để triển khai ứng dụng của bạn:
image: registry.gitlab.com/1206dev/blog:latest

stages:
  - deploy_dev

deploy_dev:
  stage: deploy_dev
  script:
    # Thêm khóa SSH riêng tư vào môi trường xây dựng
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir -p ~/.ssh
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

    # Chạy Envoy để triển khai ứng dụng
    - ~/.composer/vendor/bin/envoy run deploy --commit="$CI_COMMIT_SHA"
  rules:
    - if: $CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "push"
    - if: $CI_COMMIT_MESSAGE =~ /\[build\]/
      when: always
    - when: never
  1. Tạo tệp Dockerfile với nội dung như sau để xây dựng ảnh Docker:
# Sử dụng ảnh PHP 7.4 làm ảnh cơ sở
FROM php:7.4

# Cập nhật các gói phần mềm
RUN apt-get update

# Cài đặt các gói phần mềm cần thiết cho PHP và Composer
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Xóa các tệp tin đã tải xuống trong quá trình cài đặtRUN apt-get clean

# Cài đặt các extension cần thiết cho PHP
# Bạn có thể cài đặt thêm các extension khác nếu cần thiết
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Cài đặt Composer
RUN curl --silent --show-error "https://getcomposer.org/installer" | php -- --install-dir=/usr/local/bin --filename=composer

# Cài đặt Laravel Envoy
RUN composer global require "laravel/envoy=~1.0"
  1. Đăng nhập vào Docker Registry và đẩy ảnh Docker lên đó bằng lệnh sau:
docker login registry.gitlab.com
docker build -t registry.gitlab.com/1206dev/blog .
docker push registry.gitlab.com/1206dev/blog
  1. Cài đặt GitLab Runner bằng lệnh sau:
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
  1. Cấu hình biến DOCKER_AUTH_CONFIG trên GitLab bằng cách đi tới Cài đặt -> CI/CD -> Biến. Thêm khóa DOCKER_AUTH_CONFIG và giá trị là một chuỗi JSON chứa thông tin xác thực Docker Registry của bạn.

  2. Nếu bạn gặp lỗi "envoy deployer@: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)", hãy thực hiện các lệnh sau để sửa lỗi:

chmod 700 .ssh
chmod 600 .ssh/authorized_keys
restorecon -r -vv .ssh/authorized_keys

Sau khi hoàn thành các bước trên, bạn đã triển khai ứng dụng Laravel của mình sử dụng GitLab CI/CD và Docker trên CentOS.

Rating: 10 (1 Votes)
Comment

Login


Forgot Your Password?

Create Account


Lost your password? Please enter your email address. You will receive a link to create a new password.

Reset Password

Back to login