Git 서버를 사용하여 웹사이트 관리

Git 서버를 사용하여 웹사이트 관리

저는 nginx를 사용하여 웹사이트를 운영하고 있으며, 다른 사람들이 공동 작업할 수 있도록 git을 사용하여 관리하고 싶은 일부 콘텐츠가 웹사이트에 있습니다.

라는 이름의 파일이 있다고 가정합니다.앨리스그리고 웹사이트의 루트 디렉터리는 /home/alice/website/index.html과 같은 alice의 홈 디렉터리 어딘가에 있습니다.

또한 액세스 제어를 위해 gitolite를 통해 git 서버를 설정했다고 가정합니다. 이를 사용하려면 호출할 가상 사용자를 설정해야 합니다.자식. 이 사용자는 다른 사용자와 다른 데에는 그만한 이유가 있습니다.앨리스.

제 생각에는앨리스웹사이트는 일부 Git 저장소의 내용을 표시할 수 있습니다.web_repo.git, 소스는 gitolite 문서에서 요구하는 대로 /home/git/web_repo.git에서 찾을 수 있습니다.

나의 첫 번째 생각은 다음을 실행하는 것이 었습니다.수신 후/home/alice/website의 일부 하위 디렉터리와 동기화하기 위해 저장소를 연결하지만 이를 위해서는 사용자가 필요합니다.자식다른 사용자의 파일을 복사합니다(앨리스) 홈 디렉터리로 인해 파일 권한 오류가 발생합니다.

내 빌드에는 웹 사이트를 호스팅해야 하는 특정 제한 사항이 있습니다.앨리스홈 디렉토리에 대해서는 이 문제에 대한 안전하고 우아한 해결책이 생각나지 않습니다.

저는 이제 막 이 작은 서버를 관리하기 시작했으며 어떤 통찰력이라도 주시면 매우 감사하겠습니다.

답변1

이를 수행하는 방법은 수천 가지가 있습니다! 나는 다음과 같이 진행할 것이다:

alice먼저, 사용자(tmux, screen 또는 event initd/systemd 서비스)로 백그라운드에서 실행되는 작은 셸 스크립트를 만듭니다 . 스크립트는 지속적으로 다음을 수행합니다.

  1. /tmp/예를 들어 모니터링 중인 파일입니다 /tmp/new_commit.
  2. 파일이 나타나면 git pull필요한 경우 끝에 을 추가하십시오.chmod -r
  3. 파일 삭제 /tmp/new_commit.
  4. 1단계로 돌아갑니다.

그런 다음 서버 측에 git post-receive 후크를 작성하여 chmod 666새 커밋에 이 파일을 생성합니다.

이 분야에서 좀 더 "전문적"이 되고 싶다면 데브옵스와 CI 관련 내용을 살펴보는 것이 좋습니다.

관련 정보