NGINX + PHP 7.3 + MARIADB

스마트폰에서 운영하는 웹서버와 데이터베이스

Nginx, PHP 7.3, PHP-FPM, MariaDB를 함께 구성하면 스마트폰에서도 웹사이트와 데이터베이스를 운영할 수 있습니다. 공유기와 도메인을 연결하면 소규모 서비스로 충분히 활용할 수 있습니다.

1. 기본 설치

Termux에서는 다음 명령으로 Nginx, PHP, PHP-FPM, MariaDB를 설치합니다. Termux 저장소의 PHP 버전은 시점에 따라 달라질 수 있으므로 PHP 7.3이 꼭 필요한 경우 설치 후 php -v로 버전을 확인하고 호환되는 패키지 저장소나 별도 빌드를 검토해야 합니다.

pkg update && pkg upgrade
      pkg install nginx php php-fpm mariadb
      php -v
mkdir -p $HOME/www

MyBoard 파일을 $HOME/www/myboard에 배치하고 data, uploads 폴더에 쓰기 권한을 준비합니다.

cd $HOME/www/myboard
mkdir -p data uploads
php install.php

2. MariaDB 설치와 초기화

MariaDB는 MyBoard 또는 다른 PHP 애플리케이션에서 사용할 수 있는 관계형 데이터베이스입니다. 처음 한 번 데이터 디렉터리를 초기화한 뒤 서버를 시작합니다.

mkdir -p $PREFIX/var/lib/mysql
# Termux 버전에 따라 둘 중 하나를 사용합니다.
mariadb-install-db || mysql_install_db
mysqld_safe -u root &

서버가 실행되면 별도 터미널에서 root로 접속해 데이터베이스와 애플리케이션 계정을 만듭니다.

mysql -u root
CREATE DATABASE myboard CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myboard_user'@'localhost' IDENTIFIED BY '비밀번호를_직접_변경하세요';
GRANT ALL PRIVILEGES ON myboard.* TO 'myboard_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

실제 비밀번호는 예시 값을 사용하지 말고 충분히 긴 값으로 변경하세요. 현재 MyBoard는 기본 SQLite로도 동작하므로 MariaDB를 사용하려면 애플리케이션 DB 설정과 스키마를 별도로 전환해야 합니다.

3. Nginx와 PHP 7.3 연결

이 구성에서는 스마트폰 내부의 MyBoard 서비스를 8080 포트에서 실행하고, Nginx는 외부 요청을 받아 HTTPS를 처리하는 앞단 리버스 프록시로 사용합니다. Nginx가 PHP를 직접 실행하는 것이 아니라 내부 8080 서비스로 요청을 전달하는 구조입니다.

php-fpm
nginx

스마트폰 환경에서는 권한과 운영 특성상 웹 애플리케이션을 8080 같은 높은 포트에서 실행합니다. 먼저 브라우저에서 http://127.0.0.1:8080/ 또는 스마트폰 내부 IP의 8080 포트로 접속해 MyBoard가 정상적으로 열리는지 확인합니다.

4. 도메인 설정

  1. 도메인 등록 업체에서 도메인을 준비합니다.
  2. DNS의 A 레코드를 서버가 연결된 공인 IP 주소로 지정합니다.
  3. 공인 IP가 바뀌는 인터넷이라면 DDNS를 사용해 도메인이 항상 현재 주소를 가리키도록 합니다.
  4. Nginx의 server 설정에서 도메인과 MyBoard 문서 경로를 지정합니다.
server {
      listen 443 ssl;
      server_name example.com www.example.com;

      ssl_certificate /data/data/com.termux/files/home/.ssl/example.com/fullchain.pem;
      ssl_certificate_key /data/data/com.termux/files/home/.ssl/example.com/privkey.pem;

      location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
      }
    }

