AirVideoServer FreeBSD用起動スクリプト

CentOS用の起動スクリプトやFreeBSD用の色々な起動スクリプトを参考にAirVideoServerの起動スクリプトを作成したので、需要はともかくとして公開する。
あまりFreeBSDの起動スクリプトのお作法を知らない状態な上に、動けばいい精神で作成しているので、無保証であり、本スクリプトを使用した際に何か起きても当方はいかなる責任も負わない。

使い方

スクリプトの設置

/usr/local/etc/rc.d 等に設置し、実行権限を与えてください。

# cd /usr/local/etc/rc.d
# fetch http://www.funi2.jp/files/airvideoserver
# chmod 700 airvideoserver

自動起動設定

/etc/rc.conf.local等に下記の様に記述します。

airvideoserver_enable="YES"
airvideoserver_dir="/usr/local/airvideo"
airvideoserver_conf="test.properties"
  • airvideoserver_enable: YESにすることで自動起動を有効にする
  • airvideoserver_dir: AirVideoServerが設置されているディレクトリを指定する。ここで指定したディレクトリに本体(AirVideoServerLinux.jar)と設定ファイルが設置されている事。
  • airvideoserver_conf: 設定ファイル名を指定。上記例の場合、/usr/local/airvideo/test.properties が使用される。
  • 起動スクリプトを使う

    # service airvideoserver start (起動)
    # service airvideoserver status (起動確認)
    # service airvideoserver stop (終了)

    このスクリプトについて

    • 動かなかった:残念ですね。
    • ○○をこのように変えるともっと良くなるよ:ご指摘いただければ大変助かります。

    参考サイト

    スクリプト

    http://www.funi2.jp/files/airvideoserver

    #!/bin/sh
    #
    # PROVIDE: airvideoserver
    # REQUIRE: LOGIN DAEMON NETWORKING mountcritlocal
    # KEYWORD: shutdown
    #
    # Add the following lines to /etc/rc.conf.local to enable the AirVideo Server:
    #
    # airvideoserver_enable="YES"
    # airvideoserver_dir="<path to AirBideoServer directory>"
    # airvideoserver_conf="<path to conf/properties file>"
    #
    
    . /etc/rc.subr
    
    name="airvideoserver"
    rcvar=`set_rcvar`
    
    load_rc_config ${name}
    
    java="/usr/local/bin/java"
    grep="/usr/bin/grep"
    awk="/usr/bin/awk"
    xargs="/usr/bin/xargs"
    kill="/bin/kill"
    
    pidfile="/var/run/${name}.pid"
    logfile="/var/log/${name}.log"
    
    extra_commands="status"
    start_cmd="${name}_start"
    stop_cmd="${name}_stop"
    status_cmd="${name}_status"
    
    : ${airvideoserver_enable="NO"}
    : ${airvideoserver_dir="/usr/local/airvideo"}
    : ${airvideoserver_conf="test.properties"}
    
    airvideoserver_start() {
        echo -n "Starting ${name}"
        if airvideoserver_running; then
    	echo ": already running?"
        else
    	${java} -jar ${airvideoserver_dir}/AirVideoServerLinux.jar ${airvideoserver_dir}/${airvideoserver_conf} >>$logfile 2>&1 &
    	if [ $? -eq 0 ]; then
    	    ps -ww | ${grep} ${airvideoserver_dir}/${airvideoserver_conf} | ${grep} -v grep | ${awk} '{print $1}' > $pidfile
    	    echo "."
    	else
    	    echo ": Error!"
    	fi
        fi
    }
    
    airvideoserver_stop() {
        echo -n "Stopping ${name}"
        ps -ww | ${grep} ${airvideoserver_dir}/${airvideoserver_conf} | ${grep} -v grep | ${awk} '{print $1}' | ${xargs} ${kill} -9 >/dev/null 2>&1
        if [ $? -eq 0 ]; then
            rm -f $pidfile
            echo "."
        else
            echo ": Error!"
        fi
    }
    airvideoserver_status() {
        if airvideoserver_running; then
    	echo "${name} is running."
        else
    	echo "${name} is not running."
        fi
    }
    
    airvideoserver_running() {
        local running
        running=`ps -ww | ${grep} ${airvideoserver_dir}/${airvideoserver_conf} | ${grep} -v grep | ${awk} '{print $1}'`
        if [ $running ]; then
            return 0
        else
            return 1
        fi
        return 1
    }
    
    run_rc_command $1
    

