Asterisk 18をRocky Linux 8でビルドして動かす
2021年8月22日
2024年8月30日
はじめに
現在、自宅に建っているAsteriskサーバが13なのでそろそろサポートが切れる頃合いとなってきてしまったので、ついでにOSもCentOS 7からRocky Linux 8へと移行して、Asteriskを立て直してみました。
voip-infoの情報だけではRocky Linuxにインストール出来なかったので、その辺の知見を備忘録がてら記載しておきます。
以下が構築手順です。
SELinuxを一時的に無効にする
SELinuxを一時的にログを出すけれども、動作の制限は行わないモードにする
sudo setenforce permissive sudo sed -i.bak -e 's/enforcing$/permissive/g' /etc/selinux/config
asteriskユーザの作成
asteriskを動作させるユーザを作成する
sudo useradd -s /sbin/nologin asterisk
ビルドに必要なパッケージのインストール
一部パッケージが標準リポジトリから入れられないので、epelとPower Toolsの力を借りる。
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf groupinstall "Development Tools" sudo dnf install opus-devel libedit libuuid libuuid-devel libxml2 libxml2-devel ncurses ncurses-devel sqlite-devel sqlite-libs sqlite openssl-devel openssl-libs xmlstartlet subversion git sudo dnf install --enablerepo=powertools libedit-devel
tarballを落としてビルドとインストール
ver.18の最新版を落としてきて、ビルドする。
インストール先は/opt/asterisk
にする
curl -LO http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz tar -xf asterisk-18-current.tar.gz cd asterisk-18.x.x ./configure --prefix=/opt/asterisk --with-jansson-bundled make menuselect # Codec Translatorsでcodec_opusとcodec_g729aを選択 # メインメニューは左キーで戻れる # Core Sound Packagesで「CORE-SOUND-JA」で始まるものを全て選択 # 「Q」キーで終了出来る(設定を保存するかを訊かれるので「S」キーで保存) make -j$(nproc) sudo make install sudo make sample sudo make config # systemdを使って起動するのでinitスクリプトは削除 sudo rm /etc/rc.d/init.d/asterisk # asteriskをインストールしたディレクトリの所有権をasteriskユーザにする sudo chown -R asterisk: /opt/asterisk # asteriskコマンドを使いやすいようにパスを通しておく echo -e "PATH=\"\$PATH:/opt/asterisk/sbin\"" | sudo tee /etc/profile.d/asterisk-path.sh # また、visudoでsudoersのsecure_pathにも/opt/asterisk/sbinを追加しておく sudo visudo # 88行目付近
systemdのunitファイルを書く
asteriskをサーバが立ち上がったときに自動起動するようにsystemdの定義ファイルを書いて/etc/systemd/system/asterisk.service
に設置する。
[Unit] Description=Asterisk PBX and telephony daemon. After=network.target #include these if asterisk need to bind to a specific IP (other than 0.0.0.0) #Wants=network-online.target #After=network-online.target network.target [Service] Type=simple Environment=HOME=/opt/asterisk #if systemd do not provide hostname and you need to use ${ENV(HOSTNAME)} #Environment=HOSTNAME=%H WorkingDirectory=/opt/asterisk User=asterisk Group=asterisk ExecStart=/opt/asterisk/sbin/asterisk -mqf -C /opt/etc/asterisk/asterisk.conf ExecReload=/opt/asterisk/sbin/asterisk -rx 'core reload' #if /var/run is a tmpfs, this will create /var/run/asterisk on start #RuntimeDirectory=asterisk #Nice=0 #UMask=0002 LimitCORE=infinity #LimitNOFILE= Restart=always RestartSec=4 # Prevent duplication of logs with color codes to /var/log/messages StandardOutput=null PrivateTmp=true [Install] WantedBy=multi-user.target
systemdに変更を適用
sudo systemctl daemon-reload
asteriskを起動させてみる
asteriskを起動させてみて、正常に起動するか確認する。
sudo systemctl start asterisk.service
起動したことを確認する。
$ sudo systemctl status asterisk.service ● asterisk.service - Asterisk PBX and telephony daemon. Loaded: loaded (/etc/systemd/system/asterisk.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2021-08-22 07:57:39 JST; 2s ago Main PID: 116929 (asterisk) Tasks: 76 (limit: 11394) Memory: 37.7M CGroup: /system.slice/asterisk.service └─116929 /opt/asterisk/sbin/asterisk -mqf -C /opt/etc/asterisk/asterisk.conf 8月 22 07:57:39 localhost.localdomain systemd[1]: Started Asterisk PBX and telephony daemon..
※もし起動しない場合はカレントディレクトリを/opt/asterisk
に移動してから以下のコマンドでasteriskを実行し、エラーなどを見る。
cd /opt/asterisk sudo -s -u asterisk /opt/asterisk/sbin/asterisk -mqf -C /opt/etc/asterisk/asterisk.conf
asteriskがOSが立ち上がる際に自動起動するように設定する。
sudo systemctl enable asterisk.service
以上でasteriskのビルド及び実行方法の解説を終了する。