==先安装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、安装依赖包===
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
从其他设备copy到本机/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出现 make[1]: *** [freeswitch] Error 1 就从其他设备copy freeswitch【路径:/usr/src/freeswitch-1.2.5.3】 文件过来然后再make
sudo make install
sudo make uhd-sounds-install
sudo make uhd-moh-install
sudo make samples
===freeswitch初始化===
:创建文件/etc/init.d/freeswitch
:copy 下面内容到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
===设置随机启动===
update-rc.d -f freeswitch defaults
cp /usr/src/freeswitch-1.2.5.3/debian/freeswitch-sysvinit.freeswitch.default /etc/default/freeswitch
如果上面make 出错时,进入/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:手动启动===
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