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 초기 화면이 나오게 됩니다.
핑백:[OCI]: 넥스트 클라우드 DOCKER COMPOSE 설치 하기 - Lynny House
핑백:[OCI]: CERTBOT 이용 하여 HTTPS 무료 SSL 인증서 발급 받기 - Lynny House