Sunteți pe pagina 1din 20

pdfcrowd.com open in browser PRO version Are you a developer?

Try out the HTML to PDF API


Edit on Bitbucket
Docs Installation
Installation
Table of contents
Introduction
Prerequisites
Freeswitch installation
Postgresql configuration
Web server install
PyFreeBilling installation
Next step
Introduction
This howto is written for ubuntu 12.04 LTS server. You can
use the same commands for debian based servers, but
depending on version, some commands may differ.
PyFreeBilling, Wholesale billing
and softswitch application based on
Freeswitch
Search docs

Introduction
Changelog
License
Features
Installation
Table of contents
Introduction
Prerequisites
Freeswitch installation
Postgresql configuration
Web server install
Pyfreebilling installation
Pyfreebilling login
Developer documentation
Read the Docs v: latest
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
Prerequisites
First, you need to install these packages
apt-get install git-core build-essential autoconf automake libtool libncurses5 libncurses5-dev gawk libjpeg-dev zlib1g-dev pkg-config libssl-dev libpq-dev unixodbc-dev odbc-postgresql postgresql postgresql-client libpq-dev libxml2-dev libxslt-dev ntp ntpdate
apt-get install libapache2-mod-wsgi apache2 gcc python-setuptools python-pip libjpeg62 libjpeg62-dev libdbd-pg-perl libtext-csv-perl
apt-get install python-psycopg2
apt-get install python-dev
Freeswitch installation
go to the source directory
cd /usr/src
and download the last stable freeswitch version
git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.git
after, boostrap, configure, make and install freeswitch
Read the Docs v: latest
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
cd freeswitch
./bootstrap.sh -j
./configure
edit modules.conf suiting your needs. You will find
below the minimum
modules to install :
applications/mod_commands
applications/mod_db
applications/mod_dptools
pplications/mod_esf
applications/mod_esl
applications/mod_expr
applications/mod_fifo
applications/mod_fsv
applications/mod_hash
applications/mod_memcache
applications/mod_nibblebill
codecs/mod_amr
codecs/mod_g723_1
codecs/mod_g729
dialplans/mod_dialplan_xml
endpoints/mod_loopback
endpoints/mod_sofia
event_handlers/mod_cdr_csv
event_handlers/mod_event_socket
formats/mod_local_stream
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
formats/mod_native_file
formats/mod_sndfile
formats/mod_tone_stream
languages/mod_lua
languages/mod_spidermonkey
loggers/mod_console
loggers/mod_logfile
loggers/mod_syslog
say/mod_say_en
after, do :
make
make install
you need to compile esl for python
cd libs/esl
make pymod
make pymod-install
create a freeswitch user and group as follow :
groupadd freeswitch
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup daemon freeswitch
and to apply the rule to freeswitch user :
chown -R freeswitch:daemon /usr/local/freeswitch/
chmod -R o-rwx /usr/local/freeswitch/
and now, we need to create the init script to start and
stop
freeswitch :
nano /etc/init.d/freeswitch
Add your init code
#!/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.
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
# 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 -nonat"
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
#
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
# 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
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
# 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 --background -- \
$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
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
# 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
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
;;
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
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
#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
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
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
exit 0
make this script executable :
chmod +x /etc/init.d/freeswitch
update-rc.d freeswitch defaults
add the cli link :
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
ln -s /usr/local/freeswitch/bin/fs_cli /bin/fs_cli
Postgresql configuration
create user and database :
sudo -i -u postgres
createuser -P pyfreebilling
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
createdb -O pyfreebilling -E UTF8 pyfreebilling
set odbc parameters; you need to edit /etc/odbc.ini. Do
not forget to specify your postgres password !
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
[freeswitch]
Driver = PostgreSQL
Description = Connection to POSTGRESQL
Servername = 127.0.0.1
Port = 5432
Protocol = 6.4
FetchBufferSize = 99
Username = pyfreebilling
Password =
Database = pyfreebilling
ReadOnly = no
Debug = 0
CommLog = 0
edit /etc/odbcinst.ini
[PostgreSQL]
Description = PostgreSQL ODBC driver (Unicode version)
Driver = /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so
Debug = 0
CommLog = 0
UsageCount = 0
Threading = 0
MaxLongVarcharSize = 65536
Web server install
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
install python virtualenv
pip install virtualenv
cd /usr/local
virtualenv venv --no-site-packages (IMPORTANT : no sudo !!!)
activate it :
source venv/bin/activate
cd venv
install CPAN :
install all dependent packages for CPAN
apt-get install build-essential
invoke the cpan command as a normal user :
$cpan
But once you hit on enter for cpan to execute, you be asked of
some few questions. To make it simple for yourself, answer no
for the first question so that the latter ones will be done for
you automatically.
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
Once the above is done, you will be present
with the cpan prompt.
now enter the commands below
cpan prompt> make install
cpan prompt> install Bundle::CPAN
Now all is set and you can install any perl
module you want.
examples of what installed below
cpan prompt> install Carp
cpan prompt> install Filter::Simple
cpan prompt> install Config::Vars
Pyfreebilling installation
download pyfreebilling sources :
git clone https://mwolff@bitbucket.org/mwolff/pyfreebilling.git
chown -R www-data:www-data pyfreebilling
cd pyfreebilling
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
cd pyfreebilling
create un new file in pyfreebilling directory called
local_settings.py
touch pyfreebilling/local_settings.py
edit this new file, and put yours specific values
# -*- coding: utf-8 -*-
from .settings import *
DEBUG = False
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'pyfreebilling',
'USER': 'pyfreebilling',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '', # Set to empty string for default.
}
}
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
ALLOWED_HOSTS = ['*']
TIME_ZONE = 'Europe/Paris'
#-- Nb days of CDR to show
PFB_NB_ADMIN_CDR = 3
PFB_NB_CUST_CDR = 30
# EMAIL SETUP
TEMPLATED_EMAIL_BACKEND = 'templated_email.backends.vanilla_django.TemplateBackend'
TEMPLATED_EMAIL_TEMPLATE_DIR = 'templated_email/'
TEMPLATED_EMAIL_FILE_EXTENSION = 'email'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = ''
EMAIL_PORT = 587
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
#EMAIL_USE_TLS = True
EMAIL_USE_SSL = True
EMAIL_SIGNATURE = '
and now, enter the following commands. At the step
syncdb, you will fave a prompt asking you to enter a
username and a password. They are very important, as
thez are the admin one !
pip install -r requirements/requirements.txt
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
python manage.py syncdb
python manage.py migrate
python manage.py loaddata country_dialcode.json
python manage.py collectstatic
copy some config files :
cp -av /usr/local/venv/pyfreebilling/freeswitch/conf/autoload_configs/acl.conf.xml /usr/local/freeswitch/conf/autoload_configs/acl.conf.xml
cp -av /usr/local/venv/pyfreebilling/freeswitch/conf/autoload_configs/cdr_csv.conf.xml /usr/local/freeswitch/conf/autoload_configs/cdr_csv.conf.xml
cp -av /usr/local/venv/pyfreebilling/freeswitch/conf/autoload_configs/modules.conf.xml /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
cp -av /usr/local/venv/pyfreebilling/freeswitch/conf/autoload_configs/nibblebill.conf.xml /usr/local/freeswitch/conf/autoload_configs/nibblebill.conf.xml
cp -av /usr/local/venv/pyfreebilling/freeswitch/dialplan/pyfreebill.xml /usr/local/freeswitch/conf/dialplan/pyfreebill.xml
cp -av /usr/local/venv/pyfreebilling/freeswitch/dialplan/public/00_did.xml /usr/local/freeswitch/conf/dialplan/public/00_did.xml
cp -av /usr/local/venv/pyfreebilling/freeswitch/conf/freeswitch.xml /usr/local/freeswitch/conf/freeswitch.xml
copy freeswitch esl binaries to your virtual env directory
cd /usr/src/freeswitch
cp libs/esl/python/ESL.py /usr/local/venv/lib/python2.7/site-packages/
cp libs/esl/python/_ESL.so /usr/local/venv/lib/python2.7/site-packages/
set good rights :
rm -f /usr/local/freeswitch/conf/directory/default/*
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
chown -R freeswitch:freeswitch freeswitch/scripts/
chmod 2750 /usr/local/freeswitch
chmod 2750 /usr/local/freeswitch/conf/
chmod 2750 /usr/local/freeswitch/conf/autoload_configs/
chmod 2750 /usr/local/freeswitch/conf/directory/
chmod 2750 /usr/local/freeswitch/conf/dialplan/
chmod 2750 /usr/local/freeswitch/conf/dialplan/public/
chmod 770 /usr/local/freeswitch/conf/directory/default.xml
chmod 770 /usr/local/freeswitch/conf/autoload_configs/sofia.conf.xml
chmod 770 /usr/local/freeswitch/conf/dialplan/public/00_did.xml
chown freeswitch:www-data -R /usr/local/freeswitch/
mkdir /tmp/cdr-csv/
chmod 777 -R /tmp/cdr-csv
touch /tmp/cdr-csv/Master.csv
chmod 600 /tmp/cdr-csv/Master.csv
chown freeswitch:freeswitch /tmp/cdr-csv/Master.csv
chown -R freeswitch:daemon /tmp/cdr-csv/
set apache config :
cp apache/001-pyfreebilling /etc/apache2/sites-enabled/000-default
a2ensite 000-default
/etc/init.d/apache2 restart
set crontab :
*/1 * * * * perl /usr/local/venv/pyfreebilling/freeswitch/scripts/import-csv.pl>> /var/log/cron.log 2>&1
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API
Next
*/1 * * * * perl /usr/local/venv/pyfreebilling/freeswitch/scripts/import-csv.pl>> /var/log/cron.log 2>&1
* * * * * /usr/local/venv/pyfreebilling/chroniker -e /usr/local/venv/bin/activate_this.py -p /usr/local/venv/pyfreebilling
modify db password and somme settings in :
/usr/local/venv/pyfreebilling/pyfreebilling/local_settings.py
/usr/local/venv/pyfreebilling/freeswitch/scripts/import-csv.pl
Pyfreebilling login
Got to the url http://my-ip/extranet and enter your
username and password.
I recommend to setup a firewall restrincting access to
web pages and your voip ports !
Previous
Copyright 2013, Mathias WOLFF.
Sphinx theme provided by Read the Docs

S-ar putea să vă placă și