작성일 댓글 남기기

자작NAS – Apache HTTP Server (Apache 2) 설치

아파치 서버는 다음 명령어로 설치가 끝납니다.

sudo apt-get install apache2
apache-install-1
명령어를 입력하고 암호를 입력합니다.
apache-install-2
설치할 내용에 대해 브리핑을 해줍니다. 의존성과 관련된 패키지들로 함께 설치한다고 알려줍니다. Y를 입력합니다.

apache-install-3

간단하게 Apache HTTP Server 설치를 마쳤습니다.

작성일 댓글 4개

자작NAS – Web Server와 APM

1. 웹서버는 왜 필요한가?

Dropbox나 Google Drive 등과 같은 서비스는 웹서버 위에서 동작하는 애플리케이션입니다. 마찬가지로 이 블로그(WordPress) 또한 웹서버(Web Server) 위에서 돌아가는 일종의 애플리케이션입니다. 웹브라우저로 접속하여 할 수 있는 것들은 모두 웹서버 위에서 동작한다고 보면 됩니다.

홈페이지를 운영하고 싶다. 설치형 블로그를 하고 싶다. 등. 웹브라우저에서 동작하는 무언가를 구축하고 싶다? 그렇다면 웹서버는 반드시 필요합니다.

나무위키는 “서버에 접속한 사용자에게 웹 서비스를 제공하기 위하여 사용되는 서버의 한 종류”라고 설명합니다.

2. 웹서버의 종류

  • 아파치 HTTP 서버 – 아파치 소프트웨어 재단 개발
  • Nginx – 최근 주목받는 웹 서버
  • node.js – 자바스크립트 플랫폼, 자체 웹 서버 내장
  • 인터넷 정보 서비스(IIS) – 마이크로소프트 개발

3. 가장 대중적인 웹 서버 구성, APM

가장 대중적인 웹서버는 Apache입니다. 풀네임은 Apache HTTP Server라고 합니다. 사실 Apache 서버만 설치하면 웹 서버는 구축됩니다. 하지만 웹 서비스를 제공하는 여러 애플리케이션들은 대부분 PHP 언어로 만들어진 애플리케이션입니다. 또한 많은 경우 MySQL/MariaDB를 사용하여 데이터를 관리합니다.

그러므로 Apache HTTP Server, PHP, MySQL(혹은 MariaDB)을 설치해야 기본적인 웹 서버를 구축했다고 할 수 있습니다. 이 세 가지를 줄여서 APM이라고 합니다.

이 세 가지를 순서대로 하나씩 설치할 것입니다.

작성일 댓글 5개

우분투 자작 NAS – 13강, SSL 인증서와 HTTPS 접속

이런 저런 이유로 포스팅을 한동안 할 수 없었다.

13강에서는 원래 하려고 했던게 아니라 HTTPS 보안 연결에 대해서 포스팅 해본다. 사실 작년에 StartSSL로 HTTPS 연결을 시도하다가 인증서를 날려먹어 접어두었었다. 그러다가 갑자기 생각이 나서 다시 시도하게 되었다.

HTTPS 연결의 필요성

한국의 웹 환경을 생각해보자. 보안이 필요하다 싶은 곳은 전부다 액티브X로 도배가 되어있다. 요즘은 액티브X를 없앤다고 하는데 액티브X를 사용하지는 않지만 똑같은 프로그램을 액티브X가 아닌 다른 방식으로 설치하는 식이다. 결국 똑같다. 해외의 웹 환경을 경험해보면 좋은 비교가 된다. 해외 직구를 위해 결제라도 하나 해보게 되면, 너무 확연하게 차이가 남을 즉시 느낄 수 있을 것이다. 보안 프로그램 설치? 없다. HTTPS 보안 연결 하나로 끝이다. 개인 웹서버에 HTTPS 연결을 설정한다면 그와 비슷한 수준의 보안이 보장될 수 있다.

개인 웹서버에 HTTPS 연결이 무슨 필요나 할 수도 있겠지만, ownCloud에서는 HTTPS 연결을 권장하고 있다. 비교적 털릴 것이 없는 보통 사람이라고 해서 보안에 신경쓰지 않아도 되는 것은 아니다. HTTPS에 대한 복잡한 논의들이 있지만, 일단 보안에 굉장히 취약한 자작 NAS를 위해 HTTPS 연결을 설정해보자.

무료 SSL 인증서

무료로 SSL 인증서를 발급해 주는 곳은 몇 군데 있다. StartSSL, WoSign, Let’s Encrypt 등. 나는 세 군데 모두에서 SSL 인증서를 발급받아 보았다. 각기 장단점이 있는데 간략하게 적어본다.

StartSSL

  • 인증서 기간은 1년이다. 1년마다 재발급.
  • 무료로 발급해 주기는 하지만 관리할 때에는 유료다.
  • 분실했을 때 재발급은 유료다.
  • 그래서 작년에 한번 분실하고서는 쓸 수가 없었다.
  • 더 잘 찾아보지 않아서 그럴수도 있는데, 그 이후로는 쓸 수가 없게 되었다.

