Press "Enter" to skip to content

우분투 20.04 (Ubuntu)에 LAMP 스택 설치하기

1. 소개

우분투 20.04 홈서버를 구축하기 위해서 우리는 우분투까지 설치를 완료했습니다.
이제 OS를 설치 하였으니 웹호스팅을 위한 준비를 시작해보겠습니다.

“LAMP” 스택이라 하면 서버가 PHP로 작성된 동적 웹사이트 및 웹 앱을 호스팅 할 수 있도록 설치되는 오픈소스 소프트웨어 그룹입니다.
제목에서 보셨듯이 L inux에, A pache라는 웹서버를 올리고, M y SQL이라는 데이터베이스에 저장되어있는 자료를 P HP에서 처리하기 위함입니다.

본 글에서 설명하는 LAMP 스택을 설치하기 위해서는 기본적으로 Ubuntu 20.04가 여러분의 서버에 설치되어 있어야합니다. 또한 원활하고 안전한 서버 구동을 위하여 홈서버 초기 설정을 진행해주시기 바랍니다.

아래 링크들을 클릭하여 이전글들을 참조해주세요.

앞으로 진행될 우분투 홈서버 설정을 위해서는 터미널을 이용해야합니다.
우분투 데스크탑에서 터미널 실행을 위해서는 전체 앱에서 터미널을 선택하던지,
Ctrl+Alt+T를 눌러서 터미널을 실행시켜줍니다.

또한 모든 과정은 관리자 모드로 진행할 것입니다.
터미널을 연 뒤에, sudo su라고 입력을 해줍니다.

#sudo su

앞의 #모양은 관리자 모드로 진입하기 전을 의미하며, 위와같이 udo su를 입력해주고 나면,

Password

비밀번호를 입력하라는 문구가 나타납니다. 여러분이 우분투를 설치할 때 설정했던 비밀번호를 입력한 뒤에 엔터를 입력해줍니다.
비밀번호를 입력할 때에는 화면에 아무것도 나타나지 않습니다. (예: ****과 같이 나타나지 않습니다.)
아무래도 어떤 키를 입력했는지 기억하면서 비밀번호를 입력해주어야겠군요.

비밀번호를 입력한 뒤 엔터를 입력해주면,

$

위와 같이 경로 끝에 #대신, $표시가 나타나게 됩니다. 이제 관리자 모드로 진입을 한 것입니다.
우리는 이와같이 관리자 모드에서 모든 설정을 진행해 주도록 합니다.

2. 1단계: Apache 설치 및 방화벽 업데이트

Apache 웹 서버는 세계에서 가장 널리 사용되는 웹 서버중 하나입니다.
문서화가 잘 되있는 편이라 문제가 생겨도 다양한 방법으로 해결책을 찾을 수 있습니다.
우선 Apache를 설치하기전에 전체 시스템을 업데이트하고 시작하도록 하겠습니다.

$ apt update

그러면 우분투가 알아서 시스템에 설치 되어 있는 모든 자료들을 최신으로 업데이트 할 것입니다.

이제 Apache를 설치해주도록 하겠습니다.

$ apt install apache2

Y를 눌러주면 Apache 설치를 확인하라는 메세지가 표시 됩니다. 엔터를 입력해줍니다.
설치가 완료되면 HTTP 트래픽을 허용하도록 방화벽을 다시한번 설정해주어야 합니다.

$ ufw app list

그럼 다음과 같은 내용이 출력됩니다.

Output

Available applications:

   Apache

   Apache Full

   Apache Secure

   OpenSSH

각 프로필의 의미는 다음과 같습니다.

  • Apache : 이 프로필은 80포트만 엽니다 (일반, 암호화되지 않은 웹 트래픽).
  • Apache Full : 이 프로필은 80포트 (일반, 암호화되지 않은 웹 트래픽)와 443포트 (TLS/SSL 암호화된 트래픽)를 모두 엽니다.
  • Apache Secure : 이 프로필은 443포트 (TLS/SSL 암호화 트래픽)만 엽니다.
See also  우분투 20.04 (Ubuntu)에 Let's Encrypt 설치하기

