소개
Apache HTTP Server는 오픈 소스 웹 서버로, 개발사는 Apache Software Foundation입니다. 이 소프트웨어는 로컬 서버를 Firefox나 Google Chrome과 같은 웹사이트 서버에 연결해 줍니다. 이 연결은 파일과 데이터를 송수신하는 데 사용됩니다.
전 세계에서 가장 인기 있는 서버입니다. 월드 와이드 웹(WWW)에 있는 모든 웹사이트의 40% 이상이 Apache HTTP로 구동됩니다. 이처럼 인기가 높은 이유는 뛰어난 사용자 정의 기능, 우수한 통합 능력, 그리고 안정적인 미디어 지원 덕분입니다. Apache는 모듈 기반 아키텍처로 작동합니다. 개별 모듈을 수정하여 다양한 기능을 추가하거나 제거할 수 있습니다. 이 튜토리얼에서는 Ubuntu 18.04에 Apache 서버를 설치하는 방법을 안내합니다.
설치 전 준비 사항
Apache 설치를 시작하기 전에 몇 가지 필수 조건을 해결해야 합니다. 우선, 로컬 서버에 sudo 권한이 있는 non-root(비루트) 사용자가 이미 구성되어 있는지 확인하십시오. 또 다른 필수 요소는 방화벽입니다. 기본 방화벽을 활성화하고 불필요한 포트를 차단해야 합니다. 설치를 시작하기 전에 권한이 있는 non-root 사용자로 로그인하십시오. 다음 Ubuntu 서버 설정 튜토리얼을 따라 서버를 쉽게 설치할 수 있습니다..
Ubuntu 18.04에 Apache 웹 서버를 설치하는 방법
필수 조건을 모두 충족했다면 실제 설치 단계로 넘어갈 수 있습니다. 다음 6가지 간단한 단계를 통해 Apache 웹 서버를 설치하고 살펴볼 수 있습니다:
1단계: Apache 설치
Apache가 이미 Ubuntu의 일부로 포함되어 있다는 기쁜 소식이 있습니다. 즉, 일반적인 패키지 관리 도구를 사용하여 서버에 Apache를 설치할 수 있습니다. 저장소에서 기본 소프트웨어로 제공됩니다. 먼저 로컬 패키지 인덱스를 업데이트해야 합니다:
|
1 |
sudo apt update |
이 명령은 최근 업스트림 변경 사항을 패키지 인덱스에 반영합니다. 다음으로, apache2 패키지를 설치하는 명령을 입력해야 합니다:
|
1 |
sudo apt install apache2 |
2단계: 방화벽 설정 변경
필수 조건을 준비할 때 UFW 방화벽을 설정하셨을 것입니다. 지침을 따랐다면 방화벽이 서버에 대한 액세스를 차단하고 있을 것입니다. Apache를 작동하기 전에 기본 웹 포트가 서버에 액세스할 수 있도록 허용해야 합니다. 따라서 방화벽 설정을 변경해야 합니다.
설치 시 Apache는 UFW에 등록됩니다. 이 등록의 결과로 몇 가지 애플리케이션 프로필이 생성됩니다. 또한 이러한 프로필을 사용하여 Apache에 대한 방화벽 액세스를 활성화하거나 비활성화할 수 있습니다. 그런 다음, 다음 명령을 사용하여 이러한 ufw 애플리케이션을 확인합니다:
|
1 |
sudo ufw app list |
다음과 같은 목록에서 애플리케이션 프로필을 볼 수 있습니다:

