웹사이트 검색

Debian 11에 Apache 웹 서버를 설치하는 방법


소개

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

이 가이드에서는 Debian 11 서버에 Apache 웹 서버를 설치합니다.

전제 조건

이 가이드를 시작하기 전에 sudo 권한이 있는 루트가 아닌 사용자로 Debian 11 서버를 설정하고 필수가 아닌 포트를 차단하도록 방화벽을 활성화해야 합니다. Debian 11용 초기 서버 설정 가이드에 따라 이를 수행하는 방법을 배울 수 있습니다.

이 설정을 마치면 루트가 아닌 사용자로 로그인하고 첫 번째 단계를 진행하십시오.

1단계 - 아파치 설치

Apache는 Debian의 기본 소프트웨어 리포지토리 내에서 사용할 수 있으므로 기존 패키지 관리 도구를 사용하여 설치할 수 있습니다.

최신 업스트림 변경 사항을 반영하도록 로컬 패키지 인덱스를 업데이트하여 시작합니다.

  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: AIM Bonjour CIFS . . . WWW WWW Cache WWW Full WWW Secure . . .

Apache 프로필은 WWW로 시작합니다.

  • WWW: 이 프로필은 포트 80만 엽니다(일반, 암호화되지 않은 웹 트래픽)
  • WWW 캐시: 이 프로필은 8080 포트만 엽니다(때때로 캐싱 및 웹 프록시에 사용됨)
  • WWW Full: 이 프로필은 포트 80(일반, 암호화되지 않은 웹 트래픽)과 포트 443(TLS/SSL 암호화된 트래픽)을 모두 엽니다.
  • WWW 보안: 이 프로필은 포트 443(TLS/SSL 암호화 트래픽)만 엽니다.

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

  1. sudo ufw allow 'WWW'

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

  1. sudo ufw status

출력은 허용된 HTTP 트래픽 목록을 제공합니다.

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

출력에 표시된 대로 프로필이 활성화되어 Apache 웹 서버에 액세스할 수 있습니다.

3단계 - 웹 서버 확인

설치 프로세스가 끝나면 Debian 11이 Apache를 시작합니다. 웹 서버는 이미 실행 중이어야 합니다.

systemd init 시스템에 대한 명령을 실행하여 서비스가 활성 상태인지 확인하십시오.

  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 Wed 2022-07-06 22:05:45 UTC; 23s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 2796 (apache2) Tasks: 55 (limit: 9509) Memory: 21.0M CPU: 67ms CGroup: /system.slice/apache2.service ├─2796 /usr/sbin/apache2 -k start ├─2798 /usr/sbin/apache2 -k start └─2799 /usr/sbin/apache2 -k start

이 출력은 서비스가 성공적으로 시작되었음을 확인합니다. 그러나 이를 테스트하는 가장 좋은 방법은 Apache에서 페이지를 요청하는 것입니다.

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

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

  1. hostname -I

공백으로 구분된 몇 개의 주소를 받게 됩니다. 웹 브라우저에서 각각 시도하여 작동하는지 확인할 수 있습니다.

또 다른 옵션은 icanhazip.com 도구를 사용하는 것입니다. 이 도구는 액세스할 때 인터넷의 다른 위치에서 읽은 대로 시스템의 공용 IP 주소를 반환하는 웹 사이트입니다. curl이 아직 설치되어 있지 않은 경우 다음 명령으로 설치할 수 있습니다.

  1. sudo apt install curl

그런 다음 curl을 사용하여 IPv4를 사용하여 icanhazip.com을 검색합니다.

  1. curl -4 icanhazip.com

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

http://your_server_ip

기본 Debian 11 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가 자동으로 시작됩니다.

5단계 - 가상 호스트 설정(권장)

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

정보: DigitalOcean으로 도메인 이름을 설정하는 경우 네트워킹 문서를 참조하십시오.

Debian 11의 Apache에는 기본적으로 /var/www/html 디렉토리의 문서를 제공하도록 구성된 하나의 서버 블록이 활성화되어 있습니다. 이 방법은 단일 사이트에서 잘 작동하지만 여러 사이트를 호스팅하는 경우 다루기 어려울 수 있습니다. /var/www/html을 수정하는 대신 your_domain 사이트의 /var/www 내에 디렉토리 구조를 만들고 /var/www/html 을 남겨 둡니다. 클라이언트 요청이 다른 사이트와 일치하지 않는 경우 제공될 기본 디렉토리로 위치합니다.

다음과 같이 your_domain에 대한 디렉터리를 만듭니다.

  1. sudo mkdir -p /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

다음으로 원하는 텍스트 편집기를 사용하여 샘플 index.html 페이지를 만듭니다. 여기서는 nano를 사용합니다.

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

내부에 다음 샘플 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를 누른 다음 YENTER를 눌러 이 작업을 수행할 수 있습니다.

Apache가 이 콘텐츠를 제공하려면 올바른 지시어로 가상 호스트 파일을 생성해야 합니다. /etc/apache2/sites-available/000-default.conf에 있는 기본 구성 파일을 직접 수정하는 대신 /etc/apache2/sites-available/<에서 새 구성 파일을 만듭니다. mark>your_domain.conf:

  1. sudo nano /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를 새 디렉터리로 업데이트하고 ServerAdmin을 your_domain 사이트 관리자가 액세스할 수 있는 이메일로 업데이트했습니다. 또한 이 가상 호스트 정의와 일치할 기본 도메인을 설정하는 ServerName과 일치하는 추가 이름을 정의하는 ServerAlias라는 두 가지 지시문을 추가했습니다. 기본 이름이었습니다.

완료되면 파일을 저장하고 닫습니다.

이제 a2ensite 도구를 사용하여 파일을 활성화합니다.

  1. sudo a2ensite your_domain.conf

000-default.conf에 정의된 기본 사이트를 비활성화합니다.

  1. sudo a2dissite 000-default.conf

다음으로 구성 오류를 테스트합니다.

  1. sudo apache2ctl configtest

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

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

변경 사항을 구현하려면 Apache를 다시 시작하십시오.

  1. sudo systemctl restart apache2

Apache는 이제 도메인 이름을 제공합니다. 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/: 활성화된 사이트별 가상 호스트가 저장되는 디렉토리입니다. 일반적으로 이들은 a2ensite를 사용하여 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 지시문은 오류 로그에 포함될 세부 정보의 양을 지정합니다.

결론

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

보다 완전한 애플리케이션 스택을 구축하려면 Debian 11에서 LAMP 스택을 구성하는 방법에 대한 이 문서를 참조하세요.