Apache HTTP Server는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램이다. 팀 버너스 리가 만든 최초의 웹 서버 프로그램인 “NCSA HTTPd”를 기반으로 만들어졌다.

팀 버너스 리의 NCSA HTTPd는 유닉스 기반으로 만들어졌기에, 아파치 HTTP 서버는 NCSA HTTPd를 리눅스에서도 돌리는 것을 목표로 만들어진 프로그램이다.

그 이후 리눅스와 함께 퍼져나갔고, 리눅스가 서버 OS의 최다 점유율을 차지하자 아파치도 자연스럽게 최다 점유율을 차지하게 되었다. 현재 거의 모든 리눅스 배포판이 이 아파치를 지원한다.

Install

sudo apt-get update
sudo apt-get install apache2

설치 후 /etc/init.d/ 디렉토리는 daemon 프로그램이 존재하는 디렉토리 apache2가 정상적으로 설치된 것을 확인할 수 있고,

로컬로 접근했을 때 이와 같은 그림이 나온다면 잘 설치가 된 것입니다.

아파치 실행 및 종료

  • 실행
sudo service apache2 start
  • 종료
sudo service apache2 stop 
  • 재시작
etc/init.d/apache2 restart

Multiple Ports

하나의 IP에서 여러개의 포트를 이용하여 다른 사이트를 접속해보고자 한다.(CTFd를 구축하면서 웹 문제에 대해 여러 사이트를 보여줘야 하기에 이를 이용했다.)

먼저 사용할 포트를 설정 파일에 추가합니다.

/etc/apache2/ports.conf

Listen ports_number를 사용할 포트로 추가하면 됩니다. 기본적으로 Listen 80만 적혀 있지만, 저는 여러 문제를 통해 접속을 받아야 하기에 81, 222, 12345, 31337 여러 포트를 열어뒀습니다.

이후, 개별 포트에 대한 가상호스트 설정과 웹 루트 디렉터리와 로그 파일 위치 등을 설정해줍니다.

etc/apache2/sites-available/000-default.conf

사용할 포트에 대한 NameVirtualHost *:port를 명시하고,

<VirtualHost *:port> .... </VirtualHost>

해당 포트 접속 시 보여줘야 할 웹 루트 디렉토리와 로그 파일 위치 등을 명시해주면 됩니다.

Resource Permission

위 작업을 통해서 접속하면 권한이 없다고 나올 것이다. 그렇기에 위에서 접속을 유도한 디렉토리에 대해서 권한을 부여해야 하는데 해당 경로는 아래와 같습니다.

/etc/apache2/apache2.conf

포트 별 보여준 디렉토리에 대해서 아래와 같이 하면 명시 해주면 됩니다.

<Directory /경로> ... </Directory>

OptionsFollowSymLinks로 하게 된다면 디렉토리 인덱싱에 취약하므로 Options로 마무리 지어주시면 됩니다.

접속은 http://[URL]:[PORT]/로 접속하시면 됩니다.