눈물의 .env.local 파일 서버에 올리기

Breeze·2021년 11월 17일
0

Backend 개발 일지

목록 보기
6/7

안녕하세요 여러분. 귀여운 막내 수빙수입니다.. 언제나 어려운.... 서버 다루기... 행복이들에게 울면서 배포한 나의 이야기를 들려드립니다...🥲

우리의 API KEY는 소중하기 때문에 로컬에서 테스트할 때는 .env.local 파일을 각자 가지고 있어서 문제가 하나도 발생하지 않았다. 그러나 .env.local 파일 자체가 gitignore 이여서 gitlab에 올라가지 않았기 때문에 따로 서버에 올려주는 방식을 사용해야 했다.

BE의 배포방식

그렇다면 backend 쪽은 문제가 없었을까?! django 배포는 아예 gitlab에 있는 동일한 폴더(breeze/backend)를 복사해서 서버에 올린 후에 실행시키는 방식이기 때문에 그냥 .env 파일을 FTP 서버를 통해서 올려주면 문제가 없다.

FE의 배포방식

frontend는 jenkins를 통해서 npm run build 를 실행하고, 빌드해서 나온 dist 폴더를 서버에 올리는 방식이여서 backend처럼 FTP 서버를 통해서 .env.local 파일을 올려줄 수가 없는 문제가 발생했다. 그래서 빌드 하기 전에 강제적으로 .env.local 파일을 breeze/frontend 아래에 삽입시켜줘야 한다.

그래서 어떻게 했는데?!!

아무도 이런 문제가 없었던 건지 내가 검색을 잘못했는지는 모르겠지만, 아무리 검색을 해봐도 환경 변수를 따로 넣어주는 해결책이 없었다. 그래서 그냥 jenkins pipeline에다가 .env.local 파일을 만들고 우리의 API KEY를 작성해서 저장해주는 코드를 넣어줬다.

jenkins pipline 최종본

pipeline {
	agent any
	tools {
		nodejs "node"
		git 'Default'
	}
	
	stages {
		stage('prepare') {
		    steps {
        		git branch: 'master', credentialsId: 'breeze', url: 'https://lab.ssafy.com/s05-final/S05P31A202.git'
        		dir('breeze/frontend') {
                    sh 'npm install'
                    // 이 부분이 새로 추가한 부분..두 줄을 위해...멀리 돌고 돌았다...
										// touch 명령어로 .env.local 파일을 생성한다 
										sh 'touch .env.local'
										// echo >> 명령어로 파일에 내용을 작성한다.
										// -e를 붙여주지 않으면 escape 문자들을 인식 못한다. 꼭 붙여주자!!
										// API KEY를 감싸고 있는 작은 따옴표 앞에도 \를 붙여주지 않으면 에러가 뜬다!
                    sh 'echo -e "VUE_APP_KAKAO_API_KEY=\'{키 내용}\'\nVUE_APP_KAKAO_MAP_API_KEY=\'{키 내용}\'\nVUE_APP_KAKAO_CLIENT_ID=\'{키 내용}\'" > .env.local'
                }
        		sh 'cp -r /var/jenkins_home/workspace/breeze/breeze/backend/* /var/jenkins_home/dist/django'
		    }
		}
		stage('build') {
			steps {
			    dir('breeze/frontend') {
                    // 빌드 작업
                    sh 'npm run build'
                }
			}
			post {
				success {
					// 빌드 성공 후 작업 -> 파이프라인 워크 스페이스에서 EC2 dist로 복사
					sh 'cp -r /var/jenkins_home/workspace/breeze/breeze/frontend/dist /var/jenkins_home/dist'
				}
			}
		}
	}
}

새로운 위기 봉착

저렇게 pipeline까지 잘 설정하고 서버에서 테스트를 하는데 로그인을 눌리자마자 에러가 발생했다. 그래서 내 로그인 + 토큰 동반자 지미짐에게 SOS를 요청했다. 설정해둔 redirect URI 주소가 const REDIRECT_URI = "https://k5a202.p.ssafy.io/api/v1/oauth/kakao/callback" 여서 django 서버에서 먼저 저 API를 찾는 문제가 발생했다.

그래서 redirect URI를 https://k5a202.p.ssafy.io/oauth/kakao/callback 로 변경했더니 정상적으로 로그인, 로그아웃이 되었다... 생명의 은인 지미짐...러뷰...

결론

이렇게 해도 괜찮은건지에 대한 의문은 아직 있지만, 어차피 jenkins는 우리만 접근 가능하니까 jenkins가 뚫리지 않는 이상 보안상으로도 괜찮지 않을까...? 라는 나의 생각...과 함께.... 오늘의 눈물젖은 배포 이야기를 마무리 하겠습니다...

profile
약속 관리 서비스 breeze의 개발 일지입니다.

0개의 댓글