How to install Mediaproxy 2.5.2 on CentOS 6 64 bit

Mediaproxy 2 has several dependencies and can be quite tricky to install. The INSTALL instructions that come with the package are very helpful, but unfortunately they are aimed primarily at installers who either have Debian or Ubuntu Linux distributions. If you are using CentOS (or Red Hat), especially the 64 bit versions, then getting Mediaproxy 2 to run can be difficult.

This article is essentially an update for an earlier article showing how to install Mediaproxy 2.3.8 on CentOS 5. The installation process on CentOS 6 is quite different so I decided to leave the older article as it was and write up the process for CentOS 6 as a new article. Readers can choose whichever description is most suitable.

Here are the sequential instructions for installing the libraries needed for Mediaproxy 2.5.2. A number of packages that previously had to be installed using source tarballs are now installed using yum, making the process much easier.

Install some development and system packages using YUM

Development tools
yum groupinstall “Development Tools”

Development libraries and headers for some existing packages
yum install iptables-devel.x86_64
yum install libgpg-error-devel.x86_64
yum install python-devel.x86_64

libnfnetlink and libnetfilter_conntrack

yum install libnfnetlink-devel.x86_64
yum install libnetfilter_conntrack-devel.x86_64

libgcrypt

yum install libgcrypt-devel

Install some Python packages

python-zopeinterface

yum install python-zope-interface

python-cjson

This module can be installed using YUM, but first you will have to activate the rpmforge repository. The best way to do this is using the instructions here:
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge

It is also possible to install the required python-cjson package from a source tarball as follows:

Suggested version: python-cjson-1.0.5.tar.gz
Locating a download site: http://pypi.python.org/pypi/python-cjson/1.0.5
Unzip: tar -xf python-cjson-1.0.5.tar.gz
Change to the sub-directory created when you unzipped the tarball
Build and install the library:
./setup.py build
./setup.py install

The following python packages are best installed from source tarballs. Details are given below:

python-application

Suggested version: python-application-1.3.0.tar.gz
Locating a download site: http://pypi.python.org/pypi/python-application/1.3.0
Unzip: tar -xf python-application-1.3.0.tar.gz
Change to the sub-directory created when you unzipped the tarball
Build and install the library:
./setup.py build
./setup.py install

python-gnutls

Suggested version: python-gnutls-1.2.4.tar.gz
Locating a download site: http://pypi.python.org/pypi/python-gnutls/1.2.4
Unzip: tar -xf python-gnutls-1.2.4.tar.gz
Change to the sub-directory created when you unzipped the tarball
Build and install the library:
./setup.py build
./setup.py install

Install the Twisted Python package

Install the core Twisted package from Twisted Matrix Labs
Suggested version: Twisted-11.0.0.tar.bz2
Locating a download site: http://twistedmatrix.com/trac
Unzip: tar -xf Twisted-11.0.0.tar.bz2
Change to the sub-directory created when you unzipped the tarball
Build and install the library:
./setup.py build
./setup.py install

Note also that version 8.2.0 of Twisted is available in the default YUM repositories. It is easier to install using YUM, but I prefer to install the later version from the source tarball because it matches the version used in the Debian install packages provided by AG-Projects.

A Checklist of dependencies and versions

On the system used for testing, the list of packages (and their versions) required by Mediaproxy looked like this prior to installation of the mediaproxy source code:

PackageVersion
gcc4.4.6
gcc-c++4.4.6
iptables and iptables-devel1.4.7
libnfnetlink and libnfnetlink-devel1.0.0
libnetfilter_conntrack and libnetfilter_conntrack-devel0.0.100
libgcrypt and libgcrypt-devel1.4.5
libgpg-error and libgpg-error-devel1.7
gnutls2.8.5
python and python-devel2.6.6
python-zope-interface3.5.2
python-twisted11.0.0
python-gnutls1.2.4
python-application1.3.0
python-cjson1.0.5

Install Mediaproxy 2

Mediaproxy 2
Suggested version: mediaproxy-2.5.2.tar.gz
Locating a download site: http://download.ag-projects.com/MediaProxy
Suggested location to copy and then unzip the tarball: /usr/local
Unzip: tar -xf mediaproxy-2.5.2.tar.gz
Change to the sub-directory created when you unzipped the tarball

