웹사이트 검색

Ubuntu 16.04에서 Nginx 및 PHP-FPM으로 Wordpress 도커화


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 16.04(Xenial Xerus)

이 페이지에서

  1. 1단계 - Docker 설치
  2. 2단계 - Docker-Compose 설치
  3. 3단계 - Wordpress 설정
  4. 4단계 - Docker-Compose 구성
  5. 5단계 - Docker-compose 실행\n
  6. 6단계 - Wordpress 설치
  7. 7단계 - Docker 컨테이너 액세스
  8. 참조

Docker-Compose는 다중 컨테이너 도커 컨테이너를 단일 서비스인 것처럼 정의하고 관리하기 위한 명령줄 도구입니다. Compose는 Python으로 작성되었으며 Python pip 명령으로 설치할 수 있습니다. Compose를 사용하면 단일 명령으로 여러 도커 컨테이너를 실행할 수 있습니다. 이를 통해 개발, 테스트 및 스테이징 환경에 적합한 컨테이너를 서비스로 만들 수 있습니다.

이 튜토리얼에서는 docker-compose를 사용하는 방법을 단계별로 안내합니다. Nginx, MySQL 및 PHP-FPM과 함께 Wordpress를 배포합니다. 각 서비스에는 자체 컨테이너가 있으며 도커 허브 레지스트리의 이미지를 사용합니다. 도커 이미지에서 컨테이너를 만들고 docker-compose로 모든 컨테이너를 관리하는 방법을 보여드리겠습니다.

전제 조건

  • 우분투 16.04
  • 루트 권한\n

1단계 - 도커 설치

apt 명령을 사용하여 수동으로 docker 및 docker compose를 설치하여 처음부터 시작하겠습니다.

시작하기 전에 Ubuntu 리포지토리를 업데이트하고 최신 업데이트를 설치합니다.

sudo apt-get update
sudo apt-get upgrade

기본적으로 docker는 Ubuntu 리포지토리에서 사용할 수 있으므로 계속해서 바로 설치할 수 있습니다.

sudo apt-get install -y docker.io

설치가 완료되면 docker를 시작하고 부팅 시 자동으로 시작되도록 추가합니다.

systemctl start docker
systemctl enable docker

이제 아래 명령을 사용하여 도커 설치를 테스트합니다.

docker run hello-world

docker에서 hello-world를 볼 수 있습니다.

2단계 - Docker-Compose 설치

Docker-compose는 Python으로 작성된 스크립트이며 PyPI Python 리포지토리에서 사용할 수 있으며 Python pip로 설치할 수 있습니다. 따라서 먼저 시스템에 python 및 python pip를 설치해야 합니다.

python 및 python-pip를 설치합니다.

sudo apt-get install -y python python-pip

다음으로 pip 명령을 사용하여 docker-compose를 설치합니다.

pip install docker-compose

설치 프로세스가 완료될 때까지 기다리십시오. 그런 다음 docker-compose 명령으로 설치를 확인합니다.

docker-compose -v

docker-compose 버전을 얻을 수 있습니다.

3단계 - 워드프레스 설정

이제 docker 및 docker-compose가 시스템에 설치됩니다. 이 단계에서는 WordPress 프로젝트에 대한 docker-compose 환경을 만들고 설정하는 방법을 보여줍니다.

Nginx를 웹 서버로 사용하고 MySQL 데이터베이스용 MariaDB를 docker-compose에서 관리하는 도커 컨테이너로 사용하여 Wordpress PHP 애플리케이션을 배포합니다. 각 애플리케이션(Wordpress, Nginx 및 MySQL)은 자체 컨테이너에서 실행되며 아래 목록을 볼 수 있습니다.

- Nginx: 공식 도커 이미지, 최신 버전 nginx: 최신을 사용합니다.

- Wordpress: Wordpress는 docker-hub에서 일부 도커 이미지를 제공하며 PHP-FPM 7.0이 있는 WordPress 4.7을 사용할 것입니다.

- MySQL: 최신 버전인 MariaDB 공식 컨테이너를 사용합니다.

