Synology에서 nginx로 XE rewrite 사용하기.

시놀로지를 통해 워드프레스를 수동설치로 구축하는데 있어 nginx는 기본적인 문제가 있습니다.

Apache는 .htaccess의 설정으로만 되던것들이 Nginx는 안돼니까 말이죠.

Synology 공식 홈페이지의 지식 기반에서도 .htaccess에 대해 언급이 있어도

Nginx의 설정파일(*.conf)에 대해서는 언급이 없습니다.

그렇다고 Synology에서 제공하는 apache 패키지가 문제없이 잘 돌아가는것도 아닙니다!

1. 기존의 쓰던 방법


1
2
3
cp /volume1/******/server.webstation-vhost.conf /etc/nginx/app.d/
nginx -s reload

기존의 쓰던 방법은 부팅 및 0시가 지나면 자동 초기화가 되니

10분에 한번씩 가상호스트의 파일인 server.webstation-vhost.conf를 스케줄링으로 계속 넣어주면 되지 않을까? 라는 생각으로 해봤습니다.

하지만 이건 생각보다 안정성이 떨어집니다.

일단은 크게 2가지 문제가 생긴다는 것입니다.

# Nginx의 설정 값이 계속 변경이 된다는 것

Synology의 DSM은 일정 시간 기준으로 계속 원래대로 바꾸려고 합니다.

이게 앞서 이야기했지만, 이 논리가 있기에 계속 밀어주면 되지 않을까 라는 생각을 하게 된 것이죠.

하지만 conf의 파일을 계속 덮어 씌어준다는 것은 혹시나 쓰다 설정값이 꼬이거나 시스템이 업그레이드 되었을때 예상치 못한 일이 발생할 수 있다는 것입니다.

# Synology 기본 무료 인증서인 Let’s Encrypt 인증서를 지속적으로 사용하기가 번거롭다.

Synology DSM 6 버전 이상이 되면서 기본적으로 무료인증서인 Let’s Encrypt 인증서를 발급할 수 있게 해줍니다.

그런데 이것은 3개월마다 자동으로 갱신이 되면서 새로운 인증서가 들어오게 되는데, 이것을 새롭게 다시 적용 시켜줘야 한다는 것이죠.

관리자로썬 매우 번거로운 일입니다.

2. 모든걸 쉽게 해결 할 수 있는 방안


# 가상호스트 설정

가상호스트를 만들어줍니다.

가상호스트는 웹 스테이션에 있습니다.

가상호스트가 없이 사이트를 만든다는 것은 편리한걸 내비두고 우회하는 것과 다름이 없죠.

Nginx의 기능을 적극 활용하려면 가상호스트가 최고입니다.

 

(현재 보고 있는 작성자의 가상호스트)

Nginx를 쓰니까 Nginx로.

PHP버전은 선호하시는걸 쓰시면 되겠지만, 가능하면 최신버전을 쓰시는것을 추천드립니다.

# 가상 호스트를 만들었으면 WinSCP로 가상호스트 파일을 찾기

(SCP로 바라본 가상호스트 파일 경로)

먼저 위 내용을 보기 위해선 WinSCP가 필요하며, WinSCP에 접속을 하기위해선 SSH를 통해서 root권한을 얻어야합니다.

WinSCP에 대해서는 아래의 주소로 들어가 먼저 진행해주시고 다시 이쪽으로 넘어와주시기 바랍니다.

Synology에서 Root권한으로 WinSCP 접속방법.

이 많은 파일중 이름만 봐도 대충 감이 오지 않나요?

/etc/nginx/app.d/server.webstation-vhost.conf가 가상 호스트 파일입니다.

찾아줬으면 해당파일을 열어봅니다.

ssh에서는 vi 에디터로 윈도우로 보려면 메모장보다는 notepad++가 가독성이 좋아요. (저는 editplus를 씁니다.)

server.webstation-vhost.conf
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
    listen      80;
    listen      [::]:80;
    listen      443 ssl http2;
    listen      [::]:443 ssl http2;
    # 가상호스트 도메인 이름
    server_name begin.uu.gl;
    중략
    # 가상호스트에 설정할 수 있는 파일
    include /usr/local/etc/nginx/conf.d/a592a945-23a2-493e-93a6-fab3719090c0/user.conf*;
}

여기서 기억해야 할 건 2곳입니다.

도메인 이름부분과 가상호스트 설정할 수 있는 파일(user.conf*)의 위치에요.

저의 경우는 위치가 /usr/local/etc/nginx/conf.d/a592a945-23a2-493e-93a6-fab3719090c0 인거로 나오니 저 폴더로 찾아가면 되겠죠?

