국내 블로그 글들 중에서 웹서버 세팅에 대해 가장 자세한 설명이 담긴 문서는 라엘님의 블로그 글이라고 생각합니다.

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

▲ 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)에서 아래의 명령어를 입력하면 됩니다.


우분투 아파치 apache ppa 주소

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

PPA 추가 후에는 sudo apt-get update 입력해서 패키지 목록 갱신해 주시고요.

(출처 : https://launchpad.net/~ondrej/+archive/ubuntu/apache2 )


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


우분투 ppa 삭제

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


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


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


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

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


다른 삭제 방법이나 자세한 내용을 원하시는 분들은 아래 링크를 참고하세요.

http://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) 설치과정 정리

반응형