서버 운영/APM 서버 구축

우분투(Ubuntu) 20.04에서 APM 설치 - 아파치(Apache2 설치

씨실과 날실 2020. 9. 14. 09:00

[관련 게시물]

Ubuntu 20.04 LTS에서 APM 설치

2020/09/14 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 아파치(Apache2 설치

2020/09/16 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 마리아DB(MariaDB) 10.3 설치

2020/09/18 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 마리아DB(MariaDB) 10.5 설치

2020/09/20 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - PHP 7.4 설치

2020/09/22 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - APM 설치 후 방화벽 설정

2020/09/24 - [서버 운영/APM 서버 구축] - MariaDB 10.4 이후의 계정 인증 관련 변화(unix_socket, mysql_native_password 인증 / 계정, 암호 및 전역 권한 정보 저장 테이블 변경 등)

2020/09/26 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 기본 환경 파일 설정 - apache2.conf 기본 설정

2020/09/28 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 기본 환경 파일 설정 - php.ini 기본 설정

 

Ubuntu 20.04에서 설치한 Apache2 서버 주요 설정 파일 원문

2020/09/30 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 목록

2020/10/05 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - Apache2

2020/10/07 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - PHP 7.4 - php.ini

 

Ubuntu 20.04에서 설치한 Apache2 서버 주요 설정 파일 내 지시어 설명

2020/10/09 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] apache2.conf의 기본값에 사용된 지시어 설명

2020/10/11 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] ports.conf 의 기본값에 사용된 지시어 설명

2020/10/13 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] envvars의 기본값에 사용된 지시어 설명

2020/10/15 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] security.conf의 기본값에 사용된 지시어 설명

2020/10/17 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] 000-default.conf의 기본값에 사용된 지시어 설명

2020/10/19 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] default-ssl.conf의 기본값에 사용된 지시어 설명

 

Ubuntu 20.04에서 phpMyAdmin 설치 및 설정

2021.02.20 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 01 - 저장소 설치

2021.03.15 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 02 - Apache 서버 관리자를 위한수동 설치(버전 5.1.0 기준)

2021.03.17 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 03 - 보안강화 작업

2021.03.19 - [서버 운영/APM 서버 구축] - phpMyAdmin 설치 04 - 웹호스팅 사용자를 위한 수동 설치(버전 5.1.0 기준)

2021.03.21 - [서버 운영/APM 서버 구축] - phpMyAdmin 설치 05 - setup 페이지를 통한 구성 파일 생성

Ubuntu 18.04 LTS에서 APM 설치

2018/11/09 - [서버 운영/APM 서버 구축] - Apache 서버 설치

2018/11/14 - [서버 운영/APM 서버 구축] - MariaDB 설치

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 1

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 2 - ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 3

2018/11/19 - [서버 운영/APM 서버 구축] - PHP7 설치

2018/11/21 - [서버 운영/APM 서버 구축] - 서버 환경 파일 수정 - php.ini, apache2.conf

 

Ubuntu 18.04 LTS에서 MariaDB 백업 및 업그레이드

