아파치 서버 개요와 설치 – 아파치 HTTP 서버 튜토리얼 1

아파치 서버 개요와 설치

아파치(Apache)는 오픈소스 웹서버입니다. 95년 시작된 아파치 프로젝트의 역사도 벌써 30년 가까이 되었고 시장 점유율이 워낙 높기 때문에 오늘날 인터넷의 근간이라고도 할 수 있는 소프트웨어입니다. 초기에 유닉스를 기반으로 개발되서 리눅스 시대에 높은 시장 점유율을 차지하게 되었지요. 최근에는 서버랭킹 1위의 자리를 nginx에 내주긴 했지만 아직도 널리 사용되고 있습니다. 웬만한 리눅스 배포판에 기본 탑재되기도 해서 리눅스 사용자는 자연스럽게 아파치로 웹서버에 입문하기도 합니다.

아파치 웹서버는 httpd (Hypertext Transfer Protocol Daemon) 입니다. 웹서버를 가동하면 네트워크를 통해 들어온 http 요청을 받아 응답합니다. 쉬운 예를 들면 웹사이트 서비스입니다. 웹브라우저에서 아파치 서버가 가동중인 IP주소를 입력하는 것은 클라이언트의 요청(request)이고 이에 아파치 웹서버가 응답하여(response) html 파일을 보내주는 것을 우리는 인터넷에 접속한다고 말하지요. 물론 오늘날 대부분의 웹사이트와 인터넷 프로그램은 단순히 정적인 html 파일을 보내기만 하지는 않고, 상당히 복잡한 요청들까지 응답할 수 있도록 되어있지요. 실시간 스트리밍, 채팅, 이메일, 다중접속 게임 등 우리가 일상에서 흔히 사용하는 기능들은 웹서버가 클라이언트(브라우저 등의 웹앱)의 요청을 받아서 처리하는 것입니다.

어떻게 보면 웹서버는 1년 365일 24시 하루도 쉬지 않고 가동하며 사람들의 일상을 떠받드는 아주 고마운 녀석들입니다만, 구체적으로 웹서버가 무엇을 하는지 잘 모르거나 혹은 막연할 수 있습니다. 이 튜토리얼에서는 아파치의 설치부터 아파치의 가동과 설정 등 기본을 다룹니다.

어디에 설치?

아파치는 유닉스 기반으로 리눅스용으로 개발되었기에 리눅스에 설치하는게 자연스럽습니다. 윈도우 환경에서도 설치할 수 있습니다만, 성능이나 관리면에서는 리눅스 쪽이 이점이 많습니다. (윈도우에는 IIS라는 전용 웹서버가 있다)

리눅스 디스트로(distro)에 따라 설치 방법이 조금씩 다르지만 온라인 문서가 잘 되어 있어서 어렵지 않게 설치할 수 있습니다. 여기서는 우분투 리눅스를 기준으로 알아보겠습니다.

윈도우 사용자라도 VMWare 등 가상머신의 리눅스에 아파치를 설치하면 됩니다. WSL2를 사용한다면 가상머신보다 빠른 리눅스 커널이 사용가능합니다.

가상머신인 VMWare를 사용하는 것도 괜찮은 방법입니다. VMWare에 우분투를 설치하는 방법은 아래 포스팅을 참고합니다.

아파치 설치하기

먼저 패키지 리스트를 업데이트를 해야겠지요.

sudo apt update

패키지들을 업그레이드 합니다

sudo apt dist-upgrade

그 다음은 호스트 이름을 체크합니다. vi 에디터나 nano 에디터를 사용합니다. 안에 있는 이름이 호스트 이름입니다.

sudo vi /etc/hostname

다음은 호스트 설정입니다. 서버의 IP 설정이 들어있습니다. 호스트 이름마다 로컬 IP가 대응되야 합니다.

sudo vi /etc/hosts
아파치 설정

이제 아파치 서버를 설치하겠습니다. 아파치 문서와 유틸리티도 함께 설치합니다.

