2010-05-04 3 views
3

큰 방문을하는 큰 웹 앱이 있다고 가정 해 보겠습니다. 앱을 충돌시키지 않으려면 & FTP를 사용하여 파일을 대체하는 동안 발생하는 PHP 또는 MySQL 오류를 사람들이 보지 못하도록하고 싶지는 않습니다. ? 교체가 완료 될 때까지 파일의 이전 버전을 실행하는 방법은 무엇입니까?파일을 대체하는 동안 웹 응용 프로그램이 손상되는 것을 방지하려면 어떻게해야합니까?

감사

답변

2

이이 규칙 중 하나 이상을 수행하십시오

  1. 가 꺼져에 mtime 검사와 (APC 등) 가속기를 사용하는. 따라서 캐시를 수동으로 지울 때까지 - 이전 버전은 메모리에서 사용됩니다.
  2. 프로젝트에 디렉토리로 심볼릭 링크 된 가상 호스트를 사용하려면 :/home/project/www에 yout 프로젝트를 저장해 보겠습니다. 및/home/project/public_html은 실제 웹 루트이며 심볼릭 링크는 www입니다. 그래서/home/project/www2를 만들고, 거기서 파일을 체크하고, 셋업을하고, 원하는 것을하십시오. 이 후에 - 그냥 symlink를 변경하십시오.
0

앱을 임시 디렉토리에 배포하십시오. 그리고 나서 원래의 app 디렉토리를 app.old로 변경하고 파일을 배포 한 디렉토리를

으로 변경하십시오. 유닉스 환경에서는 정상적으로 작동해야합니다. 또한 위의 모든 디렉토리가 동일한 파일 시스템에있는 경우에만 작동합니다. 드문 경우지만 .old로 이름이 바뀐 원래 응용 프로그램과 원래 app 디렉토리로 temp dir의 이름을 변경하기 전에 응용 프로그램에 액세스하면 사용자에게 404 오류가 표시 될 수 있습니다.

1

동일한 서버의 준비 웹 사이트에 변경 사항을 업로드하려면 git을 사용하고 테스트를 마친 후 프로덕션 웹 사이트로 이동하십시오. 모든 파일이 수신 될 때까지 변경되지 않습니다. 장점은 압축 된 변경 사항 만 전송하므로 전체 파일을 보낼 필요조차 없습니다.

준비 영역은 필요하지 않습니다. 나는 많은 서버와 때로는 그 서버의 특정 구성 중 일부 (대부분 확장 기능이 설치되어 있지 않음을 알게 됨)/

다른 버전 제어 시스템에서도 동일한 작업을 수행 할 수 있습니다. 그래도 조심해야 해. 내가 링크 된 튜토리얼은 문서 루트 바깥 쪽의 자식 정보를 저장합니다. 그렇지 않으면 누군가가 귀하의 웹 사이트에 대한 모든 소스 코드를 복제 할 수 있습니다.

SVN을 좋아한다면 모든 디렉토리에있는 .svn이 약간 성가 시게 될 수 있습니다. 사람들이 할 수없는 것을 다운로드 할 수 없도록하십시오.

+0

나는 밀어 넣기 작업이 원자 적이라고 생각하지 않습니다. push의 작동이 원자 그 자체라는 사실에도 불구하고 - 임시 디렉토리에서 대상으로 복사하는 것이 원자 적이라는 것을 의미하지는 않습니다. 일관성없는 출처의 문제는 여전히 여기 있습니다. – zerkms

+1

@zerkms 푸싱은 자동으로 저장소를 업데이트하지 않습니다. 그냥 정보를 보냅니다. 푸시가 완료된 후에 만 ​​후크가 새 정보를 사용하여 체크 아웃을 실행합니다. 푸시 중에 취소 할 수 있으며 변경 사항이 나타나지 않습니다. 일반적으로 git은 체크 아웃에서 권한과 같은 문제를 발견합니다. 소스를 일관된 상태로 유지합니다. – Reece45

관련 문제