IT 관련/우분투(Ubuntu) 이것저것

Lubuntu(우분투)에 wordpress 설치 방법

islet2 2025. 4. 1. 22:58

참고로 여기 기재된 url은 sample입니다.
cloudflare에서 저렴한 도메인을 발급해서 사용을 추천드립니다. 인증서도 무료제공이 되면 어디보다 저렴합니다.
지원도 잘 됩니다.저는 2009년도에 나온 atom cpu, 2g (DDR2) 메모리가 탑재된 노트북에 lubuntu를 설치해서 연습중 입니다.
이제 시작 입니다~

목표:

  1. Lubuntu 서버에 Docker를 사용하여 WordPress와 데이터베이스(MariaDB)를 설치합니다.
  2. 데이터는 Docker 외부(Lubuntu 호스트)에 안전하게 저장합니다. (볼륨 사용)
  3. word.aa.org 도메인을 통해 접속합니다.
  4. 외부 HTTPS 요청 -> NAS (역방향 프록시) -> Lubuntu 서버의 9100 포트 -> WordPress 컨테이너 순서로 연결되도록 설정합니다.

사전 준비 확인:

  • Lubuntu 서버에 Docker가 설치되어 있고 실행 중인지 확인합니다. (설치되어 있다고 하셨으니 이 부분은 넘어가겠습니다.)
  • Lubuntu 서버의 터미널(명령줄) 사용법을 아주 약간은 아시면 좋습니다. (복사/붙여넣기 정도면 충분합니다!)
  • NAS에서 역방향 프록시 설정 방법을 알고 계셔야 합니다. (이 부분은 NAS 종류마다 다르므로, NAS 설정 가이드를 참고하셔야 합니다.)
  • word.aa.org 도메인이 NAS의 공인 IP 주소를 가리키도록 DNS 설정이 되어 있어야 합니다.

ssh 터미널 접속


1단계: Docker 네트워크 생성하기

WordPress 컨테이너와 데이터베이스 컨테이너가 서로 안전하게 통신할 수 있도록 전용 네트워크를 만들어 줍니다. 이렇게 하면 컨테이너 이름으로 서로를 쉽게 찾을 수 있습니다.

sudo docker network create wordpress-net
  • sudo: 관리자 권한으로 명령을 실행합니다. (비밀번호를 물어볼 수 있습니다)
  • docker network create: Docker 네트워크를 생성하는 명령어입니다.
  • wordpress-net: 우리가 만들 네트워크의 이름입니다. (원하는 이름으로 바꿔도 되지만, 이후 명령어에서도 동일하게 사용해야 합니다.)

2단계: 데이터 저장을 위한 Docker 볼륨 생성하기

WordPress 사이트의 데이터(글, 이미지, 설정 등)와 데이터베이스의 내용은 컨테이너가 삭제되어도 사라지면 안 됩니다. 그래서 Docker 볼륨이라는 안전한 저장 공간을 만들어 데이터를 영구적으로 보관합니다.

  1. 데이터베이스 데이터 저장용 볼륨 생성:
    sudo docker volume create wordpress_db_data
  2. WordPress 파일 저장용 볼륨 생성: (테마, 플러그인, 업로드 파일 등)
    sudo docker volume create wordpress_files
  • docker volume create: Docker 볼륨을 생성하는 명령어입니다.
  • wordpress_db_data, wordpress_files: 우리가 만들 볼륨들의 이름입니다. 기억하기 쉬운 이름으로 정했습니다.

3단계: 데이터베이스 컨테이너 실행하기 (MariaDB 사용)

WordPress는 글이나 설정 등을 저장할 데이터베이스가 필요합니다. MySQL과 호환되는 MariaDB를 사용해 보겠습니다.

sudo docker run -d \
    --name wordpress-db \
    --network wordpress-net \
    -v wordpress_db_data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=매우_안전한_루트_비밀번호 \
    -e MYSQL_DATABASE=wordpress \
    -e MYSQL_USER=wordpressuser \
    -e MYSQL_PASSWORD=매우_안전한_사용자_비밀번호 \
    --restart=always \
    mariadb:latest

