나의 첫번째 아이디어는 :
# deploy into public_html_new, and then:
rsync -vaH --delete public_html_new/ public_html/
좋은 해결책은 rsync를 사용하는 것입니다. 실제로 변경된 파일 만 변경했습니다. 마지막에 슬래시와 경로가 중요하다는 점에 유의하십시오.
일반적으로 아파치는 다시 시작할 필요가 없으며 Java 세계가 아닙니다. 요청에 따라 모든 PHP 파일의 변경을 확인하고 변경 사항을 자동으로 다시 읽고 토큰 화합니다.
Git pull은 비슷하지만 효율적 이었지만 스크립트하기가 조금 더 어려웠습니다. 물론 다양한 병합 / 변경 감지 가능성을 가능하게했습니다.
이 솔루션은 실제로 주요 변경 사항이없는 경우에만 완벽하게 작동합니다. 배포에 큰 변경 사항이있는 경우 코드가 부분적으로 변경 될 때 무시할 수있는 시간 간격이 없기 때문에 약간의 위험을 막을 수 없습니다 부분적으로는 아닙니다.
큰 변화가 있다면, 내 제안은 초기 해결책이었습니다 (두 개의 이름 바꾸기).
다음은 약간 하드 코어이지만 100 % 원자 솔루션입니다.
(1) magento가 발생하는 일부 파일 시스템을 대체 마운트하십시오.
mount /dev/sdXY /mnt/tmp
(2) --bind
public_html_new를 public_html에 마운트하십시오.
mount --bind /path/to/public_html_new /path/to/public_html
이 시점에서 아파치에 새로운 배포가 표시됩니다. 404의 변경은 불가능합니다.
(3) rsync를 가진 synhcronistation을 수행 하지만 ) 대체에 마운트 지점 :
rsync -vaH --delete /mnt/tmp/path/to/public_html_new/ /mnt/tmp/path/to/public_html/
(4) 바인드 마운트 제거
umount /path/to/public_html