AirVideoServer on FreeBSD 9.1-STABLE

iPad(第4世代)を導入したのにあわせてAirVideo Server(以下AVS、Linux用jar版)を自宅のFreeBSD stable/9環境で動かした記録。
例によって各プロンプトは #=root、%=一般ユーザ(今回の場合はminecraft)として記録、またこの記録は個人的なものであり、この記述を真似・参考にされるなどした際に問題が起きても当方はいかなる責任も負わない。

環境

  • FreeBSD 9.1-STABLE(r251971) amd64
  • 専用のjail環境を作成した
  • AirVideoserverLinux 2.4.6-beta3
  • OpenJDK7 (openjdk-7.25.15)
  • AVSのインストール先:/usr/local/airvideo
  • AVS専用ffmpegのインストール先:/usr/local/airvideo/bin

portsからインストール

  • audio/faad
  • multimedia/x264
  • java/openjdk7
  • multimedia/mpeg4ip

AVSのインストール先作成とAVS専用ffmpeg用意

# mkdir -p /usr/local/airvideo
# cd /usr/local/airvideo
# mkdir src bin
# cd src
# fetch http://inmethod.com/air-video/download/ffmpeg-for-2.4.5-beta6.tar.bz2
# tar xvjf ffmpeg-for-2.4.5-beta6.tar.bz2
# cd ffmpeg
# ./configure --enable-pthreads --disable-shared --enable-static \
--enable-gpl --enable-libx264 --enable-libmp3lame \
--extra-cflags="-I/usr/local/include -I/usr/local/include/lame" \
--extra-ldflags="-L/usr/local/lib"
(configureの引数、特にライブラリへのパス等は環境に合わせて変更すること;portsからデフォルトのインストール先にインストールした場合は上記で特に問題ないとおもわれる。)
# gmake
(makeだとコンパイルできない。)
# cp ffmpeg ../../bin/

AVSの取得と設定

# cd /usr/local/airvideo
# fetch http://inmethod.com/air-video/download/linux/alpha6/AirVideoServerLinux.jar
# vi test.properties
---
path.ffmpeg = /usr/local/airvideo/bin/ffmpeg
path.mp4creator = /usr/local/bin/mp4creator
path.faac = /usr/local/bin/faac
password = password
subtitles.encoding = windows-1250
subtitles.font = Verdana
folders = share:/path/to/directory
---
  • path.ffmpeg: ffmpegへのパス(AVS専用ffmpegへのパス)
  • path.mp4creator: multimedia/mpeg4ipでインストールされたmp4creatorへのパス(portsからインストールした場合このパスにインストールされる)
  • path.faac: audio/faadでインストールされたfaadへのパス(portsからインストールした場合このパスにインストールされる)
  • password: AirVideoから接続する際のパスワード、適宜変更の事
  • subtitles.encoding: どこの例をみてもwindows-1250(中央ヨーロッパ言語(Windows)らしい)を指定しているので真似した、文字化けとかは無い。
  • subtitles.font: どこの例を見ても指定してるので真似した、上記と同様、ちゃんとした項目の意味は不明。
  • folders: AirVideoで公開するディレクトリのパス。公開名:パス の形式でカンマ区切りで複数指定可

AVS起動

# java -jar AirVideoServerLinux.jar test.properties

クライアントから接続できればOK。

自動起動設定

自作スクリプト使用。

# cd /usr/local/etc/rc.d
# fetch http://www.funi2.jp/files/airvideoserver
# chmod 700 airvideoserver
# vi /etc/rc.conf.local
---
airvideoserver_enable="YES"
airvideoserver_dir="/usr/local/airvideo"
airvideoserver_conf="test.properties"
---
# service airvideoserver start (起動)
# service airvideoserver status (起動してるか否か)
# service airvideoserver stop (終了)