명령어 설명 (중요!):

  • sudo docker run: Docker 컨테이너를 실행합니다.
  • -d: 컨테이너를 백그라운드에서 실행합니다.
  • --name wordpress-db: 컨테이너의 이름을 wordpress-db로 지정합니다. (나중에 관리하기 편해요)
  • --network wordpress-net: 1단계에서 만든 wordpress-net 네트워크에 연결합니다.
  • -v wordpress_db_data:/var/lib/mysql: 2단계에서 만든 wordpress_db_data 볼륨을 컨테이너 내부의 /var/lib/mysql 디렉토리(MariaDB 데이터 저장 경로)와 연결합니다. 데이터 영구 보존의 핵심!
  • -e MYSQL_ROOT_PASSWORD=매우_안전한_루트_비밀번호: MariaDB의 최고 관리자(root) 비밀번호를 설정합니다. 매우_안전한_루트_비밀번호 부분은 꼭 복잡하고 안전한 비밀번호로 바꾸세요!
  • -e MYSQL_DATABASE=wordpress: WordPress가 사용할 데이터베이스 이름을 wordpress로 미리 생성합니다.
  • -e MYSQL_USER=wordpressuser: WordPress가 접속할 때 사용할 사용자 이름을 wordpressuser로 생성합니다.
  • -e MYSQL_PASSWORD=매우_안전한_사용자_비밀번호: 위 사용자의 비밀번호를 설정합니다. 매우_안전한_사용자_비밀번호 부분도 꼭 안전한 비밀번호로 바꾸세요! (루트 비밀번호와 다르게 설정하는 것이 좋습니다)
  • --restart=always: 서버가 재부팅되거나 Docker가 다시 시작될 때 이 컨테이너도 자동으로 다시 시작하도록 설정합니다.
  • mariadb:latest: MariaDB 공식 이미지의 최신 버전을 사용합니다. Docker Hub에서 이미지를 자동으로 다운로드합니다.

🚨 중요: -e 옵션으로 설정한 비밀번호들을 꼭! 안전하게 기록해두세요. 특히 wordpressuser의 비밀번호는 다음 단계에서 필요합니다.


4단계: WordPress 컨테이너 실행하기

이제 드디어 WordPress 컨테이너를 실행할 차례입니다. 이 컨테이너가 실제 웹사이트를 보여주는 역할을 합니다.

sudo docker run -d \
    --name wordpress-app \
    --network wordpress-net \
    -p 9100:80 \
    -v wordpress_files:/var/www/html \
    -e WORDPRESS_DB_HOST=wordpress-db \
    -e WORDPRESS_DB_USER=wordpressuser \
    -e WORDPRESS_DB_PASSWORD=매우_안전한_사용자_비밀번호 \
    -e WORDPRESS_DB_NAME=wordpress \
    --restart=always \
    wordpress:latest

명령어 설명 (중요!):

  • sudo docker run -d: 컨테이너를 백그라운드에서 실행합니다.
  • --name wordpress-app: 컨테이너 이름을 wordpress-app으로 지정합니다.
  • --network wordpress-net: 1단계에서 만든 wordpress-net 네트워크에 연결합니다. (데이터베이스 컨테이너와 통신하기 위해)
  • -p 9100:80: 이 부분이 중요합니다! Lubuntu 서버의 9100번 포트로 들어오는 요청을 WordPress 컨테이너 내부의 80번 포트(웹 서버 기본 포트)로 연결(포워딩)합니다. NAS 역방향 프록시가 9100 포트로 접속하도록 설정할 것이기 때문에 이렇게 설정합니다.
  • -v wordpress_files:/var/www/html: 2단계에서 만든 wordpress_files 볼륨을 컨테이너 내부의 /var/www/html 디렉토리(WordPress 파일 저장 경로)와 연결합니다. WordPress 파일 영구 보존의 핵심!
  • -e WORDPRESS_DB_HOST=wordpress-db: WordPress에게 데이터베이스 서버의 주소를 알려줍니다. wordpress-db는 3단계에서 만든 데이터베이스 컨테이너의 이름입니다. 같은 네트워크 안에 있으므로 이름으로 접속 가능합니다.
  • -e WORDPRESS_DB_USER=wordpressuser: 3단계에서 생성한 데이터베이스 사용자 이름(wordpressuser)을 알려줍니다.
  • -e WORDPRESS_DB_PASSWORD=매우_안전한_사용자_비밀번호: 3단계에서 설정한 wordpressuser의 비밀번호를 알려줍니다. 반드시 3단계에서 설정한 비밀번호와 동일하게 입력하세요!
  • -e WORDPRESS_DB_NAME=wordpress: 3단계에서 생성한 데이터베이스 이름(wordpress)을 알려줍니다.
  • --restart=always: 이 컨테이너도 자동으로 다시 시작하도록 설정합니다.
  • wordpress:latest: WordPress 공식 이미지의 최신 버전을 사용합니다. 자동으로 다운로드됩니다.

