LinuxTechnology

[Ubuntu 22.04 LTS] LAMP 스택 (Apache, MariaDB, PHP) 설치 가이드

12views

이 가이드는 서버에 익숙하지 않은 분들도 터미널에 명령어를 순서대로 복사-붙여넣기 하는 것만으로 웹 서버 구축을 완료할 수 있도록 작성되었습니다.


0. 환경 및 사전 요구 사항

  • OS: Ubuntu 22.04 LTS (Jammy Jellyfish)
  • 권한: root 권한 또는 sudo 사용이 가능한 계정
  • 목표: 정적/동적 웹 사이트 호스팅을 위한 필수 인프라 구축

1. 사전 준비 (System Update)

설치 과정에서 발생할 수 있는 패키지 의존성 충돌을 방지하기 위해 시스템을 최신 상태로 갱신합니다.

Bash

# 패키지 리스트 갱신 및 설치된 패키지 업그레이드
sudo apt update && sudo apt upgrade -y

2. Apache 웹 서버 설치

사용자의 브라우저 요청을 받아들여 웹 페이지를 보여주는 웹 서버 소프트웨어입니다.

2-1. 설치 및 실행

Bash

# Apache2 설치
sudo apt install apache2 -y

# 설치 직후 서비스 자동 시작 설정 및 실행
sudo systemctl enable --now apache2

2-2. 방화벽(UFW) 설정

외부에서 웹 서버에 접속할 수 있도록 포트(80, 443)를 개방합니다.

Bash

# Apache 관련 포트 허용 (80, 443 포트 자동 개방)
sudo ufw allow "Apache Full"

# 방화벽 상태 확인
sudo ufw status

검증: 웹 브라우저 주소창에 http://<서버_IP_주소>를 입력했을 때 **”Apache2 Ubuntu Default Page”**가 보이면 성공입니다.


3. MariaDB 데이터베이스 설치

MySQL과 완벽하게 호환되며 성능이 뛰어난 오픈소스 데이터베이스입니다.

3-1. 설치 및 실행

Bash

# MariaDB 서버 및 클라이언트 설치
sudo apt install mariadb-server mariadb-client -y

# 서비스 자동 시작 설정 및 실행
sudo systemctl enable --now mariadb

# 실행 상태 확인 (Active: active (running) 확인)
sudo systemctl status mariadb

(확인 후 q 키를 눌러 빠져나오세요.)

3-2. 보안 설정 (필수 단계)

기본 설치 시 보안에 취약한 부분들을 제거하는 스크립트입니다.

Bash

# 보안 강화 스크립트 실행
sudo mysql_secure_installation

[설정 가이드 – 중요]

질문이 나오면 아래와 같이 입력하세요:

  1. Enter current password for root: Enter (초기 비밀번호 없음)
  2. Switch to unix_socket authentication [Y/n]: n
  3. Change the root password? [Y/n]: Y (새로운 DB 관리자 비밀번호 입력)
  4. Remove anonymous users? [Y/n]: Y (익명 사용자 제거)
  5. Disallow root login remotely? [Y/n]: Y (원격 루트 접속 차단)
  6. Remove test database...? [Y/n]: Y (테스트 DB 삭제)
  7. Reload privilege tables now? [Y/n]: Y (설정 적용)

4. PHP 설치

동적인 웹 페이지(로그인, 게시판 등)를 처리하고 데이터베이스와 통신하는 언어입니다.

4-1. 설치 (PHP 8.1 기본)

Apache와 MySQL(MariaDB)을 연동하기 위한 모듈을 함께 설치합니다.

Bash

# PHP 및 필수 모듈 설치
sudo apt install php libapache2-mod-php php-mysql -y

# 설치된 PHP 버전 확인
php -v

4-2. Apache 우선순위 설정 (선택 사항)

index.html보다 index.php를 먼저 불러오도록 설정합니다.

Bash

# 설정 파일 편집 (nano 편집기 사용 예시)
sudo nano /etc/apache2/mods-enabled/dir.conf
  • 수정 전: DirectoryIndex index.html index.cgi ... index.php
  • 수정 후: DirectoryIndex index.php index.html index.cgi …( index.php를 맨 앞으로 이동 후 Ctrl+O 저장, Ctrl+X 종료)

Bash

# 변경 사항 적용을 위해 Apache 재시작
sudo systemctl restart apache2

5. 설치 검증 (테스트 페이지 생성)

PHP가 정상적으로 동작하는지 확인합니다.

Bash

# 웹 루트 디렉터리에 info.php 파일 생성
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
  • 확인 방법: 브라우저에서 http://<서버_IP_주소>/info.php 접속.
  • 성공 기준: 보라색 표로 된 PHP 상세 정보 페이지가 나타나면 설치 완료입니다.

6. 마무리 및 트러블슈팅 Tip 💡

  1. 보안을 위해 테스트 파일 삭제 (필수)
    • 서버 정보 노출을 막기 위해 테스트 후 반드시 파일을 삭제하세요.
    Bashsudo rm /var/www/html/info.php
  2. 권한 문제 해결
    • 웹 파일 업로드가 안 되거나 수정이 안 될 경우, 웹 루트의 소유권을 변경합니다.
    Bashsudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html
  3. 서비스 관리 명령어
    • Apache 재시작: sudo systemctl restart apache2
    • 로그 확인: sudo tail -f /var/log/apache2/error.log

이제 LAMP 스택이 완벽하게 준비되었습니다!