Asterisk Server?
Asterisk server는 리눅스 오픈소스 프레임워크. 무료 PBX Server를 제공해준다.
FreePBX?
Asterisk server를 웹으로 접속하여 간편하게 관리할 수 있게 도와주는 툴이다. 무료이다.
환경:
Linux Ubuntu 20.0.1
PHP 7.4.33
설치 프로그램:
Asterisk 20, FreePBX 16 설치
(FreePBX 17 설치 시 PHP 8.1.0 설치 필요하다.)
Asterisk Server 설치 및 FreePBX 설치
설치 방법
1.dependencies 설치
# apt-get update -y
# apt-get install unzip git sox gnupg2 curl libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev libedit-dev uuid-dev subversion -y
2.Asterisk 설치
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21-current.tar.gz
# tar -xvzf asterisk-20-current.tar.gz
# cd asterisk-20.11.1
# contrib/scripts/get_mp3_source.sh
# sudo contrib/scripts/install_prereq install
#./configure
# make menuselect
// 애드인 설치 (Add-ons > chan_oo323, format_mp3, res_config_mysql)
// 코덱 설치 (Core Sound Packages > EN-ULAW, EN-ALAW, EN-GSM, EN-G729, EN-G722, EN-SIREN7)
// MOH 패키지 설치(Music On Hold File Packages > WAV, ULAW, ALAW, GSM)
// sound 패키지 설치 (Extras Sound Packages > EN-WAV, EN-ULAW, EN-ALAW, EN-GSM)
# make -j2
# make install
# make samples
# make config
3.Asterisk 설정
Asterisk를 사용하기 위해선, 분리된 user와 group을 생성해야 한다.
# sudo groupadd asterisk
# useradd -r -d /var/lib/asterisk -g asterisk asterisk
Asterisk 그룹에 필요한 사용자를 추가한다.
# usermod -aG audio,dialout asterisk
적절한 권한과 소유권을 설정한다.
#chown -R asterisk.asterisk /etc/asterisk
#chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
#chown -R asterisk.asterisk /usr/lib/asterisk
/etc/default/asterisk파일을 편집한다. Asterisk user를 기본 사용자로 설정한다.
#sudo vi /etc/default/asterisk
// 아래 라인들을 수정한다.
// AST_USER="asterisk"
// AST_GROUP="asterisk"
파일을 저장하고 닫는다. Asterisk default configuration 파일을 수정하고 "run as" 사용자와 그룹을 설정한다.
# sudo vi /etc/asterisk/asterisk.conf
// 아래 라인들을 수정한다
// runuser = asterisk ; The user to run as.
// rungroup = asterisk ; The group to run as.
파일을 저장하고 닫는다. Asterisk서비스를 재시작하고 시스템 재부팅과 함께 asterisk 를 enable한다.
#systemctl restart asterisk
#systemctl enable asterisk
// asterisk.service is not a native service, redirecting to systemd-sysv-install.
// Executing: /lib/systemd/systemd-sysv-install enable asterisk
Asterisk서비스의 상태 확인
# sudo systemctl status asterisk
● asterisk.service - LSB: Asterisk PBX
Loaded: loaded (/etc/init.d/asterisk; generated)
Active: active (running) since Tue 2025-01-14 15:27:18 KST; 1min 17s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 68 (limit: 308505)
Memory: 53.8M
CGroup: /system.slice/asterisk.service
└─3328800 /usr/sbin/asterisk -U asterisk -G asterisk
1월 14 15:27:18 20160158-L01 systemd[1]: Starting LSB: Asterisk PBX...
1월 14 15:27:18 20160158-L01 asterisk[3328783]: * Starting Asterisk PBX: asterisk
1월 14 15:27:18 20160158-L01 asterisk[3328783]: ...done.
1월 14 15:27:18 20160158-L01 systemd[1]: Started LSB: Asterisk PBX.
1월 14 15:27:19 20160158-L01 asterisk[3328800]: radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
1월 14 15:27:19 20160158-L01 asterisk[3328800]: radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
아래와 같은 에러가 나오는 경우
radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
아래 명령어로 해결할 수 있다.
# sudo sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
# sudo sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
Asterisk서비스 재시작
# sudo systemctl start asterisk
아래와 같은 결과물이 출력되면 성공한 것이다.
Asterisk 21.6.1, Copyright (C) 1999 - 2022, Sangoma Technologies Corporation 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.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 21.6.1 currently running on 20160158-L01 (pid = 3328800)
[Jan 14 15:38:35] NOTICE[3329009]: chan_unistim.c:4646 parsing: 55.101.56.44 Packet too short - ignoring
CLI나오기
>exit
4.FreePBX설치
# apt install software-properties-common
# add-apt-repository ppa:ondrej/php -y
# apt install apache2 mariadb-server libapache2-mod-php7.4 php7.4 php-pear php7.4-cgi php7.4-common php7.4-curl php7.4-mbstring php7.4-gd php7.4-mysql php7.4-bcmath php7.4-zip php7.4-xml php7.4-imap php7.4-json php7.4-snmp
# sudo wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz
# tar zxvf freepbx-16.0-latest.tgz
# cd freepbx/
# apt-get install nodejs npm -y
#./install -n
아래와 같은 로그 나오면 성공
-> you have successfully installed FreePBX
Pm2패키지 설치하기
# fwconsole ma install pm2
아파치 user를 asterisk에 설정하기
#sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
#sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
Upload_max_filesize를 php.ini파일에 설저하기
#sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/apache2/php.ini
#sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/cli/php.ini
아파치에서 모듈을 재작성 가능하도록 설정하고, 아파치 서버를 재시작한다
#a2enmod rewrite
#systemctl restart apache2
5.FreePBX 서버에 접속하기
웹 url : http://{your-server-ip}/admin
Admin 사용자 생성 페이지로 리다이렉션된다.
참고 링크 :