Development

#installing FreePBX and Asterisk on Natty (Tested, 11.04), Maverick 10.10, Lucid 10.04, Oneiric 11.10 (Untested)

#Revision 1.0 by Mick Petrick (please add your revision number and date following)

#updated 13 June 2011

#known bugs (see fix following):

#also see towards the end of the script for more bugs and fixes

#when saving configuration changes to the trunk, getting an error: Unable to connect to manager localhost:5038 (111): Connection refused [FATAL] Unable to connect to Asterisk Manager from /var/lib/asterisk/bin/retrieve_conf, aborting.

#The only cure for the bug was to backup the /etc/asterisk folder, and try to reinstall asterisk if possible, if it won't reinstall after following the links at the bottom of this script, then copy the /etc/asterisk files back. It's a bit messy, but what works even better is to MAKE SURE YOU FOLLOW THE NOTES AFTER THE AMPORTAL SETUP AND REFRESH ALL OF YOUR MODULES BEFORE PRESSING THE RED BUTTON ON THE TOP OF THE ADMIN TO SAVE YOUR CONFIGURATION CHANGES.

#if you don't want FreePBX installed then you can use the Lucid script at https://wiki.ubuntu.com/AsteriskOnUbuntu/Current

#if you run this script more than once and get the dreaded "Unable to connect to remote asterisk (does /var/run/asterisk/asterisk/asterisk.ctl exist?)" error you'll need to check /etc/asterisk/asterisk.conf to say 'astrundir => /var/run/asterisk'.

#after running this script, if you need to debug try 'asterisk -c' and follow the log, also try 'tail /var/log/asterisk/messages' and of course the standard 'asterisk -vvvvvr' or 'safe_asterisk'.

#this is an untested script which I hope should be accurate

#it's best to read through this script before running it

#it's assumed that you're running from 'sudo -i' or su user

#better still, copy and paste each section in to your command line

#if any part of the install doesn't work for any reason, try 'apt-get update' and try again

#this doesn't include configuring any zaptel drivers, to install XP100P see https://wiki.ubuntu.com/AsteriskOnUbuntu/Current

#sudo -i

#change to your preferred MySQL password

export MYSQL_ROOT_PW=peachy2keen

#change to freepbx version found at http://www.freepbx.org/download-freepbx

export FREEPBX_VERSION=2.9.0

export ASTERISK_DB_PW=amp109

#put in your ip address here, use 'ifconfig' to find

#if you're using dhcp ip, then it's best to use static if you can and know how and it works

export IP_ADDRESS=10.1.1.16

#remove the following comments if updatedb and locate don't work, this version doesn't include 'find', but running 'apt-get install findutils' after the install reinstalls it

#apt-get remove findutils

#mkdir /usr/src

#cd /usr/src

#wget https://launchpad.net/ubuntu/+source/findutils/4.4.0-2ubuntu2/https://launchpad.net/ubuntu/+archive/primary/+files/findutils_4.4.0.orig.tar.gz

#tar xvf findutils_4.4.0.orig.tar.gz

#cd findutils_4.4.0.orig.tar.gz

#chmod 777 configure

#./configure

#./make

#make install

#apt-get -y install findutils

#this is handy for finding things if you need later, using 'locate' and 'find'

#updatedb

# ensure package directory up to date and system upgraded

apt-get -y update

apt-get -y upgrade

apt-get -y install asterisk sox asterisk-mysql asterisk-mp3

# you can test asterisk at this point by typing 'asterisk -vvvvr'

# if it's working you'll see a prompt '>'

# type in 'quit' to get back to the command line

#I'm not sure if the following line is required, but it can't hurt apt-get -y update

# retrieve utilities and set debconf to noninteractive front-end

apt-get -y install debconf-utils

debconf-set-selections <<CONF_EOF

debconf debconf/frontend select noninteractive

CONF_EOF

# install mysql server

# use peachy2keen as the password when prompted