위 목록은 Apache, Apache Full, Apache Secure라는 세 가지 애플리케이션 프로필이 생성되었음을 보여줍니다. 각 프로필에 대한 유용한 세부 정보는 다음과 같습니다:
-
Apache:
Apache 프로필은 80번 포트만 열 수 있습니다. 이 포트는 일반적이고 암호화되지 않은 웹 트래픽을 허용합니다.
-
Apache Full:
Apache Full 프로필은 80번 포트와 443번 포트를 모두 열 수 있습니다. 80번 포트는 일반적이고 암호화되지 않은 웹 트래픽을 허용하는 반면, 443번 포트는 TLS/SSL 암호화된 트래픽을 처리합니다.
-
Apache Secure:
마지막으로, Apache Secure는 443번 포트만 엽니다. 위에서 언급했듯이 TLS 또는 SSL 암호화된 웹 트래픽을 허용하는 역할을 합니다.
이러한 프로필 중에서 선택할 때는 구성한 트래픽을 고려하십시오. 가장 제한적인 프로필을 선택하면서도 원하는 트래픽이 통과하도록 하고 싶을 것입니다. SSL 구성은 현재 범위를 벗어납니다. 따라서 지금은 80번 포트를 통해 들어오는 트래픽에 집중하겠습니다. 즉, 이 시나리오에서는 'Apache' 애플리케이션 프로필을 활성화합니다. 다음과 같이 할 수 있습니다:
|
1 |
sudo ufw allow ‘Apache’ |
변경 사항을 확인하려면 다음을 입력하십시오:
|
1 |
sudo ufw status |
이 명령은 현재 통과가 허용된 HTTP 트래픽이 포함된 출력을 표시합니다. 다음과 같은 내용을 보게 될 것입니다:

트래픽 흐름을 통해 원하는 Apache 프로필이 활성화되었음을 알 수 있습니다. 방화벽을 통해 웹 서버에 대한 액세스가 허용되었습니다.
3단계: 웹 서버 확인
Apache 설치가 완료되고 방화벽 설정이 수정되었습니다. 이 프로세스가 끝나면 Ubuntu 18.04가 자동으로 Apache를 시작합니다. 다음으로 systemd 초기화 시스템을 사용하여 서비스가 현재 실행 중인지 확인해야 합니다. 초기화 시스템에 대해 자세히 알아보려면 다음을 참조하십시오. Systemctl을 사용하여 Systemd 서비스 및 유닛을 관리하는 방법에 대한 튜토리얼. 서비스가 실행 중인지 확인하려면 다음을 입력하십시오.
|
1 |
sudo systemctl status apache2 |
출력 결과는 다음과 같습니다:

위에서 서비스의 Active 또는 running 상태를 확인해야 합니다. 이는 서비스가 성공적으로 시작되어 실행 중임을 나타냅니다. 서비스의 작동을 테스트하는 더 권장되는 다른 방법이 있습니다. Apache에 페이지를 요청하여 상태를 확인할 수 있습니다. 서버의 IP 주소를 사용하여 소프트웨어가 기본 Apache 랜딩 페이지에서 실행 중인지 확인할 수 있습니다. 서버의 IP 주소를 아직 모르는 경우 이를 확인하는 데 사용할 수 있는 프롬프트는 다음과 같습니다:
|
1 |
hostname -I |
이 명령은 공백으로 구분된 여러 IP 주소 결과를 보여줍니다. 브라우저에서 각 주소를 개별적으로 테스트해 보십시오. 액세스하는 또 다른 방법은 공용 IP 주소를 가져오는 것입니다. 다음과 같은 프롬프트를 사용할 수 있습니다:
|
1 |
curl -4 icanhazip.com |
이렇게 하면 웹상의 다른 위치에서 보이는 귀하의 IP 주소가 표시됩니다. 다음으로, IP 주소를 확인했다면 웹 브라우저로 이동합니다. 주소창에 다음을 입력하고 실행하십시오:
|
1 |
http://your_server_ip |
그러면 기본 Ubuntu 18.04 Apache 웹 페이지가 열립니다. 다음과 같이 보입니다:

