참고로 여기 기재된 url은 sample입니다.
cloudflare에서 저렴한 도메인을 발급해서 사용을 추천드립니다. 인증서도 무료제공이 되면 어디보다 저렴합니다.
지원도 잘 됩니다.저는 2009년도에 나온 atom cpu, 2g (DDR2) 메모리가 탑재된 노트북에 lubuntu를 설치해서 연습중 입니다.
이제 시작 입니다~
목표:
- Lubuntu 서버에 Docker를 사용하여 WordPress와 데이터베이스(MariaDB)를 설치합니다.
- 데이터는 Docker 외부(Lubuntu 호스트)에 안전하게 저장합니다. (볼륨 사용)
word.aa.org도메인을 통해 접속합니다.- 외부 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 볼륨이라는 안전한 저장 공간을 만들어 데이터를 영구적으로 보관합니다.
- 데이터베이스 데이터 저장용 볼륨 생성:
sudo docker volume create wordpress_db_data - 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 설치를 완료하세요.
문제 해결 팁:
- 접속이 안 될 경우:
- Lubuntu 서버에서 Docker 컨테이너들이 정상적으로 실행 중인지 확인합니다:
sudo docker pswordpress-db와wordpress-app컨테이너가 보여야 합니다. - 컨테이너 로그를 확인하여 오류가 없는지 봅니다:
sudo docker logs wordpress-app sudo docker logs wordpress-db - Lubuntu 서버의 방화벽(ufw 등)에서 9100번 포트가 열려 있는지 확인합니다. (보통 내부 네트워크에서는 방화벽이 문제 되지 않지만, 확인해 볼 수 있습니다.)
(만약 ufw가 활성화되어 있다면sudo ufw statussudo ufw allow 9100명령으로 포트를 열 수 있습니다.) - NAS의 역방향 프록시 설정이 올바른지 다시 한번 확인합니다. (Lubuntu 서버 IP 주소, 포트 번호 9100 등)
word.aa.org도메인이 NAS의 공인 IP로 정확히 연결되었는지 확인합니다. (DNS 설정 확인)
- Lubuntu 서버에서 Docker 컨테이너들이 정상적으로 실행 중인지 확인합니다:
- WordPress 설치 화면에서 데이터베이스 연결 오류가 발생할 경우:
- 4단계 WordPress 컨테이너 실행 시 입력한 데이터베이스 정보(
WORDPRESS_DB_HOST,WORDPRESS_DB_USER,WORDPRESS_DB_PASSWORD,WORDPRESS_DB_NAME)가 3단계 MariaDB 컨테이너 생성 시 사용한 정보와 일치하는지 다시 확인하세요. 특히 비밀번호 오타가 없는지 주의 깊게 보세요. - 두 컨테이너가 같은
wordpress-net네트워크에 연결되어 있는지 확인합니다. (docker inspect wordpress-app와docker inspect wordpress-db명령으로 네트워크 정보를 볼 수 있습니다.)
- 4단계 WordPress 컨테이너 실행 시 입력한 데이터베이스 정보(
'IT 관련 > 우분투(Ubuntu) 이것저것' 카테고리의 다른 글
| Ubuntu 방화벽 설정 및 해제 방법 (0) | 2025.04.03 |
|---|---|
| 우분투 OS 종류와 특징 및 사용 사례 (0) | 2025.04.02 |
| 리눅스 터미널 명령어 (0) | 2025.03.29 |
| 필수 프로그램 및 설치 방법 (0) | 2025.03.06 |
| 리눅스 필수 및 주요 프로그램 정리 (0) | 2025.03.06 |