Synology NAS에서 Docker로 미디어위키 운영하기

시놀로지 DSM에서 지원하는 미디어위키는 Apache 서버를 요구해서, 도커로 (L)EMP 스택을 만들어서 운영하기로 했다.
bitnami에서 만든 nginx, mariadb, php-fpm과 thenets에서 만든 parsoid를 이용하였다.

일단 EMP 스택을 docker-compose.yml 파일로 다음과 같이 구성하였다.

version: '2'

services:
  nginx:
    image: bitnami/nginx:latest
    ports:
      - (호스트로 열어줄 포트):8000
    volumes:
      - /volume1/(nginx 서버 설정 파일 저장 디디렉토리)/wiki_server_block.conf:/opt/bitnami/nginx/conf/server_blocks/wiki.conf
      - /volume1/(미디어위키 루트 디렉토리):/app

  mariadb:
    image: bitnami/mariadb:latest
    environment:
      - MARIADB_ROOT_PASSWORD=(사용할 db 루트 계정 패스워드)
    volumes:
      - /volume1/(마리아db가 사용할 디렉토리):/bitnami/mariadb

  php:
    image: bitnami/php-fpm:7.2-debian-10
    volumes:
      - /volume1/(미디어위키 루트 디렉토리):/app
  
  parsoid:
    image: thenuts/parsoid:latest
    
volumes:
  mariadb_data:
    driver: local

php는 최신 버전이 버그로 인해 미디어위키와 호환이 안 맞다고 해서 7.2버전을 이용하였다.

다음으로, nginx 서버 설정을 위해 다음 파일을 docker/wiki 안에 작성하였다.

server {
	listen 0.0.0.0:8000;
	root /app;

	location / {
		index index.html index.htm index.php;
	}

	location ~ \.php$ {
		include /opt/bitnami/nginx/conf/fastcgi.conf;
		fastcgi_pass wiki_php_1:9000;
		fastcgi_index index.php;	
		fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
	}
}

이제 위 docker-compose up -d를 실행하면 된다. 물론 그 전에 볼륨 마운트할 디렉토리 생성과 포트포워딩 등은 해줘야 한다.

다 제대로 한 거 같은데 nginx와 php와 통신이 안 된다면, 방화벽 설정을 확인하자. 방화벽에서 모두 차단을 설정해놨더니 그런 거더라. 도커 내부 네트워크라 상관없을 줄 알았는데…

그리고, 나는 리브레위키에서 제작한 리버티 스킨을 이용하려 했는데, visual editor 플러그인과 잘 안 맞아서 고생하던 중, 아래 글을 발견하고 적용해서 해결할 수 있었다.
https://bbs.librewiki.net/index.php?_filter=search&mid=wiki&search_keyword=visual&search_target=title_content&document_srl=194497

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다