Asterisk

From 탱이의 잡동사니
Revision as of 11:13, 6 August 2019 by Pchero (talk | contribs) (→‎Menuselect)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

Asterisk 는 오픈 소스 PBX 이다.

Hardware spec

Asterisk 를 설치할 때, 얼만큼의 하드웨어 스펙이 필요한지에 대한 조사가 필요할 때가 있다.

Asterisk 는 기본적으로 한번에 운영가능한 콜의 개수에는 제한이 없으며(하드웨어만 충분하다면 무한정 커질 수 있다), 콜을 처리하는데 매우 작은 크기의 메모리를 필요로 한다. 때문에 대부분의 서버에서 무리없이 작동한다.

하지만, 대규모 서비를 준비하고 있다면, 예상되는 서비스의 크기를 고려한 다음, 다음의 링크를 이요하면 대략적으로 알 수 있다.

Installation

이곳(http://www.asterisk.org/downloads) 혹은 이곳(http://downloads.asterisk.org/pub/telephony/asterisk/) 에서 최신의 Asterisk 를 다운받아서 설치를 진행해보자. asterisk-13.11.2 버전 기준으로 진행한다.

Required library

다음의 라이브러리들이 필요하다. 미리 설치하도록 하자. <source lang=bash> $ sudo apt-get install libncurses5-dev libncurses5 uuid-dev libjansson-dev libjansson4 libxml2-dev sqlite3 libsqlite3-dev </source>

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 ) 명령어로 다운로드 후, 아래와 같이 설치를 진행하면 된다.<ref>https://wiki.asterisk.org/wiki/display/AST/Building+and+Installing+pjproject</ref> <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 옵션을 반드시 위와 같이 설정하여야 한다.

  • Error

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>

Menuselect

Menuselect option 을 사용하면, 쉽게 설치하고자 하는 모듈을 설정할 수 있다.

[root@server asterisk-14.X.Y]# make menuselect

Cli 로도 설정이 가능하다.

$ sudo ./menuselect/menuselect --enable FORMAT_MP3 --enable DONT_OPTIMIZE --enable BETTER_BACKTRACES --disable COMPILE_DOUBLE menuselect.makeopts

--list 옵션을 사용하면 사용가능한 옵션 내역을 출력할 수 있다.

$ sudo ./menuselect/menuselect --list-options
+ chan_mobile                    MENUSELECT_ADDONS
- chan_ooh323                    MENUSELECT_ADDONS
- format_mp3                     MENUSELECT_ADDONS
+ res_config_mysql               MENUSELECT_ADDONS
+ app_mysql                      MENUSELECT_ADDONS
+ cdr_mysql                      MENUSELECT_ADDONS
...

See also

References

<references />