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