sudo apt install apache2 apache2-doc apache2-utils

아파치 버전을 체크합니다. 우분투는 다음과 같습니다.

apache2 -v

아파치 시작과 중지하기

아파치 웹서버를 시작합니다. 성공하면 콘솔에 아무 내용이 출력되지 않습니다.

sudo service apache2 start

로컬에서 호스트이름으로 접속하거나 IP주소로 접근하면 다음과 같은 디폴트 페이지를 볼 수 있습니다. 이는 웹서버가 돌아가고 있다는 뜻 입니다.

아파치 디폴트 웹페이지

IP주소를 알아내는 방법은 ifconfig 명령어입니다.

ifconfig

VMWare의 리눅스 서버는 사설IP로 접속하면 됩니다. 서버용이라 브라우저가 돌아가진 않아서(GUI 환경이 없음) 로컬호스트로 웹페이지를 보지 못합니다. 서버용 텍스트모드 브라우저를 사용하려면 elinks를 설치해서 테스트할 수도 있습니다. (sudo apt install elinks)

IP확인 리눅스

ifconfig 가 실행되지 않으면 net-tools를 설치하면 됩니다.

sudo apt install net-tools

아파치 상태확인하기

아파치 상태를 확인은 status 옵션입니다. 현재 서버의 상태를 알 수 있습니다. active (running) 가 가동중이고 inactive(dead)는 중지한 것 입니다. 키보드 q를 누르면 빠져나올 수 있습니다.

sudo service apache2 status
아파치 상태

systemctl 명령어로도 상태 체크가 가능합니다.

아파치 상태

stop 옵션으로 아파치 웹서버를 중지시킬 수 있습니다. status 확인을 해보면 inactive 로 바뀌어 있고 웹서버가 정지한 시간이 표시됩니다. 브라우저에서 ip주소로 접속해보면 아파치 디폴트 페이지가 표시되지 않는 것을 알 수 있습니다.

sudo service apache2 stop

apachectl

아파치 패키지에는 아파치의 상태를 제어할 수 있는 기본 툴을 제공합니다. apachectl 을 사용하여 서버의 시작과 중지가 가능합니다.

apachectl start

apachectl graceful

apachectl restart

apachectl stop

인수에 따라 정해진 동작을 합니다.

  • start – 아파치를 정지상태에서 가동합니다. 이미 가동하고 있으면 경고 메시지 출력
  • graceful – 현재 접속상태는 유지한 채 configuration 만 리로드합니다.
  • restart – 서버를 리스타트합니다. graceful과 다르게 이 때 현재의 접속들은 즉시 종료됩니다.
  • stop – 서버를 셧다운합니다. 현재 접속들도 모두 종료합니다.

서버의 configuration 을 변경했을 때 효과를 적용하기 위해서는 restart 해야 합니다. (graceful을 쓸건지 restart를 쓸 건지 판단한다)

정리

우분투에 아파치 웹서버를 설치한 후 시작과 정지하는 기동 테스트까지 했습니다. IP접속시 브라우저에 디폴트 웹페이지가 출력된다는 것은 이미 웹서버의 기능을 하고 있는 것 입니다. 물론 현대의 웹사이트 기술은 매우 복잡해져서 단순히 다운로드만 가능한 정적인 웹사이트로는 별 감흥이 없는 시대가 되었지만 웹의 초기에는 html 파일을 직접 수정하여 서버에 업로드하는 것으로도 매우 큰 문화적 충격을 받았던 시절이 있었습니다. 홈페이지는 대기업이나 IT회사들만이 운영할 수 있는 기술이었지요. 지금은 보편화된 기술들이 과거에는 소수만 아는 노하우였으니까요.

아파치는 역사가 오래되었기 때문에 이 안에서 웹의 초창기 모습들도 볼 수 있을겁니다. 다음 포스팅에는 본격적인 아파치 튜토리얼을 진행하겠습니다.

참고 링크

Apache HTTP Server Version 2.4

Web Server Survey | Netcraft News

Leave a Comment