5. Nginx 웹 서버 및 PHP·MariaDB 환경 구축
넷보드 2(Netboard 2)를 구동하기 위해서는 리눅스 환경 위에 고성능 웹 서버인 Nginx, 동적 스크립트를 처리하는 PHP, 그리고 데이터를 관리하는 MariaDB를 조합하는 LEMP 스택을 구축해야 합니다.
외장 SSD 경로(/var/www/html/ssd)를 웹 루트로 활용하기 위한 통합 환경 구축 단계는 다음과 같습니다.
1. Nginx 웹 서버 설치 및 활성화
가볍고 빠른 비동기 웹 서버인 Nginx를 설치하고 시스템 부팅 시 자동으로 실행되도록 설정합니다.
# Nginx 패키지 설치
sudo apt install -y nginx
# Nginx 서비스 시작 및 부팅 시 자동 실행 등록
sudo systemctl start nginx
sudo systemctl enable nginx
확인: 브라우저에 서버의 IP 주소를 입력했을 때 기본 "Welcome to nginx!" 페이지가 출력되면 정상입니다.
2. MariaDB 데이터베이스 설치 및 초기 보안 설정
게시글, 회원 정보 등 핵심 데이터를 안전하게 보관할 관계형 데이터베이스 관리 시스템(RDBMS)을 설치합니다.
# MariaDB 서버 및 클라이언트 설치
sudo apt install -y mariadb-server mariadb-client
# MariaDB 서비스 시작 및 자동 실행 등록
sudo systemctl start mariadb
sudo systemctl enable mariadb
설치 후 불필요한 기본 계정을 정리하고 보안을 강화하기 위한 초기 보안 설정을 진행합니다.
sudo mysql_secure_installation
Enter current password for root (enter for none): (초기 상태이므로 그냥 Enter 입력)
Switch to unix_socket authentication [Y/n]: Y (또는 환경에 따라 N 선택 가능)
Change the root password? [Y/n]: Y (데이터베이스 루트 비밀번호 설정)
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
3. PHP 및 필수 확장 모듈 설치
넷보드 2 구동과 데이터베이스 연동, 이미지 처리 등에 필요한 PHP 및 필수 라이브러리들을 일괄 설치합니다. (버전은 우분투/데비안 리포지토리에 맞춰 자동 지정됩니다.)
sudo apt install -y php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip
설치된 PHP-FPM 서비스가 정상 작동하는지 확인합니다.
sudo systemctl status php*-fpm
4. Nginx와 PHP-FPM 연동 설정 (웹 서버 블록 구성)
Nginx가 PHP 파일을 만나면 PHP-FPM 프로세서로 넘겨 처리하도록 설정 파일을 수정합니다. 앞서 외장 SSD로 고정한 경로를 웹 루트로 지정합니다.
기본 설정 파일을 편집기로 엽니다.
sudo nano /etc/nginx/sites-available/default
설정 파일 내부의 주요 항목을 아래와 같이 수정합니다. (root 경로는 외장 SSD 마운트 경로로 지정합니다.)
Nginx 설정
server {
listen 80;
server_name _;
# 외장 SSD 마운트 경로를 웹 루트로 지정
root /var/www/html/ssd;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
# PHP-FPM 연동 설정
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# 사용 중인 PHP 버전에 맞춰 socket 경로 확인 (예: php8.2-fpm.sock 또는 php8.3-fpm.sock)
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
# 보안을 위해 .htaccess 등 숨김파일 접근 차단
location ~ /\.ht {
deny all;
}
}
파일을 저장하고 나온 뒤, Nginx 설정에 문법적 오류가 없는지 테스트합니다.
sudo nginx -t
syntax is ok 메시지가 뜨면 성공입니다.
5. 웹 서버 및 PHP 서비스 최종 재시작
모든 설정을 반영하기 위해 Nginx와 PHP-FPM 서비스를 재시작합니다.
sudo systemctl restart nginx
sudo systemctl restart php*-fpm
6. 연동 테스트
외장 SSD 웹 루트 경로에 PHP 작동 여부를 확인할 테스트 파일을 생성합니다.
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/ssd/info.php
브라우저에서 http://서버IP/info.php에 접속했을 때 PHP 상세 정보 페이지가 출력된다면, Nginx, PHP, 그리고 외장 SSD 인프라가 완벽하게 맞물려 작동하고 있음을 의미합니다. (테스트 완료 후 보안을 위해 해당 파일은 삭제하는 것이 좋습니다: sudo rm /var/www/html/ssd/info.php)
