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
#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 d58-106-27-195)