넷시티-NETCITY
NETBOARD2 TYPE
NETBOARD2 // ID_0007

Nginx 웹 서버 및 PHP·MariaDB 환경 구축

AUTHOR: NETCITY_ADMIN DATE: 2026.08.15 09:15

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)

BACK_TO_LIST