Debian GNU / Linux 5.0ホスト上のOpenVZ Ubuntu 10.04.1 LTSコンテナにアスタリスクをインストールする

画像

ソースデータ:





OpenVZホストをインストールして構成します。 OpenVZホストをセットアップする機能はここでは考慮されません。

ゲストマシンのNATやサーバーに必要なポートの転送など、正しく構成されていると考えています。



ゲストOSのテンプレートをダウンロードします



cd /var/lib/vz/template/cache

wget download.openvz.org/template/precreated/contrib/ubuntu-10.04-minimal_10.04_amd64.tar.gz








コンテナを作成してカスタマイズする



sudo vzctl create 101 --ostemplate ubuntu-10.04-minimal_10.04_amd64





テンプレートからID = 101のコンテナを作成しました

sudo vzctl set 101 --name voip --save





コンテナ名を設定します

sudo vzctl set 101 --hostname voip.hurnet.ru --save





コンテナのホスト名を設定します

sudo vzctl set 101 --nameserver 8.8.8.8 --save





コンテナのDNSを設定します

sudo vzctl set 101 --description 'Asterisk VoIP server' --save





コンテナの説明

sudo vzctl set 101 --ipadd 192.168.xxx.xxx --save





ネットワークインターフェイスのアドレスを設定します

sudo vzctl set 101 --cpulimit 60 --save





プロセッサ使用の制限を設定します

sudo vzctl set 101 --diskspace 9000000:10000000 --save





9GBのディスククォータ(10GBまでの一時的な超過)

sudo vzctl set 101 --quotatime 6000 --save





割り当てを超過できる時間

sudo vzctl set 101 --privvmpages 750M:768M --save





利用可能なメモリ

sudo vzctl set 101 --vmguarpages 250M:256M --save





保証されたメモリ量

sudo vzctl start 101





始める

sudo vzctl enter 101





私たちはコンテナに入ります

apt-get update

apt-get upgrade






更新しました

sudo vzctl restart 101





(ホストマシンで実行し、コンテナに戻ります)

sudo apt-get install asterisk







アスタリスクを入れます



彼は自分と一緒に必要な依存関係を引き出します。 インストール中に、彼らは電話を求めます

地域コード(ロシアの場合、これは7です)、およびgrubに関するいくつかの質問(関係ありません。カーネルとコンテナーのローダーは変更できないためです)。



ここからロシア語の音声フレーズをダウンロードhttp://ivrvoice.ru/downloader

最新のアーカイブを取得します。 私の場合、これはアスタリスク-ru- gsm- 2010-04--28。Tar。Gz

cd /usr/share/asterisk/sounds/

wget ivrvoice.ru/downloader/download/file/11

tar xvfz 11

rm 11








アスタリスクを使い始める



/etc/asterisk/sip.confに移動して、オプションを見つけてコメントを外し、修正します

language=ru





[general]セクションでallowguest=no



オプションのallowguest=no



ます

ファイルの最後に、新しいセクションを作成します

[200] ; Test user

type=friend

host=dynamic

username=200

secret=123

nat=no

canreinvite=no

context=office

callerid=”testuser″ <200>

allow=gsm

allow=ulaw

allow=alaw






これにより、1人のテストユーザーを作成しました。 詳細な構文と説明はドキュメントに記載されています。



次に、/ etc / asterisk / extensions.confファイルの最後に拡張機能を作成します

[office]

exten => 200,1, Macro(stdexten,200,SIP/200)

exten => testuser, 1, Goto(200|1)

include => demo



[macro-stdexten]

exten => s, 1, Dial (${ARG2},20,t [4] )

exten => s, 2, Goto(s-$(DIALSTATUS),1)

exten => s-NOANSWER, 1, Voicemail(u${ARG1})

exten => s-NOANSWER, 2, (Goto(default,s,1))

exten => s-BUSY, 1, Voicemail(b,${ARG1})

exten => s-BUSY, 2, (Goto(default,s,1))

exten => _s-., 1, Goto(s-NOANSWER)

exten => a, 1, VoiceMailMain(${ARG1})








アスタリスクシステムへの人間の統合を構成しましょう



グループと、システムでアスタリスクが機能するユーザーを作成します。

addgroup --gid 109 asterisk

adduser --home /var/lib/asterisk --shel /bin/false --uid 104 --gid 109 --disabled-login asterisk

adduser asterisk dialout

adduser asterisk audio






次のようになります。

# cat /etc/group |grep asterisk

dialout:x:20:asterisk

audio:x:29:asterisk

asterisk:x:109:

# cat /etc/passwd |grep asterisk

asterisk:x:104:109:Asterisk PBX daemon,,,:/var/lib/asterisk:/bin/false








