[우분투 18.04 데스크톱] LAMP : 아파치(Apache) 설치과정 정리

국내 블로그 글들 중에서 웹서버 세팅에 대해 가장 자세한 설명이 담긴 문서는 라엘님의 블로그 글이라고 생각합니다.
https://blog.lael.be
▲ 우분투 웹서버세팅 – 블라블라 형식의 글을 참고하시면 됩니다.

위에 팁이 될만한 노하우가 많이 녹아있긴 한데, 제 입장에서 어려운(+설치할 이유를 잘 모르겠는) 항목들은 거둬내고 서브도메인/멀티도메인에 대한 부분들은 추가하여 홈서버에서 다수의 홈페이지를 운영할 수 있게끔 세팅하는 것을 목표로 정리해 보겠습니다.

공식 문서를 참고하면서 오류를 줄이긴 할텐데, 저도 이번 기회에 체계를 잡는 거라 부족할 점이 많을 겁니다. 추가해야 되는 사항들을 댓글로 알려주시면 본문에 반영하도록 할게요.

 

– 아파치/엔진엑스 중 Apache를 선택한 이유 : 다소 느리더라도 옵션 설정이 (상대적으로) 쉽고 다양해서.
– 우분투 서버버전 설치하면 LAMP 구축이 되어 있는데, 여기에 GUI를 설치하는 식으로 진행하면 안되나? : 우분투 데스크톱 버전에 Apache PHP MySQL을 덧대는 식으로 진행하면 막히는 부분을 인터넷으로 찾아보면서 할 수 있습니다. GUI에 익숙한 일반인이라 CLI 기반의 서버 버전은 막막하네요.ㅠ

 

시작하겠습니다.

 

 

1. 운영체제 구성요소(패키지)를 최신 상태로 업그레이드

터미널 창을 띄우고(Ctrl+Alt+T), sudo apt-get update 와 sudo apt-get upgrade 를 차례로 입력합니다.

 

▲ sudo apt-get update && sudo apt-get upgrade -y
이렇게 입력하면 자동 진행할 수 있습니다. 도중에 y키를 누르지 않아도 돼요.

 

 

2. (옵션) 지역/시간을 Asia/Seoul로 설정

우분투 설치 당시에 Asia/Seoul 로 설정했다면 이 작업을 하지 않아도 됩니다. 하지만 언어를 영어로 세팅하다가 지역을 다르게 고른 적이 있다면 서버 시간을 한국으로 바로잡을 필요가 있습니다. GUI로 처리하셔도 되는데, 저는 CLI로 처리했습니다.

 

▲ 터미널 창(Ctrl+Alt+T)에서 sudo dpkg-reconfigure tzdata 라고 치면…

 

▲ 이런 식으로 대화창이 뜹니다. Asia, Seoul을 차례로 골라 Enter키를 누르면 처리가 끝나면서 KST타임과 UTC타임을 함께 뿌려줍니다.

 

 

3. (옵션) Apache PPA 추가

우분투의 꽃 : PPA. 우분투 16.04에서 아파치 PPA 추가하고 써왔는데 별 탈 없더군요. 그래서 18.04에서도 Apache PPA 추가하는 것을 추천합니다.

터미널 창(Ctrl+Alt+T)에서 아래의 명령어를 입력하면 됩니다.

 

