在 ubuntu 12.10 中安装 opensips 1.8.2

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


 

你可能感兴趣的:(在 ubuntu 12.10 中安装 opensips 1.8.2)