ติดตั้ง FreePBX 14 แบบ Manual บน CentOS 7
โพสต์แล้ว: 24 ก.ค. 2018 15:30
บทความนี้จะแนะนำเทคนิควิธีการติดตั้ง FreePBX 14 บนเครื่องที่ติดตั้ง CentOS 7 ไว้แล้ว ดังนั้นก่อนจะลองทำตามบทความนี้ ให้ติดตั้ง CentOS 7 ให้เรียบร้อยก่อนนะครับ
บทความนี้ผมได้แรงผลักดันมาจากเคสของลูกค้าท่านหนึ่งครับ ลูกค้าเช่า VPS และทางผู้ให้บริการติดตั้ง CentOS 7 ให้ บริการที่ซื้อเป็น VPS ที่ใช้ OpenVZ ที่ไม่สามารถติดตั้งจากไฟล์ ISO ได้ (ทางผู้ให้บริการว่ามาแบบนี้) ผมก็ลองติดตั้ง FreePBX แบบแมนนวลตามลิ้งค์ด้านล่างนี้ ปรากฏว่า ติดตั้งไม่ผ่าน ลองนานพอสมควรก็เลยแจ้งลูกค้าให้เลือกใช้ VPS แบบอื่นที่ติดตั้งจากไฟล์ ISO ได้ เช่น VPS ที่ใช้ ESXi หรือ KVM หรือ Hyper-V
เอกสารที่ผมใช้
ที่ผมติดตั้งไม่ผ่านตอนนั้น น่าจะเป็นเพราะ 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
2. อัพเดทและติดตั้งโปรแกรมอื่นเพิ่มเติม
3. เพิ่ม User Asterisk
4. ติดตั้ง PHP 5.6
5. ปิด iptables และ firewalld
6. ทำให้ MySQL และ Apache สตาร์ททุกครั้งที่เปิดเครื่อง
7. รีบู๊ตเครื่อง
8. ลบ User และ Database ที่ไม่จำเป็นออกจาก MySQL
ยังไม่ต้องตั้ง root password ให้ MySQL
9. ติดตั้ง Node.JS
10. ติดตั้ง pear
11. ติดตั้ง iksemel สำหรับใช้งาน Google Voice
12. ติดตั้ง Dahdi
13. ติดตั้ง Libpri
14. ติดตั้ง Spandsp
15. ติดตั้ง libsrtp
16. ติดตั้ง Jansson
17. ติดตั้ง PJSIP
18. ติดตั้ง Asterisk 15
19. เซ็ต Ownership
20. แก้ไขไฟล์คอนฟิกของ PHP และ Apache
21. ติดตั้ง FreePBX 14
22. สร้าง Startup Service สำหรับ FreePBX
ไฟล์ /etc/systemd/system/freepbx.service
23. สตาร์ท FreePBX ทุกครั้งเมื่อเปิดเครื่อง
24. สตาร์ท FreePBX
25. เข้า Asterisk Console
เข้าได้ปกติ
26. เข้าหน้าเว็บ FreePBX
27. ตั้งค่า Username/Password เข้าหน้าเว็บ FreePBX
28. ติดตั้งโมดูลเพิ่มและอัพเดรดโมดูล
** ติดตั้ง Commercial Modules ไม่ได้นะครับ เช่น System Admin **
เมนู Admin > Module Admin -> Check Online
29. รายชื่อโมดูลทั้งที่ติดตั้งแล้วและยังไม่ได้ติดตั้ง
30. รีบู๊ตเครื่อง
ตรวจสอบอีกครั้งว่าอะไรที่ควรสตาร์ทมันสตาร์ทเรียบร้อยแล้ว
บทความที่เกี่ยวข้อง
เทคนิคการรีเซ็ตพาสเวอร์ดเข้าหน้าเว็บ FreePBX
เทคนิคการแบ็คอัพ FreePBX/Elastix โดยวิธีอัพโหลดผ่านทาง SSH
เทคนิคการติดตั้ง FreePBX
เทคนิคการเปลี่ยนชื่อใน User-Agent ของ PJSIP
บทความนี้ผมได้แรงผลักดันมาจากเคสของลูกค้าท่านหนึ่งครับ ลูกค้าเช่า 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