[Linux] Ubuntu Apache 설치 방법

SYSTEM/Linux / /

소개

 

Apache HTTP 서버는 세계에서 가장 널리 사용되는 웹 서버입니다. 

아파치는 HTTP웹 서버입니다. 아파치는 많은 운영체제에서 운용할 수 있습니다. 예를 들면 BSD , 리눅스 등 Unix 계열 뿐만 아니라 우리가 사용하는 마이크로소프트 윈도우 등 여러 기종에서 사용이 가능

 

 

전제 조건

OS Ubuntu 20.04

sudo 권한이 있는 루트가 아닌 일반 사용자가 있어야 합니다. 

iptables 즉 기본 방화벽을 활성화 해야합니다.

 

1단계 - 아파치 설치

 

Apache는 Ubuntu  저장소에서 사용할 수 있으므로 기존 패키지 관리 도구를 사용하여 설치할 수 있습니다.

sudo apt update
 

Apache2 패키지 를 설치

sudo apt install apache2

 

2단계 - 방화벽 설정

 

Apache를 테스트하기 전에 기본 웹 포트에 대한 외부 액세스를 허용하도록 방화벽 설정을 수정해야 합니다. 

전제 조건의 지침을 따랐다고 가정하면 서버에 대한 액세스를 제한하도록 구성된 UFW 방화벽이 있어야 합니다.

 

설치하는 동안 Apache는 방화벽을 통해 Apache에 대한 액세스를 활성화하거나 비활성화하는 데 사용할 수 있는 몇 가지 애플리케이션 프로필을 제공하기 위해 UFW에 자체 등록합니다.

 

ufw 명령어로 list를 확인

sudo ufw app list

애플리케이션 프로필 목록 확인

Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

출력에 표시된 대로 Apache에는 세 가지 프로필을 사용할 수 있습니다.

  • Apache : 이 프로필은 80포트만 오픈
  • Apache Full : 이 프로필은 포트 80 (일반, 암호화되지 않은 웹 트래픽)과 포트 443(TLS/SSL 암호화 트래픽)을 오픈
  • Apache Secure : 이 프로필은 포트 443(TLS/SSL 암호화 트래픽)만 오픈

 

아직 서버에 SSL(443 포트)을 구성하지 않았기 때문에 포트 80 포트 트래픽만 허용하면 됩니다.

 

sudo ufw allow 'Apache'
 

다음을 입력하여 변경 사항을 확인할 수 있습니다.

sudo ufw status
 
Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

 Apache 웹서버에 대한 엑세스를 허용하도록 활성화 완료.

 

다른 방법 : iptables 명령어 사용 / 80포트 ANY(전체) 오픈 허용

iptables -A INPUT -m state --state NEW -m tcp -p TCP --dport 80 -j ACCEPT

 

3단계 — 웹 서버 확인

설치 프로세스가 정상적으로 끝났다면 Apache 서버는 이미 가동되어 실행 중이어야 합니다.

 

서비스가 제대로 실행중인지 확인 

sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 29435 (apache2)
      Tasks: 55 (limit: 1137)
     Memory: 8.0M
     CGroup: /system.slice/apache2.service
             ├─29435 /usr/sbin/apache2 -k start
             ├─29437 /usr/sbin/apache2 -k start
             └─29438 /usr/sbin/apache2 -k start

서비스가 성공적으로 시작되었습니다. 

 

 

이제 아파치 페이지를 호출해 봅니다.

 

hostname -I

IP를 확인 할수 있습니다.

 

브라우저에서 서버의 IP를 아래와 같이 입력합니다.

http://your_server_ip

Ubuntu 20.04 Apache 기본 웹 페이지가 표시되면 정상적으로 설치 된것입니다.

Ubuntu Default 화면

 

4단계 - Apache 프로세스 관리하기

이제 아파치 웹 서버를 정상 실행했으므로 systemctl 을 사용하여 프로세스를 관리합니다.

 

웹 서버 중지

sudo systemctl stop apache2
 

웹 서버 시작

sudo systemctl start apache2
 
 
웹 서버 재시작
sudo systemctl restart apache2

 

 

웹 서버를 중지하지않고 환경 설정을 적용
sudo systemctl reload apache2

 

 

서버 부팅시 자동으로 실행되지 않게 설정

sudo systemctl disable apache2

 

 

서버 부팅 apache 서버가 자동으로 실행되게 설정

sudo systemctl enable apache2
 

 

 

Apache 웹 서버를 사용할 때 가상 호스트 (Nginx의 서버 블록과 유사)를 사용하여 구성 세부 정보를 캡슐화하고 단일 서버에서 둘 이상의 도메인 서비스 할수 있습니다.

 

Apache에는 기본적으로 /var/www/html 디렉토리에서 문서를 제공하도록 구성된 하나의 서버 블록이 기본적으로 활성화되어 있습니다

먼저 가상 호스트 파일을 생성해야 합니다.
"/etc/apache2/sites-available/000-default.conf" 기본 구성 파일을 수정하는 대신
"/etc/apache2/sites-available/your_domain.conf" 형태로 신규 파일을 만들어 보겠습니다.
vi /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>
 

a2ensite 로 추가된 환경파일을 활성화해 보겠습니다 .

sudo a2ensite your_domain.conf
 
 
기본 사이트 비활성화 000-default.conf
sudo a2dissite 000-default.conf

 

 

추가된 환경설정 파일 오류 테스트

sudo apache2ctl configtest
 

아래와 같이 출려된다면 정상 입니다.

Output
Syntax OK

추가된 가상 호스트(신규도메인)를 실행 할려면 Apache를 다시 시작합니다.

sudo systemctl restart apache2
 

브라우저에서 http://your_domain  입력시 다음과 같이 표시되면 정상적으로 작동 하는것입니다.

 

6단계 – Apache 중요 환경파일 및 디렉토리

 

서버 구성

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

 

서버 로그

  • /var/log/apache2/access.log: 웹 서버에 대한 모든 요청은 이 로그 파일에 기록됩니다.
  • /var/log/apache2/error.log: 모든 오류는 이 파일에 기록됩니다. Apache 구성의 LogLevel 지시문은 오류 로그에 포함될 세부 정보의 정도를 지정합니다.

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기