워드프레스 블로그·홈페이지 만들기 (Docker)
워드프레스(WordPress)는 코딩 없이 블로그나 홈페이지를 만들 수 있는 프로그램입니다. Docker Compose로 워드프레스와 DB를 한 번에 띄우고, 도메인과 HTTPS까지 연결하는 방법입니다.
준비물
- 메모리 2GB 이상 서버 (Ubuntu)
- 도메인 (서버 IP로 연결해두기 — 웹사이트 띄우기의 "도메인 연결하기")
- Docker (Docker 설치하고 사용하기)
1. 설정 파일 만들기
mkdir ~/wordpress && cd ~/wordpress
nano compose.yaml
아래 내용을 붙여 넣고, 비밀번호 두 개를 각각 길고 복잡한 값으로 바꿉니다. (DB비밀번호는 두 곳에 같은 값)
services:
db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_DATABASE: wordpress
MARIADB_USER: wordpress
MARIADB_PASSWORD: DB비밀번호
MARIADB_ROOT_PASSWORD: 루트비밀번호
volumes:
- db:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: unless-stopped
depends_on:
- db
ports:
- "127.0.0.1:8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: DB비밀번호
WORDPRESS_DB_NAME: wordpress
volumes:
- wp:/var/www/html
volumes:
db:
wp:
DB는 포트를 아예 열지 않았고, 워드프레스는
127.0.0.1에만 연결했습니다. 외부에서는 아래의 Nginx를 통해서만 접속됩니다.
docker compose up -d
2. Nginx로 도메인 연결
Nginx가 없다면 설치합니다. (sudo apt install -y nginx)
sudo nano /etc/nginx/sites-available/example.com
example.com을 내 도메인으로 바꿔 넣습니다.
server {
listen 80;
server_name example.com www.example.com;
client_max_body_size 64M;
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 $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3. HTTPS 적용
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
방화벽(ufw)을 쓴다면 80·443을 열어둡니다. (방화벽 포트 열기)
4. 워드프레스 설치 화면
브라우저에서 https://내도메인으로 접속하면 언어 선택 화면이 나옵니다. 한국어를 고르고 사이트 제목, 관리자 아이디·비밀번호를 정하면 끝입니다. 관리 화면은 https://내도메인/wp-admin입니다.
설치 화면은 가장 먼저 접속한 사람이 진행할 수 있습니다. 3단계까지 끝냈다면 바로 설치를 마쳐주세요.
관리 팁
- 업데이트: 워드프레스 본체·테마·플러그인은 관리 화면에서 업데이트합니다. 오래된 플러그인은 해킹의 가장 흔한 원인이니 쓰지 않는 플러그인은 지우세요.
- 백업: 글과 설정은 DB에, 업로드한 이미지와 테마는
wp볼륨에 있습니다. 백업 플러그인을 쓰거나, 아래처럼 DB를 내보내 둡니다.
cd ~/wordpress
docker compose exec db mariadb-dump -u root -p wordpress > wp-db-$(date +%F).sql
(루트 비밀번호를 물어봅니다) 내려받는 방법은 서버 데이터 백업하기를 참고하세요.
잘 안 될 때
- 502 Bad Gateway —
docker compose ps로 컨테이너가 실행 중인지 확인하세요. - "Error establishing a database connection" —
compose.yaml의 두DB비밀번호가 같은지 확인하세요. 처음 실행한 뒤 비밀번호를 바꿨다면 DB에는 예전 값이 남아 있습니다. - HTTPS 적용 후 화면이 깨지거나 접속이 반복돼요 — Nginx 설정에
X-Forwarded-Proto줄이 있는지 확인하세요.