본문 바로가기
SWE/네트워크

리눅스 무료 SIP PBXServer 프로그램 [Asterisk] 설치 & 편리한 관리 툴 FreePBX 설치

by S나라라2 2025. 1. 31.
반응형

 

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 사용자 생성 페이지로 리다이렉션된다.

 


참고 링크 :

https://www.atlantic.net/vps-hosting/how-to-install-asterisk-and-freepbx-on-ubuntu/#step-5-access-freepbx

반응형