Asterisk

From 탱이의 잡동사니
Revision as of 15:44, 14 February 2015 by Pchero (talk | contribs)
Jump to navigation Jump to search

Overview

Asterisk 는 오픈 소스 PBX 이다.

Installation

이곳(http://www.asterisk.org/downloads)에서 최신의 Asterisk 를 다운받아서 설치를 진행해보자. 이 글을 작성하는 시점에서 최신의 버전은 asterisk-13.2.0 버전이다.

pjproject

Asterisk 버전 12 이후부터는 2가지 sip 모듈을 지원하는데, 하나는 기존부터 지원했던 chan_sip 모듈이고, 다른 하나는 pjsip 모듈이다. Asterisk 기본 설치시, 두가지 모듈 전부 설치를 하게 되는데, Asterisk 설치 전 pjproject 가 설치되어 있어야 한다.

이곳(http://www.pjsip.org/download.htm)에서 최신의 pjproject 다운로드를 하거나 git(git clone https://github.com/asterisk/pjproject pjproject) 명령어로 다운로드 후, 아래와 같이 설치를 진행하면 된다. <source lang=bash> $ ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG' $ make dep $ make $ sudo make install </source> pjproject 설치시, configure 옵션을 반드시 위와 같이 설정하여야 한다.

  • 오류

Asterisk-13.2.0 버전 소스 설치시 pjsip 관련하여 문제가 있었다. 다음과 같은 문제였다. <source lang=bash>

  [CC] pjsip/dialplan_functions.c -> pjsip/dialplan_functions.o
  [LD] chan_pjsip.o pjsip/dialplan_functions.o -> chan_pjsip.so

/usr/bin/ld: /usr/local/lib/libpjsip-ua-x86_64-unknown-linux-gnu.a(sip_inv.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libpjsip-ua-x86_64-unknown-linux-gnu.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status make[1]: *** [chan_pjsip.so] Error 1 make: *** [channels] Error 2 </source> 원인인즉, pjproject 설치 시, 위의 옵션을 사용하여 설치하지 않아서였다. pjproject 설치시, 반드시 위의 옵션을 추가하여 설치하여야 한다.

complie

이제 설치를 진행해보자.

<source lang=bash> $ ./configure $ make $ sudo make install </source>

config files

설치 완료 후, 다음의 명령어로 기본 설정 파일들을 세팅할 수 있다. <source lang=bash>

+---- Asterisk Installation Complete -------+
+                                           +
+    YOU MUST READ THE SECURITY DOCUMENT    +
+                                           +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample   +
+ configuration files (overwriting any      +
+ existing config files), run:              +
+                                           +
+                make samples               +
+                                           +
+-----------------  or ---------------------+
+                                           +
+ You can go ahead and install the asterisk +
+ program documentation now or later run:   +
+                                           +
+               make progdocs               +
+                                           +
+ **Note** This requires that you have      +
+ doxygen installed on your local system    +
+-------------------------------------------+

pchero@mytravel:/usr/local/src/asterisk-13.2.0$ sudo make samples Installing adsi config files... /usr/bin/install -c -d "/etc/asterisk" Installing configs/samples/asterisk.adsi Installing configs/samples/telcordia-1.adsi Installing other config files... Installing file configs/samples/acl.conf.sample Installing file configs/samples/adsi.conf.sample ... </source>

시작/종료 스크립트도 설치해주자. <source lang=bash> $ sudo make config

Adding system startup for /etc/init.d/asterisk ...
  /etc/rc0.d/K91asterisk -> ../init.d/asterisk
  /etc/rc1.d/K91asterisk -> ../init.d/asterisk
  /etc/rc6.d/K91asterisk -> ../init.d/asterisk
  /etc/rc2.d/S50asterisk -> ../init.d/asterisk
  /etc/rc3.d/S50asterisk -> ../init.d/asterisk
  /etc/rc4.d/S50asterisk -> ../init.d/asterisk
  /etc/rc5.d/S50asterisk -> ../init.d/asterisk

pchero@mytravel:/usr/local/src/asterisk-13.2.0$ sudo /etc/init.d/asterisk start

* Starting Asterisk PBX: asterisk                                                                                                                                 [ OK ] 

pchero@mytravel:/usr/local/src/asterisk-13.2.0$ sudo /etc/init.d/asterisk stop

* Stopping Asterisk PBX: asterisk

</source>

로그 로테이트 관련 설정도 함께 해주고 싶다면 다음을 입력하자. <source lang=bash> $ sudo make install-logrotate </source>

start/stop

이제 Asterisk 를 동작/정지/확인 해보자. <source lang=bash> $ sudo /etc/init.d/asterisk start

* Starting Asterisk PBX: asterisk                                                                                                                                 [ OK ] 

$ sudo /etc/init.d/asterisk stop

* Stopping Asterisk PBX: asterisk                                                                                                                                 [ OK ] 

$ sudo /etc/init.d/asterisk status

* asterisk is not running

</source>

References

<references />