▲ sudo add-apt-repository ppa:ondrej/apache2
PPA 추가 후에는 sudo apt-get update 입력해서 패키지 목록 갱신해 주시고요.
(출처 : https://launchpad.net/~ondrej/+archive/ubuntu/apache2 )

 

PPA 추가 과정은 이것으로 끝.

 

▲ 참고로 “소프트웨어&업데이트” 메뉴의 “기타 소프트웨어” 탭을 보면 추가한 PPA들을 확인할 수 있습니다. 제거도 가능하고요.

 

▲ /etc/apt/sources.list.d/ 경로에 가도 대략적으로 파악 가능한데, 터미널 창에서 위 스샷처럼 쳐도 추가한 PPA 주소들을 파악할 수 있습니다(귀찮습니다.)

 

아무튼, 터미널 창(Ctrl+Alt+T)에서 Apache PPA를 제거하길 원하면 아래의 명령어를 입력하면 됩니다.

 

▲ sudo add-apt-repository –remove ppa:ondrej/apache2

(파일관리자로 살펴보니 찌꺼기는 조금 남는 것 같습니다.;;;)

 

다른 삭제 방법이나 자세한 내용을 원하시는 분들은 아래 링크를 참고하세요.
https://askubuntu.com/questions/307/how-can-ppas-be-removed

 

 

4. Apache2 설치

우리는 apt 패키지 저장소에서 apache2 라는 패키지를 설치할 건데요, 해당 패키지 버전을 확인하면 안심이 되겠죠.

터미널 창(Ctrl+Alt+T)에서 아래의 명령어를 입력하세요.

 

▲ apt-cache policy apache2

설치(Installed)된 것은 없는 게 맞겠고, “후보(Candidate)”에 나오는 최신 버전이 패키지 설치 명령을 치면 자동으로 설치될 겁니다. 만약 “버전 테이블”에 있는 특정 버전을 지정하고 싶다면 아래 링크의 내용을 참고하면 될 듯하고요,

https://serverfault.com/questions/544779/how-can-i-install-apache-with-a-specific-version

 

이제 터미널 창(Ctrl+Alt+T)에서 아래의 명령어를 입력하여 아파치 패키지를 설치합시다.

 

▲ sudo apt-get install apache2
(y 를 눌러 계속 진행해야겠죠.)

 

▲ 설치 절차가 끝나면 위 스샷의 명령어들 중 아무거나 입력하여 원하는 버전이 잘 설치됐는지 확인합니다.

 

▲ 그리고 sudo service –status-all (또는 sudo service –status-all | grep + )이라고 쳐보면 apache2 서비스가 실행되고 있음(+표시)을 확인할 수 있습니다. 환경설정 아직 안했는데.;;;

 

▲ sudo netstat -atlpvn 라고 쳐보니까 정상적으로 80번 포트가 apache2에 의해 열려 있네요.

(만약 netstat 명령어를 쓸 수 없다면 sudo apt-get install net-tools 이라고 입력해서 net-tools 패키지를 설치해 주세요.)

 

라엘 님 블로그에 나온 보안 설정 추가(옵션)

   – /etc/apache2/conf-available/charset.conf 파일에서 AddDefaultCharset UTF-8 의 주석(#) 해제.
     (이 옵션을 활성화하지 않더라도 워드프레스는 UTF-8로 돌아가게 구축할 겁니다.)

   – /etc/apache2/conf-available/security.conf 파일에서
      <Directory /> 부분 주석(#) 해제,
      ServerTokens OS 에서 Prod 로 수정,
      ServerSignature On 에서 Off 로 수정, TraceEnable Off 확인,
      Header set X-Content-Type-Options: “nosniff” 주석 해제,
      Header set X-Frame-Options: “sameorigin” 주석 해제.

 

 

5. 아파치 접속 테스트

우분투 데스크톱 내장 웹브라우저(또는 본인이 설치한 웹브라우저)를 띄우고, 주소창에 http://localhost 라고 입력해 봅니다(localhost나 127.0.0.1 은 본인 PC를 가리키는 주소로, 인터넷/공유기 연결망을 거치지 않습니다.).

 

▲ index.html 파일(아파치 기본 내장. /var/www/html/ 에 있음.)이 잘 불러지면 테스트 성공.

 

다음은 요청신호가 외부망(인터넷 선)으로 돌아서 들어오더라도 접속이 되는지를 테스트할 차례입니다(일반적인 웹 접속 테스트).

 

유동IP 하에서 공유기를 쓰고 있다면 ①홈서버 PC의 DHCP 주소를 고정, ②공유기 포트포워딩/포트트리거링 기능을 통해 공유기 방화벽의 80포트를 열면서 홈서버 PC로 신호를 전달하도록 설정, ③DDNS 기능으로 유동IP를 고정된 주소로 설정한 뒤, 웹브라우저에서 DDNS 주소로 접근해 봅니다.

 

※ 감 잡기용 참고 링크

Dlink 디링크 DIR-615 공유기 포트포워딩(가상서버) 설정 방법
Dlink 디링크 DIR-615 공유기 DDNS 설정 방법
DuckDNS(무료 DDNS) 가입, 설정, 공유기 세팅(Padavan 펌웨어)

나의 외부망 IP와 열린 포트는?

 

고정IP를 쓰고 있다면 웹브라우저 주소창에 IP를 바로 넣어보면 됩니다.

 

▲ 이렇게 index.html 파일(아파치 내장)이 잘 불러지면 테스트 성공.

(저는 테스트용 도메인 1달러 주고 사서 DDNS주소를 연결했기 때문에 www.jimnongtest1.top 이라고 뜬 거예요.)

 

※ 참고 링크

저렴한 도메인 : NameSilo 회원 가입, 도메인 구입 방법(1달러 할인 쿠폰)
도메인에 DDNS주소 연결하기, 이메일 포워딩 설정하기

※ index.html 내용을 보면 파악할 수 있는 것들 : (기본) 웹문서 저장경로는 /var/www/html/ 이고, 설명서는 /usr/share/doc/apache2/README.Debian.gz 에 있음. /etc/apache2/ 경로에 설청파일들이 있음. 이외에도 도움이 될만한 내용들이 많으니까 (설명서 포함해서) 정독을 권합니다(사실은 저도 아직 못 했습니다.ㅠ).

 

검증 과정을 추가하다 보니 글이 늘어지네요. 부득이하게 글을 나눠야 하겠습니다.
다음 글에서는 추가 세팅과 홈서버 한 대에서 여러 웹페이지를 굴릴 수 있게 해주는 VirtualHost에 대해 다루겠습니다.

 

※ 2018. 06. 14. 추가

홈서버에서 사이트 하나만 굴릴 거면 index.html이 있던 경로(/var/www/html/)에 HTML 파일들을 넣고 그대로 쓰면 됩니다. 그런데 막상 index.html 파일을 교체하려고 시도하면 실패할 수 있습니다.

 

▲ /var/www/ 하위의 html 디렉토리의 소유자(붉은 선)|소유그룹(노란 선)이 각각 root로 설정되어 있기 때문입니다. 파일관리자 프로그램은 현재 로그인한 계정의 권한으로 실행되고 있으니까 안되는 게 당연하겠죠?

 

① 터미널 창(Ctrl+Alt+T)에서 sudo nautilus 라고 쳐서 파일관리자를 루트 권한으로 실행한 다음 index.html을 교체하거나, ② html 디렉토리를 로그인한 계정&그룹 소유로 바꿔버리고 평소처럼 로그인한 계정으로 html 디렉토리를 관리하는 식으로 대응하면 될텐데, 저는 후자의 방법이 편하더군요.

 

그래서 위 스샷에 나온 것처럼 터미널 창(Ctrl+Alt+T)에서
sudo chown 소유자:소유그룹 /var/www/html/
이라고 입력하여 후자의 방법을 구현했습니다.

 

▲ 마우스 우클릭 시 삭제/이름 바꾸기 등이 활성화된 것을 보면 잘 처치된 것 같습니다.

 

▲ 만약 터미널 창에서 명령어로 소유자/그룹을 바꾸는 게 어렵게 느껴진다면 파일관리자(ex: nautilus. MATE 인터페이스에서는 caja, XFCE 인터페이스에서는 thunar)를 루트권한으로 실행시킨 다음 /var/www/html/ 디렉토리를 마우스 우클릭 → 속성 항목 “권한” 탭에 들어가서 소유자/그룹을 바꿔도 됩니다.

 

※ 참고 링크

 – 우분투 리눅스 듀얼부팅 설치방법 정리(윈도우10 기준)

 – [우분투 18.04 데스크톱] LAMP : 아파치(Apache) VirtualHost로 멀티도메인(서브도메인)을 한 서버에 연결
 – [우분투 18.04 데스크톱] LAMP : Let’s Encrypt SSL 인증서 수동 발급과 아파치(Apache)에 적용하기
 – [우분투 18.04 데스크톱] LAMP : PHP 7.2 설치과정 정리
 – [우분투 18.04 데스크톱] LAMP : MariaDB 설치과정 정리(MySQL 대신)
 – [우분투 18.04 데스크톱] LAMP : phpMyAdmin 설치과정 정리(MariaDB 기반)
 – [우분투 18.04 데스크톱] LAMP : 워드프레스 설치 과정 정리
 – [우분투 18.04 데스크톱] LAMP : 아파치(Apache)에 ModSecurity 설치 과정 정리
 – [우분투 18.04 데스크톱] LAMP : 아파치(Apache), PHP, MariaDB 삭제(제거)
 – [우분투 18.04 데스크톱] SSH 터미널로 워드프레스 백업/복원하기
 – 우분투 18.04 데스크톱] UFW 방화벽을 서비스 기반으로 설정해볼까?

 

  (▼ 아파치 설치 전에…)

 – [우분투,리눅스] 무료 DDNS – 홈서버에 DuckDNS를 설치해보자(공유기 DDNS 탈출하기)
 – 저렴한 도메인 : NameSilo 회원 가입, 도메인 구입 방법(1달러 할인 쿠폰)
 – 도메인에 DDNS주소 연결하기, 이메일 포워딩 설정하기
 – [우분투 16.04] 깡통계정 생성(로그인 불가능+홈디렉토리 없음)(vsftpd 연결용)
 – [우분투 16.04] VSFTPD 설정파일 매뉴얼 한글번역(with 구글)
 – [우분투 16.04] vsftpd로 패시브모드 FTPS(FTPES) 서버 구축 – 1
 – [우분투 16.04] vsftpd에서 root 접속시 530 Login incorrect 에러(접속불가) 해결방법
 – [우분투 16.04] vsftpd로 패시브모드 FTPS(FTPES) 서버 구축 – 2
 – [우분투 16.04] vsftpd로 패시브모드 FTPS(FTPES) 서버 구축 – 3

 

 – [윈도우10 64bit] APM Apache 2.4 아파치 설치과정 정리(웹서버 구축)
 – [우분투 18.04 데스크톱] LEMP : 엔진엑스(Nginx) 설치과정 정리

CC BY-NC-ND 4.0