지금은 80포트에 대한 연결만 허용하는 것이 가장 좋습니다.
이는 Apache를 새로 설치하고 아직 서버에서 HTTPS 트래픽을 허용하도록 구성된 TLS/SSL 인증서가 없기 때문입니다.

우선80 포트의 트래픽만 허용하기 위해 다음과 같이 명령어를 입력해줍니다.

ufw allow in "Apache"

그럼 방화벽에서 Apache 트래픽이 허용이 되고 다음과 같이 명령어를 입력하면 변경사항을 확인 할 수 있습니다.

ufw status

Output

Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                               

Apache                     ALLOW       Anywhere                 

OpenSSH (v6)               ALLOW       Anywhere (v6)                   

Apache (v6)                ALLOW       Anywhere (v6)

이제 80포트의 트래픽은 방화벽에서 허용이 되었습니다.

웹에서 서버의 공용 IP 주소를 입력하여 모든것이 제대로 되었는지 확인하기 위해서 테스트를 해봅니다.
FireFox, Chrome등을 이용하여 공용 IP를 입력해줍니다.

http://your.server.ip

모든게 제대로 되었다면 다음과 같은 화면이 나올 것입니다.
아래의 페이지가 표시되면 이제 웹서버가 올바르게 설치되었고 접속이 가능하다는 의미입니다.

서버의 공용 IP 주소 찾기

만약 서버의 공용 IP 주소를 모르는 경우에는 다양한 방법으로 찾아볼 수 있습니다.
보통은 여러분의 공유기에 접속하면 IP 주소를 쉽게 찾을 수 있습니다.

하지만 터미널 내에서도 iproute2를 이용하여 쉽게 알아볼 수 있는 방법이 있습니다.

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

위와 같은 명령어를 통해서 여러분은 서버의 공용 IP 주소를 알아낼 수 있습니다.

3. 2단계: MySQL 설치하기

이제 웹서버는 가동이 되었으니, 여러분의 홈페이지의 데이터를 저장하고 관리 할 수 있도록 데이터베이스 시스템을 설치해야 됩니다. MySQL은 PHP 환경에서 널리 사용되는 시스템입니다.

다시 apt명령어를 이용하여 시스템을 설치해주도록 합니다.

$ apt install mysql-server

그럼 설치 과정이 나오는데 중간에 메세지가 표시 되며 여러분의 확인을 요구합니다.
Y를 입력후 ENTER를 입력하여 설치 확인을 해줍니다.

설치가 완료되면 MySQL과 함께 미리 설치 된 보안 스크립트를 실행하는 것이 좋습니다.
이 스크립트는 안전하지 않은 일부 기본 설정을 제거하고 데이터베이스 시스템에 대한 액세스를 잠궈줍니다.

$ mysql_secure_installation

그러면 Password Plugin을 구성할지 묻는 메세지가 표시 됩니다.

이 기능을 활성화하면 지정된 기준과 일치하지 않는 암호는 MySQL에서 거부가 됩니다.
유효성 검사를 비활성화 한 상태로 두는 것이 안전하지만 데이터 베이스 자격증명을 위해 항상 여러분들의 암호를 사용하는것을 추천드립니다.

Y를 입력하여 비밀번호를 설정해주도록 합니다.

VALIDATE PASSWORD PLUGIN can be used to test passwords

and improve security. It checks the strength of password

and allows the users to set only those passwords which are

secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: Y

Y를 입력하면 암호가 얼마나 강력한지 유효성 검사 수준을 선택하라는 메세지가 표시됩니다.
가장 강력한 단계인 2를 입력할 경우, 숫자, 대소문자, 특수문자가 포함되지 않거나 일반적으로 사전에 자주 사용되는 단어를 기반으로 하는 비밀번호를 설정시 오류가 발생합니다.

There are three levels of password validation policy:

LOW    Length >= 8

MEDIUM Length >= 8, numeric, mixed case, and special characters

STRONG Length >= 8, numeric, mixed case, special characters and dictionary              file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

저는 1번인 중간 정도로 설정하고 암호를 입력해주었습니다. 2로 설정하고 비밀번호를 만드셔도 무방합니다.

