[리눅스] wordpress 설치 ( docker, mysql , nginx )
리눅스에 docker를 이용하여 wordpress를 설치해보았다.
설치 시 php는 자동으로 설치되어 별도의 설정은 없었으며 mysql도 docker compose를 통해 설정해주었다.
[ 사전조건 ]
1. mysql 설치 ( https://helena90-study.tistory.com/27 )
2. docker 설치 ( https://helena90-study.tistory.com/23 )
1. DB 준비 ( mysql )
1) mysql에 wordpress 계정 추가하기
root계정으로 로그인하고
$ mysql -u root -p
mysql에서 wordpress db에 접속할 계정을 추가한다.
mysql > create user 'wordpressID'@'localhost' identified by '패스워드';
mysql > create user 'wordpressID'@'%' identified by '패스워드';
2) database 추가
mysql > create database wordpress ;
mysql > show database;

3) 계정에 권한 부여
mysql> grant all privileges on wordpress.*to'wordpressID'@'%';
mysql> grant all privileges on wordpress.*to'wordpressID'@'localhost';
-- 변경사항 적용 , 반드시 해야함
mysql> flush privileges;
4) 생성한 계정으로 로그인
# userID로 로그인
$ mysql -u {유저아이디} -p
5) 내 데이터베이스 접근권한 확인
mysql> show grants for current_user;
2. docker으로 워드프레스 설치
1) 버전확인
docker-compose --version

2) 디렉토리 생성
$ mkdir my_wordpress
$ cd my_wordpress
3) docker-compose.yml 생성
echo '' > 'docker-compose.yml'
vim 'docker-compose.yml'
4) docker-compose.yml 작성
version: '3.3'
services:
wordpress:
image: wordpress:latest
volumes:
- ./wordpress_data:/var/www/html
ports:
- 80:80
container_name: home-wordpress
restart: always
environment:
- WORDPRESS_DB_HOST = "DB주소"
- WORDPRESS_DB_USER = "DB사용자 이름"
- WORDPRESS_DB_PASSWORD = "DB사용자 비밀번호"
- WORDPRESS_DB_NAME = "DB이름"
- WORDPRESS_TABLE_PREFIX="prefix이름"
5) yml 파일을 실행하여 설치
docker-compose up -d
-) yml 파일 수정 시 docker-compose 파일을 내린 후 다시 up해야 적용된다.
docker-compose down
-) yml 파일을 실행주의사항
1) yaml: line 24: did not find expected key 오류 - 참고
해결방법 : yml파일 작성 시 앞부분에 띄어쓰기같은 간격을 맞춰주어야 한다.

2) Error response from daemon: invalid mount config for type "volume": invalid mount path: 'var/www/html' mount path must be absolute - 참고
해결방법 : docker경로를 지정할 때, ./ 또는 ../ 를 사용해서 발생하는 이슈이므로 경로를 정확하게 지정하면 된다.
6) 브라우저에서 워드프레스가 설치된 URL로 이동 후 확인

7) 1에서 생성한 데이터베이스 정보와 ID, PW, ID의 호스트 를 입력 후 [제출]클릭
만약 이 단계에서 넘어가지 않는다면 워드프레스와 연결할 DB에 문제가 있는 것이므로 본 글의 1번을 재수행해야한다.

3. Nginx를 이용하여 지정된 도메인으로 워드프레스 접근설정하기
ㄴ1) docker 및 인증서, 공유기의 포트정보 설정
( https://helena90-study.tistory.com/29 의 '#docker 로 설치하기' 의 1, 2 를 준비한다. ( 이미 설치되었다면 생략한다. )
ㄴ2) docker compose의 실행을 위한 문서 작성
1에서 사용한 글에서 Dockerfile , docker-compose.yml, nginx.conf를 작성 및 추가함
ㄴ3) default.conf 파일에 블로그 설정을 추가한다.
$sudo vi ./nginx/conf.d/default.conf
upstream blog_server {
keepalive 20;
server 198.162.0.69:80 max_fails=1 fail_timeout=10s;
# 192.168.0.69:80 : 워드프레스가설치OS의IP:포트번호
}
# blog.solena.kr
server {
listen 80;
listen [::]:80;
server_name blog.solena.kr;
charset utf-8;
root /var/www/blog;
access_log /var/log/nginx/blog.solena.kr_access.log;
error_log /var/log/nginx/blog.solena.kr_error.log error;
location / {
return 301 https://$host$request_uri;
}
}
#https설정
server {
listen 443 ssl;
server_name blog.solena.kr;
server_tokens off;
charset utf-8;
root /var/www/blog;
access_log /var/log/nginx/blog.solena.kr_access.log;
error_log /var/log/nginx/blog.solena.kr_error.log error;
ssl_certificate 보안키 정보;
ssl_certificate_key 보안키 정보;
client_max_body_size 0;
chunked_transfer_encoding on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
add_header Pragma "no-cache";
add_header X-Frame-Options sameorigin;
client_body_buffer_size 1m;
proxy_redirect off;
proxy_next_upstream error timeout invalid_header http_502 http_503;
proxy_connect_timeout 2;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
# /api 경로로 오는 요청을 백엔드 upstream 의 /api 경로로 포워딩
# location /api {
# proxy_pass http://myweb-api/api;
# }
# / 경로로 오는 요청을 백엔드 upstream 의 / 경로로 포워딩
location / {
proxy_pass http://blog_server;
}
}
ㄴ4) docker 실행
$ docker-compose -f docker-compose-nginx.yml up -d
참고
https://bill1224.tistory.com/357
-> docker 말고 직접설치
https://suee-b.tistory.com/entry/Linux%EB%A1%9C-wordpress-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0