따라서 도커 허브 레지스트리에서 3개의 도커 이미지가 필요합니다.

docker를 루트로 실행하지 않고 일반 Linux 사용자를 사용합니다. 따라서 아래 명령을 사용하여 새 사용자를 만드십시오(여기에서 다른 사용자 이름을 사용해도 됩니다. 사용자가 아직 존재하지 않는지 확인하십시오. 다른 이름을 선택하는 경우 이 자습서에 나오는 모든 명령에서 이름을 변경해야 합니다).

useradd -m -s /bin/bash hakase
passwd hakase

이제 사용자가 docker 명령을 사용할 수 있도록 사용자를 docker 그룹에 추가하고 docker 서비스를 다시 시작합니다.

usermod -a -G docker hakase
systemctl restart docker

사용자 hakase에 로그인하고 WordPress 프로젝트를 위한 새 디렉터리를 만듭니다.

su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/

다음으로 docker-compose.yml이라는 새 파일을 만들고 프로젝트의 새 디렉터리를 만듭니다. 아래 명령을 입력하십시오.

touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/

프로젝트의 파일 및 디렉토리 목록:

- docker-compose.yml: docker-compose 구성 파일로, 새 docker-compose 프로젝트를 시작할 때 만들어야 합니다.

- nginx/: 이 디렉토리는 가상 호스트 등과 같은 추가 nginx 구성에 사용됩니다.

- db-data/: mysql 데이터의 볼륨/디렉토리입니다. data /var/lib/mysql의 sql은 db-data 디렉토리에 마운트됩니다.

- logs/: 애플리케이션 로그, nginx, mariadb 및 php-fpm을 위한 디렉토리.

- wordpress/: 모든 wordpress 파일은 해당 디렉토리에서 사용할 수 있습니다.

nginx 디렉토리에서 wordpress 가상 호스트에 대한 새 구성 파일을 만듭니다.

새 파일 wordpress.conf를 만듭니다.

vim nginx/wordpress.conf

아래에 구성 붙여넣기:

server {
    listen 80;
    server_name wp-hakase.co;

    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/hakase-access.log;
    error_log /var/log/nginx/hakase-error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

파일을 저장하고 vim을 종료합니다.

4단계 - Docker-Compose 구성

이 단계에서는 docker-compose.yml 파일 편집을 시작합니다. docker-compose 프로젝트를 시작하려면 먼저 docker-compose.yml 파일을 아래와 같이 생성해야 합니다.

vim으로 docker-compose.yml을 편집합니다.

vim docker-compose.yml

서비스를 정의하십시오. 첫 번째 줄에서 Nginx를 정의합니다. 최신 버전인 Nginx 공식 도커 이미지를 사용하고 있으며 컨테이너의 포트 80과 호스트의 포트 80에 대한 포트 매핑을 구성합니다. 다음으로 도커 볼륨, Nginx 가상 호스트 구성용 볼륨, Nginx 로그 파일용 볼륨 및 웹 루트 디렉토리 볼륨 /var/www/html을 구성합니다. Nginx 컨테이너는 WordPress 컨테이너에 연결됩니다.

아래에 구성 붙여넣기:

nginx:
    image: nginx:latest
    ports:
        - '80:80'
    volumes:
        - ./nginx:/etc/nginx/conf.d
        - ./logs/nginx:/var/log/nginx
        - ./wordpress:/var/www/html
    links:
        - wordpress
    restart: always

다음으로 MySQL 서버를 정의합니다. 최신 버전인 MariaDB 이미지를 사용하고 있습니다. 포트 3306에서 컨테이너에 대한 포트 매핑을 구성하고 환경 변수 MYSQL_ROOT_PASSWORD를 사용하여 MySQL 루트 암호를 구성합니다. 마지막으로 MySQL 데이터 디렉터리에 대한 컨테이너 볼륨을 구성합니다.

아래에 구성 붙여넣기:

mysql:
    image: mariadb
    ports:
        - '3306:3306'
    volumes:
        - ./db-data:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=aqwe123
    restart: always

그런 다음 PHP-FPM 7.0이 설치된 WordPress 4.7 도커 이미지를 사용하여 WordPress 서비스를 구성합니다. 포트 9000에서 PHP-fpm에 대한 포트를 구성하고 웹 디렉토리 /var/www/html에 대한 도커 볼륨을 호스트 디렉토리 wordpress로 활성화하고 WordPress 환경 변수를 정의하여 데이터베이스를 설정하고 WordPress 서비스를 mysql에 연결합니다.

아래에 구성 붙여넣기:

wordpress:
    image: wordpress:4.7.1-php7.0-fpm
    ports:
        - '9000:9000'
    volumes:
        - ./wordpress:/var/www/html
    environment:
        - WORDPRESS_DB_NAME=wpdb
        - WORDPRESS_TABLE_PREFIX=wp_
        - WORDPRESS_DB_HOST=mysql
        - WORDPRESS_DB_PASSWORD=aqwe123
    links:
        - mysql
    restart: always

docker-compose.yml 파일에 세 부분을 추가한 후 파일을 저장하고 vim 편집기를 종료합니다.

docker-compose 구성이 준비되었습니다.

5단계 - Docker-compose 실행

docker compose로 새 컨테이너 만들기를 시작합니다. wordpress-compose 디렉토리로 이동하여 작성 파일을 기반으로 새 컨테이너를 시작합니다.

cd ~/wordpress-compose/
docker-compose up -d

명령 결과를 볼 수 있습니다. 3개의 컨테이너가 생성되었습니다. ps 옵션을 사용하여 컨테이너 상태를 확인합니다.

docker-compose ps

결과는 다음과 같습니다.

컨테이너의 로그 출력을 보려면 아래 명령을 사용할 수 있습니다.

docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress

컨테이너 로그:

참고:
WordPress 컨테이너 로그에 MySQL 연결이 거부되었다는 오류가 표시되면 무시하세요.

6단계 - 워드프레스 설치

이 단계를 수행하기 전에 시스템에서 사용 가능한 포트/열린 포트를 확인하십시오. 3개의 포트(포트 80, 3306 및 포트 9000)가 열려 있는지 확인합니다.

netstat -plntu

결과는 다음과 같습니다.

이제 웹 브라우저를 열고 서버 URL 또는 IP 주소를 입력하십시오.

WordPress 설치 페이지를 볼 수 있습니다. 언어를 선택하고 계속을 클릭합니다.

사이트 제목, 관리 사용자 및 암호, 이메일 주소와 같은 웹사이트 세부 정보를 입력한 다음 Wordpress 설치를 클릭합니다.

Wordpress 관리 대시보드로 리디렉션됩니다.

그리고 이것은 내 WordPress 샘플 게시물 hello world입니다.

Wordpress는 docker-compose로 설치되었습니다.

7단계 - Docker 컨테이너에 액세스

이것은 docker-compose를 사용하여 컨테이너에 액세스하는 방법에 대한 추가 단계입니다. 모든 컨테이너가 사용 가능한지 확인하고 해당 상태를 표시합니다.

docker-compose ps

이미 3개의 컨테이너가 있으므로 이제 각 컨테이너에 로그인을 시도할 수 있습니다. docker-compose 명령을 사용하여 첫 번째 Nginx 컨테이너에 로그인합니다.

docker-compose exec nginx bash

nginx: docker-compose 파일 docker-compose.yml의 서비스 이름

bash: bash 쉘 명령 실행

이제 WordPress 가상 호스트 구성을 확인하십시오.

cat /etc/nginx/conf.d/wordpress.conf

파일은 컨테이너에서 사용할 수 있습니다.

다음으로 mysql 컨테이너에 로그인한 다음 compose 파일의 암호를 사용하여 mysql 셸에 로그인합니다.

docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD

데이터베이스 목록을 참조하십시오.

show databases;

WordPress 데이터베이스가 표시됩니다.

WordPress 컨테이너에서 모든 WordPress 파일을 볼 수 있습니다.

docker-compose exec wordpress bash
ls -lah

모든 컨테이너에 액세스할 수 있습니다.

참조

  • https://github.com/yuzukiseo/hakase-labs