See also  우분투 20.04 (Ubuntu) 데스크탑 설치하기

여기서 입력한 비밀번호는 Ubuntu의 비밀번호와는 다른 비밀번호입니다.
서로 헷갈리지 않고 사용하도록 주의해줍니다.

암호 유효성 검사를 활성화하였다면 방금 입력한 루트 암호의 암호 강도가 표시되고 서버에서 해당 암호를 계속 사용할 것인지 묻습니다.
설정한 암호에 만족하면 터미널창에 Y를 입력해주면 됩니다.

Estimated strength of the password: 100

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

그러면 몇가지 질문을 더 하게 되는데 나머지의 경우 전부 Y를 입력해주시면 됩니다.
전부 완료되면 다음을 입력하여 MySQL 콘솔에 로그인 할 수 있는지 테스트 해보도록 합니다.

$ mysql

그러면 MySQL 서버로 연결되게 됩니다. 다음과 같은 화면이 나타나면 정상적으로 MySQL 이 설치 된 것입니다.

Output

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 22

Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

지금은 MySQL을 종료하도록 하겠습니다. 다음편에 워드프레스를 설치할 때 MySQL을 다루도록 하겠습니다.

mysql> exit

이제 MySQL 서버역시 설치가 되었습니다. 다음으로 LAMP 스택의 마지막 구성요소인 PHP를 설치하도록 하겠습니다.

4. 3단계: PHP 설치하기

PHP는 최종 사용자에게 동적 콘텐츠를 표시하는 코드를 처리하는 설정 구성 요소입니다. 패키지 외에도 PHP가 MySQL 기반 데이터베이스와 통신할 수 있도록 하는 PHP 모듈이 필요합니다 . 또한 PHP 파일을 처리하려면 Apache를 활성화해야 합니다 . 핵심 PHP 패키지는 자동으로 종속 항목으로 설치됩니다.

이제 패키지를 설치해보록 합시다.

$ apt install php libapache2-mod-php php-mysql

모든 설치가 완료 되었다면 다음 명령어를 입력하여 PHP 버전을 확인 할 수 있습니다.

$ php -v

Output

PHP 7.4.3 (cli) (built: Jul  5 2021 15:13:35) ( NTS )

Copyright (c) The PHP Group

Zend Engine v3.4.0, Copyright (c) Zend Technologies

    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

여기까지는 PHP가 MySQL과 통신할 수 있도록 하기 위한 최소한의 패키지들입니다.
하지만 우리의 최종목표는 WordPress를 설치하기 위함이기때문에 추가 확장 패키지들을 설치해 주도록 하겠습니다.

다음을 입력하여 더 많은 PHP 확장 패키지들을 설치해 줍니다.

$ apt update

$ apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

이렇게 다양한 추가 패키지들을 설치해주고 나면 WordPress를 설치하기 위한 기본적인 설정은 끝이 났습니다.
이제 이러한 확장 패키지들을 로드하기 위해서 Apache를 다시 시작해주어야 합니다.
다음을 입력하여 Apache를 다시시작 해주도록 하겠습니다.

$ systemctl restart apache2

이제 여러분들의 홈서버에는 홈페이지를 구동하기 위한 기본적인 LAMP 스택이 설치되었습니다.
이제 다음단계를 통하여 여러분들의 홈서버에 WordPress를 설치하고 무제한적으로 홈페이지를 생성할 수 있는 홈서버를 만들어보도록 하겠습니다.

See also  우분투 20.04 (Ubuntu) 데스크탑 설치하기

다음은 워드프레스의 공식 사이트 입니다.

https://wordpress.com/ko

우리나라에는 네이버, 다음등 홈페이지를 운영할 수 있는 환경이 너무 잘 조성되어있기때문에 개인적으로 워드프레스를 사용하는 사용자가 많지않지만, 워드프레스를 이용하면 여러분들이 원하는 모든것을 진행 할 수 있습니다.

다음 글로 넘어가기 전에 워드프레스를 살펴보시는 것도 좋을 것 같습니다.