The following document will guide you through the installation of the newly released OpenSIPS version 1.5 in Red Hat Enterprise Linux 5.3 along with mysql. I will divide this process in 2 phases:
- – Installation of Red Hat Enterprise Linux 5.3
- – Installation and configuration of OpenSIPS, webmin and mysql
The following components and parameters will be used for the purpose of this installation guide, securing your OpenSIPS environment is beyond this installation guide,
- Red Hat Enterprise Linux Server release 5.3 (Tikanga), 2.6.18-128.1.6.el5
- mysql-server-5.0.45-7.el5.i386
- An HP DL380 3.20 2gb of RAM
- Fully Qualified Domain Name of the server will be simulacro.sipcorner.com
- IP address of the server 10.10.10.101
1. Installation of Red Hat Enterprise Linux 5 (Phase 1)
Let’s Proceed to install Red Hat Enterprise Linux 5
- Proceed to Insert the RHEL 5 DVD in your server
At the RHEL boot screen “press enter”
The system will ask you to either test the media or skip the media test, I personally choose to skip the media since I know the integrity of the DVD is good, but if you have doubts about the integrity of your media I will suggest you to continue with the media test.
- At the RED HAT ENTERPRISE LINUX 5 initial Install screen select NEXT
- Proceed to select the language, I selected English(English)
- Proceed to select the appropriate keyboard for the System, I selected U.S. English
- Proceed to enter the Red Hat installation number and select OK
- Select to Install Red Hat Enterprise Linux Server, then select OK
- Because I have RHEL 5 currently installed in my Hard Drive, and I want to install a new copy of RHEL 5, the system will now asked me if I want to remove all linux partitions on the selected drives and create a default layout, since I want to do this, I will simply select the NEXT button
- As a precaution, the system will asked me if I really want to remove all the existing Linux partitions in the Hard Drive, Since i want to do this I select the Yes button.
- The system will now asked to configure the ethernet0 interface, since I want the system to have an static IP address, I select the eth0 interface and I select EDIT.
- The EDIT Interface screen will open, and I will now proceed to enter my network information manually, then select OK, next I proceed to enter the FQDN for this server, for example simulacro.sipcorner.com, next I will proceed to continue entering my network information, such as my gateway, primary DNS and Secondary DNS servers, then I will proceed to select the NEXT button
- Proceed to select your timezone accordingly
- Proceed to enter a Password for the Root Account
- Red Hat Enterprise Linux 5 default installation includes a set of software applicable for general internet usage, although you can choose to install additional components, such as servers and others, for the purposes of this document, I will proceed to check the Web Server option and also I will proceed to check the Customize now option, then I will select NEXT.
- Because I checked the customize option, I am now being presented with an screen where I can select different packages that I want the system to install for me during this installation, hence I will select the following packages:
- Servers>Mysql Database>Optional Packages>Default plus
- mysql-devel-5.0.45-7.el5.i386
- php-mysql-5.1.6-23.el5.i386
- mod_auth_mysql-3.0.0-3.1.i386
- Servers>Web Server>Optional Packages>Default plus
- mod_nss-1.0.3-6.el5.i386
- Servers>Mail Server>Default
- Servers>Mysql Database>Optional Packages>Default plus
- The RHEL 5 Installation is now ready to begin, proceed by selecting the NEXT button
- Once the system has finished the installation process the DVD will eject and a new screen will appear congratulating you, at this point select the Reboot button.
- After the firs Reboot, you will be presented with a Welcome screen, proceed and select the Forward button, proceed to agree with the license agreement, proceed to configure your firewall. I will personally select Secure WWWW (HTTPS) and WWW (HTTP) ports, although under the Other Ports option, I will also proceed to add port 5060 TCP/UDP to allow SIP dialogs/sessions, although 5060 UDP is enough, but this is a test box so I decided to open both TCP and UDP, then I will also select port 10000 TCP for webmin, why webmin?, because if you are not an expert with mysql webmin can be useful to access mysql and other components via web, instead of the CLI although webmin is useful when it comes to administer the RHEL box, servers and other components,in the opensips environment it is highly likely that you will be using the CLI for almost everything. Next proceed to select the Forward button.
- Proceed to configure SELinux accordingly, I will personally select the Enforcing option, then proceed to select the Forward button.
- Proceed to configure Kdump accordingly, I personally like Kdump, although it may require you to do another reboot and do some memory allocation in order to properly work.
- Proceed to configure the Date and Time accordingly, when configuring opensips, the time can be critical, so i will suggest you to enable NTP, and I personally will add another ntp server on top of the RHEL ntp servers, ncnoc.ncren.net (because I am in North Carolina), then I will proceed to select the forward button.
- Proceed to Set up Software Updates at your discretion.
- Proceed to create a User accordingly, it is not really safe for you to use the root account to login to the box, surf the internet, install software and others, although for the purposes of this guide, I will be using the root account during the installation process of opensips and webmin.
- Proceed to configure the Sound Card, if any
- If you would like to install additional software using CD’s, you may do so at this time, otherwise select the Finish button, the system will proceed to restart
- Once the server has rebooted Proceed to access the Red Hat Enterprise Linux 5 console using your favorite console client, I personally use Secure CRT.
2. Installation and configuration of Opensips, webmin and mysql (Phase 2)
Your system should have the following packages installed
- zlib-1.2.3-3.i386
- openssl-0.9.8e-7.el5.i686
- mysql-server-5.0.45-7.el5.i386
If the above packages are not installed in your system you can install them by using yum, ie
root@simulacro ~# yum install zlib openssl mysql-server
Proceed to install the following packages using yum
root@simulacro ~# yum gcc bison flex zlib-devel openssl-devel
Proceed to download opensips 1.5 but first I will suggest you to go to the usr/src directory and download opensips 1.5 there.
root@simulacro src# wget http://opensips.org/pub/opensips/1.5.0/src/opensips-1.5.0-notls_src.tar.gz
Proceed to untar opensips
root@simulacro src# tar -xzf opensips-1.5.0-notls_src.tar.gz
Proceed to download and install webmin
root@simulacro src# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.470-1.noarch.rpm root@simulacro src# rpm -ivh webmin-1.470-1.noarch.rpm
Proceed to rename opensips-1.5.0-notls to opensips
root@simulacro src# mv opensips-1.5.0-notls opensips
Now lets proceed to EDIT the /usr/src/opensips/Makefile using nano, so we use mysql
root@simulacro src# nano opensips/Makefile
Once in the Makefile configuration parameters, proceed to modify the following comment by removing the “db_mysql” module
#if not set on the cmd. line or the env, exclude this modules: exclude_modules?= jabber cpl-c xmpp rls mi_xmlrpc xcap_client \ db_mysql db_postgres db_unixodbc db_oracle db_berkeley \ avp_radius auth_radius group_radius uri_radius \ osp perl snmpstats perlvdb peering carrierroute mmgeoip \ presence presence_xml presence_mwi presence_dialoginfo \ pua pua_bla pua_mi pua_usrloc pua_xmpp pua_dialoginfo \ ldap h350 identity regex
Your comment should now look like this
#if not set on the cmd. line or the env, exclude this modules: exclude_modules?= jabber cpl-c xmpp rls mi_xmlrpc xcap_client \ db_postgres db_unixodbc db_oracle db_berkeley \ avp_radius auth_radius group_radius uri_radius \ osp perl snmpstats perlvdb peering carrierroute mmgeoip \ presence presence_xml presence_mwi presence_dialoginfo \ pua pua_bla pua_mi pua_usrloc pua_xmpp pua_dialoginfo \ ldap h350 identity regex
Proceed to save the configuration in nano by using ctrl + X then y
Proceed to run the following commands, but first go to /usr/src/opensips
root@simulacro opensips#make clean root@simulacro opensips#make all include_modules="mysql" root@simulacro opensips#make prefix=/usr/local install include_module="mysql"
Using nano proceed to edit /usr/local/etc/opensips/opensipsctlrc
root@simulacro opensips# nano /usr/local/etc/opensips/opensipsctlrc
and proceed to modify the following comment by removing the # sign
#database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by def$ #If you want to setup a database with opensipsdbctl, you must at leas$ #this parameter. DBENGINE=MYSQL
It should look like this
#database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by def$ #If you want to setup a database with opensipsdbctl, you must at leas$ #this parameter. DBENGINE=MYSQL
Proceed to save your file in nano using ctrl + X and Y
Proceed to start mysql by typing the following command service mysqld start
root@simulacro opensips# service mysqld start Initializing MySQL database: Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h simulacro.sipcorner.com password 'new-password' See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at http://shop.mysql.com OK Starting MySQL: OK root@simulacro opensips#
As stated above let’s proceed to set up a password for the root user
root@simulacro opensips# /usr/bin/mysqladmin -u root password yourpassword root@simulacro opensips# /usr/bin/mysqladmin -u root -h simulacro.sipcorner.com password 'yourpassword'
Now lets proceed to create the database for opensips using the following command
root@simulacro opensips# /usr/local/sbin/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@simulacro opensips#
Now proceed to edit the opensips.cfg file
root@simulacro opensips# nano /usr/local/etc/opensips/opensips.cfg
Proceed to modify the following comment (remove the #)
/* uncomment next line for MySQL DB support */ #loadmodule "db_mysql.so"
It should now look like this
/* uncomment next line for MySQL DB support */ loadmodule "db_mysql.so"
Proceed to also modify the following comment (remove couple #’s)
loadmodule "acc.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
It should now look like this
loadmodule "acc.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"
Proceed to also modify the following comment (remove the #)
/* uncomment the following lines if you want to enable DB persistency for location entries */ #modparam("usrloc", "db_mode", 2)
It should now look like this
/* uncomment the following lines if you want to enable DB persistency for location entries */ modparam("usrloc", "db_mode", 2)
Proceed to also modify the following comment (remove couple #’s)
/* 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")
It should now look like this
/* 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")
Proceed to modify the following “empty spaces” with your domain, in my case I will use the ip address of this box which is 10.10.10.101, the comment is the following
#authenticate the REGISTER requests (uncomment to enable auth) ##if (!www_authorize("", "subscriber")) ##{ ## www_challenge("", "0"); ## exit;
It should now look like this
#authenticate the REGISTER requests (uncomment to enable auth) if (!www_authorize("10.10.10.101", "subscriber")) { www_challenge("10.10.10.101", "0"); exit; }
Proceed to save the file in nano by using ctrl + X and Y
Great!, now lets see if we can start opensips by typing opensipsctl start
root@simulacro opensips# opensipsctl start INFO: Starting OpenSIPS : INFO: started (pid: 5474) root@simulacro opensips#
And as we see above we can start successfully OpenSIPS!
Now lets proceed to copy /usr/src/opensips/packaging/fedora/opensips.init to /etc/init.d/opensips by doing the following
root@simulacro opensips# cp /usr/src/opensips/packaging/fedora/opensips.init /etc/init.d/opensips root@simulacro opensips#
Now lets give the proper rights to opensips, by doing the following chmod 755 /etc/init.d/opensips
root@simulacro opensips# chmod 755 /etc/init.d/opensips
Now so that we can start opensips properly, we need to make some configuration changes to /etc/init.d/opensips, using nano do the following
root@simulacro opensips# nano /etc/init.d/opensips
Proceed to modify the following comment
#Source function library. . /etc/rc.d/init.d/functions oser=/usr/sbin/opensips prog=opensips RETVAL=0
It should now look like this
#Source function library. . /etc/rc.d/init.d/functions oser=/usr/local/sbin/opensips prog=opensips RETVAL=0
Proceed to save the file using name ctrl + X and Y
Now lets proceed to test service opensips start|status|stop
root@simulacro opensips# service opensips stop Stopping opensips: OK root@simulacro opensips# service opensips status opensips is stopped root@simulacro opensips# service opensips start Starting opensips: OK root@simulacro opensips# service opensips status opensips (pid 5624 5623 5620 5618 5615 5613 5612 5610 5608 5605 5603 5602 5600 5598 5595 5594 5590) is running... root@simulacro opensips#
Using nano proceed to edit the startup script /etc/init.d/opensips, proceed to make changes to the following comment
#Startup script for OpenSIPS chkconfig: - 85 15
It should now look like
#Startup script for OpenSIPS chkconfig: 345 96 15
Proceed to save the file using nano ctrl + X and Y
Proceed to also do the following from the CLI
root@simulacro opensips# chkconfig --add opensips root@simulacro opensips# chkconfig mysqld on root@simulacro ~# export SIP_DOMAIN=10.10.10.101
Proceed to reboot the server to make sure opensips and mysqld starts automatically
root@simulacro opensips# reboot Broadcast message from root (pts/1) (Sun Apr 12 01:41:56 2009): The system is going down for reboot NOW! root@simulacro opensips#
Once the server have fully restarted we can proceed to add a new user, when adding a new user, you will be asked for the opensips password, the default opensips password is lowercase opensipsrw, I will suggest you to look at the opensipsctlrc file, I will strongly suggest you to change all the default values in this file, although becareful when making changes, because it could cause opensips to stop working.
To add a new user simply issue the following command
root@simulacro src# opensipsctl add 2000 yourpassword MySQL password for user 'opensips@localhost': <---enter opensipsrw new user '2000' added root@simulacro src#
Using for example xlite you should now be able to register user 2000 with opensips
Also you can use the command opensipsctl to access your cli options.
This document was created by Cesar Fiestas.