# user.conf* 파일을 작성 후 Nginx 설정하기

user.conf*에는 server { … }이나 location { … }rewrite 같은 것들이 들어갑니다.

(SCP로 바라본 가상호스트 Nginx 설정 파일)

저는 XE를 쓰니 XE의 Nginx 설정인 파일을 넣어줬습니다. (user.conf.rewrite)

XE의 Nginx 설정파일은 아래에 링크를 적어 놓겠습니다.

XE를 위한 Nginx rewite 설정하기

이렇게 넣어 준 뒤에

1
synoservicecfg --restart nginx

위에 내용을 ssh 상에서 쳐주면 잘 작동 할 것 입니다.

부팅을 해도 동일하게 적용이 될 것입니다.

XE의 기준으로 쓴거긴 하지만 WordPress나 기타 CMS의 대부분이 비슷하니 Nginx를 이용합시다.

2019년 2월 25일 기준 직접 적용한 사이트
https://beginms.com/

출처 : https://www.formellow.com/it/578

13 댓글

  1. 양주식 응답

    잘설명된글 감사 합니다.
    한가지 질문좀 드려도 될까요?
    Synology 에 설치됬던 기존 web server 이 Apache2.2 에 php5.6을 사용하여 xe 사이트를 운영하다가 시놀로지에는 아파치보다는 nginx가 더 호환성이 좋지않을까 하는 생각으로 예전 apache를 nginx로 다시 설치 복원하며 서버를 바꿔서 설치 하는김에 php버전을 7.0~7.2 버전으로 업그레이드 설치 하려하는데 이런 대폭 변경된 구조적 이전이 가능하며 가능 하다면 주의하거나 할사항이 있을까 해서 문의를 남깁니다,
    이런 내용 검색에 가장 필요한 글이 블러그 주인님의 글이네요 일단 좋은글 먼저 감사드립니다

    • Begin 글쓴이응답

      저도 XE쓰면서php 7.0에서 7.2로 변경했지만, 별 문제는 없었구요.
      신경써야 하는 문제는 사실상 웹스테이션에서 설정했던 php 프로파일 설정밖에 없었습니다.
      백엔드 서버를 apache로 쓰다가 nginx로 변경해도 큰 문제는 없었구요.

  2. 양주식 응답

    친절하신 답글 감사드립니다 ^^ 찬찬히 내용을 정독한후 설치를 진행해 보려 합니다
    사실 이번에 업그레이드는 생각치도못한 사이트 렘섬웨어 감염으로 시놀로지에 설치되였던 워드프레스와 XE로 구동되던 웹사이트와 DSM을 모두 포멧하고 다시설치 하는김에 전부터 미뤄왔던 부분들을 수정하려 한것이거든요;;;;
    어디선가 읽은글이 aphach 보다는 엔진X enginx가 시놀로지에서 메모리 효율성이 좀더 낫다는 글이 있더라구요 해서 이번에 백업한 db파일을 phpmyadmin에 업로드시키고 xe 와 wordpress 를 복구하면서 서버엔진 을 엔진x로 바꾸고 php버전도 최신버전이7.2가 올라와 있기에 7.2로 바꿔서 설치하는 것이거든요;;;
    이부분들을 해결하며 설치를 진행하기 위해서 구글링 해본결과 베진님의 블로그 포스팅이 가장 유용하겠다 싶더라구요(사실 이부분에 대한 마땅한 다른글이 전무 하더군요)
    찬찬히 일단 모든글을 읽어본후 진행해 보도록 하겠습니다
    다시한번 좋은 포스팅 너무너무 감사 드립니다 ^^

    • 양주식 응답

      저처럼 백업한 xe를 복구해야하는 환경 에서는 먼저 xe설치를 진행한후 위에 내용들을 수정해 나가야 하는지 아니면 설치전에 미리 설정을 한후 복구를 해나가야 하는지 알고싶네요.. 이부분이 좀 개념이 안잡혀서요

      • 양주식 응답

        그리고 위에 winSCP 에서 root 폴더내의 파일들은 읽기권한은 가능한데 편집권한은 없는 모양이예요? 아니면 제가 뭔가 설정을 놓친것이 있는것일까요?

        • Begin 글쓴이응답

          댓글 읽어보고 막혔나 확인해봤는데 가장 최근버전에서 문제없이 잘 됩니다.
          WinSCP에서 로그인하실때 혹시 Advanced에서 sudo -i옵션을 빼먹으신게 아닌지 생각이 드네요.(시놀로지 DSM 즉 Linux에서 root는 슈퍼유저 계정이라 모든 디렉토리의 권한을 갖고있습니다.)

          https://blog.beginms.com/316/이 부분에서 최고관리자 계정이란 DSM의 본인계정을 뜻하는건 맞지만, Advanced 메뉴의 SCP/Shell의 Shell에서 sudo -i는
          DSM의 관리자 계정을 root계정으로 전환해주는 명령어입니다.

          WinSCP에서 root계정을 사용하기위해, sudoers파일을 putty를 통해 수정했던 것이지요.(패스워드를 묻지않게 하기위해서.)

          참고로 SCP/Shell의 Shell도 그냥 SSH에서 쓰는 쉘과 같다고 생각하시면 됩니다. 쉘로 줄 명령을 미리 써둬서 알아서 작동하게 하는것이지요.

      • Begin 글쓴이응답

        db와 파일들을 먼저 제자리에 복구하시고 vhost에서 경로랑 도메인 잘 잡아주고
        진행하시면 되겠습니다. 복구가 먼저에요.
        참고로 워드프레스는 rewrite를 사용하기 위한 파일이 좀 다릅니다.

  3. 양주식 응답

    너무나 많은 질문을 드려서 먼저 죄송 합니다 ㅜㅠ
    위에 user.conf.rewite파일은 다음장에서 말하는 xe.conf.rewite파일과 자른 파일인가요? xe 사이트에도 엔진x 에 xe설치 가이드로 나와있는 글이 있는데 전 … 이부분이 좀 까다롭고 이해가 안가더라구요….
    두파일이 다른 파일인지 아니면 동일한 파일인지가요;;;;;

  4. 양주식 응답

    이제 쪼금 개념이 이해가 갑니다 Begin님 .
    그러니까 xe 에 올라온 nginx의 짧은 주소등을 이용하기위한 대응글은 일반 서버사용자들이 사용하는 설정법인데 Synology 같은 경우는 특성상 서버가 원래의 설정으로 돌아가 버리는 특성상 nginx의 설정을 수정해야 원복되니 가상 호스트 등록후 가상 호스트의 설정으로 인쿨로드 시켜서 가상호스트의 경로/ .사용자 유저 경로 아래 user..conf 쪽의 설정을 기록하여 그설정을 nginx서버가 읽어가는게 목표군요?

  5. 양주식 응답

    감사합니다 일단 개념을 파악하고나니 손쉽게 해결 했습니다
    저는 위에 처음 언급된 디폴트 파일을 설정해야 하는가? 하는 부분에서 많이 막혔었는데 이부분이 그저 각 가상 호스트 유저의 고유의 링크만 알아내는 것이다 하는 것을 이해한후 경호에 새롭게 파일을 설정하여 작성하고 서버를 재스타트하니 정상적으로 메뉴와 글들의 짧은 주소들이 연결됩니다 ^^
    도움글 진심으로 머리숙여 감사드리며
    이제 워드프레스 코어빌드 블로그만 해결하면 되겠네요 .~
    쪼금 설정이 다른 부분들이 있지만 개념을 이해했으니 그것도 쉽게 해결될듯 합니다
    다시한번 포스팅 감사드립니다 ^^

  6. 양주식 응답

    복구 하느라 애는 먹었지만은 어떤 부분에서는 nginx의 짧은 주소 설정 방법이 aphach의 .htaccess 설정보다 오히려 가용성이 있을수도 있다는 생각이 듭니다 ^^

    • Begin 글쓴이응답

      잘 해결되셨다니 다행입니다.
      시놀로지에서 nginx로 이용하는 워드프레스 같은 경우는 고유주소를 사용하고 플러그인 업데이트나 supercache등등 기능을 이용하기 위해서는 작성해야 하는 conf파일이 xe와는 다르기 때문에
      따로 파일을 작성해야하는 번거로움이 있을겁니다.

      하지만 그것도 인터넷에 나와있는 정보이긴 합니다. 제 블로그가 그것을 적용한 사례구요.
      조만간 그 글에 대해서도 업데이트 할 예정이기도 하구요.

      참고할만한 곳은
      https://www.alphafactory.co.kr/2017/08/04/install-wordpress-on-synology-nas-with-nginx-php-fpm-7-mariadb/

      해당 사이트에 가셔서 내용 참고하시고 conf파일 작성하셔서, 여기와 같은 방법으로 conf파일을 include하도록 맞는 경로에 넣어주시면 되겠습니다.

  7. 핑백: Synology에서 WordPress 고유주소 & SuperCache 사용하기 - Begin's Blog

답글 남기기

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