위 설정의 핵심은 외부 도메인의 HTTPS 요청을 Nginx가 443번에서 받은 다음, 스마트폰 내부의 127.0.0.1:8080으로 전달하는 것입니다. 즉 사용자는 https://example.com으로 접속하고, Nginx 뒤의 MyBoard는 스마트폰 내부 8080 포트에서 동작합니다.

Android 스마트폰의 Termux에서는 80번 웹 포트를 사용할 수 없으므로 이 안내는 80번 리다이렉트 서버 없이 443번 HTTPS를 직접 사용하는 구성입니다. DNS만 연결해서는 동작하지 않으며, Nginx의 443 리버스 프록시 설정과 내부 8080 서비스가 모두 실행되어야 합니다.

5. 공유기와 외부 연결

스마트폰을 공유기 옆에 두고 전원과 네트워크를 안정적으로 연결하면 서버로 운영하기 좋습니다. 스마트폰 서버는 공유기와 충분히 연결 가능하며, 같은 네트워크에서는 내부 IP로 바로 접속할 수 있습니다.

외부에서 접속하려면 공유기에서 외부 443번 포트를 스마트폰 내부 IP의 443번 포트로 포트포워딩합니다. 80번 포트는 스마트폰에서 사용할 수 없으므로 포워딩 대상에서 제외합니다.

  • 외부 443번 포트 → 스마트폰 내부 IP의 Nginx 443번 포트
  • Nginx가 HTTPS를 종료하고 내부 127.0.0.1:8080의 MyBoard로 전달
  • 스마트폰의 내부 IP가 바뀌지 않도록 DHCP 예약 설정

통신사의 CGNAT이나 공유기 정책으로 443번 포트도 외부에서 들어오지 못할 수 있습니다. 이때는 DDNS, 터널링 또는 외부 VPS를 함께 검토해야 합니다.

6. 운영 명령과 HTTPS 주의사항

운영 중에는 각 서비스를 순서대로 시작하고 상태를 확인합니다.

mysqld_safe -u root &
      php-fpm
      nginx

      ps aux | grep -E 'mysqld|php-fpm|nginx'
      nginx -t
      tail -f $PREFIX/var/log/nginx/error.log

서비스를 종료하거나 데이터를 백업할 때는 다음 명령을 사용할 수 있습니다.

nginx -s quit
      pkill php-fpm
      mysqladmin -u root shutdown
      mysqldump -u root myboard > $HOME/myboard_$(date +%Y%m%d).sql

443번 포트에서 사용할 인증서는 Android 스마트폰의 Termux에서 별도로 발급받아야 합니다. ACME 클라이언트나 Certbot 계열 도구로 도메인 소유권을 확인한 뒤 인증서와 개인키를 Termux의 안전한 경로에 저장하고, Nginx의 ssl_certificatessl_certificate_key에 그 경로를 지정해야 합니다.

스마트폰에서는 80번 포트를 사용할 수 없으므로 HTTP-01 방식의 인증이 어려울 수 있습니다. 이 경우 DNS에 TXT 레코드를 추가해 확인하는 DNS-01 방식과 인증서 자동 갱신 방법을 별도로 검토해야 합니다. 인증서를 받은 뒤에는 443 포트 포워딩과 Nginx SSL 설정까지 맞아야 합니다.

도메인과 443 인증 설정은 처음 접하면 쉬운 작업이 아닙니다. DNS, 포트포워딩, Android Termux 인증서 발급, Nginx 설정을 순서대로 학습하면서 진행하고, 오류가 발생하면 AI를 통해 설정 내용을 확인하고 도움을 받는 것이 좋습니다. 사용 중인 통신사와 공유기, Termux 환경을 함께 알려주면 더 정확하게 안내받을 수 있습니다.

관리자 비밀번호를 변경하고, 필요한 포트만 열며, Nginx와 PHP를 최신 상태로 유지하세요.

정리하면, 스마트폰을 공유기 옆에 두고 Nginx와 PHP-FPM을 실행하면 가정이나 소규모 환경에서도 MyBoard를 충분히 연결해 사용할 수 있습니다.