Ubuntu 22.04에 Apache 웹 서버 설치하는 방법

소개

Apache HTTP 서버는 세계에서 가장 널리 사용되는 웹 서버입니다. 이는 동적으로 로드할 수 있는 모듈, 강력한 미디어 지원 및 다른 인기 있는 소프트웨어와의 광범위한 통합을 포함한 많은 강력한 기능을 제공합니다.

이 안내서에서는 Ubuntu 22.04 서버에 Apache 웹 서버를 설치하는 방법을 배우게 됩니다.

DigitalOcean 앱 플랫폼을 사용하여 GitHub에서 애플리케이션을 배포하세요. DigitalOcean이 앱의 확장에 중점을 두도록 하세요.

전제 조건

이 가이드를 시작하기 전에, sudo 권한을 가진 일반 사용자로 설정된 Ubuntu 22.04 서버가 필요하며, 비필수 포트를 차단하기 위해 방화벽이 활성화되어 있어야 합니다. 이를 설정하는 방법은 우리의 Ubuntu 22.04용 초기 서버 설정 안내서를 따르면 됩니다.

이 설정을 완료하면 일반 사용자로 로그인하여 첫 번째 단계로 진행하십시오.

단계 1 — Apache 설치

Apache는 Ubuntu의 기본 소프트웨어 저장소 내에서 사용 가능하며, 전통적인 패키지 관리 도구를 사용하여 설치할 수 있습니다.

최신 업스트림 변경 사항을 반영하기 위해 로컬 패키지 인덱스를 업데이트하기 시작하십시오:

  1. sudo apt update

그런 다음, apache2 패키지를 설치하십시오:

  1. sudo apt install apache2

설치를 확인한 후, apt가 Apache와 모든 필수 종속 항목을 설치합니다.

단계 2 — 방화벽 조정

Apache를 테스트하기 전에 기본 웹 포트로의 외부 액세스를 허용하도록 방화벽 설정을 수정해야 합니다. 사전 조건에서 지침을 따랐다면, 서버에 액세스를 제한하는 UFW 방화벽이 구성되어 있어야 합니다.

설치 중에 Apache는 몇 가지 응용 프로그램 프로필을 제공하여 방화벽을 통해 Apache에 액세스를 활성화하거나 비활성화할 수 있도록 UFW에 자체 등록합니다.

다음을 실행하여 ufw 응용 프로그램 프로필 목록을 나열하십시오:

  1. sudo ufw app list

출력은 응용 프로그램 프로필 목록이 됩니다:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

출력에서 나타나는대로 Apache를 위해 세 가지 프로필이 있습니다:

  • 아파치: 이 프로필은 포트 80만 엽니다 (보통, 암호화되지 않은 웹 트래픽)
  • 아파치 풀: 이 프로필은 포트 80 (보통, 암호화되지 않은 웹 트래픽)과 포트 443 (TLS/SSL 암호화 트래픽)를 모두 엽니다
  • 아파치 보안: 이 프로필은 포트 443만 엽니다 (TLS/SSL 암호화 트래픽)

구성한 트래픽을 허용하는 가장 제한적인 프로필을 활성화하는 것이 좋습니다. 이 가이드에서 아직 서버에 SSL을 구성하지 않았으므로 포트 80에서만 트래픽을 허용해야 합니다:

  1. sudo ufw allow 'Apache'

상태를 확인하여 변경 사항을 확인할 수 있습니다:

  1. sudo ufw status

출력에서 허용된 HTTP 트래픽 목록을 제공합니다:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

출력에서 알 수 있듯이 프로필이 아파치 웹 서버에 액세스를 허용하도록 활성화되었습니다.

단계 3 — 웹 서버 확인하기

설치 프로세스가 끝나면 Ubuntu 22.04에서 아파치를 시작합니다. 웹 서버는 이미 실행 중일 것입니다.

systemd 이닛 시스템의 명령을 실행하여 서비스가 활성화되었는지 확인합니다:

  1. sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 5089 (apache2) Tasks: 55 (limit: 1119) Memory: 4.8M CPU: 33ms CGroup: /system.slice/apache2.service ├─5089 /usr/sbin/apache2 -k start ├─5091 /usr/sbin/apache2 -k start └─5092 /usr/sbin/apache2 -k start

출력에 따르면 서비스가 성공적으로 시작되었습니다. 그러나 이를 테스트하는 가장 좋은 방법은 아파치에서 페이지를 요청하는 것입니다.

기본 Apache 랜딩 페이지에 액세스하여 소프트웨어가 올바르게 실행되는지 확인할 수 있습니다. 서버의 IP 주소를 모르는 경우 명령 줄에서 몇 가지 다른 방법으로 얻을 수 있습니다.

서버의 명령 프롬프트에 다음을 작성해 보십시오:

  1. hostname -I

여러 주소가 공백으로 구분되어 나타납니다. 각각을 웹 브라우저에서 시도하여 작동 여부를 확인할 수 있습니다.

