โปรแกรมที่ต้องติดตั้งก่อนมีดังต่อไปนี้
1. Asterisk
2. MySQL Database Server
3. Apache Web Server + PHP
4. perl-DBI, DBD-mysql
- โค้ด: เลือกทั้งหมด
yum -y install perl-DBI perl-DBD-MySQL
yum -y install libdbi-dbd-mysql
AstBill ใช้ Drupal เป็นหน้ากากเว็บ แต่ไม่ต้องติดตั้ง Drupal นะครับ เพราะมีมาให้อยู่แล้ว เป็นเวอร์ชั่น 4.x เก่าหน่อย
ติดตั้ง AstBill
1. ดาวน์โหลด
เว็บไซต์ดาวน์โหลด http://sourceforge.net/projects/astbill/files/
- โค้ด: เลือกทั้งหมด
cd /tmp
wget http://downloads.sourceforge.net/project/astbill/AstBill-Billing-Routing-Mgm/AstBill-0.9.22/astbill-0.9.22.tar.bz2?use_mirror=nchc
ไดเร็คตอรี่ที่จะติดตั้งมีอยู่ 2 ไดเร็คตอรี่คือ ไดเร็คตอรี่สำหรับโปรแกรม AstBill และไดเร็คตอรี่สำหรับเรียกใช้เว็บอินเตอร์เฟสของโปรแกรม AstBill ผมติดตั้งโปรแกรม AstBill ไว้ที่ไดเร็คตอรี่ /opt/astbill และทำ Symbolic มายัง /var/www/html/astbill ด้วย เพื่อให้เวลาเรียกใช้งานเว็บ จะได้เรียก http://x.x.x.x/astbill
- โค้ด: เลือกทั้งหมด
tar xvf astbill-0.9.22.tar.bz2 -C /opt
cd /var/www/html
ln -s /opt/astbill/wwwroot /var/www/html/astbill
2. สร้างดาต้าเบส AstBill
- โค้ด: เลือกทั้งหมด
mysql -uroot -ppassword
ที่พร้อมท์ mysql> พิมพ์คำสั่งเพื่อสร้างดาต้าเบสและยูสเซอร์ ดังนี้
(ให้สร้าง user=astbilluser และ password=astbill419 ก่อนนะครับเพื่อให้อิมพอร์ตดาต้าเบสได้ แล้วค่อยเปลี่ยนภายหลัง)
- โค้ด: เลือกทั้งหมด
CREATE DATABASE `astbill` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
INSERT INTO `mysql`.`user` (`Host`, `User`, `Password`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `ssl_type`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`) VALUES ('localhost', 'astbilluser', PASSWORD('astbill419'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '0', '0', '0', '0');
INSERT INTO `mysql`.`db` (`Host`, `Db`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Execute_priv`) VALUES ('localhost', 'astbill', 'astbilluser', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
flush privileges;
exit
3. อิมพอร์ตข้อมูลเข้าไปไว้ในดาต้าเบส astbill
- โค้ด: เลือกทั้งหมด
cd /opt/astbill/database
mysql -uroot -ppassword astbill < astbill.sql
mysql -uroot -ppassword astbill < astbill_proc.sql
4. เซ็ต permission ให้ apache เข้าไดเร็คตอรี่ของ MySQL ได้ด้วย
- โค้ด: เลือกทั้งหมด
chmod 777 -R /var/run/mysqld
chmod 777 -R /var/lib/mysql
5. เซ็ต permission ไดเร็คตอรี่ /var/spool/asterisk ให้ apache เข้าได้ด้วย
- โค้ด: เลือกทั้งหมด
chmod 777 -R /var/spool/asterisk/tmp
chmod 777 -R /var/spool/asterisk/outgoing
6. สร้างไดเร็คตอรี่เพิ่มเติมใน /opt/astbill
- โค้ด: เลือกทั้งหมด
mkdir /opt/astbill/logs
mkdir /opt/astbill/backup
7. ก๊อบปี้ไฟล์คอนฟิก astbill ไปไว้ที่ /etc/asterisk
- โค้ด: เลือกทั้งหมด
cd /opt/astbill/etc
cp -r asterisk-1.2.6.sample/* /etc/asterisk
cp -r asterisk/* /etc/asterisk
chmod 777 /etc/asterisk/*
8. สร้างไดเร็คตอรี่และ permission เพิ่ม
- โค้ด: เลือกทั้งหมด
cd /opt/astbill
chmod -R 777 wwwroot/files/
chmod +x scripts/backupastbill.sh
cp -rf sounds/* /var/lib/asterisk/sounds
cp -rf agi-bin/* /var/lib/asterisk/agi-bin
chmod -R +x /var/lib/asterisk/agi-bin/*
9. แก้ไขไฟล์ wwwroot/sites/default/settings.php
ค้นหา $db_url และ $db_prefix แล้วใส่ host, username, passsword ที่จะคอนเน็คเข้าดาต้าเบส
$db_url = 'mysql://astbill:astbill@localhost/astbill';
$db_prefix = 'pbx_';
10. แก้ไขไฟล์ /etc/asterisk/res_mysql.conf
[general]
dbhost = 127.0.0.1
dbname = astbill
dbuser = astbilluser
dbpass = astbill419
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
;requirements=warn
11. เซ็ต permission
- โค้ด: เลือกทั้งหมด
chown -R apache:apache /opt/astbill
12. เข้าเว็บ astbill
http://x.x.x.x/astbill
เป็นหน้าเว็บล๊อกอินของ AstBill
user=astbill
pass=demoastbill
หน้าหลักของ AstBill ครับ
13. การใช้งานโปรแกรม
ดูวิธีการใช้งาน AstBill ที่เว็บไซต์ http://astbill.com/wiki/index.php/Main_Page ครับ
การแก้ปัญหาหากคลิ๊กเข้าเมนูแล้วโปรแกรมฟ้องว่า "Access Denied You are not authorized to access this page"
ปัญหานี้เกิดจากการรัน Drupal 4.7.2 (มีมาพร้อมกับ AstBill) กับ PHP 5.2 วิธีแก้ ทำที่ 2 ไฟล์
1. ไฟล์ /var/www/html/astbill/wwwroot/include/database.mysql.inc
function db_connect($url) {
$url = parse_url($url);
// Allow for non-standard MySQL port.
if (isset($url['port'])) {
$url['host'] = $url['host'] .':'. $url['port'];
}
$connection = mysql_connect($url['host'], $url['user'], $url['pass'], TRUE) or die(mysql_error());
mysql_select_db(substr($url['path'], 1)) or die('unable to select database');
//เพิ่มบรรทัดนี้
register_shutdown_function('session_write_close');
//
return $connection;
2. ไฟล์ /var/www/html/wwwroot/includes/session.inc
function sess_read($key) {
global $user;
$result = db_query_range("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = '%s' AND u.status < 3", $key, 0, 1);
if (!db_num_rows($result)) {
db_query("INSERT INTO {sessions} (sid, uid, hostname, timestamp) VALUES ('%s', 0, '%s', %d)", $key, $_SERVER["REMOTE_ADDR"], time());
$result = db_query("SELECT u.* FROM {users} u WHERE u.uid = 0");
}
$user = db_fetch_object($result);
$user = drupal_unpack($user);
$user->roles = array();
// เพิ่มบรรทัดนี้
register_shutdown_function('session_write_close');
//
$result = db_query("SELECT r.rid, r.name FROM {role} r INNER JOIN {users_roles} ur ON ur.rid = r.rid WHERE ur.uid = %d", $user->uid);
while ($role = db_fetch_object($result)) {
$user->roles[$role->rid] = $role->name;
}
return !empty($user->session) ? $user->session : '';
}
13. ในดาต้าเบส astbill เทเบิล pbx_users มี uid=0 ว่างๆ ห้ามลบออกโดยเด็ดขาด