在Debian上安裝freeswitch

shizidushu發表於2024-08-12

在Debian上安裝freeswitch

說明:

  • 首次發表日期:2024-08-12
  • 參考文件:
    • https://medium.com/@jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6
    • https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Installation/Linux/Deprecated-Installation-Instructions/Debian-Post-Install-Tasks_13172868/
    • https://blog.csdn.net/qq_36369267/article/details/131564019

安裝系統依賴

檢視系統版本:

cat /etc/issue
Debian GNU/Linux 12 \n \l

安裝系統依賴:

參考 https://medium.com/@jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6

sudo apt update

sudo apt-get install build-essential automake autoconf git-core wget libtool cmake pkg-config uuid-dev

sudo apt-get install libncurses5-dev libtiff-dev libjpeg-dev zlib1g-dev libssl-dev libsqlite3-dev

sudo apt-get install libpcre3-dev libspeexdsp-dev libspeex-dev libcurl4-openssl-dev libopus-dev libpq5 libpq-dev unixodbc-dev libldns-dev libedit-dev yasm liblua5.2-dev liblua5.2-0 libxml2-dev lua5.2 lua5.2-doc libtiff5-dev libsndfile1-dev unzip sngrep libreadline-dev ntpdate

sudo apt install python3 python3-venv python3-pip python3-distutils

sudo apt install libavformat-dev libswscale-dev

構建和安裝依賴庫

libks

  • https://github.com/signalwire/libks
git clone -b v2.0.6 https://github.com/signalwire/libks.git
cd libks
cmake . -DCMAKE_BUILD_TYPE=Release
make -j 32
sudo make install

注意:可能需要註釋掉CMakeList.txtGenerate a Debian compliant changelog的部分

singalwire-c

  • https://github.com/signalwire/signalwire-c
git clone -b v2.0.0 https://github.com/signalwire/signalwire-c.git
cd signalwire-c
cmake . -DCMAKE_BUILD_TYPE=Release
make -j 32
sudo make install

spansdp

參考: https://blog.csdn.net/qq_36369267/article/details/131564019

git clone https://github.com/freeswitch/spandsp.git
cd spandsp/
git checkout -b finecode20230705 0d2e6ac65e0e8f53d652665a743015a88bf048d4
./bootstrap.sh
./configure
make -j 32
sudo make install

sofia-sip

git clone -b v1.13.17 https://github.com/freeswitch/sofia-sip.git
cd sofia-sip
./bootstrap.sh
./configure
make -j 32
sudo make install

安裝 freeswitch

wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.12.-release.tar.gz
tar -xvf freeswitch-1.10.12.-release.tar.gz
cd freeswitch-1.10.12.-release
./configure --enable-core-odbc-support --enable-core-pgsql-support
make -j 32
sudo make install

注意:原始碼打包為tar.gz前已經執行了bootstrap.sh了,所以不需要執行bootstrap.sh

安裝聲音檔案:

# 標準
sudo make sounds-install
sudo make moh-install
# 高畫質
sudo make cd-sounds-install
sudo cd-moh-install

配置軟連結:

sudo ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/
sudo ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin

sudo ln -s /usr/local/freeswitch/conf /etc/freeswitch

設定許可權:

參考: https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Installation/Linux/Deprecated-Installation-Instructions/Debian-Post-Install-Tasks_13172868#set-owner-and-permissions

sudo groupadd freeswitch

sudo adduser --quiet --system --home /usr/local/freeswitch --gecos 'FreeSWITCH open source softswitch' --ingroup freeswitch freeswitch --disabled-password

sudo chown -R $USER:freeswitch /usr/local/freeswitch/   
sudo chmod -R ug=rwX,o= /usr/local/freeswitch/
sudo chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*

執行

freeswitch

其中

  • /etc/freeswitch/資料夾下存放配置檔案
  • /usr/local/freeswitch/db存放可能用到的sqlite資料庫檔案,如core.db

檢查程序檢視freeswitch是否在執行:

ps aux | grep freeswitch

檢視freeswitch監聽的IP地址:

netstat -an | grep 5060

配置為系統服務(開機啟動)

建立service檔案:

sudo vi /etc/systemd/system/freeswitch.service

貼上如下內容:

[Unit]
Description=FreeSWITCH
Wants=network-online.target
Requires=network.target local-fs.target
After=network.target network-online.target local-fs.target

[Service]
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
Environment="DAEMON_OPTS=-nonat"
Environment="USER=freeswitch"
Environment="GROUP=freeswitch"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/chown -R ${USER}:${GROUP} /usr/local/freeswitch
ExecStart=/usr/local/freeswitch/bin/freeswitch -u ${USER} -g ${GROUP} -ncwait ${DAEMON_OPTS}
TimeoutSec=45s
Restart=always

[Install]
WantedBy=multi-user.target

Reload systemd daemon:

sudo systemctl daemon-reload

開啟和啟動服務:

sudo systemctl enable freeswitch.service
sudo systemctl start freeswitch.service

檢視服務狀態:

sudo systemctl status freeswitch.service

相關文章