다른 옵션은 무료 icanhazip.com 도구를 사용하는 것입니다. 이 웹 사이트는 액세스할 때 인터넷의 다른 위치에서 읽은 기계의 공용 IP 주소를 반환합니다:

  1. curl -4 icanhazip.com

서버의 IP 주소를 가지고 있으면 브라우저의 주소 표시줄에 입력하십시오:

http://your_server_ip

다음과 같이 기본 Ubuntu 22.04 Apache 웹 페이지가 표시됩니다:

이 페이지는 Apache가 올바르게 작동하는지를 나타냅니다. 또한 중요한 Apache 파일 및 디렉토리 위치에 대한 기본 정보를 포함하고 있습니다.

단계 4 — Apache 프로세스 관리

이제 웹 서버가 실행되고 있는지 확인했으므로 systemctl을 사용하여 기본 관리 명령을 검토해 보겠습니다.

웹 서버를 중지하려면 다음을 실행하십시오:

  1. sudo systemctl stop apache2

중지된 웹 서버를 시작하려면 다음을 실행하십시오:

  1. sudo systemctl start apache2

서비스를 중지한 다음 다시 시작하려면 다음을 실행하십시오:

  1. sudo systemctl restart apache2

간단한 구성 변경만 하는 경우, Apache는 종종 연결을 끊지 않고 다시 로드할 수 있습니다. 이를 위해 다음 명령을 사용하세요:

  1. sudo systemctl reload apache2

기본적으로 Apache는 서버 부팅 시 자동으로 시작되도록 구성되어 있습니다. 이를 원치 않는 경우 다음 명령을 사용하여 이 동작을 비활성화하세요:

  1. sudo systemctl disable apache2

부팅시 서비스를 자동으로 시작하도록 다시 활성화하려면 다음을 실행하세요:

  1. sudo systemctl enable apache2

다시 서버 부팅 시 Apache가 자동으로 시작됩니다.

Apache 웹 서버를 사용할 때 가상 호스트 (Nginx의 서버 블록과 유사)를 사용하여 구성 세부 정보를 캡슐화하고 단일 서버에서 여러 도메인을 호스팅할 수 있습니다. 우리는 your_domain이라는 도메인을 설정할 것이지만, 여러분은 이를 여러분 자신의 도메인 이름으로 교체해야 합니다.

정보: DigitalOcean에서 도메인 이름을 설정하는 경우, 저희 네트워킹 문서를 참조하세요.

아파치는 Ubuntu 22.04에서 기본적으로 활성화된 하나의 서버 블록을 가지고 있으며, 이는 /var/www/html 디렉터리에서 문서를 제공하도록 구성되어 있습니다. 이는 단일 사이트에 대해서는 잘 작동하지만, 여러 사이트를 호스팅하는 경우에는 다루기 어려울 수 있습니다. /var/www/html을 수정하는 대신에, /var/www 내에서 your_domain 사이트를 위한 디렉터리 구조를 생성하세요. 이때 /var/www/html은 다른 사이트와 일치하지 않는 경우에 제공되는 기본 디렉터리로 남겨두세요.

  1. sudo mkdir /var/www/your_domain

$USER 환경 변수를 사용하여 현재 로그인한 사용자에게 디렉터리 소유권을 할당하세요:

  1. sudo chown -R $USER:$USER /var/www/your_domain

만약 umask 값을 수정하지 않았다면 웹 루트의 권한이 올바르게 설정되어 있어야 합니다. 소유자에게 파일을 읽고 쓰고 실행할 수 있는 권한을 부여하면서 그룹 및 기타 사용자에게는 읽기 및 실행 권한만 부여하도록 하려면 다음 명령을 입력하세요:

  1. sudo chmod -R 755 /var/www/your_domain

nano나 선호하는 편집기를 사용하여 샘플 index.html 페이지를 생성하세요:

  1. sudo nano /var/www/your_domain/index.html

그 안에 다음과 같은 샘플 HTML을 추가하세요:

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

작업이 완료되면 파일을 저장하고 닫으세요. 만약 nano를 사용 중이라면 CTRL + X를 누르고, Y를 입력한 후 ENTER를 눌러 저장할 수 있습니다.

아파치가 이 콘텐츠를 제공하려면 올바른 지시문을 포함한 가상 호스트 파일을 만들어야 합니다. 기본 구성 파일(/etc/apache2/sites-available/000-default.conf)을 직접 수정하는 대신에 새로운 파일을 /etc/apache2/sites-available/your_domain.conf에 만드십시오:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

다음 구성 블록을 추가하십시오. 이 블록은 기본 구성과 유사하지만 새 디렉터리와 도메인 이름에 맞게 업데이트되었습니다:

/etc/apache2/sites-available/your_domain.conf
<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>

