2009-12-23 2 views
1

나는 혼자있는 개발자입니다. 우리는 웹 호스트에 호스트 된 두 개의 웹 사이트를 가지고 있습니다. svn 저장소도 웹 호스트에 있습니다. 집안에는 라이브 환경을 충분히 복제하는 개발 시스템이 있습니다.버전 관리에서 웹 사이트 배포 - 내보내기 및 심볼릭 링크?

라이브 웹 사이트의 경우 버전 번호를 사용하여 적절히 이름이 지정된 Subversion에서 내보내기가 있습니다. 라이브 웹 사이트의 문서 루트는 실제로 해당 디렉토리에 대한 심볼릭 링크입니다. 그렇게하면 간단히 symlink가 가리키는 위치를 변경함으로써 중단 된 시간없이 수출 된 버전으로 쉽게 돌아갈 수 있습니다.

실제로 배포 할 때가되면 라이브 웹 사이트의 하위 디렉토리로 스테이징 영역으로 내 보내어 테스트를 수행합니다. 그렇게하면 사용자가 보는 어떤 것도 변경하지 않고 실제 환경에서 실제로 작동하는 방식을 볼 수 있습니다. 그럼 모든게 괜찮아 보인다면, 내 계정 루트에 또 다른 수출을 할거야 그리고 심볼릭 링크를 변경 (그리고 다시 테스트!)

이것은 과도한가? 그것을하는 다른 방법은 무엇입니까?

답변

3

핵 물질 짧은 시간 테스트 및 더 많은 시간을 보낼 것입니다. SSH와 키를 사용하여 변경 사항을 배포하기위한 프로세스가 매끄럽게 이루어집니다. 이것은 루비 응용 프로그램이지만 여전히 PHP 나 다른 응용 프로그램을 배포 할 때 사용할 수 있습니다. here for some info

그리고이 기사에서는 릴리스 폴더와 함께 공유 폴더를 사용하는 방법에 대해 설명합니다.공유 폴더에는 개별 배포 서버 (URL, DB 연결 등)의 구성 파일뿐만 아니라 웹 사이트의 수명 동안 업로드되고 svn에없는 자산도 포함될 수 있습니다. 카피스트라 노가 이것을 처리하도록 할 수도 있습니다.

설정을 알지 못하는 사람이 처음에는 이것을 보는데 약간의 어려움이있을 수 있지만 실제로 배포가 쉽습니다. 나는 카피스트라노가하는 일이 매우 간단하며 특정 시나리오를 다룰 수있는 다른 언어로 작성 될 수 있다고 생각합니다.

또 다른 아이디어를 SVN 또는 다른 저장소에 연결합니다. 이 배치를 실행하기 위해 후크를 사용하는 것입니다. 즉 트렁크에 대한 모든 커밋은 dev 서버를 업데이트합니다. 그리고 한 지점에서 스테이징 환경으로 밀어냅니다.

그러나 this link은 해당 유형의 환경을 설정하는 방법을 보여주는 훌륭한 작업입니다. 당신이 설정 한 것이 좋은 습관이라고 생각합니다. 당신을 도울 수있는 유일한 방법은 새로운 환경의 설치를 돕기 위해 여러 환경과 스크립트에 자동으로 배포하는 것입니다.

업데이트 :
또한 SVN에서 심볼릭 링크를 처리 할 수 ​​있습니다. 따라서 Unix 기반 서버에서 배포를 수행하는 경우 저장소의 심볼릭 링크를 삽입하고 상대 심볼릭 링크를 사용할 수 있습니다.

./releases/200912231043 
./shared/uploads 

이 그렇다면 당신은 당신에게 배포하는 스크립트를 많이 사용하지 않고 SVN에없는 자산을 관리 할 수있는 쉬운 방법을 제공합니다

./releases/200912231043/uploads -> ../../shared/uploads 

이로 심볼릭 링크를 넣을 수 있습니다. 이제 커밋을 사용하여 개발자 및/또는 스테이징에 배포 할 수 있습니다.

0

나는 이것이 정확하게 그것을하는 올바른 방법이라고 생각한다. 나에게 이상적입니다. 라이브 업데이트는 완전히 테스트 된 릴리스로, 변경 내용은 커밋 메시지를 통해 문서화 가능하며 롤백 (rollback)은 쉽고 한 버전에서 다른 버전으로의 전환은 원자 적이므로 가동 중지 시간이 없습니다. 나는 모든 프로젝트에서 같은 방식으로 그렇게하기 위해 노력한다.

무엇이 당신의 질문입니다. 너는 뭔가에 대해 확신이 없니? 그것은 당신을 위해 밖으로 작동하지 않습니다? 그렇다면 정확히 어떤 부분입니까?

+0

"이 작업이 과도한 작업입니까?" 모든 부분이 해결 중입니다. 그러나 불필요한 단계가 있습니까? 재사용 할 수있는 커피 필터가있는 사람을 알고 있으며, 종이 필터를 사서 재사용 가능한 필터에 넣습니다. 그는 종이 필터를 구입하지 않고 돈을 절약 할 수 있습니다! – user151841

0

몇 가지 프로젝트를 위해 지난 몇 년간 해왔 던 일종의 일입니다. 그런 일을하는 방식에는 단 하나의 문제가 없었습니다.

심볼릭 링크로 "롤백"할 수있는 가능성은 조금 과장된 것으로 보일 수 있습니다. 그렇지만 치명적인 버그가있는 버전을 배포 한 웹 사이트를 저장하는 데 필요할 때가 있습니다. 그 능력! 내가 제대로 이해한다면, 당신이 : -
내가 3 년에 2 번 같은이 뭔가를 사용했습니다, 때마다하지만, 정말 날 ^^


한 가지가 있지만, 나에게 이상한 것 같다 저장된 라이브 (프로덕션) 데이터베이스에서 새 버전의 웹 사이트를 테스트하고 있습니까?

그렇다면 응용 프로그램에 버그가있는 경우 프로덕션 데이터베이스를 파괴 할 수 있습니다. 분명히 나빠질 수 있습니다.

필자는 테스트 환경 인 personnaly에 대해 다른 데이터베이스를 사용합니다.


기타 : 많은 테스트를하고 있습니다. 그러나 그 중 일부는 자동화하지 않으시겠습니까?

그것은 당신이 더 자주, 더 빠르게 테스트 할 것이며,이 과정에 도움이 카피 스트라 노이 있습니다 당신은 ;-)

+0

물론 우리는 라이브 데이터베이스 사본을 가지고있는 개발 사이트에서 테스트를 수행하며 실제 사이트를 손상시키지 않고 부상을 입을 수 있습니다. 그러나 스테이징으로 테스트 한 다음 프로덕션에서 다시 테스트하는 것이 필수적이라고 생각합니다. 나는 버전을 배치하고 모든 것이 괜찮다고 가정하고 싶지 않을 것이다! 아마도 구축 직전의 라이브 사이트에 대한 데이터베이스 백업이 또 다른 좋은 방법입니다. – user151841

+0

웹 사이트 기능 테스트를 어떻게 자동화합니까? 특히 ajax 기능? – user151841

+0

테스트의 자동화에 관해서는 적어도 애플리케이션을 전체적으로 테스트 할 때 (즉, 브라우저에서 직접) 나는 Selenium을 상당히 좋아한다.; 귀하의 언어에 따라 jUnit, nUnit, PHPUnit 등과 같은 자동화 된 테스트 도구를 살펴볼 수도 있습니다. –