git-ftp를 이용한 웹사이트 배포

일반적으로 스크립트 언어에 기반한(Python, PHP, Ruby 등) 웹사이트 개발을 할때 보통 로컬머신에서 개발을하고 충분한 테스트를 거친 후 실제 서버로 배포를 하게 된다.

이때 ssh shell에 접근가능하며 충분한 권한을 가진 단독 호스팅 서버가 있다면 서버에 git 저장소를 만들어 두고 git의 pull & push와 hook을 이용하여 손쉽게 로컬에서 수정된 코드들만 효율적으로 배포(deployment)가 가능하다.

하지만 일반적인 웹호스팅 서비스를 이용할 경우 git을 지원하는 곳은 매우 드물다보니, 로컬에서 작업한 결과물을 업로드하려면 일반적으로 FTP를 사용해야한다. 하지만 이는 어느파일이 로컬에서 수정되었는지에 관계없이 전체 사이트를 업로드하는 것이 매우 비효율적일 뿐더러 관리가 더 힘들어진다. 이 경우 git-ftp 커맨드를 이용하는것을 매우 추천한다. 다운로드 링크: https://github.com/git-ftp/git-ftp

git-ftp를 사용하면 로컬 git 저장소 에서 수정된되어 커밋된 정보를 이용하여 해당 파일들만 서버로 업로드해주고 로컬에서 삭제된 파일도 자동으로 서버에서 지워주기때문에 매우 편리하다.

실제 배포 시나리오

  1. 로컬에서 작업중인 웹사이트 코드가 git 저장소로 관리되고 있다고 가정.
  2. 로컬 코드에 변경사항이 생겨 저장소에 commit을 실행
  3. commit 후 해당 변경된 코드를 git ftp push 명령어를 통해서 실제 서버로 배포

사용법

설치 방법은 https://github.com/git-ftp/git-ftp/blob/develop/INSTALL.md 을 참조한다.

다음 명령어들은 해당 로컬 git 저장소 경로로 이동한 후에 실행해야 한다.

  1. 로컬에만 파일이있고 아직 FTP에 아무 파일도 업로드 되지 않은 상태라면 다음 명령어를 사용하여 초기화 한다.

     git ftp init --user [ftp사용자] --passwd [ftp비번] - ftp://www.example.com
  2. 로컬에 파일이 있으며 이미 동일한 모든 파일이 수동으로 FTP에도 업로드가 되어있는 경우 다음명령어를 통해 초기화 한다.

     git ftp catchup -u [ftp사용자] -p [ftp비번] - ftp://www.example.com
  3. 이미 위의 명령어들을 통해 초기화 되어있는 상황에서, 로컬에 수정사항을 서버로 업로드하고싶을경우 다음 명령어를 사용한다.

     git ftp push -u [ftp사용자] -p [ftp비번] - ftp://www.example.com