DocumentRoot를 새 디렉터리로, ServerAdminyour_domain 사이트 관리자가 액세스할 수 있는 이메일로 업데이트했습니다. 또한 두 개의 지시문 ServerNameServerAlias를 추가했습니다. ServerName은 이 가상 호스트 정의와 일치하는 기본 도메인을 설정하고, ServerAlias는 기본 이름처럼 일치할 추가 이름을 정의합니다:

작업이 완료되면 파일을 저장하고 닫으십시오.

이제 a2ensite 도구를 사용하여 파일을 활성화하십시오:

  1. sudo a2ensite your_domain.conf

000-default.conf에 정의된 기본 사이트를 비활성화하십시오:

  1. sudo a2dissite 000-default.conf

다음으로 구성 오류를 테스트하십시오:

  1. sudo apache2ctl configtest

다음 출력을 받아야 합니다:

Output
. . . Syntax OK

변경 사항을 적용하기 위해 아파치를 재시작하십시오:

  1. sudo systemctl restart apache2

이제 아파치가 도메인 이름을 제공합니다. 이를 확인하려면 http://your_domain으로 이동하여 다음과 같은 내용을 볼 수 있습니다:

단계 6 – 중요한 Apache 파일 및 디렉토리에 익숙해지기

이제 Apache 서비스 자체를 관리하는 방법을 알았으므로 몇 분 동안 몇 가지 중요한 디렉토리와 파일에 익숙해지는 것이 좋습니다.

컨텐츠

  • /var/www/html: 실제 웹 콘텐츠는 기본적으로 앞서 본 기본 Apache 페이지만 포함되어 있는 /var/www/html 디렉토리에서 제공됩니다. 이것은 Apache 구성 파일을 변경하여 변경할 수 있습니다.

서버 구성

  • /etc/apache2: Apache 구성 디렉토리입니다. 모든 Apache 구성 파일이 여기에 있습니다.
  • /etc/apache2/apache2.conf: 주요 Apache 구성 파일입니다. 이것은 Apache 전역 구성을 변경하기 위해 수정할 수 있습니다. 이 파일은 구성 디렉토리의 많은 다른 파일을 로드하는 데 책임이 있습니다.
  • /etc/apache2/ports.conf: 이 파일은 Apache가 수신 대기할 포트를 지정합니다. 기본적으로, Apache는 포트 80에서 수신 대기하며, SSL 기능을 제공하는 모듈이 활성화되어 있을 때에는 포트 443에서도 수신 대기합니다.
  • /etc/apache2/sites-available/: 사이트별 가상 호스트를 저장할 수 있는 디렉터리입니다. Apache는 이 디렉터리에서 찾은 구성 파일을 sites-enabled 디렉터리에 연결되어 있지 않다면 사용하지 않습니다. 일반적으로, 모든 서버 블록 구성은 이 디렉터리에서 수행한 후 a2ensite 명령을 사용하여 다른 디렉터리에 연결하여 활성화합니다.
  • /etc/apache2/sites-enabled/: 활성화된 사이트별 가상 호스트를 저장하는 디렉터리입니다. 일반적으로, 이 디렉터리에 있는 구성 파일들을 sites-available 디렉터리에 있는 파일들과 연결하여 생성합니다. Apache는 구성 파일과 이 디렉터리에 있는 링크를 시작하거나 다시로드할 때 완전한 구성을 컴파일하기 위해 이 디렉터리에서 찾은 내용을 읽습니다.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: 이 디렉터리들은 sites-availablesites-enabled 디렉터리와 동일한 관계를 가지고 있지만, 가상 호스트에 속하지 않는 구성 조각을 저장하는 데 사용됩니다. conf-available 디렉터리의 파일은 a2enconf 명령으로 활성화하고 a2disconf 명령으로 비활성화할 수 있습니다.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: 이러한 디렉터리에는 각각 사용 가능한 모듈과 활성화된 모듈이 포함되어 있습니다. 확장자가 .load인 파일에는 특정 모듈을 로드하기 위한 조각이 포함되어 있고, 확장자가 .conf인 파일에는 해당 모듈의 구성이 포함되어 있습니다. 모듈은 a2enmoda2dismod 명령을 사용하여 활성화 및 비활성화할 수 있습니다.

서버 로그

  • /var/log/apache2/access.log: 기본적으로 웹 서버로의 모든 요청이 이 로그 파일에 기록됩니다. Apache가 다르게 구성되지 않는 한.
  • /var/log/apache2/error.log: 기본적으로 모든 오류가 이 파일에 기록됩니다. Apache 구성의 LogLevel 지시문은 오류 로그에 포함될 세부 정보의 양을 지정합니다.

결론

이제 웹 서버를 설치했으므로 제공할 콘텐츠 유형과 더 풍부한 경험을 만들기 위해 사용할 수 있는 기술에 대한 다양한 옵션이 있습니다.

더 완전한 응용 프로그램 스택을 구축하려면 Ubuntu 22.04에 LAMP 스택을 구성하는 방법에 대한 이 기사를 읽어보세요.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-22-04