Infra
Docker로 워드프레스 설치하기 및 관련 이슈 정리
devMarco
2020. 12. 28. 21:19
외주 작업으로 웹사이트를 개발했다. 주로 정적 컨텐츠를 제공하는 웹사이트여서 워드프레스로 구성했다. 혼자 기획, 개발, 디자인을 직접 진행하여, 2주에 걸쳐 웹사이트를 완성하였다.(와이어 프레임, 로고 디자인까지 다했다.. 디자인이 제법 빡세다;;) 본 포스트에서는 도커+워드프레스 인프라를 세팅하는 과정과, 그 과정에서 생긴 이슈들을 간단히 정리하였다.
작업 내용
- 백엔드 : AWS EC2에 docker+wordpress(php+apache), docker+mySQL 컨테이너 구성
- 프론트엔드 : wordpress
- 기획, 디자인
인프라 구성 절차
-
서버를 구성한다(저자는 aws ec2 사용)
ssh -i xxx.pem ubuntu@xxx.xxx.xxx.xxx
-
도커를 설치한다.
- 다음 쉘스크립트를 한 줄씩 실행한다.(참고 : https://blog.cosmosfarm.com/archives/248/우분투-18-04-도커-docker-설치-방법/)
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo apt install docker-compose
- docker-compose.yml 만들고 docker-compose up -d로 컨테이너 설치 및 실행한다.
version: '2'
services:
db:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306 // mysql 기본 설정
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- ./html:/var/www/html
- ./upload.ini:/usr/local/etc/php/conf.d/uploads.ini // php 업로드 설정파일
- 설정 완료. 웹 주소(aws 퍼블릭 주소)로 접근하면 워드프레스 설정 창이 뜬다. 이후로 워드프레스로 웹사이트를 개발하면 완성이다.
워드프레스+도커 개발 과정에서 발생한 이슈들
-
테마 용량이 커서 업로드되지 않는다.
- php 파일 업로드 크기 관련 설정을 수정하여 해결
-
웹사이트 제작 과정에서 서버가 자주 다운
- cpu 사용율 100% 찍고 장시간 응답하지 않음
- 서버 사양 문제로 추정하여(문제의 서버가 aws 프리티어), 서버 사양을 업그레이드함
-
서버 재부팅 후 IP 문제
- AWS EC2는 탄력적 ip주소를 지정하지 않으면 재부팅시 IP가 변경되는데, 워드프레스는 ip가 바뀔 경우 ip와 관련해 다음 이슈가 생긴다.
- 이미지 등 업로드한 파일 링크 깨짐 현상
- IP 관련 설정 변경(wp_options에서 siteurl 및 home ip 값 변경), wp-config.php 파일 변경 필요
- IP가 변경되지 않도록 탄력적 ip 사용으로 해결
- AWS EC2는 탄력적 ip주소를 지정하지 않으면 재부팅시 IP가 변경되는데, 워드프레스는 ip가 바뀔 경우 ip와 관련해 다음 이슈가 생긴다.
-
도커 db 외부 접근 문제
- 참고 : https://bluese05.tistory.com/21, https://dev-r.tistory.com/9
- docker exec -i -t
- 외부(intellij) 접근 하려면 ip를 알아야 한다. ssh터널 접속 후 ip:3306포트로 접근
- 도커를 거쳐서 DB에 접근해야되므로 외부 접근 및 관리에 손이 더 많이가며 DB 백업, 라이브 중 수정 및 신속한 이슈 대응이 DB 직접 사용에 비해 어렵다.
-
맥 로컬 관련 이슈가 있다. 맥에선 컨테이너 ip로 직접 접근이 불가하다. 127.0.0.1로 간접 접근
- https://docs.docker.com/docker-for-mac/networking/#i-cannot-ping-my-containers
- https://stackoverflow.com/questions/47261308/docker-access-container-ip-port-directly
- docker mac access mysql inside container 로 검색하여 다음과 같은 답을 얻음.
- https://stackoverflow.com/questions/32360687/connect-to-docker-mysql-container-from-localhost
-
이미지 파일 업로드 및 플러그인 삭제가 동작하지 않는다.
- 도커 권한 문제로 발생하였음. 로컬에서 프로덕션으로 업로드한 후 권한 문제가 생겨 다음 스크립트를 실행하였음
https://www.python2.net/questions-519446.htm
docker exec -it ssamwordpress_wordpress_1 /bin/sh chown -R www-data:www-data /var/www/html/wp-content/uploads