개발 환경과 서비스 환경 쉽게 바꾸기

Submitted by river - 등록 3 years ago - 수정 3 years ago

Laravel 5에서 환경 설정 방법이 변경되서 개발 환경과 서비스 환경을 관리하기가 전 버전보다 귀찮은 것 같다. 그래서, 환경 설정 파일을 변경하는 스크립트를 만들어서 사용하면 좀 편하지 않을까 해서, PHP로 envswitch란 걸 만들었다.

이를 사용하기 위해서는 다음 형태의 폴더 구조를 가져야 한다.

폴더 구조 예

├── config
│   └── queue.php
├── config_env
│   ├── queue.local.env
│   └── queue.production.env
├── .env
├── .env.local
└── .env.production

사용예

./envswitch local
./envswitch production

envswitch local을 실행하면 위의 폴더에서 .env.local.env로, queue.local.envqueue.php로 복사된다.

설치

아래 소스를 복사해서 Laravel 루트 폴더에 envswitch 란 이름으로 파일을 만든 다음 실행권한을 주면 된다.

chmod +x envswitch

envswitch 소스

#!/usr/bin/env php
<?php

if (count($argv) !== 2) {
    echo "Missing required parameter envname\n";
    echo "File should exist in current directory as .env.envname\n";
    echo "Usage:\n";
    echo "  envswitch envname\n";
    exit(1);
}

$env = $argv[1];

$envFile = ".env.$env";

if (! file_exists($envFile)) {
    echo "$envFile does not exist.\n";
    exit(1);
}

copyFile($envFile, ".env");

// config_env
foreach (glob("config_env/*.$env.php") as $filename) {
    $srcFile = $filename;

    $pathParts = pathinfo($srcFile);
    $dstFile = $pathParts["basename"];
    $dstFile = "config/" . str_replace(".$env.", ".", $dstFile);
    copyFile($srcFile, $dstFile);
}

echo "Completed.\n";


function copyFile($src, $dst)
{
    if (copy($src, $dst)) {
        echo "Copied $src to $dst\n";
    } else {
        echo "Error occurred while copying $src to $dst\n";
        exit(1);
    }
}

comments powered by Disqus