Added requirements for modules app_python and app_java
[sip-router] / INSTALL
1
2      ==================================================
3
4           Kamailio SIP Server Installation Notes
5
6                  http://www.kamailio.org
7
8      ==================================================
9
10   Welcome! This is an amazingly flexible, robust and secure SIP server
11   built on years of experience in several Open Source projects. It's a merge
12   of the SIP Express Router (SER) and the Kamailio (OpenSER) products produced
13   by a joint development team. When not explicitely mentioned, SIP server refers
14   to any of these two applications.
15
16   This memo gives you hints on how to set up the SIP server quickly.
17   
18   You can find a similar tutorial and many more on project's web site:
19     - http://www.kamailio.org/w/documentation/
20     - http://www.kamailio.org/wiki/
21   
22
23 Table of Contents
24 =================
25
26 1. SIP Server Flavours
27 2. Supported Architectures and Requirements
28 3. Howto Build SIP Server From the Source Distribution
29    3.1 Kamailio Fast Track Installation
30    3.2 Details Installing from Source Code
31      A) Set SIP Server Flavour
32      B) Build Commands
33 4. Quick-Start Installation Guide
34    A) Getting Help
35    B) Disclaimers
36    C) Quick Start
37    D) SIP Server with Persistent Data Storage
38 5. Troubleshooting
39
40
41
42 1. SIP Server Flavours
43 ----------------------
44
45 The two major SIP server flavours are:
46   - SIP Express Router (aka SER)
47   - Kamailio (former OpenSER)
48
49 Starting with version 3.0.0, the two SIP server flavours are built from
50 same source code tree. In version 4.0.0 the two source code trees were
51 merged even more, so a combined module directory is now used.
52
53 Kamailio flavor is the one built by default. SER is, historically speaking, the
54 first open source SIP server started in 2001. Kamailio forked from SER in
55 2005 under the initial name OpenSER.
56
57 Starting with version 3.1.0 the differences between the two flavours are
58 very few, Kamailio enabling next compile time flags:
59   - internal statistics
60   - application server extensions in tm module
61
62 In version 4.0.0 the modules were merged into one set and the merger
63 between the two products was completed.
64
65 Kamailio is now the default flavour. Switching between flavours is a matter
66 of 'make' command parameters.
67
68 Several installation tutorials for Kamailio are available on the web wiki:
69   - http://www.kamailio.org/wiki/
70
71
72 2. Supported Architectures and Requirements
73 -------------------------------------------
74
75 Supported operating systems:
76  - Linux (Debian, Ubuntu, Fedora, RedHat, CentOS, OpenSUSE, Gentoo, a.s.o.)
77  - FreeBSD, NetBSD, OpenBSD, Dragonfly BSD
78  - Solaris
79  - OS/X, Darwin
80
81 Partially supported
82  - Windows+Cygwin (core + static modules only, no IPv6, no
83    TCP, no dynamic modules)
84
85 Supported architectures
86  - i386, x86_64 (amd64), armv4l, sparc64, powerpc, powerpc64
87
88 Experimental architectures:
89  - mips1, mips2, sparc32, alpha
90
91 (for other architectures the Makefiles might need to be edited)
92
93 There are various configuration options defined in the Makefile.
94
95
96 Requirements:
97
98 - gcc or icc : gcc >= 2.9x; 3.[12] recommended (it will work with older version
99   but it might require some options tweaking for best performance)
100 - bison or yacc (Berkley yacc)
101 - flex
102 - GNU make (on Linux this is the standard "make", on *BSD and Solaris it is
103   called "gmake") version >= 3.80 (recommended 3.81).
104 - sed and tr (used in the makefiles)
105 - GNU tar ("gtar" on Solaris) and gzip if you want "make tar" to work
106 - GNU install, BSD install or Solaris install if you want "make
107   install", "make bin", "make sunpkg" to work
108 - libmysqlclient & libz (zlib) if you want Mysql support (the db_mysql module)
109 - libxml2 if you want to compile the cpl-c (CPL support) or pa (presence) 
110    modules
111 - libradiusclient-ng (> 5.0) if you need radius support (the auth_radius,
112   group_radius, uri_radius and avp_radius modules)
113 - libpq if you need PostgreSQL support (the db_postgres module)
114 - libexpat if you want the jabber gateway support (the jabber module) or the
115   XMPP gateway support
116 - libxml2 if you want to use the cpl-c (Call Processing Language) or
117   the presence modules (presence and pua*)
118 - libradius-ng -libs and devel headers- if you want to use functionalities
119   with radius support - authentication, accounting, group support, etc
120 - unixodbc - libs and devel headers - if you want UNIXODBC support as
121   DB underlayer
122 - libxmlrpc-c3 - libs and devel headers - if you want to have XML-RPC support
123   for the Management interface (MI)
124 - libperl - libs and devel headers - if you want PERL connector to support
125   perl scripting from you config file (perl module)
126 - libsnmp9 - libs and devel headers - if you want SNMP client functionality 
127   (SNMP AgentX subagent) for Kamailio
128 - libldap libs and devel headers v2.1 or greater - if you want LDAP support
129 - libpcre libs and devel headers - if you want to compile the lcr and dialplan
130   modules
131 - libsctp devel headers - if you want to compile the SCTP transport in the core
132 - libssl devel headers (openssl project) - if you want to compule the TLS module
133 - linunistring - for the Websockets module
134 - python and devel headers for python module
135 - jdk and gcj for java module
136
137
138 OS Notes:
139
140  FreeBSD/OpenBSD/NetBSD: make sure gmake, bison or yacc & flex are installed.
141   
142   FreeBSD 5.4:
143   ------------
144   If you want to compile all the modules, you will need the following packages:
145   - mysql-client-* (any version, install one of the mysql*-client ports) for
146     libmysqlclient
147   - postgresql-libpqxx-2.4.2_1 (/usr/ports/databases/postgresql-libpqxx) for
148     libpq
149   - expat-1.95.8 (/usr/ports/textproc/expat2) for libexpat
150   - libxml2-2.6.18 (/usr/ports/textproc/libxml2) for libxml2
151   - radiusclient-0.4.7 (/usr/ports/net/radiusclient) for libradiusclient-ng 
152   NOTE: you'll need to add radiusclient_ng=4 to the gmake command line if you
153   use the 0.4.* version.
154   
155   Compile example (all the modules and SIP server core in a tar.gz):
156      gmake bin radiusclient_ng=4 include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
157
158   OpenBSD 3.7
159   -----------
160   - mysql-client-4.0.23 (/usr/ports/databases/mysql) for libmysqlclient
161   - expat-1.95.6 (/usr/ports/textproc/expat) for libexpat
162   - libxml-2.6.16p0 (/usr/ports/textproc/libxml) for libxml2
163   - radiusclient-ng-0.5.1 from 
164    http://download.berlios.de/radiusclient-ng/radiusclient-ng-0.5.1.tar.gz
165    (you need to download and install it, since there is no "official" 
166    openbsd port for it) for libradiusclient-ng 
167
168   Compile example (all the modules and SIP server core in a tar.gz):
169      gmake bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius pa"
170
171   NetBSD 2.0
172   ----------
173   - mysql-client-4.1.12 (/usr/pkgsrc/databases/mysql4-client) for libmysqlclient
174   - expat-1.95.8nb2 (/usr/pkgsrc/textproc/expat) for libexpat
175   - libxml2-2.6.19 (/usr/pkgsrc/textproc/libxml2) for libxml2
176   - radiusclient-ng-0.5.1 (see OpenBSD)
177   
178   Compile example (all the modules and SIP server in a tar.gz):
179      gmake bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius pa"
180
181   Solaris 10
182   ----------
183   As above; you can use Solaris's yacc instead of bison. You might also
184   need gtar and ginstall. If you don't have ginstall you can use Solaris
185   install, just make sure it's in the PATH (it's usually in /usr/sbin) and
186   add INSTALL=install either to the environment or to the make command line
187   (e.g.: gmake INSTALL=install all).
188   
189   Needed packages:
190   [TODO]
191   
192   Compile example (all the modules and SIP server in a tar.gz):
193      gmake bin INSTALL=install include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
194
195   Linux
196   -----
197   Needed packages for compiling all the modules:
198   * Debian:
199       - libmysqlclient-dev for libmysqlclient
200       - libpq-dev for libpq
201       - libexpat1-dev for libexpat
202       - libxml2-dev for libxml2
203       - libradiusclient-ng-dev for libradiusclient
204           - other libraries are needed for some other modules,
205             see README of the module you want to use
206     Both SER and Kamailio flavours have APT deb repositories that allow you to
207         install the binaries easily - see the web sites for more details:
208           - http://kamailio.org
209
210  Cygwin  (alpha state, partial support)
211  --------------------------------------
212  make sure make, bison, flex, minires and minires-devel (needed for the
213  resolver functions) are installed.
214  
215  Only building SIP server's core and some static modules is supported for now.
216  Stuff known not to work:
217            - IPv6 (cygwin doesn't support it yet)
218            - TCP (the tcp code heavily depends on file descriptor passing 
219              between processes, which is not yet supported by cygwin)
220            - dynamic modules (non statically linked -- not supported because
221              backlinking doesn't work in windows by design)
222
223
224   Compile example (all the modules and SIP server in a tar.gz):
225      make bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
226
227
228 3. Howto Build SIP Server From Source Distribution
229 --------------------------------------------------
230
231 (NOTE: if make doesn't work try gmake instead)
232
233 3.1 Kamailio Fast Track Installation
234 ....................................
235
236
237 If you are familiar with Unix/Linux  build tools aready and you installed
238 required dependency, then you can just follow this section, otherwise
239 skip over it.
240
241 To get the SIP server installed, in the folder with source code run:
242
243   make cfg
244   make all
245   make install
246
247 If you want to install with additional modules, for example with mysql and
248 tls, run:
249
250   make include_modules="db_mysql tls" cfg
251   make all
252   make install
253
254 3.2 Details Installing from Source Code
255 .......................................
256
257
258 A) Set SIP Server Flavour
259
260 If you don't have a clean source tree, first do:
261    make proper
262
263 To build Kamailio flavour, you don't need to do anything special, continue to
264 read the section 3.B).
265
266 To build SER flavour, you have to run first:
267    make FLAVOUR=ser cfg
268
269 The parameter 'FLAVOUR=ser' must be given all the time when make target
270 is 'cfg'.
271
272 B) Build Commands
273
274   The SIP server is split in four main parts: The core, the modules, the
275   utilties, and scripts/examples.  When you build, you can decide to build
276   only the core, the modules, both, or all.
277
278 * Compile SIP server core only:
279         make
280
281 Compile modules except some explicitly excepted (see below)
282         make modules  - all modules in the modules/ directory 
283         make modules-all or make every-module  - all the modules 
284
285 * Compile all:
286         make all
287
288 * Explicitly excepted modules:
289   By default make all will not build modules that require external libraries or
290   that are considered to be "experimental". For example, modules that have external
291   dependencies are: db_mysql, jabber, cpl-c, auth_radius, group_radius, uri_radius,
292   avp_radius, db_postgres, db_berkely, carrierroute, ...
293
294 Including groups of modules:
295   Instead of compiling the default modules only, you can specify groups of
296   modules to include, according to their status:
297   - standard - Modules in this group are considered a standard part of SIP server
298     (due to widespread usage) but they have no dependencies (note that some of
299     these interplay with external systems. However, they don't have compile
300     or link dependencies).
301
302   - db - Modules in this group use databases and need a database driver to run.
303     Included are drivers for the text mode db (dbtext) and for dumping
304     large ammount of data to files (db_flatstore). See also the mysql or
305     postgres groups.
306
307   - standard_dep -  Modules in this group are considered a standard part of SIP
308     server (due to widespread usage) but they have dependencies that must be satisfied
309     for compilation.
310     NOTE! All presence modules (dialog, pa, presence_b2b, rls, xcap) have been
311         included in this group due to interdependencies
312
313   - stable - Modules in this group satisfy specific or niche applications,
314     and are considered stable for production use. They may or may not have dependencies
315
316   - experimental - Modules in this group are either not complete, untested, or
317     without enough reports of usage to allow the module into the stable group.
318         They may or may not have dependencies.
319
320 There is another set of groups mainly used by Kamailio flavour, where modules
321 are grouped based on Debian packaging rules. For example:
322    - kstandard - Kamailio flavour's standard modules
323
324    - kpresence - Kamailio flavour's SIMPLE presence server modules
325
326 * To compile core with standard modules:
327         make group_include="standard" all
328
329 * To compile all modules (provided you have all the required libraries installed) use:
330         make group_include="standard standard-dep stable experimental" all
331
332   There are also in addition some "convenience" groups:
333
334         mysql           - Include all the db modules dependent and the mysql db driver
335         postgres        - Include all the db modules and the postgres db driver
336         radius          - Include all modules on radiusclient
337         presence        - Include all the presence modules
338
339   Ex. to make a standard installation with Mysql, use:
340         make group_include="standard mysql" all
341
342   In addition to group_include (or instead), you can use 
343         include_modules="modA modB"
344   to specify exactly the modules you want to include, ex.
345         make include_modules="mymodule" modules
346
347   You can also explicitly skip modules using skip_modules. Let's say you want all
348   the standard and standard-dep modules except domain:
349         make group_include="standard standard-dep" skip_modules="domain" all
350
351   NOTE!!! As this mechanism is very powerful, you may be uncertain which
352   modules that will be included. Just replace all (or modules) with print-modules
353   and you will see which modules will be included and excluded, ex:
354         make print-modules
355   will show which modules are excluded by default.
356
357   If you want to install or to build a binary package (a tar.gz with
358   SIP server core and the modules), substitute "all" in the above command with
359   "install" or "bin".
360
361
362 * More compile examples:
363
364   - compile with profiling
365         make PROFILE=-pg all
366   - compile debug mode version
367         make mode=debug all
368   - compile debug version with profiling
369         make mode=debug PROFILE=-pg all
370   - compile only the print module
371         make modules=modules/print modules
372   - compile by default only the print module, in debuging mode and with 
373     profiling:
374         make cfg modules=modules/print mode=debug PROFILE=-pg
375         make all
376   - change & save the  modules list without rebuilding the whole config
377     (so that already compiled modules won't be re-compiled by 
378     make all/make modules):
379         make modules-cfg include_modules="mysql postgress"
380   - change only the compile/build options, without changing the modules list:
381         make cfg-defs CPU=ultrasparc PROFILE=-pg
382   - compile by default all the usual modules + mysql and postgres, optimized 
383      for pentium-m and for space (saves both the build options and the module 
384      list)
385         make cfg include_modules="mysql postgres" CPU=pentium-m CC_EXTRA_OPTS=-Os
386         make all
387    - compile all the "default" modules except textops and vm
388         make skip_modules="textops vm" modules
389    - save the above option in the make config, so that all make commands
390      will use it by default:
391         make cfg skip_modules="textops vm"
392    - compile all default modules and include uri_radius (not compiled by default):
393         make include_modules="uri_radius" modules
394    - compile all the modules from the modules subdirectory (even the one excluded
395      by default):
396         make exclude_modules="" modules
397    - compile all the modules from the modules subdirectory excluding vm:
398         make exclude_modules=vm modules
399      or
400         make exclude_modules="" skip_modules=vm modules
401    - compile with the "tm" module statically linked and with profiling
402         make static_modules=tm PROFILE=-pg all
403    - compile with gcc-3.2 instead of gcc
404         make CC=gcc-3.2 all
405      or
406         CC=gcc-3.2 make all
407
408 Make targets:
409 =============
410
411 Configure:
412 ----------
413
414   * make cfg or make config - force config and module list regeneration
415   
416
417   Example: 
418         make cfg include_modules=mysql mode=debug
419
420   All future make invocations will include the mysql module and will build in debug mode
421
422   Note: if config.mak doesn't exist (e.g. initial checkout or after a make 
423   proper) or if Makefile.defs was changed, the config will be re-generated
424   automatically by the first make command. For example:
425         make cfg  include_modules=db_mysql; make all
426   is equivalent to 
427         rm config.mak modules.lst; make include_modules=db_mysql.
428
429   * make cfg-defs  (force config regeneration, but don't touch the module list)
430
431   Example:
432         make cfg-defs CPU=ultrasparc CC_EXTRA_OPTS=-Os PROFILE=-pg
433
434         make modules-cfg
435   or
436         make modules-list
437   saves the module list, without regenerating the build config
438   Example:
439         make modules-list include_modules="tls" skip_modules="print"
440
441 Clean:
442 ------
443
444   * make clean          - clean the base and modules too
445   * make proper         - clean also the dependencies and the config, but not the module list
446   * make distclean      - the same as proper
447   * make maintainer-clean - clean everything, including make's config, saved 
448                           module list, auto generated files, tags, *.dbg a.s.o
449   * make clean-all      - clean all the modules in modules/*
450   * make proper-all     - like make proper but for all the  modules in modules/*
451
452   Config clean:
453
454   * make clean-cfg (cleans the compile config)
455   * make clean-modules-cfg (cleans the modules list)
456
457   Reduced" clean:
458
459   * make local-clean    - cleans only the core, no libs, utils or modules
460   * make clean-modules  - like make clean, but cleans only the modules
461   * make clean-libs     - like make clean, but cleans only the libs
462   * make clean-utils    - like make clean, but cleans only the utils
463   * make proper-modules - like make proper, but only for modules
464   * make proper-libs    - like make proper, but only for libs
465   * make proper-utils   - like make proper, but only for utils
466
467 Compile:
468 --------
469   * make proper
470   optional: make cfg  <various cfg. options that should be saved>
471   * make
472   or gmake on non-Linux systems
473   * make modules 
474   or make modules exclude_modules="CVS print" etc.
475
476 Other make targets:
477 -------------------
478   Make tags:
479         make TAGS
480
481   Create a tar.gz with the sources (in ../):
482         make tar
483
484   Create a tar.gz with the binary distribution (in ../):
485         make bin
486
487   Create a gzipped solaris package (in ../):
488         make sunpkg
489
490   Create debian packages (in ../):
491         make deb
492
493   or
494         dpkg-buildpackage
495
496 Documentation:
497 --------------
498
499   Regenerate the README for all the "default" modules (include_modules,
500   skip_modules a.s.o can be used to alter the module list).
501         make README
502
503   Generates a manpage for all the modules that support it (.xml file in the
504   module directory).
505         make man
506
507   Generates README file for modules/foo.
508         make modules=modules/foo modules-readme
509
510 Install:
511 --------
512
513         make prefix=/usr/local  install
514
515   Note: If you use prefix parameter in make install then you also need
516   to use this parameter in previous make commands, i.e. make, make modules,
517   or make all. If you fail to do this then SIP Router will look for the default
518   configuration file in a wrong directory, because the directory of the
519   default configuration file is hard coded into SIP server during compile time. 
520   When you use a different prefix parameter when installing then the 
521   directory hard coded in SIP server and the directory in which the file will be 
522   installed by make install will not match. (You can specify exact location
523   of the configuration file using -f parameter of SIP server).
524
525   For example, if you do the following:
526         make all
527         make prefix=/ install
528
529   Then the installation will put the default configuration file into
530   /etc/ser/ser.cfg or /etc/kamailio/kamailio.cfg (because prefix is /),
531   but SIP server will look for the file in /usr/local/etc/ser/ser.cfg or
532   /usr/local/etc/kamailio/kamailio.cfg (because there was no prefix parameter
533   make all and /usr/local is the default value of prefix).
534
535   Workaround is trivial, use the same parameters in all make commands:
536         make prefix=/ all
537         make prefix=/ install
538   or save the desired prefix in the make config (e.g.: make cfg prefix=/).
539
540   That applies to other make parameters as well (for example parameters
541   "modules" or "excluded_modules").
542
543
544 4. Quick-Start Installation Guide
545 ---------------------------------
546
547 A) Getting Help
548
549   This guide gives you instructions on how to set up the SIP server
550   (SER or Kamailio) on your box quickly. In case the default configuration
551   does not fly, please check the documentation at the SIP server web site
552   http://www.kamailio.org to learn how to configure SIP server for your site.
553
554   If the documentation does not resolve your problem you may try contacting 
555   our user forum by E-mail at sr-users@lists.sip-router.org -- that is the
556   mailing list of the SIP server community. To participate in the mailing list,
557   please subscribe at the following web address:
558
559   http://lists.sip-router.org/cgi-bin/mailman/listinfo
560
561 B) Disclaimers
562  
563   Note well the default "quick-start" configuration is very simple in order 
564   to be easily installable. It provides minimum features. Particularly, 
565   authentication is by default disabled, which means anyone can register using
566   any name with the server. (This is on purpose to avoid installation 
567   dependencies on a database, which is needed for storing user credentials.)
568
569 C) Quick Start
570
571   The following step-by step guide gives you instructions how to install the 
572   SQL-free distribution of SIP server. If you need persistence and
573   authentication, then you have to install additional database support --
574   proceed to section D) after you are finished with C).
575
576   1) Download an RPM or Debian package from the links on the wiki
577
578     http://www.kamailio.org/wiki/
579
580   If you don't use an rpm or debian based distribution, try our tar.gz'ed
581   binaries
582     http://www.kamailio.org/pub/kamailio/latest/src/
583
584   If you use Solaris 8 you can try our solaris package.
585   If you use Gentoo Linux you do not have to download a package.
586
587   2) Install the package
588         RPM:
589                 rpm -i <package_name>
590         debian:
591                 dpkg -i <package_name>
592         gentoo:
593                 emerge ser
594                           or
595                         emerge kamailio
596                 (or if use only stable packets: ACCEPT_KEYWORDS="~x86" emerge ser
597                 or ACCEPT_KEYWORDS="~x86" emerge kamailio)
598         tar.gz:
599                 cd /; tar zxvf <package_name>_os_arch.tar.gz
600                 (it will install in /usr/local/, and the configuration file in
601                 /usr/local/etc/ser/ser.cfg or /usr/local/etc/kamailio/kamailio.cfg)
602         Solaris:
603                 gunzip <package_name>.gz ; pkgadd -d <package_name>
604         *BSD:
605                 pkg_add package_name
606     
607   3) Start the server
608
609         RPM + gentoo:
610                 /etc/init.d/ser start
611                           or
612                 /etc/init.d/kamailio start
613         debian:
614                 SER or Kamailio is started automatically after the install
615                 (in case something fails you can start it with '/etc/init.d/ser start'
616                         or '/etc/init.d/kamailio start')
617         tar.gz:
618         Solaris:
619                 the tar.gz does not include an init.d script, you'll have to create one of
620                 your own or adapt one from the source distribution (pkg/debian/init.d,
621                 pkg/rpm/ser.init.*, pkg/gentoo/ser.init, pkg/kamailio/rpm/kamailio.init,
622                         pkg/kamailio/deb/debian/kamailio.init, a.s.o.)
623                 You can start SIP server directly with /usr/local/sbin/ser or
624                         /usr/local/sbin/kamailio.
625     
626   4) optionally, watch server's health using the
627         serctl or kamctl utility
628
629     - to do so, first set the environment variable SIP_DOMAIN to your domain 
630       name, e.g., in Bourne shell, call
631         export SIP_DOMAIN="myserver.foobar.com"
632         - if you are using other than 'localhost' mysql server for maintaining
633           subscriber database, change the variable 'SQL_HOST' to the proper
634           host name in the serctl script
635     - run the serctl utility
636         /usr/sbin/serctl moni
637       or
638         /usr/sbin/kamctl moni
639       or
640         /usr/local/sbin/serctl moni (if you installed SER flavour from a tar.gz
641                 or solaris package)
642       or
643         /usr/local/sbin/kamctl moni (if you installed Kamailio flavour from a
644                 tar.gz or solaris package)
645
646   5) Connect SIP phones
647
648   Register with the server using your favorite SIP User Agent (phone). 
649
650   In most cases, you need to set the following options:
651
652         Proxy server:   host name of your server
653         Domain:         the sip domain your server is configured to handle
654         User name:      the account name for your device
655         Auth user:      the ID used for authentication
656         Secret/Password:        The configured authentication password
657
658 D) SIP Server with Persistent Data Storage
659 ------------------------------------------
660
661   The default configuration is very simple and features many simplifications. 
662   In particular, it does not authenticate users and loses User Location database 
663   on reboot. To provide persistence, keep user credentials and remember users' 
664   locations across reboots, Kamailio can be configured to use a database, like MySQL. 
665
666   Before you proceed, you need to make sure MySQL is installed on your box. Your
667   MySQL server must be configured to deal with a large number of
668   connection. To increase it, set the following line in [mysqld] section
669   of your my.ini configuration file:
670
671    set-variable    = max_connections=500
672
673   1) Download the package containing mysql support for SIP server from the links
674      you find on: 
675         http://www.kamailio.org/wiki/
676
677     (rpm and deb provided, most of the binary tar.gz distributions and the 
678      solaris package include it; if it is not present you'll have to rebuild
679      from the source).
680         For gentoo please include 'mysql' to your USE variable in /etc/make.conf
681         or give it as variable to the emerge command.
682
683   2) install the package
684     rpm -i <package_name>
685     or
686     dpkg -i <package_name>
687         or
688         emerge ser
689         or
690         emerge kamailio
691         (if do not want to put 'mysql' into your USE variable you can type:
692          USE="mysql" emerge ser)
693
694   3.1) create MySQL tables for SER flavour
695         - if you have a previously installed SER on your system, use
696         /usr/sbin/ser_mysql.sh reinstall 
697           to convert your SER database into new structures
698         - otherwise, if this is your very first installation, use
699         /usr/sbin/ser_mysql.sh create
700           to create SER database structures
701    (you will be prompted for password of MySql "root" user)
702
703   3.2) create MySQL tables for Kamailio flavour
704         - if you have a previously installed Kamailio on your system, use
705         /usr/local/sbin/kamdbctl reinstall 
706           to convert your Kamailio database into new structures
707         - otherwise, if this is your very first installation, use
708         /usr/local/sbin/kamdbctl create
709           to create Kamailio database structures
710    (you will be prompted for password of MySql "root" user)
711
712   4) configure SIP server to use SQL
713     uncomment all lines in configuration file ser.cfg or kamilio.cfg which are
714         related to authentication:
715     - loadmodule "db_mysql.so"
716     - loadmodule "auth.so"
717     - loadmodule "auth_db.so"
718     - modparam("usrloc", "db_mode", 2)
719     - modparam("auth", "calculate_ha1", yes)
720     - modparam("auth_db", "password_column", "password")
721     - if (!www_authorize("sip-router.org", "subscriber")) {
722         www_challenge("sip-router.org", "0"); 
723         break;
724       }
725
726   5) be sure to replace realm, the first parameter in www_* actions, 
727    with name of your server; some broken UAC implementations don't 
728    authenticate otherwise; the authentication command in your
729    configuration script should look then like this:
730       if (!www_authorize("myserver.foobar.com", "subscriber")) {
731         www_challenge("myserver.foobar.com", "0"); 
732         break;
733       }
734
735   6) restart the server
736     /etc/init.d/ser restart
737           or
738     /etc/init.d/kamailio restart
739
740   7) you can now start  managing the server using the serctl or kamctl utility; 
741    you need to first set the environment variable SIP_DOMAIN to your 
742    local SIP realm, e.g.,
743        export SIP_DOMAIN="myserver.foobar.com"
744
745    a) watch the server status using 'serctl moni' or 'kamctl moni'
746    b) try to login with your SIP client as user 'admin' with password 'heslo'
747    c) try adding new users using 
748        'serctl add <name> <password> <email>'
749              or
750        'kamctl add <username> <password>'
751
752
753 4. Troubleshooting
754 ------------------
755
756 Q: Windows Messenger authentication fails. 
757
758 A: The most likely reason for this problem is a bug in Windows Messenger. 
759 WM only authenticates if server name in request URI equals authentication 
760 realm. After a challenge is sent by SIP server, WM does not resubmit the 
761 challenged request at all and pops up authentication window again. If you 
762 want to authenticate WM, you need to set up your realm value to equal server 
763 name. If your server has no name, IP address can be used as realm too.
764
765 Q: SIP requests are replied by SIP server with "483 Too Many Hops" or 
766    "513 Message Too Large"
767
768 A: In both cases, the reason is probably an error in request routing script 
769    which caused an infinite loop. You can easily verify whether this happens 
770    by watching SIP traffic on loopback interface. A typical reason for
771    misrouting is a failure to match local domain correctly. If a server
772    fails to recognize a request for itself, it will try to forward it to
773    current URI in believe it would forward them to a foreign
774    domain. Alas, it forwards the request to itself again. This continues
775    to happen until value of max_forwards header field reaches zero or
776    the request grows too big. Solutions is easy: make sure that domain
777    matching is correctly configured. A quick way to achieve that is to
778    introduce a config option to ser.cfg or kamailio.cfg: alias=domainname,
779    where domainname shall be replaced with name of domain, which you wish to
780    server and which appears in request-URIs.