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

ソースデータ:
- アスタリスク1.6.2-Ubuntuネイティブリポジトリから
- Ubuntu 10.04.1 LTS-最小インストールのコンテナ(x64bit)
- OpenVZのホストシステムは、Debian GNU / Linux 5.0(Lenny)2.6.26-2-openvz-amd64-ネイティブリポジトリのカーネルです。
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