이 페이지에는 파일 및 디렉터리에 대한 몇 가지 기본 정보가 포함되어 있습니다. 주소를 입력했을 때 이 페이지가 열렸다면 Apache가 제대로 실행되고 있음을 나타냅니다.
4단계: Apache의 기본 관리
확인을 통해 Apache가 실행 중이고 서버가 작동 중임을 알 수 있습니다. 이제 관리를 위해 서버에서 사용할 수 있는 몇 가지 기본 명령을 살펴보겠습니다.
Apache의 기본 구성은 서버가 부팅될 때마다 Apache를 시작하도록 설정되어 있습니다. 이 설정을 비활성화할 수 있습니다. 다음을 입력하십시오:
|
1 |
sudo systemctl disable apache2 |
이 기본 기능을 다시 활성화하려면 다음 명령을 사용하십시오:
|
1 |
sudo systemctl enable apache2 |
다음으로, 서버를 수동으로 중지하려면 다음을 입력하십시오:
|
1 |
sudo systemctl stop apache2 |
중지한 후 다시 시작하려면 다음 명령을 사용하십시오:
|
1 |
sudo systemctl start apache2 |
서버를 중지했다가 다시 시작하려면(기본적으로 새로 고침) 다음을 입력하십시오:
|
1 |
sudo systemctl restart apache2 |
서버를 중지하면 모든 연결이 끊어지는 경향이 있습니다. 다시 시작하면 해당 연결을 다시 찾아 연결합니다. 원하는 경우 연결을 끊지 않고 Apache를 다시 로드할 수도 있습니다. 이는 구성을 변경할 때 특히 유용합니다. 연결을 끊지 않고 다시 로드하려면 다음을 입력하십시오:
|
1 |
sudo systemctl reload apache2 |
5단계: 가상 호스트 설정
필수 사항은 아니지만 가상 호스트를 설정하는 것을 적극 권장합니다. 가상 호스트는 구성 세부 정보 그룹을 포함하는 서버의 작은 블록입니다. 서버의 가상 호스트 하나에서 여러 도메인을 호스팅할 수 있습니다.
기본적으로 Ubuntu 18.04에서 Apache를 사용하는 경우, /var/www/html 디렉터리의 문서를 제공하는 활성화된 서버 블록이 하나 존재합니다. 단일 사이트가 아닌 여러 사이트를 호스팅하는 경우에는 이 설정을 변경해야 합니다. 하지만 더 나은 또 다른 방법이 있습니다. /var/www/html 디렉터리는 그대로 두십시오. 대신 /var/www/로 이동하여 원하는 도메인의 사이트를 위한 디렉터리 구조를 만드십시오. 이렇게 하면 /var/www/html 디렉터리가 기본 디렉터리로 구성됩니다. 클라이언트 요청이 도메인의 어떤 사이트와도 일치하지 않는 경우, 이 디렉터리에서 요청을 처리하게 됩니다.
그 후, 새로운 도메인과 그에 연결된 디렉터리를 생성하는 방법을 살펴보겠습니다. 이 예제에서는 가상의 이름인 your_domain을 사용합니다. 이후 지침에 나오는 모든 your_domain을 실제 도메인 이름으로 바꾸십시오. 먼저, your_domain을 위한 새 디렉터리를 생성하는 방법을 알아보겠습니다.
|
1 |
sudo mkdir /var/www/your_domain |
이제 디렉터리의 소유권을 할당해야 합니다. 이를 위해 $USER 환경 변수를 사용할 수 있습니다:
|
1 |
sudo chown -R $USER:$USER /var/www/your_domain |
계속 진행하려면 웹 루트 권한이 올바르게 설정되어 있어야 합니다. 구성에서 unmask 값을 수정하지 않았다면 권한에 문제가 없을 것입니다. 하지만 확실하지 않은 경우, 언제든지 다음 명령어로 확인할 수 있습니다:
|
1 |
sudo chmod -R 755 /var/www/your_domain |
다음으로 index.html 페이지를 생성하겠습니다. 저희처럼 nano를 사용하거나 선호하는 다른 에디터를 사용하셔도 됩니다:
|
1 |
nano /var/www/your_domain/index.html |
index 파일 내에 이 샘플 HTML을 추가한 다음, 저장하고 닫으십시오:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>환영합니다 to Your_domain!</title> </head> <body> <h1>성공! The your_domain 가상 호스트 작동 중입니다!</h1> </body> </html> |
다음 단계는 가상 호스트 파일을 생성하는 것입니다. Apache가 위의 샘플 콘텐츠를 제공하도록 하려면 올바른 지시어가 모두 포함된 가상 호스트 파일이 필요합니다. 기본 구성 파일은 /etc/apache2/sites-available/000-default.conf에 있습니다. 해당 파일을 수정하는 대신, /etc/apache2/sites-available/your_domain.conf에 새 파일을 만들겠습니다.
|
1 |
sudo nano /etc/apache2/sites-available/your_domain.conf |
이전과 마찬가지로 구성을 위한 샘플을 추가하겠습니다. 하지만 이번에는 도메인 이름과 방금 생성한 새 디렉터리에 맞게 업데이트합니다. 이 블록을 추가한 다음, 저장하고 닫으십시오:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
위에서 볼 수 있듯이, ServerAdmin 이메일도 업데이트했습니다. 이 주소는 your_domain 사이트 관리자에게 연락할 수 있는 주소입니다. 그뿐만 아니라 DocumentRoot를 새 디렉터리로 업데이트하고 두 개의 새로운 지시어를 추가했습니다. 이 지시어에는 ServerName과 ServerAlias가 포함됩니다. ServerName은 기본 도메인을 설정하는 데 사용됩니다. 가상 호스트를 정의하려면 기본 도메인이 일치해야 합니다. 반면 ServerAlias는 기본 이름과 유사하게 일치해야 하는 다른 이름을 제공합니다. a2ensite 도구를 사용하여 파일을 쉽게 활성화할 수 있습니다:
|
1 |
sudo a2ensite your_domain.conf |
000-default.conf에 언급된 기본 사이트를 비활성화하려면 다음 명령어를 사용하십시오:
|
1 |
sudo a2dissite 000-default.conf |
이제 설정이 준비되었으므로, 다음을 입력하여 오류를 확인할 수 있습니다:
|
1 |
sudo apache2ctl configtest |
설정 오류가 없으면 다음과 같은 출력이 표시됩니다:
|
1 2 3 |
Output Syntax OK |
변경 사항을 적용하려면 이전에 안내해 드린 대로 Apache 서버를 재시작해야 합니다:
|
1 |
sudo systemctl restart apache2 |
짜잔! 가상 호스트를 설정하고 도메인 이름을 지정했습니다. Apache가 실제로 your_domain을 서비스하고 있는지 확인하려면 http://your_domain으로 이동하십시오.
6단계: 파일 및 디렉터리 탐색
Apache 서버의 몇 가지 기본 설정을 성공적으로 수행했습니다. 또한 Apache 서비스를 관리하는 방법도 알고 계실 것입니다. 다음으로, 가장 중요한 디렉터리와 파일 중 일부를 살펴보는 시간을 가질 수 있습니다.
콘텐츠
- /var/www/html
이 디렉터리에 대해서는 이전에도 언급한 적이 있습니다. 여기에는 기본 Apache 페이지가 포함되어 있습니다. 원한다면 이 페이지의 콘텐츠를 변경할 수 있습니다. 그렇게 하려면 Apache 설정 파일을 수정해야 합니다.
서버 설정
- /etc/apache2
이것은 기본 Apache 설정 디렉터리입니다. 즉, 이 디렉터리는 Apache와 관련된 모든 설정 파일로 구성되어 있습니다.
- /etc/apache2/apache2.conf
디렉터리 끝에 추가된 이름에서 알 수 있듯이, 이것이 메인 설정 파일입니다. 이 파일은 디렉터리 내의 다른 여러 파일을 로드하며 Apache 설정을 수정하는 데 사용할 수 있습니다. Apache 서버의 설정을 변경하려면 여기에서 수정해야 합니다.
- /etc/apache2/ports.conf
이름에서 알 수 있듯이, 이 파일은 이전에 논의한 포트와 관련이 있습니다. 기본적으로 80번 포트가 활성화되어 있으며, SSL이 포함된 모듈이 도입되면 443번 포트가 활성화됩니다. 이 파일에는 어떤 포트가 열려 있고 활성화되어 있는지에 대한 세부 정보가 포함되어 있습니다.
- /etc/apache2/sites-available/
여기에 가상 호스트가 저장됩니다. 수행할 모든 서버 블록 설정은 이 디렉터리에서 이루어집니다. 서버 블록을 활성화하려면 a2ensite를 통해 다른 디렉터리에 연결해야 합니다. Apache는 sites-enabled 디렉터리에 연결되어 활성화된 경우에만 이 디렉터리의 파일에 액세스할 수 있습니다.
- /etc/apache2/sites-enabled/
활성화된 가상 호스트가 위치하는 디렉터리입니다. 언급했듯이, a2ensite 명령어를 통해 sites-available 디렉터리의 파일을 연결하면 호스트가 활성화됩니다. 이 디렉터리의 파일은 Apache가 시작, 재로드 또는 설정을 컴파일할 때 중요합니다.
- /etc/apache2/conf-available/, /etc/apache2/conf-enabled/
이 디렉터리들은 sites-available 및 sites-enabled와 유사한 방식으로 작동합니다. conf-available 디렉터리의 파일을 활성화하려면 a2enconf 명령어를 사용해야 합니다. 비활성화 명령어는 a2disconf입니다. 사이트별 가상 호스트를 저장하는 대신, 이 디렉터리들은 가상 호스트와 관련이 없는 설정 세부 정보로 구성됩니다.
- /etc/apache2/mods-available/, /etc/apache2/mods-enabled/
이 디렉터리들 또한 위의 두 예시와 유사한 관계를 가집니다. 여기에는 사용 가능한 모듈과 a2enmod 명령어로 활성화된 모듈이 포함되어 있습니다. 모듈을 비활성화하려면 a2dismod 명령어를 사용할 수 있습니다. .load 접미사가 붙은 파일에는 특정 모듈을 로드할 수 있는 조각이 포함되어 있습니다. .conf 접미사가 붙은 파일에는 해당 모듈에 대한 관련 설정 세부 정보가 들어 있습니다.
서버 로그
- /var/log/apache2/access.log
이 로그 파일에는 서버에 대한 모든 요청이 포함됩니다. 이는 기본적으로 수행됩니다. Apache가 요청을 다르게 기록하도록 설정할 수도 있습니다.
- /var/log/apache2/error.log
이것은 에러 로그입니다. 기본적으로 발생하는 모든 에러가 이 파일에 바로 기록됩니다. LogLevel 지시어를 통해 에러 로그가 기록되는 상세 수준을 확인할 수 있습니다.
결론
마지막으로, 위의 단계를 수행하면 Ubuntu 18.04에 Apache 웹 서버를 쉽게 설치할 수 있습니다. 시스템에 서버가 설치되면 플랫폼에서 제공하는 다양한 옵션을 탐색할 수 있습니다. 다양한 기술을 사용하여 여러 종류의 콘텐츠를 제작할 수 있습니다. 이러한 방식으로 서버에서 자신만의 독특하고 편리한 경험을 만들어갈 수 있습니다.
또한 Let’s Encrypt로 Apache 서버를 보호하는 방법을 단계별 튜토리얼을 통해 배울 수 있습니다. CentOS 7에 Apache를 설치하는 방법을 배우려면, 다음 CentOS 7에 Linux, Apache, MySQL, PHP(LAMP) 스택을 설치하는 방법에 대한 튜토리얼을 확인해 보세요..
즐거운 컴퓨팅 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.