1. 首先需要先更新一下ubuntu的apt源

这里使用的源为阿里镜像源http://mirrors.aliyun.com

cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo > /etc/apt/sources.list
vim /etc/apt/sources.list
然后将下面的内容粘贴到sources.list文件中
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

还需要添加ppa源,因为在第二步安装依赖的时候需要安装php5.6,如果不添加的话apt-get install的时候会提示找不到该包

apt-get install -y language-pack-en-base
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
add-apt-repository ppa:ondrej/php

执行更新镜像列表

apt-get update

2. 安装依赖包

apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server\
mysql-client  bison flex php5.6 php5.6-curl php5.6-cli php5.6-xml php5.6-mysql php-pear php5.6-gd libapache2-mod-php5.6\
curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3\
libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev\
libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev\
libspandsp-dev sudo subversion libtool-bin python-dev

在安装mysql的时候会有几次提示设置密码的窗口弹出,在这里我们直接回车即可,默认设置空密码,避免后续安装asterisk的时候出现问题 在安装php5.6、php-pear、libssl-dev、libxml2-dev、libicu-dev、libneon27-dev这几个包的时候下载速度会比较的慢 安装完了之后,将php切换到php5.6

sudo a2dismod php7.1
sudo a2enmod php5.6
sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php5.6

3. 安装nodejs

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

4. 安装及配置asterisk

下载源码包

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz

编译安装dahdi

tar -zxvf dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete*
make all
make install
make config
tar -zxvf tar -zxvf libpri-current.tar.gz
cd libpri*
make
make install

编译并安装jansson

tar -zxvf jansson.tar.gz 
cd jansson*
autoreconf -i
./configure
make
make install

编译并安装Asterisk

tar -zxvf asterisk-13-current.tar.gz 
cd asterisk*
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install
这里有个弹窗需要用户填入国家的电话代码,中国为86
./configure
make menuselect
这里会出现一个弹窗,会询问你需要启用哪些模块,按回车则启用对应模块,默认即可
make
make install
make config
ldconfig
update-rc.d -f asterisk remove

5. 安装和配置FreePBX

创建Asterisk用户并设置基本文件权限

useradd -m asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
rm -rf /var/www/html

修改apache2配置文件

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/5.6/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
service apache2 restart

配置ODBC

编辑/etc/odbcinst.ini并添加以下内容。
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
编辑或创建/etc/odbc.ini并添加以下部分。
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3

正式编译安装FreePBX

cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
tar vxfz freepbx-14.0-latest.tgz
cd freepbx
touch /etc/asterisk/ari.conf
./start_asterisk start
./install -n

重新启动apache

a2enmod rewrite
service apache2 restart

6. 最后在浏览器输入freepbx服务器的ip地址就可以看到后台界面了