메뉴 닫기

[OCI]: DOCKER로 MYSQL, WORDPRESS 설치

MYSQL, WORDPRESS 설치

MYSQL, WORDPRESS 설치 하기 위하여 NGINX 를 설치해준 docker-compose.yml 파일을 다시 편집하기 위해서 열어줍니다.

sudo vim docker-compose.yml

docker-compose 파일 설정

services:
  db:
    image: mysql:latest
    container_name: db
    restart: unless-stopped
    ports:
      - "3306:3306"
    env_file: .env
    environment:
     - MYSQL_DATABASE=wordpress
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - web-network


  wordpress:
    image: wordpress:6.2.0-php8.2-fpm
    container_name: wordpress
    restart: unless-stopped
    env_file: .env
    environment:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=$MYSQL_USER
      - WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD
      - WORDPRESS_DB_NAME=wordpress
    volumes:
      - wordpress:/var/www/html
    networks:
      - web-network

  webserver:
    image: nginx:latest
    container_name: webserver
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./nginx-conf:/etc/nginx/conf.d
      - wordpress:/var/www/html #nginx에도 wordpress 파일을 access 할 수 있도록 volume container를 추가해 줍니다.
    networks:
      - web-network

volumes:
  db_data:
  wordpress:

networks:
  web-network:
    driver: bridge
  • env_file: .env : 환경변수 파일을 추가해 줍니다. 여기서는 mysql의 루트 비밀번호와 워드프레스 계정 이름, 계정 비밀번호를 설정해줄 예정 입니다.
  • -MYSQL_DATABASE=wordpress : docker가 mysql 컨테이너를 만들때 wordpress 라는 이름의 database를 같이 만들어 줍니다.
  • -db_data:/var/lib/mysql : mysql의 data가 저장되는 docker의 volume container를 만들어 줍니다.
  • image: wordpress:6.2.0-php8.2-fpm : 요항목은 wordpress 컨테이너를 설치해 주는데 php가 같이 묶여있는 워드프레스 컨테이너를 설치해 주었습니다.
  • – WORDPRESS_DB_HOST=db:3306 : wordpress 의 database 호스트를 설정해 줍니다. 앞에서 만들어준 mysql db 이름을 써주었고 접속 포트 3306번으로 접속합니다.
  • – WORDPRESS_DB_USER=$MYSQL_USER : wordpress 에서 사용하는 mysql 유저이름 입니다. 환경설정 파일에서 유저이름을 불러옵니다.
  • – WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD :위의 유저의 비밀번호 입니다. 이것도 환경설정 파일(.env)에서 불러옵니다.
  • – WORDPRESS_DB_NAME=wordpress : mysql에서 만들어둔 database이름 입니다. wordpress에서 사용 합니다.
  • – wordpress:/var/www/html : wordpress에서 기본적으로 시작되는 디렉토리를 대상으로 wordpress라는 이름의 docker volume container를 생성해 줍니다.
  • volumes: 항목아래 db_data:, wordpress: 를 추가해서 docker의 volume container를 생성합니다.

MY_SQL 환경설정(.env) 파일 생성

MYSQL_ROOT_PASSWORD=your_root_passoword
MYSQL_USER=your_user_name
MYSQL_PASSWORD=your_user_password

.env 파일을 만들어서 위의 내용을 입력해 줍니다. MYSQL에서 사용되는 루트 패스워드와 유저이름, 유저 패스워드입니다.

nginx.conf 파일 설정 변경

server {
        listen 80;

        index index.php index.html index.htm;
        server_name _;
        root /var/www/html;
        
        location ~ /.well-known/acme-challenge {
                allow all;
                root /var/www/html;
        }

        location / {
                 try_files $uri $uri/ /index.php$is_args$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;
        }
}
  • root /var/www/html : root 디렉토리를 wordpress index.php 파일이 있는 위치로 변경 합니다.
  • location ~ /.well-known/acme-challenge : 나중에 SSL 인증서 임시파일용으로 미리 만들어 둡니다. CERBOT으로 사이트 권한 확인용 으로 사용 예정 입니다.
  • location /{} : 접속 하는 요청에 대하여 try_file 뒤에 있는 path 순서대로 반환합니다.
  • location ~\.php$ : ~ 로 시작하는 것은 정규식(regular expression)을 사용 한다는 의미입니다. 정규식에서 \.php$ 의미는 .php로 끝나는 파일을 의미합니다. 따라서 php 파일의 경우 {} 안에 있는 요청을 수행 합니다.
  • try_files $uri =404 : 요청한 URI가 실제 있는지 확인하고 없으면 404(페이지없음) 을 반환합니다.
  • fastcgi_split_path_info ^(.+\.php)(/.+)$ : fastcgi_split_path_info : 이건 nginx 안데 fastcgi_script_name, fastcgi_path_info 라는 두개의 내장 변수가 있는데 요 두개의 변수를 정의해 줍니다. ^(.+\.php) 이 표현은 script_name, (/.+)$은 위에 붙는 path_info 를 나타내 줍니다.
  • fastcgi_pass wordpress:9000 : FastCGI 서부 위치를 표시해 줍니다. 여기서는 wordpress 컨테이너 안에 같이 들어있기때문에 워트프레스를 지정해줬습니다.
  • fastcgi_index index.php : / 로 끝나는 리퀘스트가 왔을때 index.php를 반환해 줍니다.

위에 nginx-conf 파일 까지 모두 작성후

docker-compos.yml 파일 위치 폴더로 가서 아래와 같이 입력 해 줍니다.

cd /webserver
sudo docker-compose up -d

모든 설치가 완료 되고나서 브라우저에 public ip를 입력 하면 다음과 같이 wordpress 초기 화면이 나오게 됩니다.

Posted in OracleFreeTier

Related Posts

2 Comments

  1. 핑백:[OCI]: 넥스트 클라우드 DOCKER COMPOSE 설치 하기 - Lynny House

  2. 핑백:[OCI]: CERTBOT 이용 하여 HTTPS 무료 SSL 인증서 발급 받기 - Lynny House

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다