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番へのテストコールの発信

喜ぶ。

Source: https://habr.com/ru/post/J107571/


All Articles