apt-get -y install mysql-server

#if mysql is already installed, or a different password was used

#mysqladmin -u root password ${MYSQL_ROOT_PW}

debconf-set-selections <<CONF_EOF

debconf debconf/frontend select Dialog

CONF_EOF

# install packages needed beyond base install with openssh server

apt-get -y install linux-headers-uname -r

apt-get -y install make bison flex g++ gcc apache2 php5

apt-get -y install php5-cli php5-mysql php-pear php-db php5-gd curl

apt-get -y install sox libncurses5-dev libssl-dev libmysqlclient15-dev

apt-get -y install php-pear

#the following should already be installed

apt-get -y install apache2

apt-get -y install php5

apt-get -y install libapache2-mod-php5

/etc/init.d/apache2 restart

apt-get update

pear install DB

#run this line again

apt-get install php5-mysql

#before configuring asterisk, save the current settings

cd /etc mkdir backupasterisk

cp -r asterisk backupasterisk

cp -r /var/run/asterisk backupasterisk

#get freepbx

cd /usr/src

wget http://mirror.freepbx.org/freepbx-${FREEPBX_VERSION}.tar.gz

tar -xvf freepbx-${FREEPBX_VERSION}.tar.gz

cd freepbx-${FREEPBX_VERSION}

#remove the asterisk password so the rest of the script works more easily

passwd --delete asterisk

#the following I got from https://wiki.ubuntu.com/AsteriskScriptOnHardy

# create asterisk user and group, adding to www-data group for apache server

#ignore any error on the following line

adduser asterisk --disabled-password --gecos "asterisk PBX"

adduser www-data asterisk

# fix up apache configuration to run as asterisk user

cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf-orig

sed -i "s/\(^User *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf

sed -i "s/\(^Group *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf

# patch safe_asterisk script to use bash

sed -i "s|#!/bin/sh|#!/bin/bash|" /usr/sbin/safe_asterisk

# add asterisk startup item

cat > /etc/init.d/asterisk <<-END_STARTUP

#!/bin/bash

set -e

set -a

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DESC="Asterisk"

NAME=amportal

DAEMON=/usr/sbin/\$NAME

test -x \$DAEMON || exit 0

d_start() {

  • amportal start

}

d_stop() {

  • amportal stop

}

d_reload() {

  • amportal restart

}

case "\$1" in

start)

  • echo -n "Starting \$DESC: \$NAME" d_start echo "."

;;

stop)

  • echo -n "Stopping \$DESC: \$NAME" d_stop echo "."

;;

restart|force-reload)

  • echo -n "Restarting \$DESC: \$NAME" d_stop sleep 10 d_start echo "."

;;

*)

  • echo "Usage: \$SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3

;;

esac

exit 0

END_STARTUP

chmod 755 /etc/init.d/asterisk

update-rc.d asterisk defaults 90 10

# add dummy timing device for asterisk

modprobe ztdummy

# setup databases for freepbx use

mysqladmin -u root -p${MYSQL_ROOT_PW} create asterisk

mysqladmin -u root -p${MYSQL_ROOT_PW} create asteriskcdrdb

mysql -u root -p${MYSQL_ROOT_PW} asterisk < SQL/newinstall.sql

mysql -u root -p${MYSQL_ROOT_PW} asteriskcdrdb < SQL/cdr_mysql_table.sql

mysql -u root -p${MYSQL_ROOT_PW} <<-END_PRIVS

  • GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY "${ASTERISK_DB_PW}"; GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY "${ASTERISK_DB_PW}"; flush privileges;

END_PRIVS

# reconfigure php for freepbx

cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini-orig

sed -i "s/\(upload_max_filesize *= *\)\(.*\)/\120M/" /etc/php5/apache2/php.ini

sed -i "s/\(memory_limit *= *\)\(.*\)/\1100M/" /etc/php5/apache2/php.ini

