Установка FreeSWITCH при помощи git - CentOS Wiki
FreeSWITCH — открытая телефонная платформа, распространяемая в исходных кодах, созданная для удовлетворения потребности в управляемых голосом или текстом систем, масштабируемых от софтфонa до софтсвичa. FreeSWITCH в системе CentOS можно установить при помощи YUM, но (на момент март 2013) при установке из репозитория, происходят небольшие ошибки с инсталяцией необходимых голосовых и конфигурационных файлов. Оптимальным случаем является установка из исходных кодов при помощи GIT.
Сборка FreeSWITCH
Установка необходимых по зависимостям компонент:
yum install autoconf automake libtool gcc-c++ ncurses-devel make expat-devel zlib zlib-devel \ unixODBC-devel openssl-devel gnutls-devel libogg-devel libvorbis-devel curl-devel gettext-devel \ expat-devel curl-devel zlib-devel openssl-devel bzip2 libjpeg-devel wget perl-ExtUtils-MakeMaker \ alsa-lib-devel gdbm-devel libX11-devel libtiff-devel python-devel uuid-devel
Установка GIT
cd /usr/src wget http://mirror.linux.org.au/software/scm/git/git-1.7.6.tar.bz2 tar -xvjf git-1.7.6.tar.bz2 cd git-1.7.6 make prefix=/usr/local all make prefix=/usr/local install
Загрузка исходного кода для сборки FreeSWITCH
mkdir /usr/src/freeswitch cd /usr/src/freeswitch
git clone git://git.freeswitch.org/freeswitch.git /usr/src/freeswitch cd /usr/src/freeswitch ./bootstrap.sh -j ./configure
make -j $(cat /proc/cpuinfo | grep processor | wc -l) make install make moh-install make sounds-install make sounds-ru-install make cd-sounds-ru-install && make uhd-sounds-ru-install && make hd-sounds-ru-install make all cd-sounds-install cd-moh-install
Создание системного пользователя и стартового скрипта
adduser --home /usr/local/freeswitch -g daemon freeswitch chown -R freeswitch.daemon /usr/local/freeswitch
cd /etc/rc.d/init.d wget http://centos.name/file/freeswitch chmod 755 /etc/rc.d/init.d/freeswitch /sbin/chkconfig freeswitch on /sbin/service freeswitch start
Настройка файрвола
iptables -I INPUT -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP iptables -I INPUT -p udp --dport 5080 -m string --string "friendly-scanner" --algo bm -j DROP iptables -I INPUT -m string --string "REGISTER sip:" --algo bm --to 65 -m hashlimit \ --hashlimit 4/minute --hashlimit-burst 1 --hashlimit-mode srcip,dstport --hashlimit-name sip_r_limit -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5060 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5060 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5080 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5080 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 16384:32768 -j ACCEPT service iptables save
Быстрая автоматическая установка FreeSWITCH при помощи bash скрипта
Наберите в терминале следующие команды (тестировалось на CentOS 5.9):
cd ~ wget http://centos.name/file/freeswitchinstall.sh chmod +x freeswitchinstall.sh sh freeswitchinstall.sh
В результате, будут проделаны следующие шаги:
- установка необходимых программ для сборки FreeSWITCH
- установка утилиты для работы с GIT
- скачивание исходных кодов
- сборка FreeSWITCH
- создание пользователя freeswitch, под которым будет запускаться сервер FreeSWITCH
- установка стартового скрипта для запуска FreeSWITCH при старте системы
- открытие необходимых портов в брандмауэре
- старт FreeSWITCH
Установка FreeSWITCH на CentOS 6 (x86_64)
yum install wget -y
yum install git autoconf automake libtool ncurses-devel libjpeg-devel -y yum install sqlite-devel libcurl-devel pcre-devel speex-devel libedit-devel -y
yum install expat-devel openssl-devel libtiff-devel libX11-devel unixODBC-devel python-devel zlib-devel -y yum install alsa-lib-devel libogg-devel libvorbis-devel perl-libs gdbm-devel uuid-devel -y
yum install gcc-c++ -y
yum install dnsmasq -y
Добавим репозиторий RpmFORGE для установки дополнительного необходимого пакета
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm -y
yum install ldns-devel -y
Установка FreeSWITCH через git
cd /usr/local/src
git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.git
Если вы желаете иметь последний релиз, то используйте следующую команду git:
git clone git://git.freeswitch.org/freeswitch.git
cd freeswitch ./bootstrap.sh ./configure make
make all install sounds-install moh-install make hd-sounds-install hd-moh-install make uhd-sounds-install uhd-moh-install make cd-sounds-install cd-moh-install make sounds-ru-install make uhd-sounds-ru-install make hd-sounds-ru-install make cd-sounds-ru-install
adduser --home /usr/local/freeswitch -g daemon freeswitch
chown -R freeswitch.daemon /usr/local/freeswitch
cd /etc/rc.d/init.d
FILE_SITE_START_SCRIPT="http://centos.name/file"
wget $FILE_SITE_START_SCRIPT/freeswitch
chmod 755 /etc/rc.d/init.d/freeswitch
/sbin/chkconfig freeswitch on
/sbin/service freeswitch start
iptables -I INPUT -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP iptables -I INPUT -p udp --dport 5080 -m string --string "friendly-scanner" --algo bm -j DROP iptables -I INPUT -m string --string "REGISTER sip:" --algo bm --to 65 -m hashlimit --hashlimit 4/minute \ --hashlimit-burst 1 --hashlimit-mode srcip,dstport --hashlimit-name sip_r_limit -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5060 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5060 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5080 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5080 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 16384:32768 -j ACCEPT service iptables save
Установка FreeSWITCH на CentOS 6.6 (x86_64)
Пояснений особых не будет, только команды в консоли.
yum install wget -y rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt yum install dnsmasq -y yum install git autoconf automake libtool ncurses-devel libjpeg-devel -y yum install sqlite-devel libcurl-devel pcre-devel speex-devel libedit-devel -y yum install expat-devel openssl-devel libtiff-devel libX11-devel unixODBC-devel python-devel zlib-devel -y yum install alsa-lib-devel libogg-devel libvorbis-devel perl-libs gdbm-devel uuid-devel -y yum install gcc-c++ -y yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm -y yum install ldns-devel -y
cd /usr/local/src git clone -b v1.4 https://freeswitch.org/stash/scm/fs/freeswitch.git cd /usr/local/src/freeswitch/ ./bootstrap.sh -j
В файле modules.conf, если необходимо, снимаем комментарии с необходимых модулей.
vi modules.conf # Выход из редактора vi по комбинации клавиш "Esc" затем ":" "wq"
./configure -C make && make install make sounds-install moh-install sounds-ru-install make hd-sounds-install \ hd-moh-install hd-sounds-ru-install make uhd-sounds-install uhd-moh-install uhd-sounds-ru-install make cd-sounds-install \ cd-moh-install cd-sounds-ru-install make samples useradd --system --home-dir /usr/local/freeswitch -G daemon freeswitch passwd -l \ freeswitch chown -R freeswitch:daemon /usr/local/freeswitch/ chmod -R 770 /usr/local/freeswitch/ chmod -R 750 /usr/local/freeswitch/bin/* mkdir /var/run/freeswitch chown -R freeswitch:daemon /var/run/freeswitch ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/ ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/
Приготавливаем сценарий запуска (для автоматического старта freeswitch)
cp /usr/local/src/freeswitch/build/freeswitch.init.redhat /etc/init.d/freeswitch chmod 750 /etc/init.d/freeswitch chown freeswitch:daemon /etc/init.d/freeswitch chkconfig freeswitch on chkconfig freeswitch --list service freeswitch start
Настройка firewall-а.
cat /etc/sysconfig/iptables iptables -I INPUT -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP iptables -I INPUT -p udp --dport 5080 -m string --string "friendly-scanner" --algo bm -j DROP iptables -I INPUT -m string --string "REGISTER sip:" --algo bm --to 65 -m hashlimit --hashlimit 4/minute \ --hashlimit-burst 1 --hashlimit-mode srcip,dstport --hashlimit-name sip_r_limit -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5060 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5060 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 5080 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5080 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 16384:32768 -j ACCEPT service iptables save