리눅스를 직접 NAS에 설치하여 자작NAS를 구축하는 분이라면, 웹서버 설치는 필수코스 입니다. 내용도 좀 많고, 개념도 여기서 확실히 잡지 않으면 초보 분들은 절대로 중급자가 될 수 없습니다.

하지만, 리눅스를 직접 설치까지 한 능력자라면 시간과 의지만 있다면 못할건 없죠! 리눅스는 최소한 돈달라고 하진 않으니깐….^^

이번 포스팅은 NAS에 웹서버를 설치하시려는 분에게 매우 중요합니다.
그래서 2개의 포스트로 나눠서 진행할 예정입니다. 사실 LAMP와 관련된 블로그가 엄청 많기 때문에 저는 이부분을 따로 포스팅하지는 않으려 했는데,

NAS초보가 중급자가 되기까지의 과정을 공유하려는 의도로 시작된 블로그가 중요한 관문인 웹서버부분을 포스팅하지 않는다면 브레이크나 기어변속같은 모르는 상태에서 자동차 핸들잡는 것과 마찬가지나 다름없기 때문이니까요 .

LAMP란 Linux, Apache, MySQL, PHP의 앞의 글자를 따놓은 개별 프로그램들의 Stack 즉 묶음이라는 뜻입니다. 웹서버를 운용하기 위해서는 이 4가지의 프로그램 묶음이 필요하다는 뜻이죠

Linux는 현재 NAS에 이미 Ubuntu를 설치했기 때문에 이에대해 따로 할건 없는 상태입니다.

사실, 웹서버는 꼭 Linux에서만 구동되는건 아닙니다. 우리가 일상생활에서 흔히 쓰는 Windows나 Mac OS에서도 웹서버를 구동할 수 있습니다.
하지만, 굳이 LAMP라하여 앞에 글자가 Linux인 이유는 리눅스가 웹서버로서 가장 많이 쓰이기 때문이죠.

자 그렇다면 NAS에 웹서버가 왜 필요한가? 부터 따져 보겠습니다.

초고속 인터넷이 막 보급되기 시작한 20년전에 대학교에서는 홈페이지 제작 강의가 상당히 인기를 끌기 시작했었습니다.
그때 수업을 열심히 들어봤던 분들은 이런 코드를 기억하실지 모르겠내요.

<html> 
  <head>
    <title>홍길동의 홈페이지</title>
  </head>
  <body>
    <h1>홍길동의 홈페이지에 오신 것을 환영합니다!</h1>
  </body>
</html>

이 코드를 메모장에 적어주고, 파일의 확장자를 html로 해주면 파일을 클릭시 인터넷익스플로러나 네스케이프가 열리면서 적어준 글자가 브라우져상에서 적어준 메세지가 보였죠. 저는 가로닫고 가로열고 하는 스크립트 방식의 코딩하는 걸 무지 싫어해서 html 하면 저거 밖에 기억안납니다. ㅎ

웹서버는 바로 html로 구성된 파일들을 인터넷상에 노출하여 외부에서 브라우져로 그 내용을 보내주는 역할을 합니다.

html 파일을 백개를 만들어도 내 하드디스크안에서 잠자고 있다면, 외부에서 다른 사람들은 접속할 방법이 없잖아요.

사람들은 그래서 인터넷을 통해 정보를 올리고 브라우져로 정보를 볼 수 있는데 그걸 통신포트 80포트에서 정보를 교환하자는 규약을 정했고 80번 포트에서 정보를 외부로 열어주는 역할을 하는 놈이 바로 웹서버 입니다.

그래서, 네이버, 다음, 카카오, 구글 등 인터넷 브라우져를 통해 보시는 모든 웹페이지들은 모두 웹서버 상에서 올려진 정보들이며,

그러므로 여러분들이 앞으로 NAS를 통해 개인홈페이지던, 블로그를 하시던, 웹메일 서비스를 하시던, 온라인쇼핑몰을 하시던, 웹하드 클라우드를 하시던, 웹브라우져를 이용해야 한다면 NAS에 웹서버를 구축해야 하는 겁니다.

그러면, LAMP에서 Apache는 무엇이고, MySQL은 무엇이며, PHP가 무엇인지를 알아야 합니다.

여기서 알아야 한다는 것은 프로그램안에 코드를 이해하고, 수행하는 기능을 위해 설정법을 모두 알아야 한다는 것이 아닙니다.

Apache는 웹서버 그자체 입니다. 주어진 네트워크 포트에서 외부사용자의 요청을 받아, 보여주고자하는 정보를 넘겨주는 기능을 하는 놈입니다.
그 뿐입니다. 아파치가 설치가 잘되었고 동작을 한다면, 해당 웹페이지의 주소로 접근시 웹페이지가 뜨던가 에러메시지가 뜰 것 입니다.
이경우 아파치는 어쨌든 설치가 잘 된 것 입니다. 그 에러메세지 조차도 갑자기 생긴것이 아닌 아파치 웹서버가 알려주는 에러이니까요.

