CentOS Install
Contents
- 1 Script Install
- 2 CentOS 6.4 Installation Steps
- 3 Preface
- 4 Dependencies
- 5 Repositories
- 6 GIT Install
- 7 FreeSWITCH Install
- 8 FreeSWITCH Auto Start
- 9 FreeSWITCH conf
- 10 SELinux
- 11 Database
- 12 PHP
- 13 Web Server
- 14 OpenSSL
- 15 FusionPBX
- 16 Permissions
- 17 Network Time Protocol
- 18 Fail2ban
- 19 Start the remaining services
- 20 Browser
- 21 Login
- 22 TDM notes
- 23 Additional Notes
- 24 Alternate method
Script Install
http://code.google.com/p/fusionpbx/source/browse/trunk/scripts/install/centos6/install_fusionpbx.sh
CentOS 6.4 Installation Steps
http://wiki.fusionpbx.com/index.php?title=Installing_FusionPBX_3.2_on_CentOS_6.4_and_Mysql
Preface
The following instructions were written for CentOS 5.6. http://mirror.centos.org/centos/5/isos/ After installing CentOS follow the instructions below.
Instructions to install FusionPBX with CentOS 6.2 and PostgreSQL can be found at: http://wiki.fusionpbx.com/index.php/CentOS_6.2_with_PostgreSQL
[[1]]
Dependencies
Install the following dependencies
yum -y install subversion autoconf automake libtool gcc-c++ git-core ncurses-devel make expat-devel bison zlib zlib-devel ghostscript gettext-devel yum -y install nano unixODBC-devel openssl-devel gnutls-devel libogg-devel libvorbis-devel curl-devel libtiff-devel libjpeg-devel python-devel expat-devel zlib zlib-devel bzip2
Repositories
CentOS does not yet ship a recent enough version of PHP in order to use PHP FPM (fast cgi), so we suggest you use the RPMs provided in the Webtatic repository. Also, this allows GIT to be installed via YUM. To do so:
Use this link for EPEL repository for 32 bit machines
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Use this link for EPEL repository for 64 bit machines
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
--PoolPro 23:35, 26 February 2012 (UTC)
GIT Install
Since we added the epel repo, GIT can be installed via YUM
yum -y install git
FreeSWITCH Install
Then use the following
cd /usr/src/ git clone -b v1.4 https://freeswitch.org/stash/scm/fs/freeswitch.git cd /usr/src/freeswitch ./bootstrap.sh
Edit modules.conf to enable or disable desired modules. To enable a few extra features you may want to go ahead and edit modules.conf. Remove the # in front of the lines with these modules:
mod_rtmp mod_directory mod_callcenter mod_tts_commandline mod_dingaling mod_flite mod_shout mod_pocketsphinx mod_cidlookup
Complete the FreeSWITCH compile.
./configure make install make samples
8 kHz Standard Audio
make sounds-install make moh-install
16 kHz High Definition Audio
make hd-moh-install make hd-sounds-install
32 kHz Ultra High Definition Audio
make uhd-moh-install make uhd-sounds-install
48 kHz CD Quality Audio
make cd-sounds-install make cd-moh-install
+---------- FreeSWITCH install Complete ----------+ + FreeSWITCH has been successfully installed. + + + + Install sounds: + + (uhd-sounds includes hd-sounds, sounds) + + (hd-sounds includes sounds) + + ------------------------------------ + + make cd-sounds-install + + make cd-moh-install + + + + make uhd-sounds-install + + make uhd-moh-install + + + + make hd-sounds-install + + make hd-moh-install + + + + make sounds-install + + make moh-install + + + + Install non english sounds: + + replace XX with language + + (ru : Russian) + + ------------------------------------ + + make cd-sounds-XX-install + + make uhd-sounds-XX-install + + make hd-sounds-XX-install + + make sounds-XX-install + + + + Upgrade to latest: + + ---------------------------------- + + make current + + + + Rebuild all: + + ---------------------------------- + + make sure + + + + Install/Re-install default config: + + ---------------------------------- + + make samples + + + + + + Additional resources: + + ---------------------------------- + + http://www.freeswitch.org + + http://wiki.freeswitch.org + + http://jira.freeswitch.org + + http://lists.freeswitch.org + + + + irc.freenode.net / #freeswitch + + + +-------------------------------------------------+
To upgrade FreeSWITCH in the future do the following:
cd /usr/src/freeswitch make current
FreeSWITCH Auto Start
Copy the sample-init-file to /etc/init.d/
cp build/freeswitch.init.redhat /etc/init.d/freeswitch
Replace /opt/freeswitch with /usr/local/freeswitch in the /etc/init.d/freeswitch
sed -i 's/\/opt\/freeswitch/\/usr\/local\/freeswitch/g' /etc/init.d/freeswitch
Set the permissions and add it to run on startup
chmod 765 /etc/init.d/freeswitch /sbin/chkconfig --add freeswitch /sbin/chkconfig --level 5 freeswitch on /sbin/chkconfig --list freeswitch
FreeSWITCH conf
Disable the following files but leave them for examples
cd /usr/local/freeswitch/conf/dialplan/default mv 00_ladspa.xml 00_ladspa.noload mv 00_pizza_demo.xml 00_pizza_demo.noload mv 01_Talking_Clock.xml 01_Talking_Clock.noload
SELinux
Can create problems for file access and running services. The following link describes how to disable SELinux.
http://www.crypt.gen.nz/selinux/disable_selinux.html
Database
SQLite
Is installed with PHP
PostgreSQL
Postgres 8.4 or higher is required. The following instructions install version 9.0 Replace the custom-username and custom-password with the account information.
http://wiki.postgresql.org/wiki/YUM_Installation (additional information)
Locate and edit your distributions .repo file, located: [base] and [updates] sections
nano /etc/yum.repos.d/CentOS-Base.repo
To the section(s) identified above, you need to append a line:
exclude=postgresql*
Download and install PGDG RPM file
wget http://yum.postgresql.org/9.0/redhat/rhel-5-i386/pgdg-centos90-9.0-5.noarch.rpm rpm -ivh pgdg-centos-9.0-5.noarch.rpm yum install postgresql90-server service postgresql-9.0 initdb /sbin/chkconfig postgresql-9.0 on service postgresql-9.0 start su postgres psql CREATE ROLE custom-username WITH SUPERUSER LOGIN PASSWORD 'custom-password'; \q exit sed -i 's/ident/md5/g' /var/lib/pgsql/9.0/data/pg_hba.conf service postgresql-9.0 restart
MySQL
Check to see if MySQL is installed
yum --enablerepo=webtatic list mysql55 mysql55-server
If it is installed then update it to a newer version
yum --enablerepo=webtatic upgrade mysql55 mysql55-server
If it is not installed then add it
yum –-enablerepo=webtatic install mysql55 mysql55-server /sbin/chkconfig mysqld on service mysqld start
Set the root password
mysqladmin -u root password new_password_here mysqladmin -h 127.0.0.1 -u root password new_password_here
PHP
yum --enablerepo=webtatic install php php-common php-pdo php-soap php-xml php-xmlrpc yum --enablerepo=webtatic upgrade php php-common php-pdo
For PostgreSQL add
yum --enablerepo=webtatic install php-pgsql
For MySQL then add
yum --enablerepo=webtatic install php-mysql mysql-connector-odbc
Install PHP Fast CGI
yum --enablerepo=webtatic install php-fpm /sbin/chkconfig php-fpm on
Web Server
There are multiple choices for a web server to use. These instructions focus on nginx because it takes very little server resources and scales well.
NGINX (pronounced: engine x)
yum --enablerepo=webtatic install nginx /sbin/chkconfig nginx on
Add the following directories.
mkdir /etc/nginx/sites-available mkdir /etc/nginx/sites-enabled
Remove the original config and add a more flexible one. Don't try to paste these in all at once because the "rm" and the wgets will make you miss something following.
cd /etc/nginx rm nginx.conf wget http://www.fusionpbx.com/downloads/centos/nginx/nginx.conf cd /etc/nginx/sites-available wget http://www.fusionpbx.com/downloads/centos/nginx/fusionpbx.conf ln /etc/nginx/sites-available/fusionpbx.conf /etc/nginx/sites-enabled/fusionpbx.conf
OpenSSL
Make sure the /etc/ssl directory exists
mkdir -p /etc/ssl
Change the directory
cd /etc/ssl
Generate a private key:
openssl genrsa -des3 -passout pass:fusionpbx_cert_password -out fusionpbx.ssl.key 1024
Remove password from private key:
openssl rsa -in fusionpbx.ssl.key -passin pass:fusionpbx_cert_password -out fusionpbx.ssl.key.nopass
Create a CSR (certificate signing request):
openssl req -new -key fusionpbx.ssl.key.nopass -out fusionpbx.ssl.csr -subj "/CN=fusionpbx/OU=Project/O=FusionPBX/L=Boise/C=US"
Generate self-signed cert:
openssl x509 -req -days 3650 -in fusionpbx.ssl.csr -signkey fusionpbx.ssl.key.nopass -out fusionpbx.ssl.crt
FusionPBX
Download FusionPBX source and add it to the web server directory.
cd /var/www svn checkout http://fusionpbx.googlecode.com/svn/trunk/fusionpbx /var/www/fusionpbx
If you get an error: 'svn: command not found.' Then add subversion. Then run the svn checkout again.
yum install subversion
Permissions
There are multiple ways to handle permissions. FreeSWITCH creates some file on demand such as voicemail and does not give the necessary group permissions because of that the following method is currently recommended. This method adds the www-data user, changes ownership of the files to use www-data and then make the php-fpm and freeswitch services run as www-data.
/usr/sbin/adduser www-data chown -R www-data:www-data /usr/local/freeswitch chown -R www-data:www-data /var/www/fusionpbx sed -i 's/user = apache/user = www-data/g' /etc/php-fpm.d/www.conf sed -i 's/group = apache/group = www-data/g' /etc/php-fpm.d/www.conf sed -i 's/${FS_USER-freeswitch}/${FS_USER-www-data}/g' /etc/init.d/freeswitch chown -R www-data:www-data -R /var/lib/php/session
Network Time Protocol
If NTP is not installed then install it.
yum install ntp chkconfig ntpd on ntpdate pool.ntp.org service ntpd start
If NTP is running then do the following:
service ntpd stop ntpdate pool.ntp.org service ntpd start
Fail2ban
Brute force attacks are common. If the SIP and RTP ports are exposed to the Internet then it is important to install and configure Fail2ban. Fail2ban can be configured to analyze the FreeSWITCH logs. When attacker are identified it blocks the offenders.
yum install fail2ban cd /etc/init.d /sbin/chkconfig fail2ban on
The configurations directory is
/etc/fail2ban
For more info go to Fail2Ban
Start the remaining services
Start php-fpm (Without doing so will result in ERR 502 BAD GATEWAY)
service php-fpm start
Start FreeSWITCH
service freeswitch start
Start nginx (Web Server)
service nginx start
Browser
To complete install go to the ip address or domain of the server in your web browser. You can use http or https and follow the instructions.
Login
After completing the install the default login information is whatever you set during setup after your initial connection to the web page.
Defaults used to be:
user: superadmin
pass: fusionpbx
System setup now makes you choose
TDM notes
Optional TDM card notes. These notes have not been updated in a while. CentOS Install TDM
Additional Notes
How to start stop FreeSWITCH
service freeswitch start service freeswitch stop
How to start, stop and restart nginx (Web Server)
service nginx start service nginx stop service nginx restart
Change the CentOS root password
su root passwd
Alternate method
You can follow next directions to install the software using RPMS. It has been tested on Centos 6.6 and 7.