라이브 사이트를 위해 두 개의 클라이언트와 하나의 서버로 SVN 설정

라이브 사이트를 위해 두 개의 클라이언트와 하나의 서버로 SVN 설정

저는 전용 Linux 기반 Plesk 서버를 보유한 클라이언트와 작업하고 있습니다. 웹사이트(예: example.com)는 라이브이며 일반적으로 엄청난 수정이 필요하기 때문에 라이브에서 직접 작동하도록 만드는 것은 매우 어렵습니다. 서버에는 SVN이 없고 FTP만 있었습니다.

하위 도메인을 만들고 staging.example.comFTP를 통해 파일을 넣어 클라이언트가 수정 사항을 라이브로 만들기 전에 볼 수 있도록 했습니다. 말할 필요도 없이, 각 작업과 관련된 모든 파일을 모두 기억하고, 스테이징에 업로드하고 테스트한 다음, 파일이 무엇인지 다시 기억하고 라이브 서버를 위해 다시 수행하는 것이 ***의 고통입니다. 나는 이 작업을 완벽하게 수행하는 데 여러 번 '성공적으로 실패'했습니다.

이제 SVN을 사용하고 싶습니다. SSH(전체 액세스 권한이 있음)와 저장소(에서)를 사용하여 SVN을 설치했지만 /var/www/vhosts/example.com/svn/repos추가 설정이 모호한 것 같습니다. 나는 설정을 다음과 같이 하고 싶다.

  1. SVN 서버(실행 중 svn.example.com- 이미 완료됨)
  2. 'master' copy at staging.example.com, at /var/www/vhosts/example.com/staging('master'가 SVN에서 특정 의미를 갖는지는 확실하지 않습니다. 단지 기본 복사본을 의미합니다.)
  3. svn update를 통해 변경 사항을 적용할 수 있는 www.example.com작업 디렉토리/var/www/vhosts/example.com/httpdocs
  4. 실제 작업을 수행할 내 컴퓨터의 또 다른 작업 디렉토리입니다.

내 계획은 내 컴퓨터에서 작업을 수행하고 커밋하여 준비 단계에서 테스트할 수 있도록 하고 모든 것이 정상이면 라이브 사이트에서 업데이트하여 변경 사항을 적용하는 것입니다.

이것을 달성할 수 있는 방법을 안내해주세요. 또한 저는 시스템 관리자가 아닌 프로그래머이므로 제 계획에 몇 가지 문제가 있을 수 있습니다. 그렇게 생각한다면 대체 솔루션을 알려주십시오. 나는 오랫동안 SVN을 사용해 왔지만 그것은 단지 체크아웃-커밋-업데이트-해결뿐이었고 설정은 없었습니다. 이것이 지금 나에게 도움이 필요한 이유이다.

답변1

가장 쉬운 해결책은 아마도 세 곳의 코드(트렁크만, 분기 없음 등)를 확인하는 것입니다. 그런 다음 적시에 올바른 폴더에서 "svn up"을 수행했는지 확인하면 됩니다.

따라서 다음을 시도해 보십시오(주석은 각 비트를 설명합니다).

#SSH to the server as a user who can modify /var/www/vhosts/...
...

cd /var/www/vhosts/ # Since this is a live server, we need to make the
                    # changeover fast, so work in a new folder. 
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository 
                                                    # into a new folder called
                                                    # "staging".(Change "website"
                                                    # to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"

# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...

cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.   
 # This will make the svn version of the staging site live. Check that it works
 # then do the same with the httpdocs folders.

더 복잡한 솔루션은 두 개의 코드 분기를 사용하는 것입니다. 하나는 스테이징용이고 다른 하나는 라이브용입니다. 하지만 아마 이 일에는 너무 과할 것 같군요...

답변2

에드 답변의 확장 버전

머리말

모든 것이 올바르게 작동하고 내부 프로세스를 이해하려면 Subversion에 대한 관리 기술을 익혀야 합니다.

얼굴

당신은 다음을 가지고 있어야합니다 :

  • 하나의 저장소
  • 저장소에 두 개의 분기(최소)(fe STAGINGLIVE)
  • 비즈니스 로직이 포함된 커밋 후 후크 "STAGE 또는 LIVE 대상에 게시"
  • Three Four Working Copy: DEV(로컬 작업장, STAGING 브랜치에 바인딩), MERGE(로컬 작업장, LIVE 브랜치에 바인딩), STAGING(STAGING 서버에서, STAGING 브랜치에 바인딩), LIVE(LIVE 서버에서, LIVE에 바인딩) 나뭇가지)
  • STAGING 및 LIVE에 설치된 SVN 클라이언트

작업 흐름:

  • DEV에서 코드 편집
  • 커밋 - 커밋 후 후크가 STAGING에서 WC를 업데이트합니다.
  • STAGING의 변경사항 테스트
  • STAGING 분기의 MERGE WC(테스트된) 변경 사항으로 병합/STAGING에서 LIVE 분기로 효과적으로 병합/
  • LIVE 브랜치 변경 사항 커밋 - 커밋 후 후크는 병합된 변경 사항으로 LIVE에서 WC를 업데이트합니다(후크는 커밋 메시지의 키워드로// svnlook log | grep KEYWORD또는 LIVE 브랜치의 변경 svnlook dirs-changed//으로 이러한 유형의 커밋을 감지할 수 있음)

메모:

서버의 WC 대신 ssh & svn upFTP 또는 scp를 사용할 수 있습니다. Subversion이 적고 사이트 업데이트에 더 많은 골치 아픈 일이 발생합니다(삭제된 파일은~ 아니다FTP|scp에 의해 삭제되고 일반적인 프로세스가 더 복잡해 보입니다/나에게는/)

관련 정보