VirtualBox + Ubuntu 18.04로 Server 구축

개발 쪽에 입문하다보니 요즘 생전 써보지도 않던 Ubuntu 18.04 LTS를 자주 접하게 된다.
어릴 때부터 Windows만 주구장창 써오던 사람이라 Ubuntu의 특징인 shell code 이용하는 것이 굉장히 낯설고.. 그냥 시도 조차 하기 싫었는데...
또 하다보니 그렇게 나쁜 느낌만은 아닌 것 같다.
당연히 Windows보다는 조작이나 사용자 측면에서 상당히 불편하지만 OS가 전반적으로 가벼운? 느낌이 들었고 또 익숙해지기만 하면 내가 이것 저것 customize 할 수 있는 부분이 많을 것 같다.

여튼 최근 몇 주 동안 맨 땅에 헤딩하다시피 했던 일은 Ubuntu를 이용한 간단한 server를 구축하고 homepage 만들기

1.. Ubuntu는 물론이고
2.. 그 기반인 Linux를 한번도 다뤄보지 않은 상태에서
3.. Windows에서도 해보지 않은 server를 구현하고자했던
것은 순전히 Windows보다 server 구현하는게 조금 더 수월할 것이라는 한 지인의 조언 때문.

정말 정말 힘들고 답답한 부분이 많았는데 Google신의 큰 도움을 받아 일단 혼자서 해내긴 해냈음.
물론 다른 사람이 보기에는 아무 것도 아니겠지만 홈페이지가 돌아가는 것을 본 순간 너무 기뻤음 ㅜㅜ

아무래도 기초가 없기 때문에 시간이 지나면 분명히 까먹을 것 같다.
그래서 이곳에 다음의 순서대로 간단한 메모를 남겨보려고 한다.
일단 요번 포스트에서는 server 구축하는 법만. (이 과정은 그래도 할만 함...)

1. VirtualBox에 Ubuntu 18.04 LTS 설치
2. LAMP (Linux - Apache - MySQL - PHP) 구축
3. Host (Windows) 뿐만 아니라 다른 내부망 단말기에서 Guest (Ubuntu) 로 접속할 수 있도록 Port 설정하기



1. VirtualBox에 Ubuntu 18.04 LTS 설치

내가 이 mission을 수행하면서 가장 많이 들르게 된 국내 blog가 있는데 바로 webnautes 님의 "멈춤보단 천천히라도" 라는 blog이다.

(생각해보니 Visual Studio Code를 통해 C 언어 개발 환경 구축하는 것도, Python 개발 환경 구축하는 것도 모두 이분의 blog를 참조하여 따라한 것 같다.. 여러모로 넘나 감사한..)

VirtualBox에 Ubuntu 18.04 LTS 설치를 내가 직접 Screenshot을 찍어서 여기에 메모하려면 Ubuntu를 다시 깔아야되는 수고가 뒤따르기 때문에 skip 하도록 하고 대신 "Windows에 설치된 VirtualBox 6.0을 사용하여 Ubuntu 18.04 설치하기" 글을 참조하면 될 것 같다.

참고로 Ubuntu에서 몇 몇 버젼은 'LTS (long term support)'라는 약자가 붙어있는데 Ubuntu 측이 타 버젼보다 LTS 버젼에 대한 유지보수를 더욱 오래도록 지속한다는 것을 뜻함.

** 진짜 기본 프로그램만 설치되는 Minimum(?) install 을 추천함.
** 나머지는 필요할 때마다 깔면 되니...


2. LAMP (Linux - Apache - MySQL - PHP) 구축

요것도 사실 webnautes님의 블로그 중 "Ubuntu 18.04에 LAMP ( Apache2, MySQL , PHP 7) 설치하는 방법" 글을 참조했다.

이제 하나 하나 그대로 따라해보도록 하겠다.

Apache? MySQL? PHP?

설치에 앞서 Apache, MySQL, PHP의 역할을 간략하게 적어보자.
이 부분은 Codehelper님의 블로그에서 "APM 구동원리" 글과 ChocoPeanut 님의 블로그 중 "컴퓨터 네트워크 35장 - 웹 서비스 구조 -" 글을 토대로 한다.



Apache: Web server 프로그램 서비스 제공 (Windows의 IIS에 상응)
MySQL: Database 서비스 제공
           데이터 저장 및 로드 지원
PHP: HTML 언어 기능을 보안하는 server-side language
       모든 운영체제에서 지원
       MySQP과의 연동 용이

