ubuntu 12.10中安装opensips 1.8.2
首先下载opensips-1.8.2_src.tar.gz
解压软件包:
tar -zxvf opensips-1.8.2_src.tar.gz
准备步骤:
编译前需确认安装以下软件包:
sudo apt-get install bison
sudo apt-get install flex
mysql数据库相关软件包安装:
sudo apt-get install mysql-server mysql-client
再装开发包
sudo apt-get install libmysqlclient-dev
修改编译配置文件: Makefile.conf
将exclude_modules中 db_mysql去掉
中间可能会有找不到curses.h文件的异常,按如下步骤安装libncurses5-dev包即可。
sudo apt-get install libncurses5 libncurses5-dev
以上步骤操作完毕可执行安装:
sudo make all
sudo make install
安装完毕后修改/usr/local/etc/opensips/opensipsctlrc 文件,需要修改的部分内容如下:
## your SIP domain
SIP_DOMAIN=ubuntustudio
## chrooted directory
# $CHROOT_DIR="/path/to/chrooted/directory"
## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT,
## by default none is loaded
# If you want to setup a database with opensipsdbctl, you must at least specify
# this parameter.
DBENGINE=MYSQL
## database host
DBHOST=localhost
## database name (for ORACLE this is TNS name)
DBNAME=opensips
# database path used by dbtext or db_berkeley
DB_PATH="/usr/local/etc/opensips/dbtext"
## database read/write user
DBRWUSER=opensips
## password for database read/write user
DBRWPW="opensipsrw"
## database super user (for ORACLE this is 'scheme-creator' user)
DBROOTUSER="root"
# user name column
USERCOL="username"
执行创建数据库的脚本:
opensipsdbctl create
MySQL password for root:
INFO: test server charset
INFO: creating database opensips ...
INFO: Core OpenSIPS tables succesfully created.
Install presence related tables? (y/n): y
INFO: creating presence tables into opensips ...
INFO: Presence tables succesfully created.
Install tables for imc cpl siptrace domainpolicy carrierroute userblacklist? (y/n): y
INFO: creating extra tables into opensips ...
INFO: Extra tables succesfully created.
-----------------------------------------
查看命令:
root@ubuntu :/usr/local/etc/opensips# opensipsctl -c
/usr/local/sbin/opensipsctl $Revision: 4448 $
Existing commands:
-- command 'start|stop|restart'
restart ............................ restart OpenSIPS
start .............................. start OpenSIPS
stop ............................... stop OpenSIPS
-- command 'acl' - manage access control lists (acl)
acl show [<username>] .............. show user membership
acl grant <username> <group> ....... grant user membership (*)
acl revoke <username> [<group>] .... grant user membership(s) (*)
-- command 'cr' - manage carrierroute tables
cr show ....................................................... show tables
cr reload ..................................................... reload tables
cr dump ....................................................... show in memory tables
cr addrt <routing_tree_id> <routing_tree> ..................... add a tree
cr rmrt <routing_tree> ....................................... rm a tree
cr addcarrier <carrier> <scan_prefix> <domain> <rewrite_host> ................
<prob> <strip> <rewrite_prefix> <rewrite_suffix> ...............
<flags> <mask> <comment> .........................add a carrier
(prob, strip, rewrite_prefix, rewrite_suffix,...................
flags, mask and comment are optional arguments) ...............
cr rmcarrier <carrier> <scan_prefix> <domain> ................ rm a carrier
-- command 'rpid' - manage Remote-Party-ID (RPID)
rpid add <username> <rpid> ......... add rpid for a user (*)
rpid rm <username> ................. set rpid to NULL for a user (*)
rpid show <username> ............... show rpid of a user
-- command 'add|passwd|rm' - manage subscribers
add <username> <password> .......... add a new subscriber (*)
passwd <username> <passwd> ......... change user's password (*)
rm <username> ...................... delete a user (*)
-- command 'add|dump|reload|rm|show' - manage address
address show ...................... show db content
address dump ...................... show cache content
address reload .................... reload db table into cache
address add <grp> <ip> <mask> <port> <proto> [<context_info>] [<pattern>]
....................... add a new entry
....................... (from_pattern and tag are optional arguments)
address rm <grp> <ip> <mask> <port> ............... remove all entries
....................... for the given grp ip mask port
-- command 'dr' - manage dynamic routing
* Examples: dr addgw '1' 10 '192.168.2.2' 0 '' 'GW001' 0 'first_gw'
* dr addgw '2' 20 '192.168.2.3' 0 '' 'GW002' 0 'second_gw'
* dr rmgw 2
* dr addgrp 'alice' 'example.com' 10 'first group'
* dr rmgrp 1
* dr addcr 'cr_1' '10' 0 'CARRIER_1' 'first_carrier'
* dr rmcr 1
* dr addrule '10,20' '+1' '20040101T083000' 0 0 '1,2' 'NA_RULE' 'NA routing'
* dr rmgrule 1
dr show ............................ show dr tables
dr addgw <gwid> <type> <address> <strip> <pri_prefix>
<attrs> <probe_mode> <description>
................................. add gateway
dr rmgw <id> ....................... delete gateway
dr addgrp <username> <domain> <groupid> <description>
................................. add gateway group
dr rmgrp <id> ...................... delete gateway group
dr addcr <carrierid> <gwlist> <flags> <attrs> <description>
........................... add carrier
dr rmcr <id> ....................... delete carrier
dr addrule <groupid> <prefix> <timerec> <priority> <routeid>
<gwlist> <attrs> <description>
................................. add rule
dr rmrule <ruleid> ................. delete rule
dr reload .......................... reload dr tables
dr gw_status ....................... show gateway status
dr carrier_status .................. show carrier status
-- command 'dispatcher' - manage dispatcher
* Examples: dispatcher addgw 1 sip:1.2.3.1:5050 1 'outbound gateway'
* dispatcher addgw 2 sip:1.2.3.4:5050 3 ''
* dispatcher rmgw 4
dispatcher show ..................... show dispatcher gateways
dispatcher reload ................... reload dispatcher gateways
dispatcher dump ..................... show in memory dispatcher gateways
dispatcher addgw <setid> <destination> <flags> <description>
.......................... add gateway
dispatcher rmgw <id> ................ delete gateway
-- command 'registrant' - manage registrants
* Examples: registrant add sip:opensips.org '' sip:[email protected] '' user password sip:user@localhost '' 3600 ''
registrant show ......................... show registrant table
registrant dump ......................... show registrant status
registrant add <registrar> <proxy> <aor> <third_party_registrant>
<username> <password> <binding_URI> <binding_params>
<expiry> <forced_socket> . add a registrant
registrant rm ........................... removes the entire registrant table
registrant rmaor <id> ................... removes the gived aor id
-- command 'db' - database operations
db exec <query> ..................... execute SQL query
db roexec <roquery> ................. execute read-only SQL query
db run <id> ......................... execute SQL query from $id variable
db rorun <id> ....................... execute read-only SQL query from
$id variable
db show <table> ..................... display table content
-- command 'speeddial' - manage speed dials (short numbers)
speeddial show <speeddial-id> ....... show speeddial details
speeddial list <sip-id> ............. list speeddial for uri
speeddial add <sip-id> <sd-id> <new-uri> [<desc>] ...
........................... add a speedial (*)
speeddial rm <sip-id> <sd-id> ....... remove a speeddial (*)
speeddial help ...................... help message
- <speeddial-id>, <sd-id> must be an AoR (username@domain )
- <sip-id> must be an AoR (username@domain )
- <new-uri> must be a SIP AoR (sip:username@domain)
- <desc> a description for speeddial
-- command 'avp' - manage AVPs
avp list [-T table] [-u <sip-id|uuid>]
[-a attribute] [-v value] [-t type] ... list AVPs
avp add [-T table] <sip-id|uuid>
<attribute> <type> <value> ............ add AVP (*)
avp rm [-T table] [-u <sip-id|uuid>]
[-a attribute] [-v value] [-t type] ... remove AVP (*)
avp help .................................. help message
- -T - table name
- -u - SIP id or unique id
- -a - AVP name
- -v - AVP value
- -t - AVP name and type (0 (str:str), 1 (str:int),
2 (int:str), 3 (int:int))
- <sip-id> must be an AoR (username@domain )
- <uuid> must be a string but not AoR
-- command 'alias_db' - manage database aliases
alias_db show <alias> .............. show alias details
alias_db list <sip-id> ............. list aliases for uri
alias_db add <alias> <sip-id> ...... add an alias (*)
alias_db rm <alias> ................ remove an alias (*)
alias_db help ...................... help message
- <alias> must be an AoR (username@domain )"
- <sip-id> must be an AoR (username@domain )"
-- command 'domain' - manage local domains
domain reload ....................... reload domains from disk
domain show ......................... show current domains in memory
domain showdb ....................... show domains in the database
domain add <domain> ................. add the domain to the database
domain rm <domain> .................. delete the domain from the database
-- command 'cisco_restart' - restart CISCO phone (NOTIFY)
cisco_restart <uri> ................ restart phone configured for <uri>
-- command 'online' - dump online users from memory
online ............................. display online users
-- command 'monitor' - show internal status
monitor ............................ show server's internal status
-- command 'ping' - ping a SIP URI (OPTIONS)
ping <uri> ......................... ping <uri> with SIP OPTIONS
-- command 'ul|alias' - manage user location or aliases
ul show [<username>]................ show in-RAM online users
ul show --brief..................... show in-RAM online users in short format
ul rm <username> [<contact URI>].... delete user's usrloc entries
ul add <username> <uri> ............ introduce a permanent usrloc entry
ul add <username> <uri> <expires> .. introduce a temporary usrloc entry
-- command 'fifo'
fifo ............................... send raw FIFO command
启动opensips 服务:
opensipsctl start
------------------------------------------------------------
启动服务的过程中可能出现的数据库错误:
ERROR:core:db_check_api: module db_mysql does not export db_use_table function
ERROR:uri:mod_init: No database module found
解决办法:
在/usr/local/etc/opensips/opensips.cfg文件中添加有关数据库的配置如下:
db_default_url="mysql://opensips:opensipsrw@localhost/opensips"
/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "auth.so"
loadmodule "auth_db.so"
/* uncomment next line for aliases support
NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
NOTE: a DB (like db_mysql) module must be also loaded
NOTE: be sure and enable multi-domain support in all used modules
(see "multi-module params" section ) */
#loadmodule "domain.so"
/* uncomment the next two lines for presence server support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "presence.so"
#loadmodule "presence_xml.so"
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
# ----- rr params -----
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# ----- registrar params -----
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
# ----- usrloc params -----
#modparam("usrloc", "db_mode", 0)
/* uncomment the following lines if you want to enable DB persistency
for location entries */
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips")
# ----- uri params -----
modparam("uri", "use_uri_table", 0)
# ----- acc params -----
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
if you enable this parameter, be sure the enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
# ----- auth_db params -----
/* uncomment the following lines if you want to enable the DB based
authentication */
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
#modparam("auth_db", "db_url","mysql://opensips:opensipsrw@localhost/opensips")
#modparam("auth_db", "load_credentials", "")
# ----- alias_db params -----
/* uncomment the following lines if you want to enable the DB based
aliases */
#modparam("alias_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
# ----- domain params -----
/* uncomment the following lines to enable multi-domain detection
support */
#modparam("domain", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("domain", "db_mode", 1) # Use caching
# ----- multi-module params -----
/* uncomment the following line if you want to enable multi-domain support
in the modules (dafault off) */
#modparam("auth_db|usrloc|uri", "use_domain", 1)
# ----- presence params -----
/* uncomment the following lines if you want to enable presence */
#modparam("presence|presence_xml", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("presence_xml", "force_active", 1)
#modparam("presence", "server_address", "sip:192.168.1.2:5060")
-------------------------------------------------------------
添加sip用户
opensipsctl add username password
如:
opensipsctl add 100 100
opensipsctl add 101 101
使用软电话x-lite成功登陆
查看注册的sip用户
opensipsctl ul show
是否在线
opensipsctl online
root@ubuntu :/usr/local/lib/opensips/modules# opensipsctl ul show
Domain:: location table=512 records=2
AOR:: 100
Contact:: sip:[email protected]:5061;rinstance=a40cd182a1adbeb8;transport=TCP Q=
Expires:: 3313
Callid:: ZTBkZjZlNTJmYzdmOWVlYzI5N2M0NzY5MmFjNGU3ZWQ.
Cseq:: 2
User-agent:: X-Lite release 5.0.0 stamp 67284
State:: CS_SYNC
Flags:: 0
Cflag:: 0
Methods:: 5951
AOR:: 101
Contact:: sip:[email protected]:5060;rinstance=1626363c473bd98d Q=
Expires:: 3591
Callid:: N2UxZGVkNmNjMWQyOGJkODYzM2Y4NjlmODBlN2UzMjk.
Cseq:: 1
User-agent:: X-Lite release 5.0.0 stamp 67284
State:: CS_NEW
Flags:: 0
Cflag:: 0
Socket:: udp:192.168.17.132:5060
Methods:: 5951
root@ubuntu :/usr/local/lib/opensips/modules# opensipsctl online
100
101