2019/01/15 - [서버 운영/APM 서버 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

2019/06/27 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 (Upgrading from MariaDB 10.3 to MariaDB 10.4)

 

Ubuntu 18.04 LTS에서 PHP 버전 전환

2019/07/05 - [서버 운영/APM 서버 구축] - Apache와 Shell에서 PHP 버전 전환하기(How to Switch between Multiple PHP Version)

 

Ubuntu 18.04 LTS에서 phpmyadmin 설치 및 운용

2018/11/23 - [서버 운영/APM 서버 구축] - phpmyadmin 설치 - APT 패키지 관리자를 통한 설치

2019/06/18 - [서버 운영/APM 서버 구축] - APT 패키지 관리자를 통해 설치한 phpMyAdmin 업그레이드 방법(업그레이드 버전 4.9.0.1)

2019/07/01 - [서버 운영/APM 서버 구축] - phpMyAdmin 수동 설치 01 - 일반 설치

2019/07/03 - [서버 운영/APM 서버 구축] - phpMyAdmin 수동 설치 02 - 심볼릭 링크를 이용한 보안 접속

2019/06/16 - [서버 운영/APM 서버 구축] - phpMyAdmin 4.6.6deb5와 PHP 7.2 간 호환성 문제 해결 - Warning in ./libraries/sql.lib.php#613

 

XAMPP 설치 및 운용

2019/04/20 - [서버 운영/서버 구축 꾸러미] - XAMPP에 대하여(버전 7.1.28 / 7.2.17 / 7.3.4)

2019/04/22 - [서버 운영/서버 구축 꾸러미] - XAMPP for Windows 7.3.4 인스톨러 설치

2019/04/25 - [서버 운영/서버 구축 꾸러미] - XAMPP for Windows 설정

2019/06/03 - [서버 운영/서버 구축 꾸러미] - XAMPP 포터블(portable) 사용법

2019/06/05 - [서버 운영/서버 구축 꾸러미] - XAMPP for Linux 4.3.5 설치 및 사용법

 

서버 운영을 위한 관련 연재글

2018/11/07 - [리눅스/Ubuntu] - 방화벽 설정 - ufw

2018/11/12 - [서버 운영/버추얼박스(VirtualBox)] - 가상머신(Virtualbox) 내 서버 외부접속

2019/01/05 - [미디어위키/미디어위키 설치 및 관리] - 호스트 컴퓨터에서 가상머신 내 미디어위키 접속 및 작업을 위한 버추얼박스 포트포워딩 설정

2019/03/15 - [서버 운영/APM 서버 구축] - PHP 7.3으로의 업그레이드 및 사용 연기 권장 안내 - PHP Notice: compact(): Undefined variable:

2018년 11월에 우분투 18.04 LTS에서 주 저장소를 통해 아파치 서버(Apache2)를 설치하는 방법을 시작으로 APM(Apache2 Server, PHP7, MariaDB)을 구축하는 방법에 대해 글을 올린 적이 있습니다.

 

설치 방법은 이전과 크게 달라지지 않았지만 이번에는 단순히 설치를 하고 바로 운용하기 위한 최소한의 설명을 적었던 그전과는 달리 생략된 일부 진행 과정과 초보자들을 위한 유익한 정보도 담았으며 설치 직후의 설정 내용은 한데 모아 따로 적었습니다.

 

Apache 서버에 대하여

대표적인 서버 프로그램으로 Apache와 NGINEX 이 두 가지가 있습니다. 각자 장단점이 있으므로 자신이 구축하고자 하는 서버 환경과 웹사이트 성격에 따라 선택하게 되는데요. 여기서는 다양한 모듈을 사용할 수 있고 보다 많은 설정을 할 수 있으며 사용자 층이 더 두터워 문제 발생 시 해결 방법을 손쉽게 찾을 수 있는 아파치를 선택했습니다.

http://httpd.apache.org/

아파치 서버의 공식 사이트는 위와 같습니다.

아파치 서버를 컴파일 설치하려면 이곳에서 Apache2 와 APR, APR-Util 그리고 PCRE을 다운받아 자신의 서버 환경에 맞추어 빌드하여 설치하셔야 합니다.

이 컴파일 설치 방법은 다른 분들의 공개글들을 참고하시기 바랍니다. 짬이 나면 저 역시 컴파일 설치 방법을 다뤄보도록 하겠습니다.

여기서는 우분투 저장소를 이용해 설치하는 방법을 소개하고자 합니다. 저의 서버 구축 관련 연재의 목적은 실제 서비스를 운영할 수 있을 정도의 본격적인 서버 구축 방법을 알려드리는 것이 아니라 리눅스 초심자 여러분들에게 서버 구축과 CMS 운영 과정을 개괄적으로 소개하는데 있습니다.

그럼 시작하겠습니다.

터미널 아이콘을 누르거나 단축키 Ctrl + Alt + T를 눌러 터미널을 실행시켜 업데이트와 업그레이드 명령을 입력합시다.

 


 

시스템 내 패키지 최신 버전으로 업그레이드 - 패키지 설치 전 필수 작업

study@study-VirtualBox:~$ sudo apt update

등록된 저장소 내 패키지 정보를 최신으로 업데이트해줍니다.

 

study@study-VirtualBox:~$ apt list --upgradable

업그레이드가 가능한 패키지 목록을 확인합니다.

 

study@study-VirtualBox:~$ sudo apt upgrade

최신으로 업데이트된 저장소 내 패키지 정보를 바탕으로 시스템에 설치된 패키지들을 최신으로 업그레이드해줍니다.

 

study@study-VirtualBox:~$ sudo apt autoremove

패키지 업그레이드를 마친 후 불필요해진 패키지를 자동으로 삭제해줍니다.

 

이글에서는 우분투의 apt 명령어를 사용해 패키지를 업그레이드하는 방법만 보였지만 어떤 리눅스 배포판을 사용하든 간에 새로운 패키지를 설치하기 전에 시스템 내의 패키지들을 전체적으로 업그레이드하여 최신으로 유지해주는 것이 좋습니다.

실제로 각종 패키지의 공식 설치 설명서에서도 최소한 (sudo) apt update와 (sudo) apt upgrade 이 두 명령어가 작업 순서의 맨 처음에 나오는 것을 볼 수 있습니다.

설사 따로 설명이 없더라도 위 작업은 수행되었음을 전제로 진행됩니다.

 

아파치 설치

$ apt info apache2

먼저 위 명령을 통해 우부투 저장소에서 제공하는 아파치 서버의 패키지 정보를 확인할 수 있습니다.

 

study@study-VirtualBox:~$ apt info apache2
Package: apache2
Version: 2.4.41-4ubuntu3.1
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 541 kB
Provides: httpd, httpd-cgi
Pre-Depends: dpkg (>= 1.17.14)
Depends: apache2-bin (= 2.4.41-4ubuntu3.1), apache2-data (= 2.4.41-4ubuntu3.1), apache2-utils (= 2.4.41-4ubuntu3.1), lsb-base, mime-support, perl:any, procps
Recommends: ssl-cert
Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser, ufw
Conflicts: apache2.2-bin, apache2.2-common
Breaks: libapache2-mod-proxy-uwsgi (<< 2.4.33)
Replaces: apache2.2-bin, apache2.2-common, libapache2-mod-proxy-uwsgi (<< 2.4.33)
Homepage: https://httpd.apache.org/
Task: lamp-server
Download-Size: 95.5 kB
APT-Sources: http://mirror.kakao.com/ubuntu focal-updates/main amd64 Packages
Description: Apache HTTP Server
 The Apache HTTP Server Project's goal is to build a secure, efficient and
 extensible HTTP server as standards-compliant open source software. The
 result has long been the number one web server on the Internet.
 .
 Installing this package results in a full installation, including the
 configuration files, init scripts and support scripts.

N: There is 1 additional record. Please use the '-a' switch to see it
study@study-VirtualBox:~$ 
마지막 줄에 위와 같이 추가 기록이 있다고 나오는 경우가 있습니다. 이런 경우는 활성화된 저장소들 중에 버전을 달리하는 동명의 패키지가 존재할 때입니다.

모든 패키지를 확인할 때는 동일한 명령에 -a 옵션을 붙여 실행해주시면 됩니다.

 

study@study-VirtualBox:~$ apt list --installed apache2
리스팅... 완료
study@study-VirtualBox:~$
시스템에 아파치 서버(apache2 패키지)가 이미 설치되어 있는지 확인할 수 있습니다.

설치되어 있지 않다면 위와 같이 리스팅 후 아무 것도 나오지 않을 것이고,

 

study@study-VirtualBox:~$ apt list --installed apache2
리스팅... 완료
apache2/focal-updates,focal-security,now 2.4.41-4ubuntu3.1 amd64 [설치됨]
N: There is 1 additional version. Please use the '-a' switch to see it
study@study-VirtualBox:~$

설치되어 있다면 위와 같이 설치된 버전이 표시될 것입니다.

 

study@study-VirtualBox:~$ sudo apt install apache2

활성화된 저장소에서 아파치 설치를 설치하는 명령어입니다. 외부 저장소를 따로 추가하여 활성화하지 않는다면 일반적으로 주 업데이트 저장소에서 내려받아 설치합니다.

study@study-VirtualBox:~$ sudo apt install apache2
[sudo] study의 암호: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  apache2-bin apache2-data apache2-utils libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0
제안하는 패키지:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom
다음 새 패키지를 설치할 것입니다:
  apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0
0개 업그레이드, 9개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
1,819 k바이트 아카이브를 받아야 합니다.
이 작업 후 7,935 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
받기:1 http://mirror.kakao.com/ubuntu focal/main amd64 libapr1 amd64 1.6.5-1ubuntu1 [91.4 kB]
받기:2 http://mirror.kakao.com/ubuntu focal/main amd64 libaprutil1 amd64 1.6.1-4ubuntu2 [84.7 kB]
받기:3 http://mirror.kakao.com/ubuntu focal/main amd64 libaprutil1-dbd-sqlite3 amd64 1.6.1-4ubuntu2 [10.5 kB]
받기:4 http://mirror.kakao.com/ubuntu focal/main amd64 libaprutil1-ldap amd64 1.6.1-4ubuntu2 [8,736 B]
받기:5 http://mirror.kakao.com/ubuntu focal/main amd64 liblua5.2-0 amd64 5.2.4-1.1build3 [106 kB]
받기:6 http://mirror.kakao.com/ubuntu focal-updates/main amd64 apache2-bin amd64 2.4.41-4ubuntu3.1 [1,180 kB]
받기:7 http://mirror.kakao.com/ubuntu focal-updates/main amd64 apache2-data all 2.4.41-4ubuntu3.1 [158 kB]
받기:8 http://mirror.kakao.com/ubuntu focal-updates/main amd64 apache2-utils amd64 2.4.41-4ubuntu3.1 [83.8 kB]
받기:9 http://mirror.kakao.com/ubuntu focal-updates/main amd64 apache2 amd64 2.4.41-4ubuntu3.1 [95.5 kB]
내려받기 1,819 k바이트, 소요시간 0초 (4,072 k바이트/초)
Selecting previously unselected package libapr1:amd64.
(데이터베이스 읽는중 ...현재 201873개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../0-libapr1_1.6.5-1ubuntu1_amd64.deb ...
Unpacking libapr1:amd64 (1.6.5-1ubuntu1) ...
Selecting previously unselected package libaprutil1:amd64.
Preparing to unpack .../1-libaprutil1_1.6.1-4ubuntu2_amd64.deb ...
Unpacking libaprutil1:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package libaprutil1-dbd-sqlite3:amd64.
Preparing to unpack .../2-libaprutil1-dbd-sqlite3_1.6.1-4ubuntu2_amd64.deb ...
Unpacking libaprutil1-dbd-sqlite3:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package libaprutil1-ldap:amd64.
Preparing to unpack .../3-libaprutil1-ldap_1.6.1-4ubuntu2_amd64.deb ...
Unpacking libaprutil1-ldap:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package liblua5.2-0:amd64.
Preparing to unpack .../4-liblua5.2-0_5.2.4-1.1build3_amd64.deb ...
Unpacking liblua5.2-0:amd64 (5.2.4-1.1build3) ...
Selecting previously unselected package apache2-bin.
Preparing to unpack .../5-apache2-bin_2.4.41-4ubuntu3.1_amd64.deb ...
Unpacking apache2-bin (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package apache2-data.
Preparing to unpack .../6-apache2-data_2.4.41-4ubuntu3.1_all.deb ...
Unpacking apache2-data (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package apache2-utils.
Preparing to unpack .../7-apache2-utils_2.4.41-4ubuntu3.1_amd64.deb ...
Unpacking apache2-utils (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package apache2.
Preparing to unpack .../8-apache2_2.4.41-4ubuntu3.1_amd64.deb ...
Unpacking apache2 (2.4.41-4ubuntu3.1) ...
libapr1:amd64 (1.6.5-1ubuntu1) 설정하는 중입니다 ...
liblua5.2-0:amd64 (5.2.4-1.1build3) 설정하는 중입니다 ...
apache2-data (2.4.41-4ubuntu3.1) 설정하는 중입니다 ...
libaprutil1:amd64 (1.6.1-4ubuntu2) 설정하는 중입니다 ...
libaprutil1-ldap:amd64 (1.6.1-4ubuntu2) 설정하는 중입니다 ...
libaprutil1-dbd-sqlite3:amd64 (1.6.1-4ubuntu2) 설정하는 중입니다 ...
apache2-utils (2.4.41-4ubuntu3.1) 설정하는 중입니다 ...
apache2-bin (2.4.41-4ubuntu3.1) 설정하는 중입니다 ...
apache2 (2.4.41-4ubuntu3.1) 설정하는 중입니다 ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enabling module status.
Enabling module reqtimeout.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /l
ib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.
service → /lib/systemd/system/apache-htcacheclean.service.
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.2) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
study@study-VirtualBox:~$ 

Apache2의 설치 과정은 위와 같습니다.

이 패키지 설치 과정 뿐만 아니라 제 블로그에 올라오는 대부분의 패키지 설치 과정을 가능하면 모두 게시하는데 이유는 터미널에 출력되는 작업 진행 과정이 해당 패키지를 관리할 때 필요한 각종 정보를 확인할 수 있기 때문입니다.

 

아파치 설치 직후 방화벽 설정

2020/09/22 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - APM 설치 후 방화벽 설정

2018/11/07 - [리눅스/Ubuntu] - 방화벽 설정 - ufw

2018/10/27 - [리눅스/리눅스 패키지] - 리눅스 필수 설치 패키지 - gufw

아파치 설치 후 방화벽 설정은 위 링크를 참고하시기 바랍니다.

 

 

아파치 구동 및 자동 구동 활성화 여부 확인

 

study@study-VirtualBox:~$ sudo systemctl is-active apache2
[sudo] study의 암호: 
active
study@study-VirtualBox:~$ 
해당 서비스가 현재 구동 중인지 확인하는 명령입니다.

 

study@study-VirtualBox:~$ sudo systemctl is-enabled apache2.service
enabled
study@study-VirtualBox:~$ 

해당 서비스가 시스템 부팅 시 자동 구동되는지 확인하는 명령어입니다.

 

시스템 부팅 시 아파치 자동 구동 활성화

 

study@study-VirtualBox:~$ sudo systemctl enabled apache2.service
일반적으로 apt install명령을 통해 저장소에서 Apache2 서버를 설치하는 경우 바로 자동 구동 및 시스템 부팅 시 자동 구동 활성화가 설정됩니다만 만약 자동으로 실행되지 않는 경우 위 명령을 실행하여 설정해줄 수 있습니다.
 

아파치 서비스 관리

아파치 상태 확인

 

study@study-VirtualBox:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-09-01 18:32:51 KST; 24min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 3536 (apache2)
      Tasks: 55 (limit: 4642)
     Memory: 5.6M
     CGroup: /system.slice/apache2.service
             ├─3536 /usr/sbin/apache2 -k start
             ├─3538 /usr/sbin/apache2 -k start
             └─3539 /usr/sbin/apache2 -k start

 9월 01 18:32:51 study-VirtualBox systemd[1]: Starting The Apache HTTP Server...
 9월 01 18:32:51 study-VirtualBox apachectl[3535]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to su>
 9월 01 18:32:51 study-VirtualBox systemd[1]: Started The Apache HTTP Server.
lines 1-15/15 (END)
 

아파치 서버 관리

아파치 서버 시작
study@study-VirtualBox:~$ sudo systemctl start apache2.service

 

아파치 서버 중지

study@study-VirtualBox:~$ sudo systemctl stop apache2.service

 

아파치 서버 재시작

study@study-VirtualBox:~$ sudo systemctl restart apache2.service

 

아파치 서버 설정 다시 읽기

study@study-VirtualBox:~$ sudo systemctl reload apache2.service

 

아파치 상태 확인

study@study-VirtualBox:~$ sudo systemctl status apache2.service

 

study@study-VirtualBox:~$ sudo systemctl status apache2.service
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Sun 2021-04-18 11:24:23 KST; 33s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 4412 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SU>
   Main PID: 4416 (apache2)
      Tasks: 55 (limit: 3506)
     Memory: 4.9M
     CGroup: /system.slice/apache2.service
             ├─4416 /usr/sbin/apache2 -k start
             ├─4417 /usr/sbin/apache2 -k start
             └─4418 /usr/sbin/apache2 -k start

 4월 18 11:24:23 study-VirtualBox systemd[1]: Starting The Apache HTTP Server...
 4월 18 11:24:23 study-VirtualBox apachectl[4415]: AH00558: apache2: Could not >
 4월 18 11:24:23 study-VirtualBox systemd[1]: Started The Apache HTTP Server.
lines 1-16/16 (END)

 

 

서버 IP 주소 확인

study@study-VirtualBox:~$ hostname -i
127.0.1.1
study@study-VirtualBox:~$ 

 

study@study-VirtualBox:~$ ip a

 

study@study-VirtualBox:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 85356sec preferred_lft 85356sec
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
study@study-VirtualBox:~$

 

터미널을 통한 Apache2 서버 구동 테스트

 

study@study-VirtualBox:~$ curl -I http://127.0.0.1
HTTP/1.1 200 OK
Date: Mon, 07 Sep 2020 06:54:17 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Wed, 02 Sep 2020 02:30:30 GMT
ETag: "4자리 영숫자-13자리 영숫자"
Accept-Ranges: bytes
Content-Length: 10918
Vary: Accept-Encoding
Content-Type: text/html

study@study-VirtualBox:~$ 

위 명령을 이용해 헤당 주소가 정상적으로 작동하는지 확인할 수 있습니다.

curl 명령에 사용된 -I(대문자) 옵션은 HTTP Header 정보를 출력할 때 사용합니다.

curl 패키지는 굉장히 유용하게 쓰이는 패키지이지만 기본 설치되어 있지 않아 아래처럼 사용자가 따로 설치해주어야 합니다.

 

study@study-VirtualBox:~$ study@study-VirtualBox:~$ sudo apt install curl
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  curl
0개 업그레이드, 1개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
161 k바이트 아카이브를 받아야 합니다.
이 작업 후 411 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://mirror.kakao.com/ubuntu focal-updates/main amd64 curl amd64 7.68.0-1ubuntu2.2 [161 kB]
내려받기 161 k바이트, 소요시간 0초 (1,606 k바이트/초)
Selecting previously unselected package curl.
(데이터베이스 읽는중 ...현재 203553개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../curl_7.68.0-1ubuntu2.2_amd64.deb ...
Unpacking curl (7.68.0-1ubuntu2.2) ...
curl (7.68.0-1ubuntu2.2) 설정하는 중입니다 ...
Processing triggers for man-db (2.9.1-1) ...
study@study-VirtualBox:~$ 

 

웹브라우저를 통한 Apache2 서버 구동 테스트

브라우저의 주소창에 localhost나 127.0.0.1을 입력하면 위와 같이 index.html 페이지가 표시될 것입니다. 만약 이 페이지가 표시되지 않는다면 뭔가 문제가 생긴 것입니다.

참고로 위 화면에 나온 트리구조는 Apache2의 설치 디렉토리와 그 하위 구조를 알려주는 내용입니다.

참고로 이 Apache2 서버가 설치가 되면 /var/www/html 디렉토리가 생성되고 html 디렉토리 안에 위 Apache2 Ubuntu Default Page 화면을 띄워주는 index.html 문서가 생성됩니다.

웹사이트를 제작하는 경우 보통 이 파일을 제거하는데요. 그 이유는 특정 페이지 지정 없이 웹사이트의 기본 도메인 주소로 접속하면 자동으로 index 페이지로 연결되기 때문입니다. 즉 일반적으로 index 페이지가 해당 사이트의 홈페이지가 됩니다.

자신만의 웹사이트를 제작하는데 위 그림과 같은 화면을 보여줄 수는  없는 노릇이므로 이 파일을 제거하고 새로운 index파일을 구성하게 됩니다.

제거 명령은 다음과 같습니다.

study@study-VirtualBox:/var/www/html$ sudo rm index.html

 

 


 

 

Ubuntu 20.04에서 Apache2 설치 시 기본값 정보

아래는 우분투 20.04의 주 업데이트 저장소에서 Apache2를 설치하는 경우 각종 기본 설정값입니다.

Apache2 버전 정보

study@study-VirtualBox:~$ apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-08-12T19:46:17
study@study-VirtualBox:~

여기에 쓰인 옵션은 소문자 v입니다.

-v(소문자)와 -V(대문자)의 쓰임은 명백히 다릅니다.

-v                 : 버전 숫자 표시

-V                 : 컴파일 설정 표시

 

-v/-V 뿐만 아니라 다른 영문자 옵션도 각기 다른 기능을 갖고 있으므로 주의해서 사용해야 합니다.

이에 대한 자새한 정보는 아래를 참고하시기 바랍니다.

study@study-VirtualBox:~$ apache2 -h
Usage: apache2 [-D name] [-d directory] [-f file]
               [-C "directive"] [-c "directive"]
               [-k start|restart|graceful|graceful-stop|stop]
               [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
  -D name            : define a name for use in <IfDefine name> directives
  -d directory       : specify an alternate initial ServerRoot
  -f file            : specify an alternate ServerConfigFile
  -C "directive"     : process directive before reading config files
  -c "directive"     : process directive after reading config files
  -e level           : show startup errors of level (see LogLevel)
  -E file            : log startup errors to file
  -v                 : show version number
  -V                 : show compile settings
  -h                 : list available command line options (this page)
  -l                 : list compiled in modules
  -L                 : list available configuration directives
  -t -D DUMP_VHOSTS  : show parsed vhost settings
  -t -D DUMP_RUN_CFG : show parsed run settings
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
  -t -D DUMP_MODULES : show all loaded modules 
  -M                 : a synonym for -t -D DUMP_MODULES
  -t -D DUMP_INCLUDES: show all included configuration files
  -t                 : run syntax check for config files
  -T                 : start without DocumentRoot(s) check
  -X                 : debug mode (only one worker, do not detach)
study@study-VirtualBox:~$ 

 

 

Apache2 컴파일 설정 정보

study@study-VirtualBox:~$ apache2 -V
[Fri Sep 11 11:50:30.319425 2020] [core:warn] [pid 2880] AH00111: Config variable $ is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-08-12T19:46:17
Server's Module Magic Number: 20120211:88
Server loaded:  APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"
study@study-VirtualBox:~$ 

 

컴파일된 모듈 정보

study@study-VirtualBox:~$ apache2 -l
Compiled in modules:
  core.c
  mod_so.c
  mod_watchdog.c
  http_core.c
  mod_log_config.c
  mod_logio.c
  mod_version.c
  mod_unixd.c
study@study-VirtualBox:~$