自作スクリプトについては別記事参照

参考サイト

Minecraft Server on FreeBSD 9.1-STABLE

いろいろあって Minecraft のサーバーを自宅のFreeBSD stable/9 環境で動かした記録。
なお、各プロンプトは #=root、%=一般ユーザ(今回の場合はminecraft)として記録する。
また、この記録は個人的なものであり、この記述を真似・参考にされるなどした際に問題が起きても当方はいかなる責任も負わない。

環境

  • FreeBSD 9.1-STABLE (r251971) amd64
  • 専用のjail環境を作成した
  • Minecraft 1.5.2
  • OpenJDK7 (openjdk-7.21.11)
  • minecraftユーザ(/home/minecraft)で動作させる。
  • minecraft_server.jar 設置場所:/home/minecraft/server

portsからインストール

  • java/openjdk7 (Minecraftを動かすのに必要)
  • sysutils/screen (起動スクリプトが要求)

minecraftユーザの作成

# adduser
Username: minecraft
Full name: 
Uid (Leave empty for default): 
Login group [minecraft]: 
Login group is minecraft. Invite minecraft into other groups? []: 
Login class [default]: 
Shell (sh csh tcsh nologin) [sh]: csh
Home directory [/home/minecraft]: 
Home directory permissions (Leave empty for default): 
Use password-based authentication? [yes]: 
Use an empty password? (yes/no) [no]: 
Use a random password? (yes/no) [no]: 
Enter password: (パスワード)
Enter password again: (パスワード)
Lock out the account after creation? [no]: n

プログラムの取得

# su - minecraft
% mkdir ~/server
% cd ~/server
% fetch https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar
% exit

起動スクリプト取得・自動起動設定

# fetch -o /usr/local/etc/rc.d/minecraft http://vidya.dyndns.org/stuff/minecraft
# chmod 0555 /usr/local/etc/rc.d/minecraft
# vi /etc/rc.conf.local
---
minecraft_enable="YES"
minecraft_user="minecraft"
minecraft_chdir="/home/minecraft/server"
minecraft_path="/home/minecraft/server/minecraft_server.jar"
---
# service minecraft start

psコマンド等でプロセスの起動を確認し、クライアントから接続して動作確認する。プロセスが起動しない場合は、起動スクリプトを使わずjavaコマンドで起動し、エラーを確認する。クライアントから接続できない場合はネットワーク周りを疑う(ネットワーク環境は個々に違うものなので、ここでは触れない。場合によってはファイアーウォールでのポート単位の通信制限の解除や、NAT配下の場合は特別な設定が必要になるだろう)

javaコマンドでの起動例
# java -Xmx1024M -Xms1024M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing \
-XX:ParallelGCThreads=4 -XX:+AggressiveOpts -jar minecraft_server.jar nogui

サーバー起動・終了コマンド等

  • 起動:service minecraft start
  • 終了:service minecraft stop
  • restart は当方の環境では失敗する様だった。

サーバー設定変更

  • 生成された ops.txt に自分のIDを追加する
  • server.propertiesにてホワイトリストを有効化(white-list=true)

反映には再起動(service minecraft stop && service minecraft start)のこと。

Mod追加

準備(jarを展開する)

# service minecraft stop
% cd ~/server
% mkdir minecraft_server
% cd minecraft_server
% jar xvf ../minecraft_server.jar

Minecraft Forgeの導入とjar再生成

Minecraft Forgeはダウンロードし、 ~minecraft/serverにzipを配置済みとする。

% cd ~/server
% mkdir forge
% cd forge
% unzip ../minecraftforge-universal-1.5.2-7.8.1.737.zip
% cp -Rp . ../minecraft_server/
% mv ../minecraft_server.jar ../minecraft_server.jar.20130622
% jar cvfm ../minecraft_server.jar META-INF/MANIFEST.MF .

jarコマンドはtarライクだが、jar作成時にmオプションを指定し、マニフェストファイルの指定が必要とのこと。Mod導入の反映には要・Minecraft 再起動。

参考URL