집에서 직접 웹 사이트나 블로그를 호스팅하고 싶다면, 사용하지 않는 오래된 컴퓨터에 리눅스를 설치하는 것이 가장 간단하고 저렴한 방법입니다. 리눅스는 가볍고 설정이 쉬워 초보자도 부담 없이 홈 웹 서버를 구축할 수 있습니다.
지금부터 리눅스 웹 서버를 만드는 전체 과정을 단계별로 살펴보겠습니다.
리눅스로 나만의 웹 서버 만들기
집에서 운영할 수 있는 리눅스 웹 서버를 구축하려면 하드웨어와 운영체제가 필요합니다. 여기에 웹 서버 소프트웨어를 설치하고, 인터넷에서 서버에 접속할 수 있는 환경까지 마련해야 합니다.
이 과정은 다음 네 가지 단계로 정리할 수 있습니다.
- 오래되었거나 사용하지 않는 컴퓨터 찾기
- 리눅스 운영체제 설치
- 웹 서버 소프트웨어(Apache, PHP, MySQL) 설치 및 설정
- 인터넷에서 서버에 접속할 수 있도록 외부 연결 구성
그럼 하나씩 시작해 보겠습니다.
1단계: 리눅스 웹 서버용 컴퓨터 찾기
웹 서버로 사용할 컴퓨터를 고르기 전에 먼저 운영체제의 최소 사양을 확인해야 합니다. 우분투(Ubuntu)가 가장 널리 알려져 있지만, 구형 PC에서는 다소 무겁게 느껴질 수 있습니다. 이럴 때 같은 코드 기반으로 만들어진 경량 배포판 루분투(Lubuntu)가 훨씬 좋은 선택입니다.
루분투(Lubuntu) 시스템 요구 사항
루분투의 최소 요구 사양은 다음과 같습니다.
- 512MHz 듀얼코어 프로세서 이상 (권장 사양은 1GHz, 우분투의 경우 2GHz 필요)
- 4GB 시스템 메모리(RAM)
- 25GB 이상의 하드 디스크 여유 공간
- 구형 PC용 32비트 버전 또는 64비트 버전 중 선택 가능
서랍 속에 묵혀둔 낡은 PC나 중고 매장에서 저렴하게 구입한 컴퓨터도 충분히 활용할 수 있습니다. 참고로 라즈베리 파이(Raspberry Pi)에 리눅스 웹 서버를 설치하는 방법도 있습니다. 3만 원 안팎의 저렴한 가격에 전력 소모도 적어, 구형 하드웨어에서 문제가 발생한다면 훌륭한 대안이 됩니다.
또한 윈도우 PC에 국한될 필요도 없습니다. 2006년 이전 출시된 파워PC(PowerPC) 프로세서를 탑재한 애플 맥(Mac)과 맥북(MacBook)에서도 리눅스를 실행할 수 있습니다.
우분투와 마찬가지로 루분투는 다양한 그래픽 카드, 하드 디스크, 기타 하드웨어를 폭넓게 지원합니다. 내 컴퓨터에서 정상 작동하는지 미리 확인하려면 라이브 CD(Live CD) 모드로 부팅해 보면 됩니다. 설치 없이 실제 환경을 그대로 체험할 수 있어 하드웨어 호환성 테스트에 유용합니다.
서버를 24시간 내내 가동할 계획이라면 통풍이 잘 되는 곳에 두는 것이 중요합니다. 특히 여름철에는 열이 서버의 최대 적이므로, 에어컨이 있는 방에 두는 것이 좋습니다.
2단계: 리눅스 운영체제 설치하기
루분투 설치는 매우 간단합니다. 먼저 ISO 파일을 내려받아 DVD 또는 USB 플래시 드라이브에 기록하는 것부터 시작합니다.
다운로드: Lubuntu 공식 사이트
디스크 이미지에는 최신 버전의 소프트웨어가 포함되어 있어, 설치 후에는 소규모 업데이트만 진행하면 됩니다. 컴퓨터가 지원한다면 64비트 버전을, 그렇지 않다면 32비트 버전을 사용하세요.
설치 준비가 되면 설치 미디어를 컴퓨터에 삽입하고 재부팅합니다. 광학 드라이브나 USB로 부팅하려면 BIOS 설정을 변경해야 할 수도 있으며, 일부 컴퓨터는 부팅 메뉴를 별도로 제공하기도 합니다.
설치 미디어로 부팅되면 Install Lubuntu를 선택합니다. 설치 중 다음 옵션을 선택하세요.
- Download updates while installing (설치 중 업데이트 함께 받기)
- Install 3rd Party Software (서드파티 소프트웨어 설치)
- Erase and Use the Entire Disk (디스크 전체 삭제 후 사용)
주의할 점은, 이 과정에서 해당 컴퓨터에 설치된 기존 운영체제가 모두 지워진다는 것입니다. 나머지 옵션은 원하는 설정에 따라 진행하면 됩니다. 웹 서버 용도라면 홈 폴더 암호화는 불필요하며 오히려 관리가 번거로울 수 있으니 생략하는 것이 좋습니다. 설치가 완료되면 재부팅합니다.
재부팅 후에는 최신 업데이트를 확인하세요. 시스템 > 관리 > 업데이트 관리자 > 업데이트 설치 순서로 진행하며, 업데이트 적용 후 재부팅이 필요할 수 있습니다.
3단계: 리눅스 웹 서버 소프트웨어 설치하기
다른 대안들도 있지만, 전 세계 대부분의 웹 사이트는 Apache, MySQL, PHP의 조합, 이른바 LAMP 스택으로 운영됩니다. 윈도우 환경에서 권장되는 구성과도 비슷합니다.
세 가지 도구 모두 소프트웨어 센터(Synaptic 패키지 관리자)를 통해 설치할 수 있습니다. 시스템 > 관리 > Synaptic 패키지 관리자를 실행한 뒤, 아래 패키지를 검색하여 설치하세요. 각 패키지에는 필요한 의존성 항목들이 함께 포함됩니다.
- apache2 (아파치 웹 서버)
- mysql-server (MySQL 데이터베이스 서버)
- php 및 php-mysql (PHP 언어와 MySQL 연동 모듈)
변경 사항을 적용하면 패키지가 자동으로 내려받아 설치됩니다. 설치 과정에서 MySQL 'root' 계정의 비밀번호를 입력하라는 안내가 표시되며, 재부팅은 필요하지 않습니다.
명령줄을 선호한다면 터미널을 열고 다음 한 줄로도 설치할 수 있습니다.
sudo apt install lamp-server^ -y
웹 서버 작동 테스트하기!
서버에 설치된 파이어폭스(Firefox) 브라우저를 열고 https://127.0.0.1/ 또는 https://localhost/에 접속해 보세요.
"It works!"라는 메시지가 보인다면 웹 서버가 정상적으로 작동하고 있는 것입니다! Apache와 MySQL은 백그라운드에서 실행되며 부팅 시 자동으로 시작됩니다. 이제 /var/www 폴더의 파일을 수정하면, 브라우저를 새로 고침하는 것만으로 변경 사항을 바로 확인할 수 있습니다.
서버의 로컬 IP 주소 확인 및 고정하기
서버가 정상 작동하더라도 외부에서 접근할 수 있어야 진정한 웹 서버입니다. 그 전에 보안을 위해 서버를 항상 최신 패치 상태로 유지하는 것이 중요합니다.
먼저 서버의 로컬 IP 주소를 확인하고, 나중에 참조할 수 있도록 고정 주소로 설정합니다. 현재 IP 주소(라우터에서 할당된 값)는 네트워크 정보 상자에서 찾을 수 있습니다.
네트워크 연결 아이콘을 클릭한 뒤 연결 정보(Connection Information)를 선택하면, 현재 IP 주소, 네트워크 어댑터 카드, 브로드캐스트 주소, 게이트웨이, DNS 서버 정보가 담긴 창이 나타납니다. 이 중 IP 주소를 기록해 두세요.
다음은 로컬 네트워크에서 고정 IP(static IP)를 할당하는 단계입니다. 네트워크 아이콘을 다시 우클릭하고 연결 편집(Edit Connections)으로 들어갑니다. 해당 어댑터 이름(예: eth1)을 선택하고 설정을 편집합니다.
IPv4 탭에서 Method를 Manual(수동)로 변경한 뒤 Add 버튼을 누르고, 앞서 확인한 연결 정보를 입력합니다. 단, IP 주소는 조금 다르게 입력해야 합니다. 앞의 세 개의 옥텟(점 사이의 숫자들)은 그대로 유지하고, 마지막 자리만 254 미만의 큰 숫자로 변경하세요.
수동으로 지정한 IP 주소가 네트워크에서 이미 사용 중이면 충돌이 발생할 수 있습니다. 확실하지 않다면 250처럼 큰 숫자를 선택하는 것이 안전합니다. 이것이 바로 여러분의 고정 로컬 IP 주소입니다.
웹 폴더 공유하기
서버에 파일을 올리고 관리하는 방법은 여러 가지가 있습니다. 그중 폴더 권한의 중요성을 이해하기 위해 웹 폴더를 공유하는 방식을 예로 들어 보겠습니다.
중요한 점은, 이 방법은 반드시 사설 네트워크(내부망)에서만 사용해야 한다는 것입니다. 외부에서 접속해 공유 폴더에 접근할 수 없도록 확실히 확인하세요.
먼저 웹 폴더의 권한을 완화합니다. Ctrl + Alt + T로 터미널을 연 뒤 다음 명령어를 입력합니다.
sudo chmod 777 /var/www
관리자 비밀번호를 입력하면 권한이 업데이트됩니다.
이제 파일 탐색기를 열고 /var/www 폴더로 이동한 뒤, 우클릭하여 공유 옵션(Sharing Options)을 선택합니다. 보안 설정에 따라 비밀번호를 요구하도록 공유할 수도 있고, 손님 접근(Guest access)을 허용해 사용자 이름과 비밀번호 없이 공유할 수도 있습니다.
손님 접근을 허용하면 누구나 비밀번호 없이 파일에 접근할 수 있으므로, 보안을 위해서는 비밀번호를 설정한 공유가 권장됩니다. 아울러 이 폴더에서 파일 생성 및 삭제 허용 옵션에도 체크해야 공유 디렉터리에 쓰기 권한이 부여됩니다.
파일을 확인하려면 네트워크 위치 //localhost/www로 이동하면 됩니다.
보안 설정에 따라 비밀번호 입력 창이 나타나거나 바로 파일에 접근할 수 있습니다. 이 파일들은 웹 브라우저의 https://localhost/(또는 설정한 고정 IP 주소)를 통해 접근하는 것과 동일한 파일들입니다.
포트 포워딩으로 리눅스 서버를 인터넷에 연결하기
IP 주소를 확보했다면 이제 포트 포워딩(Port Forwarding)이라는 개념을 이해해야 합니다. 인터넷에 연결된 모든 사람은 각각의 IP 주소 뒤에 있지만, 대부분의 가정용(그리고 많은 회사용) 인터넷 연결에서는 컴퓨터의 IP가 실제로 인터넷에 노출되지 않습니다.
그렇다면 웹 사이트 방문자는 어떻게 서버에 접속할 수 있을까요? 바로 포트 포워딩을 통해 해결합니다.
서버의 포트는 집의 문이나 창문과 같아서 보안과 직결됩니다. 각 포트는 서버에서 실행 중인 서로 다른 서비스에 대한 접근을 제공하며, 웹 서버는 기본적으로 80번 포트를 사용합니다.
이를 설정하려면 라우터(공유기)의 관리자 페이지에 로그인해야 합니다. 자세한 방법은 라우터 설명서를 참고하세요(일부 라우터는 뒷면에 IP 주소가 인쇄되어 있습니다). 관리 페이지에서 Port Forwarding(포트 포워딩) 또는 Applications(응용 프로그램) 섹션을 찾으면 포트를 전달할 수 있습니다.
TCP 80번 포트를 내부 네트워크의 고정 IP 주소로 전달(forwarding)하세요. 라우터마다 설정 방법이 다르므로, 정확한 설정은 사용 중인 라우터의 매뉴얼을 참조하는 것이 좋습니다.
리눅스 웹 서버에 고정 호스트 이름 부여하기
대부분의 가정용 라우터는 ISP(인터넷 서비스 제공업체)에 동적 IP(Dynamic IP) 방식으로 연결됩니다. 즉, 라우터의 공인 IP 주소가 보통 일주일 정도의 주기로 계속 바뀐다는 뜻입니다.
이 문제의 훌륭한 해결책이 바로 DynDNS 서비스입니다. DynDNS URL을 사이트에 등록해 두면, 클라이언트 앱이 공인 IP 주소 변화를 감지할 때마다 URL이 자동으로 여러분의 리눅스 서버를 가리키도록 유지해 줍니다.
이제 방문자는 외부에서 https://yourhostname.dyndns.org로 여러분의 웹 서버에 접속할 수 있습니다. 일부 ISP는 라우터의 80번 포트를 차단하기도 하는데, 이 경우 8080번 같은 포트를 80번 포트로 전달하면 됩니다. 그러면 https://yourhostname.dyndns.org:8080으로 웹 사이트에 접속할 수 있습니다.
축하합니다! 리눅스 웹 서버 구축 완료!
이제 웹 서버 구축이 끝났으니, 프로그래밍이나 원하는 소프트웨어 설치에 집중할 차례입니다.
블로그 소프트웨어를 운영하거나 포럼·게시판을 호스팅할 수도 있습니다. 마스토돈(Mastodon) 같은 소셜 네트워크를 직접 운영하거나 개인 포트폴리오 사이트를 만드는 것도 좋습니다. 어떻게 활용할지는 전적으로 여러분의 선택입니다.
요즘은 거의 모든 기기에서 웹 사이트를 호스팅할 수 있습니다. 실제로 안드로이드 스마트폰을 웹 서버로 변신시키는 것도 가능합니다. 오래된 컴퓨터 하나면 충분히 나만의 서버를 운영할 수 있다는 사실, 이제 직접 경험해 보세요.