kakailio官网推荐的安装流程ubuntu 22.04
https://kamailio.org/docs/tutorials/6.0.x/kamailio-install-guide-git/
# 非必须项
wget -O- https://deb.kamailio.org/kamailiodebkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/kamailio.gpg
在/etc/apt/sources.list文件追加以下内容
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 stretch main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 stretch main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 buster main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 buster main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 bullseye main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 bullseye main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 bookworm main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 bookworm main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 bionic main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 bionic main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 focal main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 focal main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 jammy main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 jammy main
deb [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 noble main
deb-src [signed-by=/usr/share/keyrings/kamailio.gpg] http://deb.kamailio.org/kamailio60 noble main
apt update
apt full-upgrade
apt install -y make autoconf pkg-config git gcc g++ flex bison \
libssl-dev default-libmysqlclient-dev
mkdir -p /usr/local/src/kamailio-6.0
cd /usr/local/src/kamailio-6.0
git clone --depth 1 --branch 6.0 https://github.com/kamailio/kamailio kamailio
cd kamailio
make cfg PREFIX=/usr/local/kamailio
make all #make -j$(nproc) all
make install
make install-systemd-debian
部分模块需要的依赖
apt install libwolfssl-dev -y
apt install liblua5.3-dev -y # lua脚本
apt install libxml2-dev -y #cdp
apt install libhiredis-dev -y #cnxcc
apt install libevent-dev -y #cnxcc
apt install libldap2-dev -y #db2_ldap
apt install libsasl2-dev -y #db2_ldap
apt install unixodbc-dev -y #db_unixodbc
apt install libpcre2-dev -y #dialplan
# apt install libldns-dev -y # dnssec还需要validator 安装失败 暂时不加载
apt install -y erlang # enum
apt install libev-dev -y # evapi
apt install libgcrypt-dev -y #gcrypt
apt install libgeoip-dev -y # geoip
apt install libmaxminddb-dev -y #geoip2
apt install libcurl4-openssl-dev -y #http_async_client
apt install libmnl-dev # ims_ipsec_pcscf
apt install libjson-c-dev #json
apt install librabbitmq-dev -y
apt-get install uuid-dev #kazoo
apt install libsystemd-dev -y #log_systemd
apt install libwebsockets-dev -y #lwsc
apt install libmemcached-dev -y #memcached
apt install libmicrohttpd-dev -y #microhttpd
apt install libmosquitto-dev -y #mqtt
apt install libprotobuf-c-dev
apt install libphonenumber-dev -y #libphonenumber
git clone git@github.com:nats-io/nats.c.git . #nats
apt install libnghttp2-dev -y #nghttp2
git clone https://github.com/miconda/ruxc
cd ruxc
make lib
make install
apt-get install libsctp-dev #sctp
# secsipid_proc
apt install libsnmp-dev -y #snmpstats
apt install libpcre2-dev -y #dialplan
#stirshaken
# tlsa
git submodule update --init --recursive
已经安装加载的包
acc_diameter,drouting,log_custom,pua_reginfostatsd,acc_json,enum,log_systemd,pua_rpcstun,acc,erlang,lost,pua,sworker,alias_db,evapi,lrkproxy,pua_usrlocsystemdops,app_jsdt,evrexec,lwsc,pua_xmpptcpops,app_lua,exec,mangler,p_usrloctextops,async,file_out,math,pv_headerstextopsx,auth_db,gcrypt,matrix,pv,timer,auth_diametergeoip2,maxfwd,pvtpl,tlsa,auth_ephemeralgeoip,mediaproxy,qos,tls,auth,group,memcached,rabbitmqtls_wolfssl,auth_xkeysgzcompress,microhttpd,ratelimittmrec,avpops,h350,misctest,regex,tm,avp,htable,mohqueue,registrartmx,benchmarkhttp_async_clientmqtt,rls,topoh,
blst,http_client,mqueue,rr,topos_htable,call_controlimc,msilo,rtimertopos_redis,call_obj,ims_auth,msrp,rtjsontopos,arrierrouteims_charging,mtree,rtpenginetsilo,cdp_avp,ims_dalog,nathelper,rtpproxyuac_redirect,cdp,ims_diameter_servernats,ruxc,uac,cfg_db,ims_icscf,nat_traversal,sanityuid_auth_db,cfg_rpc,ims_ipsec_pcscfndb_redis,sca,uid_avp_db,cfgtims_isc,nghttp2,sctp,uid_domain,cfgutils,ims_ocs,nosip,sdpopsuid_gflags,cnxcc,ims_qos_npn,outbound,seas,uid_uri_db,corex,ims_qos,path,secfilteruri_db,counters,ims_registrar_pcscfpdb,secsipiduserblocklist,cplc,ims_registrar_scscfpdt,sipcaptureusrloc,crypto,ims_usrloc_pcscfpermissions,sipdumputils,ctl,ims_usrloc_scscfphonenum,sipjsonuuid,db2_ldap,ifluxdbc,pike,siprepowebsocket,db2_ops,ipops,pipelimit,siptracexcap_clent,db_clusterjanssonrpcc,posops,sipt,xcap_server,db_flatstorejansson,prefix_route,siputilsxhttp_pi,db_mysql,jsonrpcc,presence_conferenceslack,xhttp_prom,db_redis,jsonrpcs,presence_dfks,sl,xhttp_rpc,db_text,json,presence_dialoginfosmsopsxhttp,db_unixodbcjwt,presence_mwi,sms,xlog,debugger,kafka,presence_profilesnmpstatsxmlops,dialog,kazoo,presence_reginfospeeddialxmlrpc,dialplan,keepalive,presence,sqlopsxmpp,dispatcherkemix,presence_xml,ss7opsxprint,diversionkex,pua_bla,sst,domainpolicylcr,pua_dialoginfostatistics,domain,ldap,pua_json,statsc
加载失败的模块
stirshaken secsipid_proc rtp_media_server peering nsq ndb_mongodb ndb_cassandra dnssec dlgs dmq dmq_usrloc db_oracle db_sqlite db_perlvdb db_postgres db_berkeley db_cassandra db_mongodb app_java app_perl app_python app_python3 app_python3s app_ruby app_ruby_proc acc_radius auth_radius misc_radius $(skip_modules)
需要通过git编译的模块
# acc_json
https://github.com/akheron/jansson.git
报错 -- Could NOT find Sphinx (missing: Sphinx-build_EXECUTABLE Sphinx_VERSION_STRING)
CMake Warning at CMakeLists.txt:370 (message):
Sphinx not found. Cannot generate documentation!
Set -DJANSSON_BUILD_DOCS=OFF to get rid of this message.
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/kamailio-6.0/jansson/build
解决方案
apt-get install python3-sphinx
#jwt.so libjwt - 最低版本 1.12.0。
# https://github.com/benmcollins/libjwt/archive/refs/tags/v1.12.0.tar.gz
https://github.com/benmcollins/libjwt/archive/refs/tags/v1.12.1.tar.gz
CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to `find_package_handle_standard_args` (LibJansson)
does not match the name of the calling package (Jansson). This can lead to
problems in calling code that expects `find_package` result variables
(e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
cmake/FindJansson.cmake:25 (find_package_handle_standard_args)
libjwt/CMakeLists.txt:46 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
有以上警告可以不用理会
#kafka.so
# 据报道,像 1.1.0 这样的旧 librdkafka 版本可以工作。 较新的版本应该可以正常工作(例如:版本 1.2.2-RC1 也可以正常工作) https://github.com/edenhill/librdkafka/releases
https://github.com/confluentinc/librdkafka/archive/refs/tags/v1.2.2-RC1.tar.gz
disabling linker-script since python is not available
#如果还没有安装 Python,可以忽略该警告,因为它只是影响某些特性或功能的生成,并不会影响核心功能
#nats.so
https://github.com/nats-io/nats.c/archive/refs/tags/v3.9.2.tar.gz
##ruxc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.bashrc
source $HOME/.cargo/env
git clone https://github.com/miconda/ruxc
cd ruxc
make lib
make install
LD (gcc) [M tlsa.so] tlsa.so
sources = tls_cfg.c tls_config.c tls_ct_wrq.c tls_domain.c tls_init.c tls_rpc.c tls_select.c tls_server.c tls_util.c tls_verify.c tls_wolfssl_mod.c , auto_gen = , objs = tls_cfg.o tls_config.o tls_ct_wrq.o tls_domain.o tls_init.o tls_rpc.o tls_select.o tls_server.o tls_util.o tls_verify.o tls_wolfssl_mod.o
sources = tls_cfg.c tls_config.c tls_ct_wrq.c tls_domain.c tls_init.c tls_rpc.c tls_select.c tls_server.c tls_util.c tls_verify.c tls_wolfssl_mod.c , auto_gen = , objs = tls_cfg.o tls_config.o tls_ct_wrq.o tls_domain.o tls_init.o tls_rpc.o tls_select.o tls_server.o tls_util.o tls_verify.o tls_wolfssl_mod.o
/bin/sh: 3: ./autogen.sh: not found
env: ‘./configure’: No such file or directory
/bin/sh: 3: ./autogen.sh: not found
make[2]: *** [Makefile:28: ../../../misc/external/wolfssl/build/include/wolfssl/options.h] Error 127
make[2]: *** Waiting for unfinished jobs....
env: ‘./configure’: No such file or directory
make[2]: *** [Makefile:28: ../../../misc/external/wolfssl/build/lib/libwolfssl.a] Error 127
make[1]: *** [Makefile:509: modules] Error 1
make[1]: Leaving directory '/usr/local/src/kamailio-6.0/kamailio/src'
make: *** [Makefile:34: all] Error 2
git submodule update --init --recursive
最终文件内容
# this file is autogenerated by make modules-cfg
# the list of sub-directories with modules
modules_dirs:=modules
# the list of module groups to compile
cfg_group_include=
# the list of extra modules to compile
include_modules=
# the list of static modules
static_modules=
# the list of modules to skip from compile list
skip_modules=
# the list of modules to exclude from compile list
exclude_modules= stirshaken secsipid_proc rtp_media_server peering nsq ndb_mongodb ndb_cassandra dnssec dlgs dmq dmq_usrloc db_oracle db_sqlite db_perlvdb db_postgres db_berkeley db_cassandra db_mongodb app_java app_perl app_python app_python3 app_python3s app_ruby app_ruby_proc acc_radius auth_radius misc_radius $(skip_modules)
modules_all= $(filter-out modules/CVS modules/CMakeLists.txt, $(wildcard modules/*))
modules_noinc= $(filter-out $(addprefix modules/, $(exclude_modules) $(static_modules)), $(modules_all))
modules= $(filter-out $(modules_noinc), $(addprefix modules/, $(include_modules) )) $(modules_noinc)
modules_configured:=1
设置环境变量
echo 'export PATH=/usr/local/kamailio/sbin:$PATH' | sudo tee -a /etc/profile
source /etc/profile
备注
sudo apt-get install libwolfssl-dev
git clone --recursive https://github.com/wolfssl/wolfssl
cd wolfssl
./autogen.sh
./configure
make
sudo make install
sudo groupadd kamailio
sudo useradd -r -g kamailio -d /usr/local/kamailio -s /sbin/nologin kamailio
设置system管理及开机启动
/etc/systemd/system/kamailio.service > /dev/null <<EOF
[Unit]
Description=Kamailio SIP Server
After=network.target
[Service]
Type=simple
User=kamailio
Group=kamailio
ExecStart=/usr/local/kamailio/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /usr/local/kamailio/etc/kamailio/kamailio.cfg
PIDFile=/var/run/kamailio/kamailio.pid
RuntimeDirectory=kamailio
RuntimeDirectoryMode=0755
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start kamailio
systemctl enable kamailio