GitHub Actions를 사용하여 공유 서버에 Laravel 애플리케이션 배포
11615 단어 codenewbiewebdevgithublaravel
소개
저는 최근에 스테이징 서버가 매우 제한된 권한을 가진 사용자와 공유 호스팅 계획에 있는 프로젝트에서 작업했습니다. 그 당시에는 git을 사용하여 FTP 서버에 변경 사항만 업로드하는 도구인 git-FTP 을 사용하여 업데이트를 푸시했습니다. 자동화가 없으면 git-FTP 초기 푸시 프로세스에 몇 시간이 걸립니다. 내 컴퓨터에서 워크로드를 오프로드하기 위해 GitHub Actions를 사용하기로 결정했습니다.
이 게시물은 스테이징 배포 작업에 SSH와 git-FTP의 조합을 사용하는 워크플로 파일을 다룹니다. GitHub Actions 에 대한 지식이 있다고 가정합니다.
워크플로를 시작하기 전에
워크플로는 SSH를 통해 서버에 연결하여 명령을 실행하고 파일은 FTP를 통해 전송됩니다. GitHub 계정에 다음 자격 증명에 대한 비밀이 저장되어 있어야 합니다.
스테이징 서버에 작곡가를 설치하는 데 몇 가지 문제가 있었고 git에 대한 종속성을 추적하고 싶지 않았기 때문에 배포하기 전에 종속성을 다운로드하고 아카이브를 만듭니다.
또한 이 게시물은 스테이징 서버에 로그 파일을 생성하는 git-FTP의 초기 설정 후 배포 작업을 다룹니다.
스테이징 워크플로
워크플로 파일의 3가지 작업:
setup — 서버의 공급업체 디렉토리를 정리합니다.
setup:
runs-on: ubuntu-latest
steps:
- name: Remove vendor directory
uses: fifsky/ssh-action@master
with:
command: |
cd www/site_directory/
[ -d ./vendor ] && rm -rf ./vendor
host: https://staging-server.com
user: system_user
key: ${{ secrets.SSH_PRIVATE_KEY }}
배포 — 종속성을 다운로드하고 사이트를 배포합니다.
deploy:
name: Deploy to the staging server
runs-on: ubuntu-latest
needs: setup
steps:
- uses: actions/[email protected]
with:
fetch-depth: 2
- name: Install Composer Dependencies
run: composer install --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Create zipped vendor directory
uses: montudor/[email protected]
with:
args: zip -qq -r ./vendor.zip ./vendor
- name: FTP-Deploy-Action
uses: SamKirkland/[email protected]
with:
ftp-server: ftp://ADDRESS_HERE
ftp-username: FTP_USER
ftp-password: ${{ secrets.FTP_PASSWORD }}
[vendor.zip](http://vendor.zip)
는 git을 사용하여 추적되지 않으므로 .git-ftp-include
파일에 추가되어 항상 푸시됩니다. 아카이브를 생성하면 단일 파일로 전송할 수 있습니다. 이것은 실제로 내 워크플로 실행을 몇 분에서 몇 초로 줄였습니다. 이것은 꽤 멋진 트릭이라고 생각했습니다.배포 후 — 정리
[vendor.zip](http://vendor.zip)
하고 여러 장인 명령을 실행합니다.post-deploy:
runs-on: ubuntu-latest
needs: deploy
steps:
- name: Run migrations and seeders, clear cache for views, config and routes
uses: fifsky/ssh-action@master
with:
command: |
cd www/site_dir/
unzip -qq ./vendor.zip
rm -f vendor.zip
php artisan migrate:fresh --seed
php artisan config:clear
php artisan view:clear
php artisan route:cache
host: https://SERVER_ADDRESS
user: USER
key: ${{ secrets.USER_PRIVATE_KEY }}
워크플로 실행
프로젝트에서 마스터 풀 요청에서만 업데이트를 가져오는 스테이징 분기로 푸시 시 실행되도록 워크플로를 설정했습니다. 다음은 전체 워크플로 파일입니다.
name: Pushing to the staging server
on:
push:
branches:
- staging
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: Remove vendor directory
uses: fifsky/ssh-action@master
with:
command: |
cd www/site_dir/
[ -d ./vendor ] && rm -rf ./vendor
host: https://ADDRESS_HERE
user: USER
key: ${{ secrets.USER_PRIVATE_KEY }}
deploy:
name: Deploy
runs-on: ubuntu-latest
needs: setup
steps:
- uses: actions/[email protected]
with:
fetch-depth: 2
- name: Install Composer Dependencies
run: composer install --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Create zipped vendor directory
uses: montudor/[email protected]
with:
args: zip -qq -r ./vendor.zip ./vendor
- name: FTP-Deploy-Action
uses: SamKirkland/[email protected]
with:
ftp-server: ftp://ADDRESS_HERE/
ftp-username: FTP_USER
ftp-password: ${{ secrets.FTP_PASSWORD }}
post-deploy:
runs-on: ubuntu-latest
needs: deploy
steps:
- name: Run migrations and seeders, clear cache for views, config and routes
uses: fifsky/ssh-action@master
with:
command: |
cd www/site_dir/
unzip -qq ./vendor.zip
rm -f vendor.zip
php artisan migrate:fresh --seed
php artisan config:clear
php artisan view:clear
php artisan route:cache
host: https://SERVER_ADDRESS
user: USER
key: ${{ secrets.USER_PRIVATE_KEY }}
결론
설정 작업에서 공급업체 디렉터리를 삭제할 때 사용자가 의도하지 않은 중단을 받을 수 있으므로 프로덕션 서버에 배포하기 위해 현재 상태에서 이 워크플로를 사용하지 않는 것이 좋습니다. 서버에 작곡가를 설치한 시나리오에서는 배포 작업에서 설정 작업과 종속성 설치 단계를 제거합니다. 또한 작성기 종속성을 업데이트하거나 배포 업데이트를 수행할 때 애플리케이션을 유지 관리 모드로 설정하는 것이 좋습니다.
Reference
이 문제에 관하여(GitHub Actions를 사용하여 공유 서버에 Laravel 애플리케이션 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/steekam/pushing-your-laravel-application-to-a-shared-server-using-git-ftp-and-github-actions-5d6l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)