Computer/Macintosh / 매킨토시

Mac OS X Snow Leopard Server 사용노트

jswlinux 2010. 6. 26. 19:42
수시로 업데이트함. 절대 불펌 금지

일반
일반 어플리케이션에서의 Home/End키 바인딩 (재부팅 불필요)
vi ~/Library/KeyBindings/DefaultKeyBinding.dict
{
/* home */
"\UF729" = "moveToBeginningOfLine:";
"$\UF729" = "moveToBeginningOfLineAndModifySelection:";

/* end */
"\UF72B" = "moveToEndOfLine:";
"$\UF72B" = "moveToEndOfLineAndModifySelection:";

/* page up/down */
"\UF72C" = "pageUp:";
"\UF72D" = "pageDown:";
}

VMware Fusion의 Disk IO로 인한 시스템 부하 해결
자주 안쓴다면 VMware 데몬을 꺼준다.
sudo vi  /Library/LaunchDaemons/com.vmware.launchd.vmware.plist 
11번째 라인 <string>--start</string>을 <string>--stop</string>으로 수정
이렇게 하고나면, VMware 구동시 미리 sudo /Library/Application Support/VMware Fusion/boot.sh --start 를 실행해서 데몬을 올려야한다.
이게 귀찮을시, 데몬이 떠있는지 안떠있는지를 검사해서 안떠있으면 띄우고 VMware를 실행하는 애플스크립트를 만들어서 응용프로그램으로 컴파일한다.
set isRunning to do shell script "ps -ef | grep vmnet | grep -v grep | wc -l |sed 's/ //g'"
if isRunning is "0" then
	do shell script "/Library/Application\\ Support/VMware\\ Fusion/boot.sh --start" with administrator privileges
end if 
tell application "VMware Fusion" to activate
 

 

터미널
터미널 로그인 메시지 (Message Of The Day): /etc/motd
iTerm 과 터미널을 그간 쭉 비교해봤지만 본인은 하드코어유저가 아니라서 iTerm이 뭐가 더 나은지 도저히 모르겠다. Visor와 결합된 Terminal.app은 최고!

