이 글은 웹 서버 소프트웨어를 설치만 합니다.

TL;DR

이번 글은 어떻게 Ubuntu를 웹 서버로 변장시키는 방법에 대해서 서술합니다. 일종의 메모 글이기도 하지만요. 나중에 어떻게라도 도움이 되리라 합니다. 그리고 글 작성이나 업데이트 시점을 확인해주세요. 또한 문제 발생 시 댓글로 알려주세요. 새로운 글로 대체되거나 글이 업데이트될 수 있게 합니다. 다음은 설치 환경입니다:

  • Vultr Tokyo – High Frequency 96$
  • Ubuntu 18.04 LTS – 64bit

서버 업데이트

시작하기 전에는 반드시 서버를 업데이트하도록 합니다. 서버는 데스크톱과 같은 환경이 아닌 오랜 기간 서비스를 해야 하는 기기입니다. 그러므로 속도보다는 안정성이 중요시될 때도 있습니다. 그런데 서비스 중 업데이트는 예상치 못한 상황을 야기할 수 있으므로 안전한 상황에서 진행하도록 합니다.

서버가 처음 Vultr에서 생성될 때까지는 이미지 설치 등에서 시간이 걸릴 수 있습니다. 또한 업데이트에 많은 시간을 낭비하지 않도록 미리 우분투 리포지토리 미러 서버를 변경하도록 하겠습니다. 일본의 경우 Riken 사가 보통은 가장 유연하게 작동합니다. 전체 미리 서버는 여기에서 확인하도록 하세요.

/etc/apt/sources.list

sed 명령을 사용해 미러 서버 주소를 변경합니다.

sed -i 's/archive.ubuntu.com/ftp.riken.jp\/Linux/g' /etc/apt/sources.list

서버 주소의 변경이 완료되었다면 이제 업데이트를 마칠 시간입니다.

apt update && apt full-upgrade -y && shutdown -r now

첫 번째 명령에서 간혹 헷갈리는 분들이 있습니다. 실제로는 update 명령어는 apt-cache에 최신의 패키지 목록을 가져오는 명령입니다. 업데이트를 실행하는 명령어는 2번째인 full-upgrade인데 이 경우에는 총 3가지가 있습니다.

  • apt upgrade; 기본적으로 패키지를 업그레이드합니다.
  • apt dist-upgrade; 각 패키지의 충돌을 고려해 패키지 중요도에 따라 덜한 패키지를 제거하는 경향이 있습니다.
  • apt full-upgrade; dist-upgrade와 같은 동작을 합니다.

서비스 운용 중에는 dist-upgrade는 별로 권장하지 않습니다. 일부 패키지 제거에 따른 안정성 문제가 생길 수 있습니다. 마지막 명령을 통해 커널 업데이트가 있을 수도 있으므로 재시작을 합니다.

Superuser 비밀번호 변경

다음으로 passwd 명령으로 미리 Superuser 비밀번호를 변경합니다. 클라우드라는 점도 있고요.

현재 Root라는 Superuser에 있으니 passwd 명령을 통해 현재 계정의 비밀번호를 업데이트해주세요.

패키지 설치 및 활성화

이제 마지막으로 필요한 패키지 설치를 끝내면 하나의 웹 서버가 완성됩니다. 패키지는 크게 Nginx와 PHP, MariaDB를 설치할 예정입니다. PHP와 같은 경우는 현재 APT 리포지토리의 마지막 버전(7.2.x)이 설치될 것입니다.

apt install nginx mariadb-server mariadb-client php php-fpm php-dom php-intl php-mbstring php-common php-gd php-xml php-mysql php-xmlrpc php-curl php-zip php-soap -y

PHP 모듈이 약간 많아 보일 수도 있습니다만 향후 CMS 설치 시에도 딱히 의존성 사용에 있어서 거슬리지 않았습니다. 완료되면 이제 필요한 패키지를 서버 재시작 후에도 자동으로 시작되게 만들어야 합니다.

systemctl enable nginx.service && systemctl enable mariadb.service

이게 완료가 되었다면 사실 상 기본적인 셋업은 완료가 된 것으로 합니다. 서버의 IP 주소를 열으시면 Nginx의 Welcome 페이지를 확인하실 수 있습니다.

PHP 설정 부분까지는 여기에서 다루지 않고 이후 웹 서버 튜닝 단에서 따로 글을 쓸 것 같습니다. 이 상태로는 웹 서버라고는 할 수 있지만 서비스를 할 서버는 아니기에 아쉽네요. 그것도 그거대로 쓸 것이 상당히 많아서 말이죠(시간이 생각보다 오래걸립니다). 일단 길지는 않다고 생각하는데… 읽어주셔서 감사합니다.