콘텐츠로 건너뛰기
Home » 워드프레스 무료 호스팅 (완): 워드프레스 설치(feat. Docker)

워드프레스 무료 호스팅 (완): 워드프레스 설치(feat. Docker)

이번 글에서는 docker를 사용해 워드프레스와 데이터베이스 설치, 그리고 ssl 인증까지 한 번에 완료하는 방법을 설명한다. 리눅스에 워드프레스를 설치하는 방법은 참 많다. 데이터베이스 프로그램도 선택할 수 있고, 웹서비스 프로그램도 종류가 다양하다. 하지만 워드프레스 하나만으로 머리가 아픈 우리에게 그 이상의 선택권은 고문과 다르지 않다.

다행히 docker라는 프로그램을 활용하면 별다른 고민 없이 한 번에 자잘한 설정들을 끝낼 수 있다. 유튜브 yalco라는 채널의 설명을 빌리자면 모든 설정이 끝난 프로그램의 이미지를 업로드해 둔 공간이 docker hub이다. 우리는 이곳에서 그 이미지를 다운로드하기만 하면 복잡한 설정 없이 원하는 결과를 얻을 수 있다. 자 그럼 설치를 시작하자.


워드프레스 무료 호스팅 (1):오라클 클라우드 가입 및 초기 설정

워드프레스 무료 호스팅 (2): 오라클 클라우드 가상 컴퓨터 생성

워드프레스 무료 호스팅 (3): 가상컴퓨터에 SSH로 접속

워드프레스 무료 호스팅 (4): 리눅스 문서 편집(feat. vim)

워드프레스 무료 호스팅 (5): 도메인 구입 및 설정 (HOSTING.KR)

Docker 설치

설치 방법은 공식 홈페이지의 안내를 참고하였다.
도커를 사용하기 위해서 우선 도커를 설치해야 한다. 일단 ssh로 가상컴퓨터에 접속하자.

패키지 설치

apt 프로그램의 패키지를 업데이트 후, https통신으로 외부 저장소 파일을 불러올 수 있는 패키지를 설치한다.


sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

GPG키 입력

도커의 공식 GPG 키를 입력한다. *GPG란 GNU Privacy Guard의 약자로, 개인정보를 암호화하는 데 사용되는 공개키 암호화 시스템이라고 한다.

sudo install -m 0755 -d /etc/apt/keyrings 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

외부 저장소 세팅

echo \
 "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

최신버전 Docker 다운로드

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

중간에 다운로드 실행 여부를 묻는 질문이 나오면 y를 입력하고 엔터를 친다. 중간중간 보라색 화면이 나올 때 앤터를 치면 다음으로 넘어간다.

설치 확인

sudo docker run hello-world
도커 설치 확인 화면

위와 같은 결과가 나온다면 성공이다.

Docker-compose 설치

docker-compose 다운로드 및 실행가능 파일로 설정

아래 명령 중 download/2.20.3 이 부분이 도커 컴포즈의 버전이고 이는 2023년 8월 기준 최신 버전이다. 이 링크에서 최신 버전을 확인하고 그에 맞게 숫자를 바꾸어 명령을 실행하면 최신 버전을 설치할 수 있다.

sudo curl -L "https://github.com/docker/compose/releases/download/2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

설치 확인

이 버전에서 docker-compose 명령어는 통하지 않는다. docker compose를 기억하자.

sudo docker compose version
docker compose 설치 완료 화면

워드프레스 설치용 docker-compose.yml 작성

원하는 디렉터리로 이동하여 파일을 생성한다. 나는 wordpress라는 디렉터리를 만들어서 작업하겠다.

mkdir wordpress
cd wordpress
vim docker-compose.yml

yml 파일을 생성한 후 아래 내용을 붙여 넣는다. vim 사용법을 지난 글에서 설명하였지만, 아무래도 본인이 익숙한 편집기로 수정하는 것이 좋을 것이다. 아래 코드에서 붉은 글씨로 강조한 부분을 자신의 정보로 변경한 후 vim에 붙여 넣자. 물론 비밀번호도! 붙여 넣기는 단축키 p 또는 마우스 우클릭이다.

services:
    nginx: #웹서버 설정
        container_name: nginx
        image: nginxproxy/nginx-proxy
        restart: unless-stopped
        ports:
            - 80:80 #hhtp 연결 포트
            - 443:443 #https 연결 포트
        volumes:
            - /var/run/docker.sock:/tmp/docker.sock:ro
            - /var/docker/nginx/html:/usr/share/nginx/html
            - /var/docker/nginx/certs:/etc/nginx/certs
            - /var/docker/nginx/vhost:/etc/nginx/vhost.d
        logging:
            options:
                max-size: "10m"
                max-file: "3"

    letsencrypt-companion: #ssl인증 설정
        container_name: letsencrypt-companion
        image: jrcs/letsencrypt-nginx-proxy-companion
        restart: unless-stopped
        volumes_from:
            - nginx
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - /var/docker/nginx/acme:/etc/acme.sh
        environment:
            DEFAULT_EMAIL: myemail@email.com

    website: #워드프레스 설정
        image: wordpress
        container_name: website
        volumes:
            - ./website:/var/www/html #루트 디렉토리가 website로 매핑 된다. 에드센스 설정시 ads.txt파일 여기 넣으면 됨.
        environment:
            WORDPRESS_DB_HOST: website-db:3306
            WORDPRESS_DB_USER: website
            WORDPRESS_DB_PASSWORD: password
            WORDPRESS_DB_NAME: website
            VIRTUAL_HOST: mydomain.com, www.mydomain.com
            LETSENCRYPT_HOST: mydomain.com, www.mydomain.com
        depends_on:
            - website-db
        restart: unless-stopped

    website-db:
        image: mariadb
        container_name: website-db
        volumes:
            - ./website-db:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: rootpassword
            MYSQL_DATABASE: website
            MYSQL_USER: website
            MYSQL_PASSWORD: password
        restart: unless-stopped

복사가 끝나면 Esc 키 입력 후 :wq!을 입력하여 저장하고 종료한다.

워드프레스 설치

sudo docker compose up -d

자동으로 모든 설치가 아래와 같이 진행된다.

docker compose up -d 명령 화면

워드프레스 접속

설치가 완료되었다면 인터넷 브라우저를 열고 mydomain.com/wp-admin/install.php로 접속하자. 아래와 같이 워드프레스 기본 설정화면이 나타난다. 한국어를 선택한다.

워드프레스 언어 선택 화면

기본 정보를 입력한다. 이곳에 입력하는 내용은 나중에 수정할 수 있으니 너무 고민할 필요는 없다.

워드프레스 기본 설정 화면

정보 입력 후 로그인을 하면 아래와 같은 화면이 나타난다. 이제 입맛대로 테마를 고르고 플러그인을 설정하고 원하는 글을 마음껏 쓸 수 있다.

워드프레스 관리자 페이지

마치며

앞서 작성한 다섯 개의 글에 비하면 워드프레스 설치가 너무나 쉬워서 놀랐을 수도 있다. 나는 docker compose up -d 명령 한방에 필요한 모든 것이 일사천리로 설치되는 것이 너무나 신기했다. 무료로 호스팅 한 번 해보겠다고 여러 블로그를 뒤져가며 챗 지피티를 나무라며 보냈던 시간들이 허무할 정도였다. 이 완벽한 솔루션은 programount라는 사이트에서 발견하였으니 한 번 참고해 보시길 바란다. 설치에 성공하였으니, 이제 본격적으로 글쓰기에 돌입해 보자!