Home Knowledge base Skyline Cloud Ubuntu에 LAMP 스택을 설치하는 방법 KNOWLEDGE BASE

Ubuntu에 LAMP 스택을 설치하는 방법

Ubuntu 24.04 LTS에서 LAMP 스택(Linux, Apache, MySQL, PHP)을 설치하고 보안을 강화하는 완전한 단계별 가이드입니다. 방화벽, 강화된 MySQL 설정, PHP, 그리고 몇 분 안에 테스트할 수 있는 작동하는 Apache 가상 호스트까지 다룹니다.

Ubuntu에 LAMP 스택을 설치하는 방법

Ubuntu 24.04 LTS에서 LAMP 스택(Linux, Apache, MySQL, PHP)을 설치하고 보안을 강화하는 완전한 단계별 가이드입니다. 방화벽, 강화된 MySQL 설정, PHP, 그리고 몇 분 안에 테스트할 수 있는 작동하는 Apache 가상 호스트까지 다룹니다.

LAMP 스택이란?

LAMP 스택은 동적 웹사이트와 웹 애플리케이션을 제공하기 위한 고전적인 오픈소스 플랫폼입니다. 이 약어는 함께 작동하는 네 개의 계층을 의미합니다:

  • Linux — 운영체제 (이 가이드에서는 Ubuntu)
  • Apache — HTTP 요청을 처리하는 웹 서버
  • MySQL — 데이터를 저장하는 관계형 데이터베이스
  • PHP — 동적 페이지를 생성하는 언어

이 튜토리얼은 Ubuntu 24.04 LTS에서 완전하고 강화된 설치 과정을 안내합니다(이 단계들은 22.04 LTS 및 최신 26.04 LTS에도 그대로 적용됩니다). 끝까지 따라 하면 테스트된 가상 호스트, 보안이 강화된 데이터베이스, 그리고 페이지를 처리하는 PHP를 갖춘 작동하는 웹 서버를 갖추게 됩니다.

이를 사우디 왕국 내의 VPS나 클라우드 서버에서 실행하는 경우, 데이터를 왕국 내에 두면 PDPL 데이터 거주 요건을 충족하는 데 도움이 되며 리야드, 제다, 담맘의 사용자에게 낮은 지연 시간을 제공합니다.

사전 준비 사항

  • Ubuntu 24.04 서버 (Skyline Cloud VPS가 적합합니다).
  • sudo 권한이 있는 루트가 아닌 사용자.
  • 서버에 대한 SSH 접속.

먼저 패키지 인덱스를 새로 고칩니다:

sudo apt update
sudo apt upgrade -y

1단계 — Apache 설치 및 방화벽 구성

Apache 웹 서버를 설치합니다:

sudo apt install apache2 -y

Ubuntu에는 UFW 방화벽이 기본 탑재되어 있으며, Apache는 설치 시 UFW에 애플리케이션 프로파일을 등록합니다. 목록을 확인합니다:

sudo ufw app list

Apache, Apache Full, Apache Secure가 표시됩니다. HTTP(80)와 HTTPS(443)를 모두 열려면 Apache Full을 허용하세요. UFW가 아직 활성화되어 있지 않다면, 잠겨버리지 않도록 먼저 SSH를 허용하세요:

sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable

Apache가 실행 중인지 확인합니다:

sudo systemctl status apache2

이제 브라우저에서 http://your_server_ip에 접속합니다. 기본 Apache 시작 페이지가 보일 것입니다.

2단계 — MySQL 설치 및 보안 강화

MySQL 데이터베이스 서버를 설치합니다:

sudo apt install mysql-server -y

서비스는 자동으로 시작됩니다. 다음으로, 안전하지 않은 기본 설정을 제거하는 내장 보안 강화 스크립트를 실행합니다:

sudo mysql_secure_installation

이 스크립트는 다음을 묻습니다:

  1. VALIDATE PASSWORD 구성 요소를 선택적으로 활성화합니다(비밀번호 복잡도 적용을 원하면 정책 수준을 선택하세요).
  2. 익명 사용자 제거 — Y로 답합니다.
  3. 원격 루트 로그인 비활성화 — Y로 답합니다.
  4. 테스트 데이터베이스 제거 — Y로 답합니다.
  5. 권한 테이블 다시 로드 — Y로 답합니다.

