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
이 스크립트는 다음을 묻습니다:
- VALIDATE PASSWORD 구성 요소를 선택적으로 활성화합니다(비밀번호 복잡도 적용을 원하면 정책 수준을 선택하세요).
- 익명 사용자 제거 — Y로 답합니다.
- 원격 루트 로그인 비활성화 — Y로 답합니다.
- 테스트 데이터베이스 제거 — Y로 답합니다.
- 권한 테이블 다시 로드 — 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를 시작하세요.
Comments
0 total · 0 threads