Tutorial

[VM virtualBox] 윈도우에서 테스트서버 환경 세팅

new_challenge 2020. 11. 17. 20:35
반응형

이번 포스팅은 윈도우에서 vm virtual box를 사용하여

로컬에서 실제 서버가 아닌, 테스트 환경으로 먼저 요청을 보내게 하여

테스트할 수 있는 환경을 세팅하기 위한 포스팅입니다.

 

 

 VM VirtualBox 설치

www.virtualbox.org

 

Oracle VM VirtualBox

Welcome to VirtualBox.org! News Flash Important October 27th, 2020We're hiring! Looking for a new challenge? We're hiring a VirtualBox senior developer (Germany/Europe/USA). New October 20th, 2020VirtualBox 6.1.16 released! Oracle today released a 6.1 main

www.virtualbox.org

> 위 링크에 접속하여 window host 버전으로 다운로드한다.

 

 

Ubuntu Image 다운로드

releases.ubuntu.com/18.04/

 

Ubuntu 18.04.5 LTS (Bionic Beaver)

Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m

releases.ubuntu.com

> 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

 

[Python] Flask + uWSGI + Nginx를 연결 및 배포

이번 포스팅은 Flask + uWSGI + Nginx를 연결하여 웹 애플리케이션을 배포하는 포스팅입니다. Flask ( 웹 애플리케이션 ) Flask는 파이썬으로 작성된 마이크로 웹 프레임워크 중 하나이다. Flask 설치 $ pip i

soyoung-new-challenge.tistory.com

 

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 포트에서 테스트 서버가 동작하도록 설정을 해놨다.

 

위와 같이 테스트 환경을 구축하여, 실제 서비스 전 동일 코드를 테스트 환경에서 적용해볼 수 있도록 한다.

 

반응형