구동 순서:
1) Client가 web browser를 통해 server에게 request
2) Apache web server는 database에 저장된 데이터를 로드하기 위해 PHP로 넘김
3) PHP는 MySQL에게 database에 저장되어있는 데이터 로드 명령
4) MySQL은 databse에 저장된 데이터 로드, PHP에게 전달
5) PHP는 전달받은 데이터 Apache에게 전달
6) Apache는 web browser를 통해 client에게 deliver

Apache 설치

먼저 사용하는 컴퓨터가 내 개인 컴퓨터라면 root의 password를 세팅해주기.
By default... root의 권한은 주어지지 않는다고 한다.
그런데 간혹가다 'su' 명령어를 통해 root가 될 필요가 있는 것 같다.
따라서 다음의 명령어를 통해 root의 password를 내가 원하는 password로 바꿔주면 향후에 편리할 수 있다.

>> sudo passwd root


다음.
'apt (advanced packaging tool)'을 통해 Ubuntu에 다양한 프로그램을 설치할 수 있는데, 그러한 프로그램들의 목록을 update 하기 위해 다음의 명령어를 실행한다.

>> sudo apt update

필요에 따라 upgrade도 해준다.

>> sudo apt upgrade


그 후 다음의 명령어로 Apache를 설치.

>> sudo apt-get install apache2


다음 Chrome을 받아서 localhost 또는 127.0.0.1 (자기 컴퓨터의 서버로 접속하기 위한 loopback IP)가 구성되는지 확인해보자.
Windows랑 달라서 Chrome도 terminal로 설치하는 게 편함.

다운로드:
>> wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

설치:
>> sudo dpkg -i google-chrome-stable_current_amd64.deb

그 후 왼쪽 밑 코너에 'Show application' 버튼을 누르면 Chroome이 떠있는 것을 볼 수 있음!
또 Chrome 아이콘 위에서 right click을 통해 'Add to favorites'을 누르면 Chrome을 왼쪽 side bar에 단축 아이콘 식으로 추가할 수 있음.


localhost 성공 화면.


참고로 Apache 서버의 기본 홈페이지 경로는 '/var/www/html'이다.


다음으로 (필요하면) 방화벽 설정도 해주자.

>> sudo ufw enable

>> sudo ufw default deny incoming

>> sudo ufw default allow outgoing

>> sudo ufw allow ssh

>> sudo ufw allow in "Apache Full"





MySQL 설치

>> sudo apt-get install mysql-server

솔직히 아직 MySQL을 제대로 사용하는 단계가 아니라 나머지 과정은 webnautes 님의 블로그 참조 바람.


PHP 설치

>> sudo apt-get install php php-mysql

PHP 명령어가 잘 먹히는지 .php 파일을 직접 만들어서 확인해보기.




위 페이지가 뜨면 php 명령어가 잘 먹힌다는 것!


phpMyAdmin 설치(옵션)

MySQL과 마찬가지로 내가 아직 사용하지 않으므로 자세한 내용은 webnautes 님의 블로그 참조.


3. Host (Windows) 뿐만 아니라 다른 내부망 단말기에서 Guest (Ubuntu) 로 접속할 수 있도록 Port 설정하기

이 부분은 누더기님의 블로그 "버추얼박스(Virtualbox) Guest에 서버 구축 후 Host로 네트워크에 서비스하기" 글을 통해 해결했다.

먼저 VirtualBox 관리자 창에서 실행하고 있는 Ubuntu 18.04를 right click 한 후 설정 -> 네트워크 -> 포트포워딩


다음 포트 포워딩 규칙을 추가해주면 되는데
아래 그림은 Host의 Port 8000을 통해 Guest의 Port 80로 들어간다는 의미임.
보통 80은 default 인터넷 포트 번호인듯.
따라서 guest에서의 default 인터넷 포트 80으로 들어가게 아래와 같이 설정해주자.



Host의 브라우져로 아래와 같이 localhost:8000/ 또는 127.0.0.1:8000/ 으로 접속하면 잘 될 것임. (아까 guest Ubuntu 안에서 localhost 쳤을 때 나왔던 기본 Apache 홈페이지가 보이면 성공.)


솔직히 여기까지는 잘 따라가기만 하면 할만 함.
그런데 그 다음 내가 원하는 역할을 하는 홈페이지를 서버에 구축하는 것이 힘들었음...

그것에 대한 이야기는 다음 글에 메모하겠음.






Comments