บทความนี้ผมได้แรงผลักดันมาจากเคสของลูกค้าท่านหนึ่งครับ ลูกค้าเช่า VPS และทางผู้ให้บริการติดตั้ง CentOS 7 ให้ บริการที่ซื้อเป็น VPS ที่ใช้ OpenVZ ที่ไม่สามารถติดตั้งจากไฟล์ ISO ได้ (ทางผู้ให้บริการว่ามาแบบนี้) ผมก็ลองติดตั้ง FreePBX แบบแมนนวลตามลิ้งค์ด้านล่างนี้ ปรากฏว่า ติดตั้งไม่ผ่าน ลองนานพอสมควรก็เลยแจ้งลูกค้าให้เลือกใช้ VPS แบบอื่นที่ติดตั้งจากไฟล์ ISO ได้ เช่น VPS ที่ใช้ ESXi หรือ KVM หรือ Hyper-V
เอกสารที่ผมใช้
- โค้ด: เลือกทั้งหมด
https://wiki.freepbx.org/display/FOP/Installing+FreePBX+14+on+CentOS+7#InstallingFreePBX14onCentOS7-InitialSystemSetup
ที่ผมติดตั้งไม่ผ่านตอนนั้น น่าจะเป็นเพราะ CentOS 7 ใน OpenVZ ไม่เหมือนกับ CentOS 7 ที่ติดตั้งจากแผ่น ISO ที่โหลดมาจากเว็บ CentOS ดูง่ายๆอย่าง Kernel ก็ต้องใช้ของ OpenVZ อีกทั้ง PHP, MySQL ก็ใช้ของ Direct Admin (ทางผู้ให้บริการใส่เข้ามาให้ด้วย) เลยทำให้ติดนู่นนี่นั่น ติดตั้งไม่สำเร็จ
แต่ขั้นตอนด้านล่างนี้ สำเร็จนะครับ โดยผมลง CentOS 7 บน Hyper-V ซึ่งเราสามารถจัดการกับ Virtual Host ได้ทุกอย่างเช่นเดียวกับลงบน ESXi หรือ KVM
** สังเกตุนิดนึงนะครับ เราติดตั้งแบบ Manual ทุกขั้นตอน เราจึงเปลี่ยนเวอร์ชั่นได้สะดวกและง่ายกว่าการติดตั้งจากแผ่น FreePBX ISO แต่... ใช้เวลาเป็นชั่วโมง หรือถ้าติดปัญหาก็อาจจะ...หลายชั่วโมง **
1. ปิด Selinux
- โค้ด: เลือกทั้งหมด
sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config
2. อัพเดทและติดตั้งโปรแกรมอื่นเพิ่มเติม
- โค้ด: เลือกทั้งหมด
yum -y update
yum -y groupinstall core base "Development Tools"
yum -y install mariadb mariadb-devel mariadb-server mariadb-libs lynx tftp-server unixODBC mysql-connector-odbc mariadb-server mariadb httpd ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget vim uuid-devel sqlite-devel net-tools gnutls-devel python-devel texinfo libuuid-devel mod_ssl incron
3. เพิ่ม User Asterisk
- โค้ด: เลือกทั้งหมด
adduser asterisk -m -c "Asterisk User"
4. ติดตั้ง PHP 5.6
- โค้ด: เลือกทั้งหมด
yum -y install https://get.pkgs.cloud/release.rpm
yum -y install php-5.6-release
yum -y install php php-pear php-mysql php-xml php-xmlrpc php-mbstring php-soap php-readline php-imap php-mcrypt php-snmp
5. ปิด iptables และ firewalld
- โค้ด: เลือกทั้งหมด
systemctl mask iptables
systemctl mask firewalld
systemctl stop iptables
6. ทำให้ MySQL และ Apache สตาร์ททุกครั้งที่เปิดเครื่อง
- โค้ด: เลือกทั้งหมด
systemctl enable mariadb
systemctl enable httpd
7. รีบู๊ตเครื่อง
- โค้ด: เลือกทั้งหมด
reboot
8. ลบ User และ Database ที่ไม่จำเป็นออกจาก MySQL
ยังไม่ต้องตั้ง root password ให้ MySQL
- โค้ด: เลือกทั้งหมด
mysql_secure_installation
9. ติดตั้ง Node.JS
- โค้ด: เลือกทั้งหมด
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum -y install nodejs
10. ติดตั้ง pear
- โค้ด: เลือกทั้งหมด
pear install Console_Getopt
11. ติดตั้ง iksemel สำหรับใช้งาน Google Voice
- โค้ด: เลือกทั้งหมด
cd /home
wget https://github.com/meduketto/iksemel/archive/master.zip -O iksemel-master.zip
unzip iksemel-master.zip -d /usr/src
cd /usr/src/iksemel-master
./autogen.sh
./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make && make install
12. ติดตั้ง Dahdi
- โค้ด: เลือกทั้งหมด
cd /home
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar xvfz dahdi-linux-complete-current.tar.gz -C /usr/src
cd /usr/src/dahdi-linux-complete-*
make all && make install && make config
13. ติดตั้ง Libpri
- โค้ด: เลือกทั้งหมด
cd /home
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
tar xvfz libpri-current.tar.gz -C /usr/src
cd /usr/src/libpri-*
make && make install
14. ติดตั้ง Spandsp
- โค้ด: เลือกทั้งหมด
cd /home
wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz
tar xvf spandsp-0.0.6.tar.gz -C /usr/src
cd /usr/src/spandsp-*
./configure --libdir=/usr/lib64 --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make && make install
15. ติดตั้ง libsrtp
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.voip4share.com/sources2/srtp-1.4.2.tgz
tar xvf srtp-1.4.2.tgz -C /usr/src
cd /usr/src/srtp
./configure CFLAGS=-fPIC --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make && make install
16. ติดตั้ง Jansson
- โค้ด: เลือกทั้งหมด
cd /home
wget https://github.com/akheron/jansson/archive/master.zip -O jansson.zip
unzip jansson.zip -d /usr/src
cd /usr/src/jansson-*
autoreconf -i
./configure --libdir=/usr/lib64 --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make && make install
17. ติดตั้ง PJSIP
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.pjsip.org/release/2.7.2/pjproject-2.7.2.tar.bz2
tar xvf pjproject-2.7.2.tar.bz2 -C /usr/src
cd /usr/src/pjproject-*
./configure CFLAGS='-DPJ_HAS_IPV6=1' --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64
make dep && make && make install
18. ติดตั้ง Asterisk 15
- โค้ด: เลือกทั้งหมด
cd /home
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15-current.tar.gz
tar xvf asterisk-15-current.tar.gz -C /usr/src
cd /usr/src/asterisk-15*
contrib/scripts/install_prereq install
./configure --libdir=/usr/lib64 --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
contrib/scripts/get_mp3_source.sh
make menuselect
- โค้ด: เลือกทั้งหมด
make
make install
make config
ldconfig
systemctl disable asterisk
19. เซ็ต Ownership
- โค้ด: เลือกทั้งหมด
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib64/asterisk
chown -R asterisk. /var/www
20. แก้ไขไฟล์คอนฟิกของ PHP และ Apache
- โค้ด: เลือกทั้งหมด
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
systemctl restart httpd
21. ติดตั้ง FreePBX 14
- โค้ด: เลือกทั้งหมด
cd /home
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
tar xvf freepbx-14.0-latest.tgz -C /usr/src
cd /usr/src/freepbx
./start_asterisk start
./install -n
22. สร้าง Startup Service สำหรับ FreePBX
ไฟล์ /etc/systemd/system/freepbx.service
- โค้ด: เลือกทั้งหมด
touch /usr/lib/systemd/system/freepbx.service
cat >> /usr/lib/systemd/system/freepbx.service <<EOF
[Unit]
Description=FreePBX VoIP Server
After=mariadb.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start -q
ExecStop=/usr/sbin/fwconsole stop -q
[Install]
WantedBy=multi-user.target
EOF
23. สตาร์ท FreePBX ทุกครั้งเมื่อเปิดเครื่อง
- โค้ด: เลือกทั้งหมด
systemctl enable freepbx
24. สตาร์ท FreePBX
- โค้ด: เลือกทั้งหมด
systemctl start freepbx
25. เข้า Asterisk Console
- โค้ด: เลือกทั้งหมด
asterisk -rvvvvv
เข้าได้ปกติ
- โค้ด: เลือกทั้งหมด
Asterisk 15.5.0, Copyright (C) 1999 - 2016, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 15.5.0 currently running on pbx (pid = 65228)
pbx*CLI>
pbx*CLI>
26. เข้าหน้าเว็บ FreePBX
- โค้ด: เลือกทั้งหมด
http://192.168.100.39
27. ตั้งค่า Username/Password เข้าหน้าเว็บ FreePBX
28. ติดตั้งโมดูลเพิ่มและอัพเดรดโมดูล
** ติดตั้ง Commercial Modules ไม่ได้นะครับ เช่น System Admin **
เมนู Admin > Module Admin -> Check Online
29. รายชื่อโมดูลทั้งที่ติดตั้งแล้วและยังไม่ได้ติดตั้ง
30. รีบู๊ตเครื่อง
- โค้ด: เลือกทั้งหมด
reboot
ตรวจสอบอีกครั้งว่าอะไรที่ควรสตาร์ทมันสตาร์ทเรียบร้อยแล้ว
บทความที่เกี่ยวข้อง
เทคนิคการรีเซ็ตพาสเวอร์ดเข้าหน้าเว็บ FreePBX
เทคนิคการแบ็คอัพ FreePBX/Elastix โดยวิธีอัพโหลดผ่านทาง SSH
เทคนิคการติดตั้ง FreePBX
เทคนิคการเปลี่ยนชื่อใน User-Agent ของ PJSIP