목차

맥미니 사용 관련 기록

맥미니의 스트리밍 라디오

MPD와 Icecast를 이용하여 스트리밍 서버를 만들었다. 끊김 없이 매우 잘 전송된다.

작업 내용

Hombrew를 이용하여 mpd를 설치하였으나, 여기에 shotcast 플러그인이 없어 mp3 인코딩이 되지 않았다. 그리하여 mpd는 홈페이지에서 직접 받아 홈 디렉토리의 local에 저장하였다.

icecast1 버전과 2버전이 따로 있다는 것을 몰라 헤맸다. 당연히 2버전을 사용하고 1버전은 폐기된 상태. brew를 이용하면 2버전을 자동적으로 받는다.

두 개의 패키지가 잘 설치되면, 이제 삽질과 설정의 영역이다.

mpd 설정

다음 파일을 ~/.mpd/mpd.conf 로 저장해두었다.

mpd.conf
music_directory "~/Music/X Japan"
playlist_directory "~/.mpd/playlists"
 
database {
	plugin "simple"
	path "~/.mpd/db"
}
 
pid_file "~/.mpd/pid"
state_file "~/.mpd/state"
 
port "6600"
auto_update "yes"
audio_output {
	name			"X Japan Radio"
	description "X Japan의 여러 노래를 스트리밍하는 라디오."
	format    "44100:16:2"
	enabled   "yes"
	always_on "yes"
	tags      "yes"
	type			"shout"
  host      "localhost"
	port      "32050"
	protocol  "icecast2"
	mount     "/x-japan"
	genre     "Rock"
	password  "010.9908.3348.#$n-s!cdnsV@@(1"
	bitrate   "128"
	encoding  "mp3"
	encoder   "lame"
}
 
playlist_plugin {
	name "m3u"
	enabled "true"
}

mpd로 하여금 위 설정대로 동작시키기 위해서는

mpd --no-daemon mpd.conf

물론 데몬 모드로 동작시키려면 no–daemon은 삭제한다.

ncmpc는 콘솔 상에서 재생될 노래의 목록을 컨트롤하기 위해 간단히 사용할 수 있다.

ncmpc --host=localhost --port=32050

인터페이스 참고는 '1' 버튼을 눌러 받을 수 있다.

icecast

icecast에서 엄청난 삽질을 했었는데, mount되어 보여야 할 목록이 왜 안보이나 했더니, mpd에서 재생 중이어야 하 목록이 보이더군.

다음은 icecast.xml 설정 파일이다.

icecast
<icecast>
    <location>Koyang-si, Kyeoggi-do, South Korea (대한민국 경기도 고양시)</location>
    <admin>ep6tri@hotmail.com</admin>
 
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>102400</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
    </limits>
 
    <authentication>
        <source-password>010.9908.3348.#$n-s!cdnsV@@(1</source-password>
        <admin-user>changwoo</admin-user>
        <admin-password>01099083348</admin-password>
    </authentication>
 
    <hostname>localhost</hostname>		
		<listen-socket>
        <port>32050</port>
    </listen-socket>
    <fileserve>1</fileserve>
 
    <paths>
        <basedir>./</basedir>
        <logdir>./log</logdir>
        <webroot>./web</webroot>
        <adminroot>/usr/local/Cellar/icecast/2.3.3/share/icecast/admin</adminroot>
        <pidfile>./icecast.pid</pidfile>
        <alias source="/" destination="/status.xsl"/>
    </paths>
 
    <mount>
        <mount-name>/x-japan</mount-name>
    </mount>
 
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
      	<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
      	<logsize>10000</logsize> <!-- Max size of a logfile -->
        <!-- If logarchive is enabled (1), then when logsize is reached
             the logfile will be moved to [error|access|playlist].log.DATESTAMP,
             otherwise it will be moved to [error|access|playlist].log.old.
             Default is non-archive mode (i.e. overwrite)
        -->
        <!-- <logarchive>1</logarchive> -->
    </logging>
 
    <security>
        <!--
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
        -->
    </security>
</icecast>

icecast 또한 ~/.icecast에 설정과 각종 로그 파일을 집어넣어 두었다. 여기서 /usr/local/Cellar/icecast/2.3.3/share/icecast/web 부분은 따로 떼어내 홈 쪽으로 옮긴 것을 주목하라. 나중에 스킨의 추가를 위해 일부러 저렇게 두었다.

실사용

권한 조정, 데몬화 등이 필요하다. 그리고 노래 설정을 보다 편리하게 해 줄 부가적인 패키지를 필요로 한다. 일단 iOS에서는 MPoD를 이용한다. 웹 버전으로는 rompr가 있다.

실제로 한 방에 돌아가도록 조치가 취해져야 한다. 위 설정 중 상대 경로를 모두 절대로 변경하고,

radio
#!/bin/sh
~/.icecast/icecast
mpd ~/.mpd/mpd.conf

참고

Homebrew

Macports에 비해 Homebrew가 더욱 깔끔하므로 Macports를 버리고 Homebrew를 사용한다.

MacPorts

각종 라이브러리들은 MacPorts를 사용해 설치한다. 일일이 소스 설치하는 것보다 훨씬 나으리라 기대한다.

http://www.macports.org/install.php에서 간단하게 pkg 파일 받아 설치하면 끝. 설치 전에 요구 사항을 잘 읽어보기 바란다. Xcode등이 설치되어 있어야 한다.

매우 간단한 명령 몇 가지

selfupdate

포트 트리를 새롭게 업데이트한다.

트리의 패키지들을 검색

info

패키지에 대한 설명 출력

install

패키지 설치

clean

패키지 설치 중 생성된 중간 파일 모두 삭제

sudo port clean --[all|dist|archive|work] [package]

uninstall

설치된 패키지를 삭제한다.

sudo port uninstall --follow-dependencies

contents

패키지가 설치한 파일을 추력한다.

installd

설치된 패키지의 정보를 보여준다.

port installed
port -v installed atlas

outdated

오래된 패키지 정보를 출력한다.

upgrade

패키지를 업그레이드한다.

port upgrade [package]
port upgrade outdated # 모든 것을 업그레이드

MacPorts의 패키지가 저장되는 장소

아파치 같은 것들은 /usr/sbin에 저장되긴 하는데, boost와 같은 library들은 /opt/local에 저장되더라.

Apache, PHP

로컬 위키를 구축하기 위해 맥미니에도 아파치 서버를 사용하기로 결정했다. 그러나 아직은 자동으로 동작하도록 하는 init 스크립트들을 도입하지는 않았다. 그러므로 사용하려면,

sudo httpd -k start

종료하려면

sudo httpd -k stop

을 입력하자.

설치

MacPorts를 이용하여 설치.

ports install apache2

설정

설정 파일은 /private/etc/apache2에 위치한다.

개인적으로 로컬에서만 사용하기 때문에 불필요하게 '고성능'일 필요가 없다. 성능을 낮추는 방안을 생각해 보자.

PHP5

php 버전은 5.5로 잡았다. 필요한 잡다한 모듈들은 php55-* 등으로 별도 제공된다. 웹서버에서 PHP 스크립트를 확실히 작동시키려면 설정항목에서와 같이 httpd.conf에서 php 모듈이 로딩되었는지 확인하고, 모듈을 로딩시켜주면 된다.