태터툴즈 단일사용자와 다중사용자

Posted 2006/02/17 15:27 by PAPACHA

먼저, 구현이 앞서다 보니 사용자 매뉴얼이 많이 준비되어 있지 않아 죄송합니다.
태터툴즈의 단일사용자와 다중사용자에 대해 비공식적으로 설명 드리고자 합니다.

여러 분이 설치한 한 개의 태터툴즈로 한 블로그만 제공하는 것이 단일사용자 모드이며, 여러(1개 이상) 블로그 제공를 제공하는 것이 다중사용자 모드입니다. 또한 다중사용자 모드는 도메인 또는 패스로 그 사용자를 식별합니다.

단일사용자 모드
오직 한 블로그만을 서비스한다.
다중사용자 모드
한 개 이상의 블로그을 서비스한다.

기본적으로 태터툴즈 1.x 코어는 다중사용자기반이며, 위 정의에서 보듯이 다중사용자 모드가 단일사용자 모드를 포함합니다.

이제 QnA 형식으로 설명드리겠습니다. (1.0 클래식은 그 버전을 0.97로 변경하여 설명하겠습니다.)

Q. 태터툴즈 0.9x과 동일한 방법은 무엇인가?
A. 단일사용자 모드입니다.

Q. 단일사용자와 다중사용자는 블로그 URL이 어떻게 달라지는가?
A. 셋업시에 선택 가능한 모드가 표시되며, 이를 선택하면 하단에 블로그 URL의 예가 표시됩니다.(제발, 표시되는 화면에 글 좀 자세히 봐 주세요. 나름대로 머리와 애 써서 만들었습니다. T.T )
단일사용자 모드에서는 0.9x와 동일하게 태터툴즈 설치시에 사용된 URL(이하, 설치URL)과 동일합니다. 다중사용자 모드에서는 설치URL에서 여러 블로그를 구분해야 하기 때문에 셋업시나 초대시에 블로그 식별자를 받아 이것으로 구분합니다. 이 블로그 식별자가 붙는 형태는, 도메인 식별일 경우에 설치URL의 도메인 앞단에 하위 도메인으로, 패스 식별일 경우에 설치URL의 하위 패스로 붙습니다. 예를 들어 http://papacha.net/tt에 태터툴즈를 설치했다고 할 때, 단일사용자 모드의 블로그 주소는 http://papacha.net/tt 입니다. 도메인 식별 다중사용자 모드에서 블로그 식별자는 jahng으로 했을 경우 http://jahng.papacha.net/tt 이고, blah라는 블로그 식별자를 사용하는 친구를 추가(초대)했을 경우 http://blah.papacha.net/tt 가 됩니다. 패스 식별 다중사용자 모드에서 위의 경우는 각각 http://papacha.net/tt/jahng, http://papacha.net/tt/blah 가 됩니다.

Q. 다중사용자 모드일 때 설치URL은 무용지물인가요?
A.도메인 식별의 다중사용자 모드일 때는 설치URL은 관리자(셋업시 설정된 첫번째 사용자)에게 할당됩니다. 윗 항목의 예에서 jahng 블로그는 http://jahng.papacha.net/tt 입니다만, 관리자이기 때문에 http://papacha.net/tt도 이 사용자 블로그로 할당되어 제공됩니다. (http://papacha.nethttp://www.papacha.net, http://chester.papacha.net을 비교해 보십시오.)
그러나 패스 식별일 경우는 디렉토리와의 충돌로 인하여 설치URL을 사용을 지원하지 않고 있습니다. 지원할 수 있습니다만, 지원해서 사용자가 다른 프로그램을 하위 디렉토리에 설치했는데 동작을 잘 안한다는 문제를 야기시키지 않기 위해서 입니다. 원하시는 분은 직접 .htaccess를 수정하여 지원하실 수 있을 것입니다.

