Ubuntu18.04直接安裝opensips
- 本人實踐親測有效,用docker安裝opensips嘗試多次均無法連線mysql資料庫,故舍棄,直接在主機上安裝opensips
- 部分內容參考自:https://www.jianshu.com/p/db19658a02a1
建立目錄,下載程式解壓,切換到解壓目錄
- opensips目前最新是3.2.x,但由於3.x版本後砍了opensipsctlrc配置項,無法自動生成資料庫,官方是3.0後版本推薦手動新增庫、新增表2張表,但沒看到使用者怎麼新增,故只實踐2.4.11版本。
- 官方推薦的3.x的mysql配置檔案以及2張表資料結構,參考,本專案未使用
# mkdir /home/opensips
# cd /home/opensips
# wget http://download.opensips.org/2.4.11/opensips-2.4.11.tar.gz
//解壓
# tar -zxvf opensips-2.4.11.tar.gz
//切換目錄
# cd opensips-2.4.11
安裝依賴
# apt update
# apt install gcc -y
# apt install g++ -y
# apt install build-essential -y
//mysql必須為5.7版本,服務端已經裝好docker,這裡就不裝了,若要安裝,則安裝下,要去配置檔案中註釋監聽地址 # 127.0.0.1
// #apt-get install mysql-server
# apt install mysql-client
# apt install libmysqlclient-dev -y
# apt install pkg-config
# apt install libssl-dev
# apt-get install perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libberkeleydb-perl
# apt-get install bison flex libncurses5 libncurses5-dev
編譯程式碼
1. mark編譯包
# make menuconfig
- mark過程應該不報錯,應為這樣
2. 進入選單
- 操作提示:空格/回車選擇,q返回上一級
2.1 選擇mysql模組
- 選擇Configure Compile Options,再選擇 Configure Excluded Modules,按空格選中安裝mysql模組
2.2 設定配置檔案安裝位置
- 選擇mysql模組後按q返回,選擇Configure Install Prefix,回車預設安裝在/usr/local/下
2.3 儲存修改
- 選擇Save Changes 儲存修改,提示需要libmysqlclient-dev不用理會,前面已經安裝了
2.4 編譯安裝
-
按q返回,選擇Compile And Install OpenSIPS後回車,等待3分鐘左右編譯,正常依賴都裝好了不會提示依賴問題,若有提示可能是某依賴裝失敗了需要重灌,按Ctrl+c退出介面後用apt安裝包,若包安裝失敗原因有很多,或許是apt源沒配置對ubuntu的版本,又或許是相容性,具體需要百度查詢。
-
安裝完成,提示Press any to return to menuconfig後按Exit & Save All Changes後退出
配置資料庫
切換目錄
# cd /usr/local/etc/opensips
編輯opensipsctlrc檔案(3.0版本後無此檔案)
# vim opensipsctlrc
- 配置項裡的內容修改了只對本工具有效,這個工具用來生成opensips資料庫和sip的使用者名稱和密碼用的工具
登入mysql,建立oepnsips使用者
- 登入mysql後,建立opensips要用的新使用者opensips,這裡用他預設使用者名稱opensips和密碼opensipsrw
CREATE USER 'opensips'@'%' IDENTIFIED BY 'opensipsrw';
GRANT ALL ON opensips.* TO 'opensips'@'%';
flush privileges;
建立opensips資料庫
//進入資料夾
# cd /usr/local/sbin
//建立資料庫,這時候如果mysql版本為8.0以上的話會列出一系列編碼選擇,得mysql5.7版本不會出現這問題
opensipsdbctl create
//表建立完成後(提示的兩個問題都選n)
- 建立的表結構如下
生成特定配置檔案
//進入目錄
# cd /usr/local/etc/opensips
# osipsconfig
- 操作內容
//依次選擇—> Generate OpenSIPS Script —> Residential Script —> Configure Residential Script
//選中如下幾項[*] ENABLE_TCP[*] USE_AUTH[*] USE_DBACC[*] USE_DBUSRLOC[*] USE_DIALOG
//按q返回,選擇 —> Generate Residential Script 回車,生成新的配置檔案,檔案格式為opensips_residential_xxxxx.cfg,按qqq退出命令,生成新的配置檔案
備份舊檔案,修改新檔案
//備份原配置檔案
# mv opensips.cfg opensipsold.cfg1
//用生成的opensips_residential_xxx.cfg替換原先的opensips.cfg:
# mv opensips_residential_2021-7-21_6:35:0.cfg opensips.cfg
//編輯新生成的配置檔案,修改監聽埠和ip,ip把127.0.0.1改為自己的ip,儲存
# vim opensips.cfg
注意配置資料庫連線,若都用預設且mysql服務在本機可不用配置
- 前面配置的opensipsctlrc只是輔助工具用的不是opensips主程式用的
- 官網說明配置檔案opensips.cfg配置資料庫方式為,故前一步開啟的opensips.cfg檔案內有關於mysql相關的配置要修改(可修改地方通常標記CUSTOMIZE ME),比如mysql的地址,埠,庫名稱按如下格式修改,例如:mysql://root:123456@192.168.1.10:3360/opensips
建立賬號
opensipsctl add 1000 123456 //建立賬號1000 密碼123456
opensipsctl add 1001 123456 //建立賬號1001 密碼123456
//建立賬號將在表subscriber新增一條記錄,也可以在資料庫直接修改
常用命令
sudo opensipsctl start 啟動服務
sudo opensipsctl stop 停止服務
sudo opensipsctl restart 重啟服務
啟用
# opensipsctl start
手機安裝軟體測試
-
安卓手機可以裝個Linphone
-
蘋果手機可以裝個PortSIP UC
-
設定蘋果手機賬號為1000
-
設定安卓手機賬號為1001
-
用蘋果手機撥通安卓手機, PortSIP UC通話介面
-
安卓手機, Linphone通話介面
-
通話完成後在acc表會新增1條INVITE記錄和一條BYE記錄
附錄:注意事項,異常項
//後面啟動時候一直提示:ERROR: PID file /var/run/opensips.pid does not exist -- OpenSIPS start failed
//應該是mysql版本問題,再裝一個5.7版本的mysql試試
//docker裝mysql5.7
# docker pull mysql:5.7
# docker run -itd --name mysql57 \
-p 3360:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
//如果建立使用者時提示“ERROR: domain unknown: use usernames with domain or set default domain in SIP_DOMAIN”,
//可修改opensipsctlrc檔案將SIP_DOMAIN設為本機域名或IP地址
//檢視本機apt可安裝的mysql版本,如果最新的版本為5.7就安裝5.7
apt-cache madison mysql-server