ファイルに必要な権限を設定します

chown -R asterisk. /etc/asterisk

chown -R asterisk. /var/{lib,log,spool}/asterisk

chown -R asterisk. /usr/share/asterisk/

mkdir /var/run/asterisk

chown -R asterisk. /var/run/asterisk/








起動スクリプトを作成します。

以下の内容のnano /etc/init.d/asterisk







#! / bin / sh



#アスタリスクアスタリスクPBXを開始

#©Mark Purcell <msp@debian.org>

#©Tzafrir Cohen <tzafrir.cohen@xorcom.com>

#©Faidon Liambotis <paravoid@debian.org>



#このパッケージはフリーソフトウェアです。 あなたはそれを再配布および/または変更することができます

#GNU General Public Licenseの条件の下で発行

#フリーソフトウェア財団; ライセンスのバージョン2、または

#(オプションで)それ以降のバージョン。



#ベース:



#/etc/init.d/スクリプトをビルドするスケルトンのサンプルファイル。

#このファイルは、/ etc / init.dのスクリプトを作成するために使用する必要があります。



#Miquel van Smoorenburg <miquels@cistron.nl>によって書かれました。

#Debian GNU / Linux用に変更

#by Ian Murdock <imurdock@gnu.ai.mit.edu>。



#バージョン:@(#)スケルトン1.9 2001年2月26日miquels@cistron.nl





###開始情報の開始

#提供:アスタリスク

#必須開始:$ local_fs zaptel

#必須:$ local_fs

#開始する必要があります:

#すべきこと:

#デフォルト開始:2 3 4 5

#デフォルト停止:0 1 6

#簡単な説明:アスタリスクPBX

#説明:アスタリスクPBXを制御します

###終了情報の終了



PATH = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin

NAME =アスタリスク

USER = $ NAME

グループ = $ USER

デーモン = / usr / sbin / $ NAME

DESC = "アスタリスクPBX"

PIDFILE = "/var/run/asterisk/asterisk.pid"

ASTSAFE_PIDFILE = "/var/run/asterisk/asterisk_safe.pid"

PIDFILE_DIR = ` dirname $ PIDFILE`

UMASK = 007 #デフォルトで

#MAXFILES = 1024#(システムのデフォルト)



#デフォルトで:リアルタイム優先度を使用

パラメータ = ""

CHDIR_PARM = ""

AST_REALTIME = 「はい」

RUNASTERISK = "yes"

AST_DUMPCORE = "no"

AST_DUMPCORE_DIR = "/ var / spool / asterisk" #AST_DUMPCORE!=いいえの場合のみ使用

#core_pattern。 参照:http://lxr.linux.no/source/Documentation/sysctl/kernel.txt

#CORE_PATTERN =

if [ -r / etc / default / $ NAME ] ; その後/ etc / default / $ NAME ; fi



if [ " $ RUNASTERISK " = "yes" ] ; それから

echo "アスタリスクはまだ設定されていません。最初に/ etc / default /アスタリスクを編集してください。"

出口 0

fi



if [ " $ AST_REALTIME " = "no" ]

それから

パラメータ = " $パラメータ -p"

fi



if [ " $ AST_DUMPCORE " = "no" ]

それから

パラメータ = " $パラメータ -g"

if [ " $ CORE_PATTERN " = '' ]

それから

echo " $ CORE_PATTERN " > / proc / sys / kernel / core_pattern

fi

if [ -d " $ AST_DUMPCORE_DIR " ]

それから

CHDIR_PARM = "--chdir $ AST_DUMPCORE_DIR "

fi

fi



if [ "x $ USER " = "x" ]

それから

echo "エラー:ユーザー名が空です"

1 番出口

fi

if [ ` id -u " $ USER " ` = 0 ]

それから

echo 「ルートとしての起動はサポートされていません。」

1 番出口

fi

パラメータ = " $パラメータ -U $ユーザー "



if [ "x $ AST_DEBUG_PARAMS " = x ]

それから

AST_DEBUG_PARAMS = -cvvvvvddddd

fi

if [ " $ RUNASTSAFE " = "yes" ] ; それから

#WRAPPER_DAEMONの値は、/ etc / default /アスタリスクで設定できます

WRAPPER_DAEMON = $ {WRAPPER_DAEMON:-/ usr / sbin / safe_asterisk}

REALDAEMON = " $ WRAPPER_DAEMON "

他に

REALDAEMON = " $ DAEMON "

fi



test -x $ DAEMON || 出口 0



もし [ -d " $ PIDFILE_DIR " ] ; それから

mkdir " $ PIDFILE_DIR "

chown $ USER$ GROUP " $ PIDFILE_DIR "

fi



セット -e



if [ " $ UMASK " = '' ]