I recommend that you build and install the library (standalone in the local directory) using the following command:
./build_inplace

In theory, an alternative approach to building and installing the library (system wide) is possible using the following commands, but I have had problems with this method:
./setup.py build
./setup.py install

And finally…

Make sure iptables is installed, running and correctly configured
Mediaproxy depends on iptables to relay IP packets through your server. Check that it is installed and running.

You can see the list of rules using the following command:
iptables -L -v -n

Note: In CentOS 6 you may well see a default rule preventing packet forwarding. If you leave this rule in place, the mediaproxy relay will start but it will not be able to relay any RTP. You will therefore need to change or delete this rule.

Set ip forwarding with immediate effect
echo “1″ > /proc/sys/net/ipv4/ip_forward

Set ip forwarding permanently
Edit the file /etc/sysctl.conf
Change the line “net.ipv4.ip_forward = 0″
to “net.ipv4.ip_forward = 1″

config.ini
Create a config.ini file from the sample template provided (config.ini.sample) and copy it to the appropriate directory. Using the system wide version, put it in /etc/mediaproxy. For standalone build you can also put it in the local directory where media-relay and media-dispatcher are located. If a file exists in both locations, the local one takes precedence

Using and troubleshooting Mediaproxy

When the media-relay program starts, it connects to one or more dispatchers using a TCP socket connection. Such connections can traverse a network which means dispatcher and relay do not have to run on the same server. It also means you should ideally start media-dispatcher before you start media-relay.

As far as I know, media-dispatcher has to run on the same server as OpenSIPS and they always have a 1-to-1 relationship. They connect via a local Unix socket. However, a relay can connect to more than one dispatcher and each dispatcher can accept connections from more than one relay, if needed. This many-to-many relationship is useful in terms of resilience and scalability.

By default, media-dispatcher listens for TCP connections from relays on port 25060. You can use the Linux command “netstat -ltnp” to see a list of listening ports and the name of the associated program. The command “netstat -tnp” will show established connections. Both media-dispatcher and media-relay appear as program name “python”, so the output of “netstat -tnp” on a server with both installed and connected might appear like this:

[root@sip1 log]# netstat -tnp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address       Foreign Address     State       PID/Program name
tcp        0      0 12.34.56.78:25060   12.34.56.78:43708   ESTABLISHED 1584/python
tcp        0      0 12.34.56.78:43708   12.34.56.78:25060   ESTABLISHED 1676/python

You can check if dispatcher and relay are running with the following Linux command:

ps ax | grep media-

The output should look somewhat like this:

[root@sip1 mediaproxy]# ps ax | grep media-
 1584 ?       SL   0:00 python /usr/local/mediaproxy/media-dispatcher
 1676 ?       SL   0:00 python /usr/local/mediaproxy/media-relay
15059 pts/0   S+   0:00 grep media-

If you are having problem running the programs, you should check for errors in the file /var/log/messages. Here is what the log looks like when dispatcher starts:

Sep 26 12:39 sip1 media-dispatcher[1584]: Starting MediaProxy Dispatcher 2.5.2
Sep 26 12:39 sip1 media-dispatcher[1584]: using set_wakeup_fd
Sep 26 12:39 sip1 media-dispatcher[1584]: Twisted is using epollreactor
Sep 26 12:39 sip1 media-dispatcher[1584]: mediaproxy.dispatcher.RelayFactory starting on 25060
Sep 26 12:39 sip1 media-dispatcher[1584]: mediaproxy.dispatcher.OpenSIPSControlFactory starting on "'/var/run/mediaproxy.sock'"
Sep 26 12:39 sip1 media-dispatcher[1584]: mediaproxy.dispatcher.ManagementControlFactory starting on 25061

…and here are the log messages for relay when it starts ok:

Sep 26 12:43 sip1 media-relay[1676]: Starting MediaProxy Relay 2.5.2
Sep 26 12:43 sip1 media-relay[1676]: using set_wakeup_fd
Sep 26 12:43 sip1 media-relay[1676]: Set resource limit for maximum open file descriptors to 11000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值