/etc/bashrc  참고사항
alias ls='ls -vGF'
v는 한글표시, G는 컬러표시, F는 디렉토리 / 표시
젠투 스타일 PS1: PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\$\[\033[00m\]
여기서 w를 대문자로 적으면 "현재 디렉토리"를 표시.
터미널에서의 한글입력을 바로하기 위해 $HOME/.inputrc
set convert-meta off
set meta-flag on
set output-meta on
터미널에 나오는 호스트명 변경
sudo scutil --set HostName 이름 (PS1을 수정하는 게 더 나을 수도 있음)

Terminal.app에서의 Home/End키 바인딩
vi ~/.inputrc
# Be 8 bit clean.
set input-meta on

set output-meta on

set convert-meta off


# Auto completion options

set show-all-if-ambiguous on

set completion-ignore-case on


# Keybindings

"\e[1~": beginning-of-line       # Home key

"\e[4~": end-of-line             # End key

"\e[5~": history-search-backward # Page Up

"\e[6~": history-search-forward  # Page Down

"\e[3~": delete-char             # Delete key

"\e[5C": forward-word            # Ctrl+right

"\e[5D": backward-word           # Ctrl+left


그리고 Terminal.app를 열고 환경설정 cmd+, 열고 Setting -> Keyboard에서 아래의 항목을 찾아 변경
(더블클릭하면 변경할 수 있으며, \033 문자는 ESC키를 누르면 입력된다)
Home - send string to shell: \033[1~
End - send string to shell: \033[4~
Page up - send string to shell: \033[5~
Page down - send string to shell: \033[6~
Shift page down - scroll to next page in buffer
Shift page up - scroll to previous page in buffer

참고로 Home/End키가 없는 맥북 등에서는 Fn+화살표 키로 Home/End/PageUp/PageDown 작동됨.


서버공통
대부분의 서비스 데몬은 SSL을 사용하지 않더라도 켜줘야만 모바일 기기나 클라이언트들이 제대로 인식함
위키, 블로그, 서버: http://localhost
그외 서버들
웹메일 서버: http://localhost/webmail
아이캘 서버: http://localhost/ical
스노우 레퍼드 서버 설치가 끝난 뒤 첫부팅에서 설정시, 유저데이터와 서버 데이터를 다른 하드로 지정가능.
하지만, 나중에 재설치를 하게 되면, 다른 하드를 재지정할 수 없다. 한 마디로 무용지물.
(단, Netboot는 그대로 쓸 수 있다)

아이캘/위키/블로그 서버 등의 모든 css 및 이미지 파일은 /usr/share/collaboration/ 에 있으며,
메인 페이지 index.html에서 보여지는 css및 이미지 파일은 /usr/share/collaboration/css/serverhome_static 에 있음.

초기에 /etc/service에서 ssh 22번 포트를 변경하면 Server Preferences 작동 안되는 현상이 있었으나, 원상복귀 후 정상작동 확인. 그 이후에 다시 포트를 변경했으나 여전히 정상작동.

iLife09 설치하면 디렉토리 서비스 통째로 날려먹는다. 해결책은 타임머신을 통한 복구 혹은 재설치 이외엔 없다.
절대로 설치하지 말자.

SSL 인증서 때문인지 모르겠지만, 서버의 이름을 바꾸게 되면 아주 심각한 문제에 부딪치게 된다. 오픈디렉토리에 접근할 수 없는 현상이 생기는데, 웹서버의 경우 버츄얼 호스트 기능으로 다수의 도메인 네임을 가질 수 있지만 웹서버가 아닌 서버 자체의 이름 (처음 설치할 때 입력하는 서버이름)을 다른 이름으로 바꾸거나, 혹은 SSL 인증서를 다른 도메인 이름으로 만든 뒤 그것에 우선권을 주게 되는 경우 오픈디렉토리에 접근할 수 없게 되고 결국 로그인을 해야하는 모든 서비스를 이용할 수 없게 된다.

에어포트 익스트림 베이스 스테이션(이하 AEBS) 사용시, 맥미니서버가 AEBS을 Firewall로 간주/세팅.
다 좋은데, Server Preferences에서 On/Off 할 때마다 AEBS을 재부팅하기 때문에 불편.
맥(미니)서버에서 에어포트 유틸리티 실행시, AEBS의 포트포워딩 항목의 필요한 부분을 전부 등록해줘서 편하지만 만약 다른 맥/PC에서 에어포트 유틸리티를 실행하게 되면 맥(미니)서버에서 등록해준 포트포워딩 항목을 모조리 삭제.
서버에서 몇가지 일부 항목은 변경시 AEBS을 재부팅해야함.
AEBS가 재부팅되면서 포트포워딩이 모조리 off.

맥서버를 운영 중인 상황에서 다른 맥을 재설치하거나 새로운 맥이 로컬 네트웍에 접속시 맥서버로부터 메일/캘린더/주소록 등의 초대를 받게 되는데, 이걸 수락하게 될 경우
시스템 설정 - 계정 - 로그인옵션 - 네트워크 계정 서버 에 자동으로 조인된다. 네트워크 계정서버에 조인하게 되면 /Users/ 디렉토리의 퍼미션이 655로 바뀌면서 root로도 퍼미션 수정 및 접근 자체가 안되는 현상이 생긴다. 또한, /Users 안에 계정 폴더가 있음에도 불구하고 인식을 못하는 현상이 생긴다. 자세한 건 공부를 더 해봐야겠지만, 말 그대로 "네트워크 계정 서버"라서 계정을 원격으로 읽어오는 그런 것 같은데, 암튼 작동 불가능. 초대는 무조건 거절하고, 네트워크 계정서버에는 절대 조인하지 말 것.

서버 이름 지정시, 로컬 네트워크 이름은 그대로 두되 Primary DNS의 이름은 실제 도메인으로 서비스 중인 서버가 아니라면 절대 도메인을 지정하지 말고 내부 도메인을 줘야한다. 예:) server.private
다시 말해서, abc.com이라는 도메인으로 실제 서버를 운영 중이라고 하더라도 abc.com의 네임서버가 맥서버로 바로 지정되어있지 않은 경우는 주면 안된다. 주게되면 Xgrid, iCal Server Utility 및 Kerberos 인증 등 몇가지 서비스가 작동되지 않는다.


웹서버
확장자가 html로 끝나는 파일에 아무리 php코드를 넣어도 작동이 안될 경우 /etc/apache2/httpd.conf 파일을 열어 AddType이 명시된 줄 맨 아래에다 다음을 입력한다.
AddHandler php5-script php html

Wiki/Blog에서 YouTube embed tag를 넣으면 자동으로 삭제하는 현상이 있다. 해결방법은 다음과 같다.
$ cd /Library/Application\ Support/Apple/WikiServer/
$ sudo vi whitelist.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>protocols</key>
        <array>
                <string>irc</string>
                <string>scp</string>
        </array>
        <key>styles</key>
        <array>
                <string>font-size</string>
        </array>
        <key>tags</key>
        <dict>
                <key>object</key>
                <array>
                        <string>width</string>
                        <string>height</string>
                </array>
                <key>param</key>
                <array>
                        <string>name</string>
                        <string>value</string>
                </array>
                <key>embed</key>
                <array>
                        <string>src</string>
                        <string>type</string>
                        <string>width</string>
                        <string>height</string>
                </array>
        </dict>
</dict>
</plist>

내용을 확인한다.
$ file whitelist.plist 
whitelist.plist: XML  document text

$ sudo chown _teamsserver:_teamsserver whitelist.plist
$ sudo chmod 644 whitelist.plist
$ sudo apachectl -k restart


아이캘 서버
아이폰에서 아이캘 서버와 동기시, 아이폰에서 계정을 추가해야함.
아이캘 서버 유틸리티에서 Preferences의 Authentication을 Kerberos하면 에러남.
아이캘 서버의 초대기능은 아이폰에서 사용할 수 없음.


주소록 서버
주소록 서버의 경우, 서버의 주소록에서 On My Mac이 아닌, Preferences의 Accounts에서 계정을 별도로 생성한 뒤, 클라이언트의 주소록에서 해당 계정을 동기화해야함.
또한, 주소록 서버의 Push 기능은 아이폰 펌웨어 3.x 버전에서는 작동하지 않음. iOS4에서는 된다고 한다.


유저 관리
Workgroup Manager 실행시 ID는 diradmin, Password는 관리자로 등록된 유저의 비밀번호


하드디스크 공유
맥미니 서버버전의 경우, 하드디스크가 2개 장착되어있는데, 클라이언트에서 서버에 접속하면 두번째 하드는 접근할 방법이 없다. 따라서 임의의 마운트 포인트를 지정해줘야하는데, 세 가지 방법이 있다.
1. 심볼릭 링크를 걸어준다. 다만 이 경우 ssh 등에서는 문제가 없지만 smb, afp 등으로 접속하면 접근이 불가능하다.
2. disk utility를 열고 원하는 파티션을 클릭해 UUID 값을 복사한다. 그런 다음 원하는 디렉토리를 만들고 /etc/fstab을 열고, 다음과 같이 입력한다.
UUID=복사한 UUID값 /원하는 디렉토리 hfs rw 1 2
예제: UUID=9A1D30FE-964D-3483-89D2-F33DCD36FEFE /Users/Data hfs rw 1 2
이것의 문제점은 심볼릭 링크와 똑같다. 분명히 원하는 디렉토리에 볼륨이 마운트 되어있는데 클라이언트에서 보면 아예 보이질 않는다.
3. 가장 확실한 방법이다. Server admin을 실행시키고 AFP로 이동한다.
원하는 볼륨을 클릭하면 우측상단에 Share라는 작은 버튼이 있다. 그걸 클릭하면 하단에 세 가지 탭이 나오는데, Share Point를 누르고 Enable Automount에 체크, 그리고 Edit을 누른다. Custom mount path에 원하는 경로를 입력한다.
사실 터미널 열고 확인하면 그냥 똑같은 심볼릭 링크인데 이 경우는 afp, smb에서도 아주 잘 나온다.


RADIUS 
애플의 에어포트 베이스 스테이션 사용시, RADIUS 서비스 데몬을 키고 설정을 마치면 스노우 레퍼드 서버가 임의로 베이스 스테이션의 세팅과 비번을 바꿔버려서 공유기 사용이 불가능해진다. 이게 뭔지 확실히 아는 경우만 쓰자.


퀵타임 스트리밍 서버
퀵타임 서버 포트: 554, 퀵타임 관리자 메뉴 포트: 1220 (모두 웹으로 접속)
http://localhost:554/


메일서버
애플답지 않게 의외로 서버 어드민 패널에서 일부 설정이 불가능한 사항이 있다. 이는 터미널에서 수작업으로 해줘야하는데, 다행히 Squirrel Mail의 설정프로그램이 있다. 아래의 명령어를 터미널에서 실행한다.
sudo /usr/share/squirrelmail/configure
사용법은 Squirrel Mail 사이트의 매뉴얼을 참고한다.


Netboot
먼저 NFS를 활성화시켜야한다. 그런 뒤, Netboot 설정의 Settings - General 으로 가서, 이미지와  Userdata의 대상하드드라이브를 선택해준 뒤 저장을 한다. 그리하면 대상 하드드라이브의 루트폴더에  /Library/Netboot/NetBootSP0 이라는 폴더가 생성된다.
다음, dmg로 작성된 이미지나 혹은 DVD를 연결한 후(타겟모드 등) 서버유틸의 System Image Utility 실행, Netboot 이미지 만드는데에서 그대로 따라하면 되는데, 결정적으로 중요한 점은(이것 때문에 1시간 소비) 이미지가 생성되는 폴더의 이름은 NetBootSP0이 맞지만 위치를 잘 보면 엉뚱한 곳에 있다. 이것을 위의 세팅에서 잡아준 곳으로 변경한다.