==先安裝ODBC==
sudo apt-get install iodbc
sudo apt-get install unixodbc-dev
sudo apt-get install libmyodbc
sudo apt-get install unixodbc
.
==ubuntu freeswitch 安裝==
===英文 wiki 地址:===
:http://wiki.freeswitch.org/wiki/Ubuntu_Quick_Start
===1筐高、安裝依賴(lài)包===
cd /usr/src
--sudo apt-get install git-core subversion build-essential autoconf automake libtool libncurses5 ?libncurses5-dev make libjpeg-dev
--ubuntu 12.04
sudo apt-get install git-core build-essential autoconf automake libtool libncurses5 libncurses5-dev gawk libjpeg-dev zlib1g-dev pkg-config libssl-dev
sudo apt-get install gawk
update-alternatives --set awk /usr/bin/gawk
===2馍迄、下載源碼===
如果提示git未安裝就安裝git
apt-get install git
git clone git://git.freeswitch.org/freeswitch.git
從其他設(shè)備copy到本機(jī)/usr/src解壓命令tar -xf freeswitch-1.2.5.3.tar.bz2
修改mod_radius ,mod_silk等
cd /usr/src/freeswitch-1.2.5.3
vi modules.conf
freeswitch-1.2.5.3是
./devel-bootstrap.sh
./configure --enable-core-odbc-support
make
如果make出現(xiàn) make[1]: *** [freeswitch] Error 1 就從其他設(shè)備copy freeswitch【路徑:/usr/src/freeswitch-1.2.5.3】 文件過(guò)來(lái)然后再make
sudo make install
sudo make uhd-sounds-install
sudo make uhd-moh-install
sudo make samples
===freeswitch初始化===
:創(chuàng)建文件/etc/init.d/freeswitch
:copy 下面內(nèi)容到freeswitch
====freeswitch.init====
#!/bin/bash
### BEGIN INIT INFO
# Provides: ? ? ? ? ?freeswitch
# Required-Start: ? ?$local_fs $remote_fs
# Required-Stop: ? ? $local_fs $remote_fs
# Default-Start: ? ? 2 3 4 5
# Default-Stop: ? ? ?0 1 6
# Description: ? ? ? Freeswitch debian init script.
# Author: Matthew Williams
#
### END INIT INFO
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
DESC="Freeswitch"
NAME=freeswitch
DAEMON=/usr/local/freeswitch/bin/$NAME
DAEMON_ARGS="-nc"
PIDFILE=/usr/local/freeswitch/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
FS_USER=freeswitch
FS_GROUP=daemon
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that sets ulimit values for the daemon
#
do_setlimits() {
ulimit -c unlimited
ulimit -d unlimited
ulimit -f unlimited
ulimit -i unlimited
ulimit -n 999999
ulimit -q unlimited
ulimit -u unlimited
ulimit -v unlimited
ulimit -x unlimited
ulimit -s 240
ulimit -l unlimited
return 0
}
#
# Function that starts the daemon/service
#
do_start()
{
# Set user to run as
if [ $FS_USER ] ; then
DAEMON_ARGS="`echo $DAEMON_ARGS` -u $FS_USER"
fi
# Set group to run as
if [ $FS_GROUP ] ; then
DAEMON_ARGS="`echo $DAEMON_ARGS` -g $FS_GROUP"
fi
# Return
# ? 0 if daemon has been started
# ? 1 if daemon was already running
# ? 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null -- \
|| return 1
do_setlimits
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. ?As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# ? 0 if daemon has been stopped
# ? 1 if daemon was already stopped
# ? 2 if daemon could not be stopped
# ? other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. ?A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
:chmod 755 /etc/init.d/freeswitch
===設(shè)置隨機(jī)啟動(dòng)===
update-rc.d -f freeswitch defaults
cp /usr/src/freeswitch-1.2.5.3/debian/freeswitch-sysvinit.freeswitch.default /etc/default/freeswitch
如果上面make 出錯(cuò)時(shí)救恨,進(jìn)入/etc/default/檢查freeswitch文檔是否有資料
===Add the freeswitch user:===
adduser --disabled-password ?--quiet --system \
--home /opt/freeswitch \
--gecos "FreeSwitch Voice Platform" --ingroup daemon \
freeswitch
adduser freeswitch audio
===Change freeswitch installation ownership (from root)===
chown -R freeswitch:daemon /usr/local/freeswitch/
===Remove permissions for other===
chmod -R o-rwx /usr/local/freeswitch/
===Add the fs_cli to your default path===
ln -s /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
===Then either:手動(dòng)啟動(dòng)===
sudo shutdown -r now
or
/etc/init.d/freeswitch start
===test its startup===
fs_cli
===shutdown===
Stop the FreeSWITCH program. This only works from the CLI, as an API call, you should be using 'fsctl shutdown'
Warning! Shutdown from the CLI ignores arguments and exits immediately!
Usage: fsctl shutdown [cancel|elegant|asap|restart|now]
cancel - discontinue a previous shutdown request.
elegant - wait for all traffic to stop; do not prevent new traffic.
asap - wait for all traffic to stop; do not allow new traffic.
restart - restart FreeSWITCH immediately following the shutdown.
now - shutdown FreeSWITCH immediately.
When giving "elegant", "asap" or "now" it's also possible to give the restart command:
Usage: fsctl shutdown [elegant|asap|now] restart
重啟freeswitch
fsctl shutdown restart