Skip to content
dev-marco-song
Go back

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

Edit page

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

작업 내용

인프라 구성 절차

  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

Edit page
Share this post on:

Previous Post
[Node.js] Nodemon에서 tsc-watch 로 변경하여 빌드속도 개선하기
Next Post
1년간 함께한 스타트업을 떠나며