[VM virtualBox] 윈도우에서 테스트서버 환경 세팅
이번 포스팅은 윈도우에서 vm virtual box를 사용하여
로컬에서 실제 서버가 아닌, 테스트 환경으로 먼저 요청을 보내게 하여
테스트할 수 있는 환경을 세팅하기 위한 포스팅입니다.
VM VirtualBox 설치
> 위 링크에 접속하여 window host 버전으로 다운로드한다.
Ubuntu Image 다운로드
> VM virtual box에서 베이스 이미지로 사용할 우분투 이미지를 다운로드한다.
> Desktop image를 선택하여 다운로드한다.
VM VirtualBox에서 가상 머신 생성
VM VirtualBox 설치가 완료되면 아래와 같은 화면을 볼 수 있다.
가상 머신 만들기
새로 만들기를 클릭하여 가상 머신을 새롭게 생성한다.
이름 및 운영체제 선택
> 종류는 Linux, 버전은 Ubuntu(64-bit)를 선택한다.
메모리 크기 및 하드디스크 설정
> 각자가 가진 컴퓨터 사양에 기반하여 메모리 크기 선택
> 하드디스크는 새 가상 하드디스크 만들기 선택
하드 디스크 파일 종류 및 할당 방식
> 하드 디스크 파일 종류는 VDI 선택
> 물리적 하드 드라이브는 고정 크기 선택
가상 하드 디스크 만들기
> 가상 머신 만들기 클릭 후, 몇분 정도 시간 소요 후 오른쪽과 같이 가상 머신이 생성 된 것을 확인 할 수 있다.
생성 된 가상머신 설정
CPU 및 실행 제한 설정
> 생성된 가상 머신을 오른쪽 클릭 후 설정 > 시스템 > 프로세서로 들어간다.
> 적절한 프로세서의 수를 선택한다.
가상 광학 디스크 선택
> 설정 > 저장소 > 속성 > 광학 드라이브 > 가상 광학 디스크 선택을 클릭한다.
우분투 이미지 선택
> 위에서 다운로드한 우분투 이미지를 선택한다.
가상 머신 시작
> 가상 머신 우클릭 후 시작 > 일반 시작 클릭
우분투 설치
우분투 설치 형식
> 우분투 설치 형식은 디스크를 지우고 우분투 설치를 클릭한다.
> 그 외 언어 설정 등, 우분투 설치 과정을 진행한다.
테스트 환경 세팅을 위한 설정
로컬에서 실제 서버로 요청 보내기 전, 테스트 서버로 요청을 보내기 위한 다양한 설정 값 세팅
로컬과 VM 사이의 공유 폴더 설정
로컬의 폴더와 가상 머신의 특정 폴더를 공유하여, 로컬의 코드를 따로 가상 머신으로 가져가지 않기 위함
로컬에서 코드 수정 후, 저장하면 바로 테스트 서버에 바로 코드가 적용되도록 하기 위함
VM 공유폴더 설정
> 설정 > 공유폴더 > 공유 편집을 클릭하여 위와 같이 수정한다.
> 우선 로컬에 공유를 위한 폴더를 하나 생성한다.
> 그리고 가상 머신에 마운트 할 위치를 정하여 입력 후 확인
> 이때, 자동 마운트와 항상 사용하기는 선택해준다.
가상머신 이미지 삽입
> 위에서 설정한 마운트 위치로 가서 공유 폴더를 생성한다.
$ cd /mnt
$ mkdir solution
> 가상 머신으로 들어와 장치 > 게스트 확장 CD 이미지 삽입 클릭
> 가상 머신 재시작
> 가상 머신에서 공유 폴더에 접근 시, 로컬에 있는 파일들이 존재하는 것을 확인할 수 있다.
Ubuntu 개발 환경 세팅
Ubuntu 기본 설정
$ apt-get update
$ apt-get install vim
$ apt install net-tools
Python 설정
- 우분투 파이썬 설정 (2.7 -> 3.6)
$ sudo rm /usr/bin/python
$ sudo ln -s /usr/bin/python3.6 /usr/bin/python
$ sudo apt-get install python-pip3
$ sudo rm /usr/bin/pip
$ sudo ln -s /usr/bin/pip3 /usr/bin/pip
Flask, uWSGI, Nginx 설치 및 설정
파이썬 어플리케이션 구동을 위해 Flask, uWSGI, Nginx를 설치하고, 설정 값을 세팅한다.
아래 글을 참고하여 개발 환경을 설정한다.
soyoung-new-challenge.tistory.com/118
Nginx, uWSGI 실행
$ service nginx restart
$ service uwsgi reload
> 위 명령어를 사용하여 nginx, uwsgi를 모두 실행한다.
$ service uwsgi status
$ service nginx status
> 정상적으로 구동이 되었는지 확인한다.
[ ERROR ]
> 현재 공유 폴더가 vboxsf로 권한이 설정되어 있어, uwsgi 재시작 시 권한 에러로 구동이 안된다.
> 따라서 아래와 같이 사용자를 vboxsf 그룹에 추가해준다.
$ sudo gpasswd -a www-data vboxsf
로컬-가상 머신 포트 포워딩
현재 사용하는 윈도우와 가상 머신 사이의 포트를 연결해주기 위한 설정
윈도우에서 현재 ip 확인
가상 머신 내부 ip 확인
포트 포워딩 설정
> 가상 머신 설정 > 네트워크 > 고급 > 포트 포워딩 선택
> 호스트 IP : 윈도우 로컬 서버 IP 입력
> 호스트 포트 : 포트 포워딩을 위한 호스트 포트 입력
> 게스트 IP : 가상 머신 내부의 IP 입력
> 게스트 포트 : 포트 포워딩을 위한 게스트 포트 입력
host 파일 설정
특정 요청에 대해, 실제 서버가 아닌 로컬의 테스트 서버로 먼저 요청이 가도록 하기 위한 설정
로컬 테스트 환경에서 코드를 테스트 한 이후에, 정상 작동이 확인되면 실제 서비스 서버로 반영하기 위함
host 파일 위치
> 윈도우의 host 파일 위치는 위와 같다
host 파일 변경
> 위 파일과 같이 특정 도메인의 요청에 대해 로컬 IP로 먼저 요청을 가게 한다.
> 여기서 왼쪽의 IP는 로컬 윈도우의 IP
> 오른쪽의 도메인 주소는 특정 요청을 지정하여, 해당 도메인의 요청이 있는 경우 우선 로컬 IP로 먼저 요청을 보내게 한다.
실제 테스트 진행
실제 서버의 요청 주소가 sol.test.kr 일 경우, host 파일 변경 전에는 실제 배포 중인 서비스 서버로 요청이 간다.
그러나, 위의 호스트 파일 설정 후에 요청을 하게 되면,
실제 서비스 서버로 요청이 가기 전 host 파일을 확인하여, 해당 요청은 192.168.56.1 서버로 요청이 전달되게 된다.
위에 포트 포워딩에서 80포트를 가상 서버 내 80포트로 포트포워딩 설정을 해놨기 때문에, 가상 머신 내부로 요청이 전달된다.
Ubuntu 가상 서버에서 실제 서비스 환경과 동일하게, Nginx와 uWSGI를 설정해놨기 때문에 동일한 요청이 테스트 서버에서 동작하게 된다.
이 경우, 가상 서버 내 Nginx 설정에서 80 포트에서 테스트 서버가 동작하도록 설정을 해놨다.
위와 같이 테스트 환경을 구축하여, 실제 서비스 전 동일 코드를 테스트 환경에서 적용해볼 수 있도록 한다.