sed -i "s/\(magic_quotes_gpc *= *\)\(.*\)/\1Off/" /etc/php5/apache2/php.ini

# fix up directory use and permissions for asterisk

mkdir /var/run/asterisk

chown asterisk:asterisk /var/run/asterisk

chown asterisk:asterisk -R /etc/asterisk

chown asterisk:asterisk -R /var/lib/asterisk

# chmod a+x /var/lib/asterisk/bin/*

chown asterisk:asterisk -R /var/log/asterisk

chown asterisk:asterisk -R /var/spool/asterisk

chown asterisk:asterisk -R /var/www

sed -i "s/\[directories\](!) .*/[directories]/" /etc/asterisk/asterisk.conf

sed -i "s|astrundir *=> */var/run|astrundir => /var/run/asterisk|" /etc/asterisk/asterisk.conf

# start asterisk

./start_asterisk start

# configure amportal

cp amportal.conf /etc/amportal.conf

sed -i "s/# \(AMPDBUSER=asteriskuser\) */\1/" /etc/amportal.conf

sed -i "s/# \(AMPDBPASS=\).*/\1${ASTERISK_DB_PW}/" /etc/amportal.conf

sed -i "s|\(AMPWEBROOT=\)/var/www/html|\1/var/www|" /etc/amportal.conf

sed -i "s|\(FOPWEBROOT=\)/var/www/html/panel|\1/var/www/panel|" /etc/amportal.conf

sed -i "/#AMPWEBADDRESS=192.168.1.101/d" /etc/amportal.conf

sed -i "s/AMPWEBADDRESS=/AMPWEBADDRESS=${IP_ADDRESS}/" /etc/amportal.conf

# install amp

./install_amp --username=root --password={MYSQL_ROOT_PW}

# start apache web server

/etc/init.d/apache2 restart

# start amportal

amportal start

#current known bug 1 (with fix following): when I run 'grep -r sqlite /etc/asterisk/*' it shows I'm running sqlite, when I run 'asterisk -c' it reports 'Registered Config Engine sqlite' and '.PostgreSQL RealTime: Failed to connect database asterisk on 127.0.0.1: '. Obviously I want to configure for MySQL not Postgres.

#current known bug 2: (with fix following) the message log reports 'manager.c: 127.0.0.1 failed to authenticate as admin'. This may very well be related to known bug number 1.

#for the bug fixes a few edits to the config files should do the trick. Alternatively the Hardy install for Asterisk script works quite well. https://wiki.ubuntu.com/AsteriskScriptOnHardy

# to fix these bugs I did the following, uncomment the following lines if needed

#rm -r /etc/asterisk

#apt-get -y update

#apt-get upgrade

#apt-get -y remove asterisk

#apt-get -y install asterisk

#apt-get install --reinstall asterisk

#cd usr/src/freepbx-${FREEPBX_VERSION}

#./install_amp --username=root --password={MYSQL_ROOT_PW}

#amportal start

echo "you're done, go to your browser URL and type in 'localhost/admin', username is admin, password is admin"

echo ""

echo "** VERY IMPORTANT: IF YOU DON'T WANT A LOT OF GRIEF, MAKE SURE THE FIRST THING YOU DO IS TO UPGRADE YOUR MODULES IN FREEPBX SETUP"

echo "http://localhost/admin/config.php?type=setup&display=modules and click on 'check online' and then update the current modules"

echo "if you get an error that a field is missing (password_sha1) then read the end of the script for more notes"

#notes on how to fix password_sha1 error.

#add a field to ampuser in the table, using phpmyadmin, mysql or webmin.

#run the following php script to get the value to enter in password_sha1

#<?php

# $newpassword = 'admin';

# echo sha1($newpassword) ;

#?>

# for further info see http://wiki.opencsta.org/index.php/FreePBX_-_password_sha1_change_in_database_for_admin_to_reset_lost_password

AsteriskOnUbuntu/Development (last edited 2011-06-15 19:28:27 by mikep2)