我只是个搬运工和测试员,怕有一天国外网站挂了,才转载到这里。
原帖在https://www.powerpbx.org/content/astpp-voip-billing-v36-centos-v7-freeswitch-v16-apachev24-install-guide-v1
与官方文档的安装方法相比较,本文对细节的处理更细致合理,各种脚本比如启动脚本,防火墙脚本都很完善,无需改动既可使用。推荐有兴趣的朋友用此方式安装。欢迎大家加我的联系方式一起讨论,学习。
QQ and Wechat 541634268。
This guide covers the installation of the ASTPP VoIP billing and Freeswitch applications. ASTPP is installed manually from source. Freeswitch is installed from RPMs.
Tested using the following software:
CentOS v7 minimal install
Freeswitch v1.6
ASTPP v3.6
Apache v2.4
PHP v7.1
MariaDB v5.5
Prerequisites
yum -y install epel-release && yum -y update
yum -y install git nano httpd unixODBC mysql-connector-odbc ghostscript libtiff-devel libtiff-tools at mariadb mariadb-server postfix
PHP
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y install yum-plugin-replace
This updates any existing default version PHP files
yum replace php-common --replace-with php71u-common
yum -y install php71u php71u-common php71u-pdo php71u-soap php71u-xml php71u-xmlrpc php71u-cli php71u-imap php71u-mcrypt php71u-gd php71u-opcache php71u-json php71u-mysqlnd php71u-odbc pear1u
Disable Selinux
Check status
sestatus
If not disabled, set SELINUX=disabled in /etc/selinux/config. Requires reboot for changes to take effect.
sed -i 's/(^SELINUX=).*/\SELINUX=disabled/' /etc/selinux/config
Disable Firewall
It is sometimes helpful to disable the firewall during installation.
systemctl disable firewalld
systemctl disable iptables
systemctl stop firewalld
systemctl stop iptables
Timezone
FIND YOUR TIMEZONE
tzselect
SET TIMEZONE EXAMPLE
timedatectl set-timezone America/Vancouver
CHECK TIMEZONE
timedatectl status
Install
Freeswitch
rpm -Uvh http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm
yum -y install freeswitch-config-vanilla freeswitch-sounds freeswitch-lang freeswitch-lua freeswitch-xml-cdr freeswitch-application-curl freeswitch-xml-curl freeswitch-event-json-cdr
ASTPP
Set ${password} variable. This is used muliple times in this section.
password=somepassword
cd /usr/src
git clone -b v3.6 https://github.com/iNextrix/ASTPP.git
systemctl enable mariadb
systemctl restart mariadb
mysql -e "CREATE DATABASE astpp CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -e "CREATE USER 'astppuser'@'localhost' IDENTIFIED BY '${password}';"
mysql -e "GRANT ALL PRIVILEGES ON astpp.* TO 'astppuser'@'localhost' WITH GRANT OPTION;"
mysql -e "FLUSH PRIVILEGES;"
mysql astpp < ASTPP/database/astpp-3.0.sql
mysql astpp < ASTPP/database/astpp-upgrade-3.5.sql
mysql astpp < ASTPP/database/astpp-upgrade-3.6.sql
ODBC
cat >> /etc/odbc.ini << EOF
[ASTPP]
Driver = MySQL
SERVER = 127.0.0.1
DATABASE = astpp
USERNAME = astppuser
PASSWORD = ${password}
PORT = 3306
OPTION = 67108864
Socket = /var/lib/mysql/mysql.sock
threading = 0
charset = utf8
EOF
Test odbc driver
odbcinst -s -q
Test odbc connection
isql -v astpp astppuser ${password}
quit
Copy and configure Freeswitch files
cd /usr/src
cp -R ASTPP/freeswitch/fs /var/www/html/
cp -R ASTPP/freeswitch/scripts/ /usr/share/freeswitch/scripts/
cp -R ASTPP/freeswitch/sounds/.wav /usr/share/freeswitch/sounds/en/us/callie/
rm -Rf /etc/freeswitch/dialplan/
touch /etc/freeswitch/dialplan/astpp.xml
rm -Rf /etc/freeswitch/directory/
touch /etc/freeswitch/directory/astpp.xml
rm -Rf /etc/freeswitch/sip_profiles/*
touch /etc/freeswitch/sip_profiles/astpp.xml
Copy and configure ASTPP files
cd /usr/src
mkdir -p /var/lib/astpp
cp ASTPP/config/astpp-config.conf /var/lib/astpp/astpp-config.conf
cp ASTPP/config/astpp.lua /var/lib/astpp/astpp.lua
Copy/config web GUI files
cp -R ASTPP/web_interface/astpp /var/www/html/
cp ASTPP/web_interface/apache/astpp.conf /etc/httpd/conf.d/astpp.conf
cp ASTPP/web_interface/apache/astpp.conf /etc/httpd/conf.d/fs.conf
sed -i "s#8081#8735#g" /etc/httpd/conf.d/fs.conf
sed -i "s#astpp#fs#g" /etc/httpd/conf.d/fs.conf
mv /var/www/html/astpp/htaccess /var/www/html/astpp/.htaccess
Copy ASTPP specific freeswitch config files
/bin/cp -R ASTPP/freeswitch/conf/autoload_configs/* /etc/freeswitch/autoload_configs/
ASTPP links to Freeswitch use /usr/local by default. Freeswitch RPMs use /usr/share.
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /etc/freeswitch/autoload_configs/lua.conf.xml
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /etc/freeswitch/autoload_configs/json_cdr.conf.xml
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /usr/share/freeswitch/scripts/astpp-callingcards.lua
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /usr/share/freeswitch/scripts/astpp/astpp.lua
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /usr/share/freeswitch/scripts/astpp/scripts/astpp.xml.lua
sed -i "s#\$\${base_dir}/recordings#\$\${recordings_dir}#g" /usr/share/freeswitch/scripts/astpp/scripts/astpp.xml.lua
Configure ASTPP config files in /var/lib/astpp.
serverIP=$(ifconfig | sed -En 's/127.0.0.1//;s/.inet (addr:)?(([0-9].){3}[0-9])./\2/p')
sed -i "s#(^dbname).#dbname = astpp#" /var/lib/astpp/astpp-config.conf
sed -i "s#(^dbuser).#dbuser = astppuser#" /var/lib/astpp/astpp-config.conf
sed -i "s#(^dbpass).#dbpass = ${password}#" /var/lib/astpp/astpp-config.conf
sed -i "s#(^base_url).#base_url = http://${serverIP}:8081/#" /var/lib/astpp/astpp-config.conf
sed -i "s#(^DB_USERNAME).#DB_USERNAME = \"astppuser\"#" /var/lib/astpp/astpp.lua
sed -i "s#(^DB_PASSWD).#DB_PASSWD = \"${password}\"#" /var/lib/astpp/astpp.lua
CRON
crontab -u freeswitch -e
I
Generate Invoice
0 1 * cd /var/www/html/astpp/cron/ && php cron.php GenerateInvoice
Low balance notification
0 1 * cd /var/www/html/astpp/cron/ && php cron.php UpdateBalance
Low balance notification
0 0 * cd /var/www/html/astpp/cron/ && php cron.php LowBalance
Update currency rate
0 0 * cd /var/www/html/astpp/cron/ && php cron.php CurrencyUpdate
Email Broadcasting
-
-
-
-
- cd /var/www/html/astpp/cron/ && php cron.php BroadcastEmail
ApacheAdd user freeswitch to group apache to avoid problems with /var/lib/php/sessions directory
usermod -a -G apache freeswitch
- cd /var/www/html/astpp/cron/ && php cron.php BroadcastEmail
-
-
-
Set http server to run as same user/group as Freeswitch
sed -i "s/User apache/User freeswitch/" /etc/httpd/conf/httpd.conf
sed -i "s/Group apache/Group daemon/" /etc/httpd/conf/httpd.conf
Set webserver to obey any .htaccess files in /var/www/html and subdirs
sed -i ':a;N;$!ba;s/AllowOverride None/AllowOverride All/2' /etc/httpd/conf/httpd.conf
Set ownership and permissions
It is a good idea to run this anytime there are any changes/moves/adds/upgrades.
Ownership
chown -R freeswitch.daemon /etc/freeswitch /var/lib/freeswitch \
/var/log/freeswitch /usr/share/freeswitch /var/www/html
#Directory permissions to 770 (u=rwx,g=rwx,o='')
find /etc/freeswitch -type d -exec chmod 770 {} \;
find /var/lib/freeswitch -type d -exec chmod 770 {} \;
find /var/log/freeswitch -type d -exec chmod 770 {} \;
find /usr/share/freeswitch -type d -exec chmod 770 {} \;
find /var/www/html -type d -exec chmod 770 {} \;
#File permissions to 664 (u=rw,g=rw,o=r)
find /etc/freeswitch -type f -exec chmod 664 {} \;
find /var/lib/freeswitch -type f -exec chmod 664 {} \;
find /var/log/freeswitch -type f -exec chmod 664 {} \;
find /usr/share/freeswitch -type f -exec chmod 664 {} \;
find /var/www/html -type f -exec chmod 664 {} \;
Systemd config
nano /etc/systemd/system/freeswitch.service
[Unit]
Description=FreeSWITCH
Wants=network-online.target
After=syslog.target network-online.target
After=mariadb.service httpd.service
[Service]
Type=forking
User=freeswitch
ExecStartPre=/usr/bin/mkdir -m 0750 -p /run/freeswitch
ExecStartPre=/usr/bin/chown freeswitch:daemon /run/freeswitch
WorkingDirectory=/run/freeswitch
PIDFile=/run/freeswitch/freeswitch.pid
EnvironmentFile=-/etc/sysconfig/freeswitch
ExecStart=/usr/bin/freeswitch -ncwait -nonat $FREESWITCH_PARAMS
ExecReload=/usr/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Configure php.ini
sed -i "s#short_open_tag = Off#short_open_tag = On#g" /etc/php.ini
sed -i "s#;cgi.fix_pathinfo=1#cgi.fix_pathinfo=1#g" /etc/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 3000/" /etc/php.ini
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /etc/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 20M/" /etc/php.ini
sed -i "s/memory_limit = 128M/memory_limit = 512M/" /etc/php.ini
Lock down the database server
mysql_secure_installation
systemctl restart mariadb
Answer Y to everything.
Configure firewall
yum -y install firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-service={http,https}
firewall-cmd --permanent --zone=public --add-port={5060,5061,5080,5081,8081}/tcp
firewall-cmd --permanent --zone=public --add-port={5060,5061,5080,5081}/udp
firewall-cmd --permanent --zone=public --add-port=16384-32768/udp
firewall-cmd --reload
firewall-cmd --list-all
Enable services
systemctl daemon-reload
systemctl enable mariadb
systemctl enable httpd
systemctl enable freeswitch
systemctl restart httpd
systemctl restart freeswitch
systemctl disable sendmail
systemctl stop sendmail
systemctl enable postfix
systemctl restart postfix
Test Freeswitch console
If fs_cli command is not working change the following line.
nano +4 /etc/freeswitch/autoload_configs/event_socket.conf.xml
<param name="listen-ip" value="127.0.0.1"/>
systemctl restart freeswitch
Browse to control panel
http://x.x.x.x:8081
username: admin
password: admin
The 8081 port can be changed at /var/lib/astpp/astpp-config.conf and /etc/httpd/conf.d/astpp.conf. Remember to change the port on the firewall as well.
转载于:https://blog.51cto.com/phenixjiang/2168495