우리는 표준 LAMP 구성에서 소셜 웹 사이트를 운영했습니다. 로컬 개발자 컴퓨터뿐만 아니라 라이브 서버, 테스트 서버 및 개발 서버가있었습니다. 모두 GIT를 사용하여 관리되었습니다.
각 컴퓨터에는 PHP 파일뿐만 아니라 MySQL 서비스 및 사용자가 업로드 할 이미지가있는 폴더가 있습니다. 라이브 서버는 약 100K (!)의 반복 사용자를 갖도록 성장했으며 덤프는 약 2GB (!), 이미지 폴더는 약 50GB (!)였습니다. 내가 떠날 무렵, 서버는 CPU, Ram 및 무엇보다도 동시 네트워크 연결 제한에 도달했습니다 (우리는 서버 'lol'을 최대한 활용하기 위해 자체 버전의 네트워크 카드 드라이버도 컴파일했습니다). 우리는 할 수 없었다 ( 도 당신은 당신의 웹 사이트와 가정해야 ) GIT에 2GB의 데이터와 이미지의 50 기가 바이트 넣어.
GIT에서이 모든 것을 쉽게 관리하기 위해이 폴더 경로를 .gitignore에 삽입하여 이진 폴더 (이미지를 포함하는 폴더)를 무시합니다. 또한 Apache documentroot 경로 외부에 SQL이라는 폴더가있었습니다. 이 SQL 폴더에서 개발자의 SQL 파일을 증분 번호 매기기 (001.florianm.sql, 001.johns.sql, 002.florianm.sql 등)에 넣습니다. 이 SQL 파일도 GIT에서 관리했습니다. 첫 번째 SQL 파일에는 실제로 큰 DB 스키마 세트가 포함되어 있습니다. GIT에는 사용자 데이터 (예 : users 테이블의 레코드 또는 주석 테이블)를 추가하지 않지만 구성 또는 토폴로지 또는 기타 사이트 별 데이터와 같은 데이터는 sql 파일 (및 GIT에 의해)로 유지됩니다. SQL 스키마 및 데이터와 관련하여 GIT에서 유지 관리하지 않는 내용과 내용을 결정하는 대부분의 개발자 (코드를 가장 잘 아는 사람)
릴리스되면 관리자는 dev 서버에 로그인하여 라이브 분기를 모든 개발자 및 dev 시스템의 필요한 분기와 업데이트 분기로 병합 한 후 테스트 서버로 푸시합니다. 테스트 서버에서 라이브 서버의 업데이트 프로세스가 여전히 유효한지 확인하고 빠른 속도로 Apache의 모든 트래픽을 플레이스 홀더 사이트로 지정하고 DB 덤프를 작성하고 작업 디렉토리를 'live'에서 'update'로 지정합니다. ', 모든 새 sql 파일을 mysql로 실행하고 트래픽을 올바른 사이트로 다시 지정합니다. 테스트 서버를 검토 한 후 모든 이해 관계자가 동의하면 관리자는 테스트 서버에서 라이브 서버로 동일한 작업을 수행했습니다. 그 후 프로덕션 서버의 라이브 브랜치를 모든 서버의 마스터 브랜치에 병합하고 모든 라이브 브랜치를 리베이스합니다.
테스트 서버에 문제가 발생한 경우 (예 : 병합이 너무 많은 충돌을 일으킨 후 코드가 되돌려지고 (작업 분기를 '실시간'으로 다시 지정) SQL 파일은 실행되지 않았습니다. SQL 파일이 실행되는 순간, 이는 되돌릴 수없는 조치로 간주되었습니다. SQL 파일이 제대로 작동하지 않으면 덤프를 사용하여 DB를 복원 한 것입니다 (그리고 개발자는 테스트를 거친 SQL 파일 제공에 대해 알려주었습니다).
오늘날 우리는 sql-up 및 sql-down 폴더를 동일한 파일 이름으로 유지 관리합니다. 여기서 개발자는 업그레이드 sql 파일 모두를 동일하게 다운 그레이드 할 수 있는지 테스트해야합니다. 이것은 궁극적으로 bash 스크립트로 실행될 수 있지만 육안으로 업그레이드 프로세스를 계속 모니터링하는 것이 좋습니다.
훌륭하지는 않지만 관리가 가능합니다. 이것이 실제적이고 실용적이며 비교적 고가용 성인 사이트에 대한 통찰력을 제공하기를 바랍니다. 조금 구식이지만 여전히 따르십시오.