MySQL은 DBMS로 데이터베이스 프로그램 중 하나입니다.
DBMS는 종류가 제법 많습니다. MySQL은 그중에 하나인데, 오라클에서 MySQL을 인수해버리는 바람에 자유소프트웨어에서 언제든 유료화가 되거나 서비스가 중지될 수 있다고 생각한 탓인지 MariaDB도 최근에는 많이 쓰이고 있습니다. 데이터베이스는 말그대로 데이터를 보관해 놓는 저장소입니다. 그런데 데이터는 하드디스크에도 저장되있고 심지어 메모리에도 데이터는 기억될 수 있습니다.
그런데 여기서 말하는 데이터베이스는 무엇일까요? 데이터베이스는 우리가 일상에서 수집하는 정보를 체계적으로 일정한 기준으로 분류하여(정규화라고도 합니다) 일정한 순서로 색인하여 차곡차곡 쌓아놓고 필요시 선택한 정보를 가장 빠르게 제공하기 위함입니다.
MS엑셀이나 윈도우즈 내컴퓨터에서 Ctl+F를 누르면 찾아주기 기능이 있는데 도대체 데이터베이스가 도대체 왜 필요하느냐…. 제 후배사원의 질문이 생각나는 대목인데요. 위에서 말하는 찾기기능은 출석부 들고 자기가 직접 하나하나 찾아다니며 명찰을 보고 학생을 호출하는 선생님이라면, 데이터베이스는 학생의 휴대전화 번호를 미리 저장해놨다가 필요하면 학생에게 바로 전화하는 겁니다.

즉, 데이터베이스는 정보를 색인해두기 때문에 매우 빠릅니다. 우리가 구글검색이나 네이버검색에서 검색어를 치고 찾기하면 웹페이지가 빠르게 찾아지는데 그것이 바로 데이터베이스를 이용하기 때문입니다. 만일, 여러분이 저 위에 대학교때 배운 아주 간단한 html 문구하나정도만 홈페이지로 보여줄거라면 데이터베이스는 필요없습니다. 하지만, 요즘 홈페이지, 블로그, 그리고 인터넷 쇼핑몰 등에 데이터베이스를 이용하지 않는다면 웹사이트가 너무나도 느려서 그 사이트는 아무도 접속하지 않으려 할겁니다. 게다가 이글을 읽으시는 여러분들은 성질 급한 한국인…. 이해되시죠? ㅎ

마지막으로 PHP입니다. PHP는 일종에 프로그래밍언어로서 스크립트 방식입니다.
스크립트 방식이 뭐냐면, C언어나 포트란 처럼 코드를 작성하고 컴파일러 같은 걸로 변환해서 쓰는게 아니라, 작성후 실행하면 바로 작동한다는 말입니다. 잘 모르시겠다구요? 괜찮습니다. 저도 이이상은 알고싶지 않거든요…..  ㅡㅡ;;; 어려워요…코드도 복잡하고… 요즘 웹페이지들은 검색기능은 기본이고, 사용자의 입력을 받아서 웹페이지가 동적으로 작동해야 합니다. 그렇지 않으면 나무위키 페이지 같이 정적인 페이지만 보여주겠지요. 예를 들어 네이버의 웹페이지를 가면, 로그인을 해보면 현재 나에게 온 메일의 숫자, 까페 알림글 공지 등 다양한 정보가 사용자마다 새롭게 표현됩니다.
이런걸 동적 웹페이지라고 합니다. 이걸 위해서는 웹서버와 데이터베이스 사이에서 PHP란 놈이 사용자의 입력, 환경마다 다르게 표현해주는 역할을 해줘야 하는 겁니다.
이러한 프로그램들이 최소한 어떤 목적을 위해 사용해야 한다는 개념은 알고 있어야 나중에 문제 해결능력이 생깁니다. 제 블로그 초입에 말씀드렸듯이 Linux 자작 NAS는 앞으로 겪게 될 많은 문제들을 스스로 해결해내야 합니다. 문제를 해결하려면 문제를 정의내릴 수 있어야 하고, 문제를 정의 내려야 해결책도 찾을 수 있는 것이니까요.
이것은 마치, 자동차에 대해 속안에 든 부품까지 모두 알지 못하더라도 운전자가 문제를 재현하여 어떻게 잘 정의내리느냐에 따라 카센터가서 수리가 얼마나 빨리 정확히 되느냐와 같은 개념입니다. 이제 개념을 얼추 이해하셨다면, 다음 포스팅에서 LAMP를 설치해 보겠습니다.