それから

umask $ UMASK

fi



#プロセスごとのオープンファイル制限の変更を許可:

if [ " $ MAXFILES " = '' ]

それから

ulimit -n $ MAXFILES

fi



ステータス {

plist = ` ps ax | awk "{if(\ \ $ 5 == \" $ DAEMON \ " )print \ \ $ 1}" `

if [ " $ plist " = "" ] ; それから

echo " $ DESCは停止しています"

1を 返す

他に

echo " $ DESCが実行中: $ plist "

0を 返す

fi

}



asterisk_rx {

もし ステータス> / dev / null; 次に 0 返し ますfi



#$ HOMEが設定されている場合、アスタリスク-rxは.asterisk_historyを書き込みます



HOMEの設定を解除



$ DAEMON -rx "$ 1"



}



ケース 「$ 1」

デバッグ

#スキップしたくない特別なパラメータが多すぎる

#誤って。 -Uを一度スキップすると、

#紛らわしい結果。 ユーザーの選択も維持したい

#の-p

echo " $ DESCのデバッグ:"

$ DAEMON $ PARAMS $ AST_DEBUG_PARAMS

出口 0

;;

開始

ステータス> / dev / nullの場合; それから

echo " $ DESCはすでに実行中です。再起動を使用してください。"

出口 0

fi

echo -n " $ DESCの開始:"

if [ " $ RUNASTSAFE " = "yes" ] ; それから

#TODO:アスタリスクとしてラッパーを取得した場合

#殺された? 私たちがいる場合、ステータスはラッパーをチェックする必要があります

#「セーフモード」

ステータス> / dev / nullの場合; それから

echo " $ DESCはすでに実行中です。再起動を使用してください。"

出口 0

fi

start-stop-daemon --start --group $ GROUP --pidfile " $ PIDFILE " \

$ CHDIR_PARM \

--exec $ REALDAEMON-$パラメーター

他に

start-stop-daemon --start --group $ GROUP \

--background --make-pidfile \

$ CHDIR_PARM --pidfile " $ ASTSAFE_PIDFILE " \

--exec $ REALDAEMON-$パラメーター

fi





echo " $ NAME 。"

;;

停止

echo -n " $ DESCの停止: $ NAME "

#優雅に試してください。

#場合によってはハングすることがあります。 具体的には、アスタリスクが

#プロセスが停止します。 クリーンアップについて心配する必要はありません。

#アスタリスクが死ぬと失敗するか死にます。

asterisk_rx 'stop now' > / dev / null 2 >& 1

if [ " $ RUNASTSAFE " = "yes" ] ; それから

start-stop-daemon --stop --quiet --oknodo \

--pidfile $ ASTSAFE_PIDFILE

rm -f $ ASTSAFE_PIDFILE

fi

#本当に死んでいることを確認するだけです。

#バックグラウンドにアスタリスク-rがある場合に備えて、KILLが必要です

start-stop-daemon --stop --quiet --oknodo --retry = 0/2 / TERM / 2 / KILL / 5 --exec $ DAEMON

エコー "。"

;;

リロード

echo " $ DESC構成ファイルの再読み込み。"

asterisk_rx 'モジュールのリロード'

;;

ロガーリロード

asterisk_rx 'ロガーリロード'

;;

拡張機能-リロード| dialplan-reload

echo " $ DESC構成ファイルの再読み込み。"

asterisk_rx 「ダイヤルプランリロード」

;;

再起動が便利

asterisk_rx 「便利なときに再起動」

;;

再起動| 強制リロード

0ストップ

$ 0スタート

;;

ステータス

状態

出口 $?

;;

zaptel-fix

echo "アスタリスクとザプテルの読み込みと読み込み解除:"

0ストップ

/ etc / init.d / zaptelアンロード

#/ etc / modulesからモジュールをロードします。 頼りにするとこれは壊れます

#発見/ホットプラグ

/ etc / init.d / module-init-tools

/ etc / init.d / zaptel start

$ 0スタート

;;

*

N = / etc / init.d / $ NAME

echo "使用法: $ N {開始|停止|再起動|再読み込み|ステータス|デバッグ|ロガー再読み込み|拡張機能再読み込み|再起動便利|強制再読み込み}" >& 2

1 番出口

;;

エサック



出口 0




私たちは彼に正しい権利を与えます

chmod 755 /etc/init.d/asterisk







起動時に起動します。

update-rc.d asterisk defaults 90 10







コンテナを再起動して、すべてが自動的に開始されるようにします。

sudo vzctl restart 101







VoIPクライアントと接続して、すべてが機能することを確認します。

192.168.xxx.xxx

: 200

: 123








たとえば、500番へのテストコールの発信



喜ぶ。



All Articles