Infra

Docker로 워드프레스 설치하기 및 관련 이슈 정리

devMarco 2020. 12. 28. 21:19

개발한 웹사이트 (ket21.com)

외주 작업으로 웹사이트를 개발했다. 주로 정적 컨텐츠를 제공하는 웹사이트여서 워드프레스로 구성했다. 혼자 기획, 개발, 디자인을 직접 진행하여, 2주에 걸쳐 웹사이트를 완성하였다.(와이어 프레임, 로고 디자인까지 다했다.. 디자인이 제법 빡세다;;) 본 포스트에서는 도커+워드프레스 인프라를 세팅하는 과정과, 그 과정에서 생긴 이슈들을 간단히 정리하였다.

작업 내용

  • 백엔드 : AWS EC2에 docker+wordpress(php+apache), docker+mySQL 컨테이너 구성
  • 프론트엔드 : wordpress
  • 기획, 디자인

인프라 구성 절차

  1. 서버를 구성한다(저자는 aws ec2 사용)

    ssh -i xxx.pem ubuntu@xxx.xxx.xxx.xxx
  2. 도커를 설치한다.

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
  1. 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 업로드 설정파일
  1. 설정 완료. 웹 주소(aws 퍼블릭 주소)로 접근하면 워드프레스 설정 창이 뜬다. 이후로 워드프레스로 웹사이트를 개발하면 완성이다.

워드프레스+도커 개발 과정에서 발생한 이슈들

  1. 테마 용량이 커서 업로드되지 않는다.

    • php 파일 업로드 크기 관련 설정을 수정하여 해결
  2. 웹사이트 제작 과정에서 서버가 자주 다운

    • cpu 사용율 100% 찍고 장시간 응답하지 않음
    • 서버 사양 문제로 추정하여(문제의 서버가 aws 프리티어), 서버 사양을 업그레이드함
  3. 서버 재부팅 후 IP 문제

    • AWS EC2는 탄력적 ip주소를 지정하지 않으면 재부팅시 IP가 변경되는데, 워드프레스는 ip가 바뀔 경우 ip와 관련해 다음 이슈가 생긴다.
      • 이미지 등 업로드한 파일 링크 깨짐 현상
      • IP 관련 설정 변경(wp_options에서 siteurl 및 home ip 값 변경), wp-config.php 파일 변경 필요
      • IP가 변경되지 않도록 탄력적 ip 사용으로 해결
  4. 도커 db 외부 접근 문제

    • 참고 : https://bluese05.tistory.com/21, https://dev-r.tistory.com/9
    • docker exec -i -t
    • 외부(intellij) 접근 하려면 ip를 알아야 한다. ssh터널 접속 후 ip:3306포트로 접근
    • 도커를 거쳐서 DB에 접근해야되므로 외부 접근 및 관리에 손이 더 많이가며 DB 백업, 라이브 중 수정 및 신속한 이슈 대응이 DB 직접 사용에 비해 어렵다.
  5. 맥 로컬 관련 이슈가 있다. 맥에선 컨테이너 ip로 직접 접근이 불가하다. 127.0.0.1로 간접 접근

  6. 이미지 파일 업로드 및 플러그인 삭제가 동작하지 않는다.

    • 도커 권한 문제로 발생하였음. 로컬에서 프로덕션으로 업로드한 후 권한 문제가 생겨 다음 스크립트를 실행하였음

    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