라이믹스 (사실상 PHP)의 특성상 리얼서버와 테스트 서버를 분리하기가 참 곤란합니다

 

소규모 사이트나 커뮤니티 같이 오류가 나도 중요하지 않은 서비스면 그냥 리얼서버 하나에 다 몰아넣고 해도 괜찮지만,

 

운영중에 버그가 나면 안된다거나, 클라이언트들에게 공개가 되면 안되는 기능같은걸 만들때는 테스트서버가 필연적으로 필요하죠

 

 

그래서 그냥 리얼서버를 덤프떠서 별도의 사이트(테스트 서버)를 하나 만들고, 도메인, DB만 변경한 후에 테스트 서버 변경사항 -> 리얼서버 배포하도록 야매 파이프라인(?)을 짜봤습니다.

 

 

> sync.sh (배포 스크립트)

#!/bin/bash

rsync -avz /var/www/test-server/public /var/www/real-server\
    --exclude files/

 

 

이렇게 하면 DB는 서로 다른곳을 바라보고 있으니 서로 데이터가 겹치는 오류도 없고

 

테스트 서버에서 기능 개발하고, 위의 스크립트만 실행하면 자동으로 리얼서버에 복제가 되니 요구조건은 다 맞춘거죠

 

 

스크린샷 2023-04-23 오후 8.46.56.png.jpg

예시) 좌측 리얼서버, 우측 테스트 서버

 

테스트 서버에서 작업 다 하고, sync.sh 명령어를 실행하면 리얼 서버에도 동일하게 적용됩니다.

 

 

추가로 서버 내부 로직은 도메인에 따라 개발/리얼서버 분기를 하도록 설정해두면 "테스트 서버에만 작동하는 코드!" 같은것도 구현이 가능합니다

 

스크린샷 2023-04-23 오후 8.50.16.png.jpg

도메인에따라 dev/real을 리턴해주는 간단한 코드를 짜고

 

스크린샷 2023-04-23 오후 8.51.17.png.jpg

아래와 같이 dev일 경우에만 코드 실행 같은 활용도 가능하네요

 

이상 팁 끝!

글쓴이 리버스

profile
모듈 제작하는 현역 대학생 리버스입니다!

== 판매중인 모듈 ==
미션] https://xetown.com/thirdparties/1511787
길드] https://xetown.com/thirdparties/1387146
  • profile

    git을 사용하는 방법도 있습니다. github이나 개인서버에 비공개 저장소를 만들어 놓고, 테스트 서버에서 push한 후 실서버에서 pull하는 것이지요. 잘못 수정했더라도 rsync와 달리 언제든지 원하는 상태로 롤백할 수 있다는 장점이 있지만, 모듈마다 저장소가 따로 있다면 좀 귀찮아집니다. ㅎㅎ

    조금 더 고급 스킬을 동원한다면 github의 webhook을 사용해서, 특정 브랜치에 push하면 자동으로 실서버에 적용되도록 할 수도 있습니다. 평소에는 테스트 서버에서 develop 브랜치에서 작업하다가 슬슬 실서버에 올려도 되겠다 싶으면 master로 merge하는 거예요. 마치 AWS의 Elastic Beanstalk을 사용하는 것 같은데, AWS에서 인스턴스를 통째로 갈아치우는 것보다 git pull이 훨씬 빠르기 때문에 자주 커밋하는 스타일이라면 이 쪽이 더 편리해요.

  • profile profile
    모듈별로 git을 따로 관리하고 있어서.. 곤란하네요 XD

    github action으로 CI/CD를 구축해도 괜찮긴 한데, 아직 그정도의 리소스를 투자하기에는 귀찮기도 하고,,
    서버 하나에서 개발과 리얼 두개를 돌리고 있기 때문에 굳이 복잡한거 없이 파일 옮기는 식으로도 구현 가능할거 같아 이렇게 해봤습니다

    나중에 크게 성공해서(?) 서버 분리를 하게 된다면 그때 제대로된 파이프라인을 만들어봐야겠네요 :D

    +) 풍문으로 들은건데 git submodule을 활용해서도 여러 레포를 하나에 합칠 수 있던거 같던데, 이거로 한번에 배포하는것도 괜찮아보이네요
  • profile profile

    네, 각 모듈의 저장소가 분리되어 있는 곳에서는 submodule을 사용하면 CI/CD 구축하기 좀더 편리해집니다. 모듈 개발자가 아니라 그냥 구매해서 쓰는 사이트라면 모노레포로 운영하는 것이 더 쉽지만요.

    아니면 그냥 webhook 요청받아 처리하는 스크립트에서 push가 일어난 저장소 => git pull을 실행할 경로를 매칭하여 적당히 처리하도록 할 수도 있지요. 더 저렴하고 더 야매스러운 방법은 항상 있습니다. ㅋㅋㅋㅋ


List of Articles
번호 제목 글쓴이 날짜 조회 수
1262 라이믹스 게시판 추가설정 통합게시판에 포함할 게시판 선택 부분에 mid값 추가로 보여주기 1 은메달똑띠 621
1261 미니룹 레이아웃 재배포 36 file 오즈 4387
1260 프로필 위젯 0.3 27 file 윤삼 3014
1259 라이믹스 2.0.24 로그인 시도 시 리디렉션 횟수가 많습니다. 관련 메시지 발생 시 해결법 3 은메달마트몬 1829
1258 퀄리티 좋은 스티커용 애니메이션 이모티콘입니다. 8 file 백금메달클라드룹 3539
1257 라이믹스 모듈 생산 속도를 대폭 늘려줄 수 있는 자동 생성기 모음 4 file 백금메달리버스 3264
1256 공유 cafe24 가상서버 ssh 접근 자신만 가능하게 설정 1 file 캠프캠 5201
1255 Rhymix DB 서버 오류 수정(RhymixFrameworkExceptionsDBError #0~~) 2 영구만세 3312
1254 양파군 이모티콘 file 금메달구름의저편 4243
1253 우분투 22.04 사용자분들은 자동 로그인 풀릴시 HTTP/3로 프로토콜 업그레이드해보세요. 8 노트북꾼 5049
1252 빌어먹을 로봇 퇴치하기 =>SemrushBot 13 file karma 9742
» 라이믹스(PHP)에서 테스트 서버와 릴리즈 서버를 나누는 방법 (야매) 3 file 백금메달리버스 5516
1250 로그인 2차 인증 모듈 (라이믹스 전용) 35 file 백금메달리버스 14426
1249 랜덤 배너 출력 위젯 3 file 웹스택 7012
1248 글쓰기시에만 유독 느려질때 해결 방법중에 하나 팁 드립니다. 7 금메달람보 7018
1247 XE로 운영하면 코딩을 못해도 쉽게 기능 구현 애드온을 만들 수 있습니다. 7 웹지기 9454
1246 [베타] Astral 레이아웃 v0.4 23 file 도다아 9585
1245 서버에서 new Object를 new BaseObject로 쉽게 바꾸는 법 10 뎁지 10807
1244 XE -> 라이믹스 이전시 404오류 날때 7 은메달똑띠 10058
1243 서버 CPU, RAM 용량 통계 9 다이아몬드 메달기진곰 14542
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 64 Next
/ 64