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
[설정 가이드 – 중요]
질문이 나오면 아래와 같이 입력하세요:
Enter current password for root: Enter (초기 비밀번호 없음)Switch to unix_socket authentication [Y/n]: nChange the root password? [Y/n]: Y (새로운 DB 관리자 비밀번호 입력)Remove anonymous users? [Y/n]: Y (익명 사용자 제거)Disallow root login remotely? [Y/n]: Y (원격 루트 접속 차단)Remove test database...? [Y/n]: Y (테스트 DB 삭제)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 💡
- 보안을 위해 테스트 파일 삭제 (필수)
- 서버 정보 노출을 막기 위해 테스트 후 반드시 파일을 삭제하세요.
sudo rm /var/www/html/info.php - 권한 문제 해결
- 웹 파일 업로드가 안 되거나 수정이 안 될 경우, 웹 루트의 소유권을 변경합니다.
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html - 서비스 관리 명령어
- Apache 재시작:
sudo systemctl restart apache2 - 로그 확인:
sudo tail -f /var/log/apache2/error.log
- Apache 재시작:
이제 LAMP 스택이 완벽하게 준비되었습니다!
add a comment






