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

안녕하세요.

기존에 코드이그나이터로만 개발을 해온 개발자 입니다.

이번에 신규 프로젝트를 라라벨로 진행을 하게 되었는데 질문이있어 이렇게 글을 남깁니다.


env 에 대해서 문서를 읽어보긴 했습니다만 ci 방식에서만 쓰던 지식으로는 이해가 가지 않더군요.


일단 기존 ci 에서는 nginx 설정 파일의 전역 ENV 값을 불러와 config 폴더를 분기해서 썼습니다.

최초로 읽히는 index.php 파일 최상단에서 전역 ENV를 체크해서 설정파일 진입을 폴더별로 구분해서 들어가는 방식이죠.

(게다가 ci는 버전업이 되면서 이 방식을 기본으로 채용하고 있습니다)


그렇기 때문에 git 에 배포할때 설정파일을 모드별로 제외시키거나 ignore 하는 수고를 덜 수 있었습니다.


매뉴얼을 보면 .env.testing 이런식으로 분기는 가능한것으로 보입니다만 지금이 "테스트 모드다", "라이브 모드다" 라고 선언을 어디서 해줘야 .env가 분기될거 같은데 잘 모르겠네요.


혹시 해결 방법을 알고 계신 분이 있으시면 답변 부탁 드립니다.



    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      APP_ENV와 같이 중요한 환경변수는 (리눅스) 서버 환경 변수로 사용하시는 것이 좋겠습니다.

      아래 예제에서 보시다시피 .env에서 읽은 'staging'이란 값은 무시되고, 서버 환경 변수인 'qa1'이란 값을 라라벨 애플리케이션이 사용합니다.

      [ec2-user@ip-10-0-1-238 html]$ cat .env | grep APP_ENV
      APP_ENV=staging
      
      [ec2-user@ip-10-0-1-238 html]$ env | grep APP_ENV
      APP_ENV=qa1
      
      [ec2-user@ip-10-0-1-238 html]$ tinker
      Psy Shell v0.7.2 (PHP 7.0.16 — cli) by Justin Hileman
      >>> env('APP_ENV');
      => "qa1"
      >>> config('app.env');
      => "qa1"


      어떤 인프라를 어떻게 사용하시는 지 모르겠습니다만.
      - 서버 환경 변수를 셋팅하는 방법은 "export environment variable" 정도의 키워드로 구글링 해 보세요.
      - AWS등의 서비스 인프라를 사용한다면, 각 서비스마다 서버 환경 변수를 추가하는 방법을 제공할 겁니다.


      AWS ElasticBeanstalk 사례

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

        요점만 말하자면 .env파일안에 APP_ENV 값을 설정하여 명시적으로 local, testing, production을 분리합니다


        https://github.com/laravel/laravel/blob/master/.gitignore

        Laravel의 .gitignore파일을 보시면 .env파일을 ignore하게 되어있습니다.

        라라벨에서는 .env.testing 이런식으로 분리하여 인식하는것이 아니라, .env파일 자체를 수정하여 명시적으로 환경을 설정해줍니다

        예를들어, .env.production으로 production용 설정을 만들었다면, production서버에서 cp .env.production .env 이런식으로 복사해주어야 합니다

        물론 파일안에는 APP_ENV=production 이라는 설정이 들어있어야 하구요

          CommentAdd your comment...