새로 설치한 경우 루트 계정은 auth_socket을 사용하므로, 셸에서 비밀번호 없이 로그인합니다:

sudo mysql

애플리케이션에서는 절대 루트를 사용하지 마세요. 대신 전용 사용자와 데이터베이스를 생성합니다:

CREATE DATABASE app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'a_strong_password';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3단계 — PHP 설치

PHP, Apache PHP 모듈, 그리고 MySQL 커넥터를 설치합니다:

sudo apt install php libapache2-mod-php php-mysql -y

대부분의 애플리케이션은 몇 가지 일반적인 확장 모듈도 필요로 합니다:

sudo apt install php-cli php-curl php-gd php-mbstring php-xml php-zip -y

설치된 버전을 확인합니다:

php -v

4단계 — Apache가 PHP 파일을 우선하도록 설정

기본적으로 Apache는 index.php보다 index.html을 먼저 제공합니다. PHP 애플리케이션이 예상대로 작동하도록 index.php의 우선순위를 높이세요. 디렉터리 인덱스 설정 파일을 엽니다:

sudo nano /etc/apache2/mods-enabled/dir.conf

index.php를 목록의 맨 앞으로 옮깁니다:

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

저장한 다음, Apache를 다시 로드합니다:

sudo systemctl reload apache2

5단계 — 가상 호스트 생성

가상 호스트를 사용하면 하나의 서버에서 여러 사이트를 호스팅할 수 있습니다. 도메인에 대한 문서 루트와 설정 파일을 생성합니다(example.com을 교체하세요):

sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
sudo nano /etc/apache2/sites-available/example.com.conf

다음 내용을 추가합니다:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

사이트를 활성화하고, 기본 사이트를 비활성화한 다음, 다시 로드합니다:

sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2

(WordPress와 Laravel에서 흔히 쓰이는) 깔끔한 URL을 사용할 계획이라면, rewrite 모듈을 활성화하세요:

sudo a2enmod rewrite
sudo systemctl restart apache2

6단계 — PHP 처리 테스트

문서 루트에 테스트 파일을 생성합니다:

nano /var/www/example.com/info.php

다음을 추가합니다:

<?php
phpinfo();

http://example.com/info.php(또는 서버 IP)에 접속합니다. PHP 정보 페이지가 보이면 Apache가 .php 파일을 PHP에 넘기고 있음을 확인할 수 있습니다. 테스트 후에는 이 파일을 즉시 삭제하세요 — 서버 세부 정보를 노출합니다:

rm /var/www/example.com/info.php

빠른 명령어 참조

작업 명령어
Apache 재시작 sudo systemctl restart apache2
Apache 설정 다시 로드 sudo systemctl reload apache2
Apache 설정 구문 테스트 sudo apache2ctl configtest
MySQL 재시작 sudo systemctl restart mysql
MySQL 로그인 sudo mysql
Apache 오류 로그 보기 sudo tail -f /var/log/apache2/error.log

다음 단계

LAMP 서버가 준비되었습니다. 권장하는 후속 작업은 다음과 같습니다:

  • HTTPS 추가하기. Certbot으로 무료 Let's Encrypt 인증서를 발급하거나, 관리형 SSL 옵션을 사용해 트래픽을 암호화하세요.
  • 도메인 연결하기. 관리형 DNS를 통해 .sa 또는 기타 도메인을 연결하여 사용자가 이름으로 사이트에 접속할 수 있게 하세요.
  • 비즈니스 이메일 설정하기. 자체 도메인에서 신뢰할 수 있는 비즈니스 이메일 호스팅을 사이트와 함께 사용하세요.
  • 백업 예약하기. /var/www의 클라우드 백업과 데이터베이스의 정기적인 mysqldump 내보내기를 자동화하세요.

이 스택이 바로 준비되어 있고, 왕국 내 데이터 거주성과 현지 아랍어 지원을 갖춘 서버를 원하시나요? Skyline Cloud에 가입하고 몇 분 만에 VPS를 시작하세요.

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.