질문을 삭제하지 말아주세요.!
 
1
0
-1

서버는 nginx로 구축되어있습니다.


같은 화면을 뿌리지만 로직이 약간 다른 두사이트가 있습니다.

이번에 .env에 옵션을 추가하여, 공통 부분을 모두 빼내는데 성공했는데요..


문제는 nginx에서 분리할때 루트 별로,

.env만 따로 하고 싶은데 어떻게 해야할지 감이 안옵니다.


제가 설명을 잘못해서 좀 쉽게 야기하면,

nginx 에서 ..


listen 80;

server_name {id}.sample.com;

root "/home/serve/public_html";  와


listen 80;

server_name www.{id}.com;

root "/home/sample/public"; 이 이렇게 있습니다.


사실 두 사이트는 .env 등 소수 몇개만 빼고 완전 동일한 코드인데요..

심볼릭으로 나누자니, .env까지 같이 링크드 되고,

그렇다고 배포 할때 cp -R  하자니 용량을 두 배로 먹으니 좀 아쉬운점이 있는데요..


제 머리로는 /home/server/ 내부의 모든 폴더와 파일을 .env만  빼고 심볼릭하는 것인데요..

무슨 좋은 방법이 없는지 선배님들의 조언을 듣고싶습니다.

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      공통이 되는 부분을 패키지로 만든 후 각각의 코드베이스에서 불러 사용하는 방법이 가장 바른 방식입니다.

      대신 분리해서 사용할 여력이 되지 않는다면 `Illuminate\Foundation\Application`이 bootstrap되기 전에 .env 경로를 변경하는 방법이 있겠는데요.

      ./bootstrap/app.php
      <?php
      // ...
      // $app 이후, HTTP_HOST를 검사해서 변경.
      $app->loadEnvironmentFrom('.env.other');
      // ...

      코드 내에 환경 정보(e.g. 호스트 주소)가 들어간다는 점에서는 피해야 하는 방법입니다. 각 사이트에 따라 변경되는 부분이 분명 생기기 마련이고요. 이런 상황에서 환경 변수에 따라 분기문이 늘어나는 안티패턴도 발생할 수 있습니다.


        CommentAdd your comment...
      1.  
        1
        0
        -1

        공통부분과 개별부분을 나눠 공통부분을 쉐어하면 됩니다.

        드루팔의 멀티사이트 구조가 좋은 참고가 될 것 같은데요ㅡ.


          CommentAdd your comment...