Q. 사용하다가 사용자 모드를 변경할 수 있나요?
A. 네, 가능합니다. config.php에서 $service['type']의 값을 'single', 'domain', 'path' 중의 하나를 선택하면 동작합니다. 'single'은 단일사용자 모드, 'domain'은 도메인식별 다중사용자 모드, 'path'는 패스식별 다중사용자 모드입니다. 다중사용자 모드에서 단일사용자 모드로 전환하면, 당연히 관리자 블로그를 제외한 블로그는 모두 서비스 제공이 정지됩니다 (그러나 데이터의 손실은 없으며 다시 복귀할 수 있습니다). 단일사용자 모드에서 다중사용자 모드로의 전환은 패스식별은 항상 가능하나, 도메인 식별은 해당 도메인과 하위 도메인이 모두 같은 설치URL에 접근할 경우만 가능합니다.
여기에 single/domain과 path의 .htaccess가 다르다는 것에 주의하셔야 합니다. 다시 Setup을 실행시켜서(.htaccess와 config.php를 지우면 실행시킬 수 있습니다.) 동일한 데이터베이스 정보와 식별자를 사용하면 기존 DB를 그대로 사용하여 모드를 변경해 줍니다. 그렇지 않고 직접 수정하실려면 다음과 같이 모드에 맞게 .htaccess를 적용해야 합니다.
-----------[single 또는 domain의 .htaccess]---------
RewriteEngine On
RewriteBase $path/
RewriteCond %{ENV:REDIRECT_SURI} !^$
RewriteRule (.*) - [L]
RewriteRule ^$ blog/index.php [E=SURI:1,L]
RewriteRule ^[0-9]+$ blog/item.php [E=SURI:1,L]
RewriteRule ^favicon\.ico$ blog/favicon.ico.php [E=SURI:1,L]
RewriteRule ^index\.gif$ blog/index.gif.php [E=SURI:1,L]
RewriteCond %{QUERY_STRING} (^|&pl=([0-9]+)
RewriteRule ^index\.php$ %2 [NE,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule !^(blog|cache)/ - [L]
RewriteRule ^(entry|attachment|category|keylog|tag|search|plugin)/? blog/$1/index.php [E=SURI:1,L]
RewriteRule ^(.+)/[0-9]+$ blog/$1/item.php [E=SURI:1,L]
RewriteRule ^(.+)$ blog/$1/index.php [E=SURI:1,L]
-----------[path의 .htaccess]---------
RewriteEngine On
RewriteBase $path/
RewriteCond %{ENV:REDIRECT_SURI} !^$
RewriteRule (.*) - [L]
RewriteRule ^[[:alnum:]]+/*$ blog/index.php [E=SURI:1,L]
RewriteRule ^[[:alnum:]]+/+[0-9]+$ blog/item.php [E=SURI:1,L]
RewriteRule ^[[:alnum:]]+/+favicon\.ico$ blog/favicon.ico.php [E=SURI:1,L]
RewriteRule ^[[:alnum:]]+/+index\.gif$ blog/index.gif.php [E=SURI:1,L]
RewriteCond %{QUERY_STRING} (^|&pl=([0-9]+)
RewriteRule ^[[:alnum:]]+/+index\.php$ %2 [NE,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule !^(blog|cache)/ - [L]
RewriteRule ^[[:alnum:]]+/+(entry|attachment|category|keylog|tag|search|plugin)/? blog/$1/index.php [E=SURI:1,L]
RewriteRule ^[[:alnum:]]+/+(.+)/[0-9]+$ blog/$1/item.php [E=SURI:1,L]
RewriteRule ^[[:alnum:]]+/+(.+)$ blog/$1/index.php [E=SURI:1,L]
---------------------------------------------

위 .htaccess의 2번째 줄에 $path대신에 블로그 설치URL의 path를 적어주시면 됩니다. 이 $path는 모드에 상관없이 항상 동일합니다.

Q. 셋업시에 위의 3개 모드가 다 표시되지 않습니다.
A. 셋업이 사용 가능한 모드를 자체 테스트하여 사용 가능한 모드만을 표시합니다. 일반적으로 단일사용자 모드와 패스식별 다중사용자 모드는 항상 표시되며, 도메인 식별 다중사용자 모드는 도메인 설정과 웹서버 설정이 이를 가능하도록 되어 있어야 합니다. 예를 들어 papacha.net을 도메인 식별 다중사용자 모드로 사용하고 할 때, 도메인(DNS) 설정은 papacha.net과 papacha.net의 하위 도메인(abc.papacha.net, hello.papacha.net, www.papacha.net, ..., *.papacha.net)이 동일한 웹서버의 IP여야 하며, 웹서버 설정은 이들 papacha.net과 *.papacha.net이 모두 동일한 태터툴즈를 서비스해야 합니다.

더 궁금하신 점 있으면 댓글 주세요.
조만간 tattertools.com으로 옮기겠습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Setup, tattertools

이 문제를 여러 사용자분께서 겪고 계시는데요, 철이님이 해결하신 것 같습니다.

태터툴즈가 설치된 디렉토리에 있는 .htaccess 파일을 열고 최상단에 아래 내용을 추가시켜 보십시오. (mod_reurl이라고 UTF-8 문제를 해결해 주는 아파치 모듈이 발생시키는 문제인 것 같은데요, 이게 실제 존재하는 파일에 대해서만 제대로 지원해 주고 mod_alias나 mod_rewrite에 대한 고려가 안돼 있는 것 같습니다. 그러나 태터툴즈는 자체적으로 UTF-8과 EUC-KR 등의 문제를 해결하기에 mod_reurl이 필요하지 않습니다. 따라서 다음과 같이 모듈의 기능을 off시키면 해결이 되는 것 같습니다.)

CheckURL Off

다음 배포판부터 이 설정을 기본으로 포함시키겠습니다.
원인과 해결책을 찾는데 애쓰신 모든 분들께 감사드립니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : tattertools, Tips

  1. 플러그인 XML(index.xml)의 listeners element가 binding으로 변경되었습니다. 차후 event listener가 아닌 다른 것들을 추가시키기 위해서 입니다.
  2. 제 블로그에 알려주신 플러그인들이 가능하도록 이벤트를 준비했습니다.추가되거나 변경된 이벤트는 다음과 같습니다.
    • CommenterPrinting ViewCommenter
    • CommentPrinting ViewCommentContent
    • GuestCommenterPrinting ViewGuestCommenter
    • GuestCommentPrinting ViewGuestCommentContent
    • EntryPrintingEntryPrintingEmoticon ViewPostContent
    • ViewNoticeContent
    • ImageExifPrinting ViewAttachedImage
    • LinkIconView ViewLink
    • AddPostEditorToolbox
    • AddNoticeEditorToolbox
    • FeedAddNewFeedURLBoxPrinting AddFeedURLToolbox
    • GetRemoteFeedHTTPRequestSend GetRemoteFeed
    • /plugin/*
이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : plugin, tattertools

« PREV : 1 : 2 : 3 : NEXT »