WoSign

  • 인증서 기간을 1~3년까지 지정할 수 있다.
  • 중국 쪽 업체라 그런지 대인배 마인드로 무료 지원이 굉장히 넓다.
  • 몇몇 브라우저에서 인증서를 신뢰할 수 없다고 뜬다.
  • 특히 모바일에서는 대부분 인증서를 신뢰할 수 없다고 뜬다. 이게 가장 치명적인 단점이다.

Let’s Encrypt

  • 인증서 기간은 90일이다. 연장하는 방법은 간단하다.
  • 얼마전까지는 비공개로 초대장이 있어야 사용할 수 있었는데 지금(2016년 3월 중순 기준)은 퍼블릭 베타이다.
  • 웹사이트에서 인증서를 받는 StartSSL이나 WoSign과는 달리 콘솔로 서버에 접속해서 받아야 한다. 해서 웹서버를 임대했거나 웹서버를 구축하지 않았다면 사용할 수 없다.

그래서 선택은 Let’s Encrypt다. 이 사이트에 대한 더 자세한 정보를 소개한다.

Let’s Encrypt

Lets’ Encrypt는 HTTPS를 사용하기 위해 SSL을 구매해야 하는 부분이 HTTPS 보급에 방해된다고 생각해서 SSL을 무료로 제공해서 HTTPS를 보급하기 위해 작년 말에 만들어졌다. 초기에는 Mozilla, Cisco, Akamai, EFF, id entrust 등이 모여서 ISRG(Internet Security Research Group)라는 새로운 SSL 인증기관을 만들어서 올해 SSL을 무료로 제공하겠다고 발표했다. 지금은 이 Lets’ Encrypt에 Facebook, 워드프레스를 만드는 Automattic, shopify 등 많은 회사가 스폰서로 참여하고 있다.

출처: Let’s Encrypt로 무료로 HTTPS 지원하기

Let’s Encrypt를 이용해 HTTPS 설정하기

우리가 지금까지 구축한 서버의 환경은 운영체제가 Ubuntu Server 14.04 LTS 이고, 웹 서버는 Apache2 를 이용하고 있다. 같은 환경이 아니면 설치 방법이 달라질 수 있으니 유의해야 한다. 설치과정은 Let’s Encrypt 사이트의 Getting Started 문서를 따라 진행된다.

서버에 Let’s Encrypt 설치

먼저 git 패키지를 설치한다. 설치되어 있지 않으면 GitHub에서 소스를 내려받을 수 없다.

~$ sudo apt-get install git

콘솔을 이용하여 서버에 SSH로 접속을 한 후 다음 명령어를 순서대로 입력한다.

~$ git clone https://github.com/letsencrypt/letsencrypt
~$ cd letsencrypt
~$ ./letsencrypt-auto --help

한줄 한줄 순서대로 설명을 하면,
1) GitHub에 있는 Let’s Encrypt 소스를 내려받고, (letsencrypt 디렉토리에 내려받는다)
2) letsencrypt 디렉토리에 들어가서,
3) letsencrypt-auto 를 실행한다.

세 번째 줄을 입력하게 되면, 알아서 의존성 관련 패키지들을 다운받고 설치한다. 꽤 많다.
여기까지 왔으면 거의 다 했다.

인증서 받고 적용하기

이제 다음 명령을 사용하면 끝이다(?).

~$ ./letsencrypt-auto

자신이 설정한 가상호스트에 따라서 목록은 많을 수도 있고 적을 수도 있다. HTTPS를 설정하고자 하는 도메인을 체크한 후, OK를 누른다.

letsencrypt_01

이메일을 입력하라는 창이 뜨는데 이메일을 잘 기입한다. 마지막으로는 Easy와 Secure가 뜰 것이다.

Easy는 HTTP와 HTTPS 연결 모두를 허용하는 것이고,
Secure는 HTTPS 연결만 되도록 하는 것인데, 상황에 따라 결정하면 될 것이다.
나는 후자를 선택했다.

일단은 이게 끝이다. 간단해서 좋다.
만약 가상호스트 설정에서 HTTPS 연결을 위한 설정을 해놨다면 알아서 수정을 해놨을 것이다.
이전에 설정해 놓지 않았다면, /etc/apache2/sites-available 디렉토리에 들어가서 파일 목록을 확인해 보라.

가상호스트 파일의 이름이 owncloud.conf 인 경우, owncloud-le-ssl.conf 가 새로 생겼을 것이다. 알아서 HTTPS 연결을 위한 설정 파일을 생성해 준다. (새로 생성한 파일 끝에는 -le-ssl가 붙는다)

그래서 끝이다.