5단계: NAS에서 역방향 프록시 설정하기

이 단계는 Lubuntu 서버가 아닌, 사용하고 계신 NAS의 관리자 페이지에서 설정해야 합니다. NAS 종류(Synology, QNAP 등)마다 설정 메뉴 이름과 방법이 조금씩 다르니, NAS의 설명서를 참고해 주세요.

일반적인 설정 항목:

  • 소스 (Source):
    • 프로토콜: HTTPS
    • 호스트 이름 (Hostname): word.aa.org
    • 포트: 443 (HTTPS 기본 포트)
  • 대상 (Destination / Target):
    • 프로토콜: HTTP (NAS에서 Lubuntu 서버까지는 암호화되지 않은 HTTP로 통신해도 괜찮습니다. 원하시면 HTTPS로 설정 가능하나, Lubuntu 쪽 설정이 더 필요할 수 있습니다.)
    • 호스트 이름 (Hostname) / IP 주소: Lubuntu 서버의 내부 IP 주소 (예: 192.168.1.100)
    • 포트: 9100 (4단계에서 -p 9100:80으로 설정한 포트 번호)

추가 설정:

  • HTTPS 인증서: NAS에서 word.aa.org 도메인에 대한 유효한 SSL/TLS 인증서(Let's Encrypt 등)를 설정하고 적용해야 합니다.
  • 헤더 설정 (필요시): Host, X-Forwarded-For, X-Forwarded-Proto 등의 헤더를 전달하도록 설정하는 옵션이 있다면 활성화하는 것이 좋습니다. (WordPress가 원래 요청 주소나 프로토콜을 인지하는 데 도움이 됩니다.)

이 NAS 설정이 완료되어야 https://word.aa.org로 접속할 수 있습니다.


6단계: WordPress 설치 완료 및 접속

모든 설정이 끝났습니다! 이제 웹 브라우저를 열고 주소창에 아래 주소를 입력하여 접속해 보세요.

https://word.aa.org

  • HTTPS 로 접속해야 합니다. NAS에서 HTTPS를 설정했기 때문입니다.
  • 접속하면 WordPress 초기 설치 화면이 나타날 것입니다. (언어 선택 화면)
  • 화면의 안내에 따라 사이트 제목, 관리자 사용자 이름, 관리자 비밀번호, 이메일 주소 등을 입력하고 WordPress 설치를 완료하세요.

 


문제 해결 팁:

  • 접속이 안 될 경우:
    1. Lubuntu 서버에서 Docker 컨테이너들이 정상적으로 실행 중인지 확인합니다:
      sudo docker ps
      wordpress-dbwordpress-app 컨테이너가 보여야 합니다.
    2. 컨테이너 로그를 확인하여 오류가 없는지 봅니다:
      sudo docker logs wordpress-app
      sudo docker logs wordpress-db
    3. Lubuntu 서버의 방화벽(ufw 등)에서 9100번 포트가 열려 있는지 확인합니다. (보통 내부 네트워크에서는 방화벽이 문제 되지 않지만, 확인해 볼 수 있습니다.)
      sudo ufw status
      (만약 ufw가 활성화되어 있다면 sudo ufw allow 9100 명령으로 포트를 열 수 있습니다.)
    4. NAS의 역방향 프록시 설정이 올바른지 다시 한번 확인합니다. (Lubuntu 서버 IP 주소, 포트 번호 9100 등)
    5. word.aa.org 도메인이 NAS의 공인 IP로 정확히 연결되었는지 확인합니다. (DNS 설정 확인)
  • WordPress 설치 화면에서 데이터베이스 연결 오류가 발생할 경우:
    1. 4단계 WordPress 컨테이너 실행 시 입력한 데이터베이스 정보(WORDPRESS_DB_HOST, WORDPRESS_DB_USER, WORDPRESS_DB_PASSWORD, WORDPRESS_DB_NAME)가 3단계 MariaDB 컨테이너 생성 시 사용한 정보와 일치하는지 다시 확인하세요. 특히 비밀번호 오타가 없는지 주의 깊게 보세요.
    2. 두 컨테이너가 같은 wordpress-net 네트워크에 연결되어 있는지 확인합니다. (docker inspect wordpress-appdocker inspect wordpress-db 명령으로 네트워크 정보를 볼 수 있습니다.)