덧글, 2016년 3월 16일 기준으로 이 블로그에도 HTTPS 보안 연결이 설정 되었다.

작성일 댓글 남기기

우분투 자작 NAS – 6강, Apache2 기본 디렉토리 변경

지난 시간에는 웹서버 운영을 위해 필수적인 APM을 설치했다. 그중에서도 가장 기본적이고 필수적인 것은 아파치(Apache) 서버다. 아파치 서버가 있어야 웹페이지를 보여줄 수 있다.

Apache2 기본 디렉토리?

이 블로그에 연결된 xianchoi.kr 도메인의 기본 접속 주소인 xianchoi.kr과 www.xianchoi.kr에 접속하면 “Hello, World!” 라는 글자만 써있다. 아파치 기본 디렉토리에 “Hello, World!”가 쓰여진 index.php 밖에 없기 때문이다. 이렇듯 아파치 기본 디렉토리는 최상위 도메인과 www 서브도메인과 연결된다.

아파치를 설치하게 되면 기본적으로 설정되는 디렉토리는 다음과 같다.

/var/www/html/

이제 이 디렉토리를 변경할 것이다. 변경하지 않아도 된다! 그러나 관리의 편리함을 위하여 사용자 홈 디렉토리 밑으로 이동시킬 것이다. NAS에서 중요한 건 파일 관리니까 말이다.

수정해야할 파일은 다음과 같다.

/etc/apache2/apache2.conf
/etc/apache2/sites-available/000-default.conf

기본 디렉토리 변경하기

변경할 디렉토리 생성

나의 경우는 웹서버 관리를 편하게 하고자 다음과 같은 경로로 했다.

/home/사용자이름/apm(임의로 지은 이름)/www

그리고 앞으로 설치할 ownCloud며 WordPress며 모두 apm디렉토리 밑에 두었다.
/apm/owncloud  나 /apm/wordpress 같이 말이다.

이 부분은 각 프로그램을 설치하면서 다시 이야기할 부분이다.

변경할 디렉토리를 만들어준다.

mkdir /home/사용자이름/apm
mkdir /home/사용자이름/apm/www

apache2.conf 수정

이제 apache2.conf를 수정한다.

sudo vi /etc/apache2/apache2.conf

페이지 다운으로 넘어가다 보면 다음과 같은 부분이 나온다.

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

/var/www/html  이 부분을 원하는 경로로 수정한다.

<Directory /home/사용자이름/apm/www>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

000-default.conf 수정

이제 다음 파일을 수정한다.

sudo vi /etc/apache2/sites-available/000-default.conf

ServerAdmin에 관리자 이메일을 쓰고
DocumentRoot에 apache2.conf에서 수정한 경로를 쓴다.
도메인을 연결해야 하니 다음을 추가한다.

ServerName 도메인주소
ServerAlias 도메인주소

그러면 다음과 같이 된다.

ServerName 도메인주소
ServerAlias 도메인주소

ServerAdmin 이메일주소
DocumentRoot /home/사용자이름/apm/www

이제 재시작해준다(다음 부분까지 작업한다면 지금 재시작 할 필요는 없다).

sudo service apache2 restart

디렉토리 변경 후 문제

아파치 기본 디렉토리를 사용자 홈 디렉토리로 옮겼다. 여기서 문제가 발생한다.

권한 문제가 발생하게 되는데, 웹에서 접근하려면 권한이 필요한데 사용자 홈 디렉토리는 사용자 본인이 아닌 제삼자가 아무렇게나 접근할 수 없기 때문이다.

문제 해결

디렉토리 소유자와 소유그룹 변경

소유자와 소유그룹을 www-data로 변경해야 웹에서 누구나 접근할 수 있다.

sudo chown -R www-data:www-data /home/사용자이름/apm/www

디렉토리 권한 변경

그런데 이렇게 소유자와 소유그룹을 변경하게되면 사용자계정에 권한이 없어지기 때문에 파일과 폴더를 수정할 수 없게 된다. 그래서 ftp로 접속했을 때나 삼바로 접속했을 때 수정이 불가능하다.

이를 해결하기 위해 사용자 계정을 www-data 그룹에 추가하고, 해당 디렉토리의 쓰기 권한을 그룹에도 허용해준다.

sudo usermod -a -G www-data 사용자이름
sudo chmod -R 775 /home/사용자이름/apm/www

이제 아파치 서버를 재시작 해준다.

sudo service apache2 restart

아파치서버 동작 확인

기본 디렉토리가 제대로 변경되었는지 확인해보자.
변경한 디렉토리 안에 index.php를 생성할 것이다.

sudo vi /home/사용자이름/apm/www/index.php

다음 내용을 입력한 후 저장한다.

<?php
    phpinfo();
?>

웹브라우저를 열어 도메인주소 혹은 내부 IP 주소를 입력하여 확인해 본다.
다음과 같이 PHP 정보가 뜨면 제대로 변경된 것이다.

phpinfo