Szukaj

Instalacja Asterisk 20 na Amazon Linux 2023

Instalacja Asterisk 20 na Amazon Linux 2023

Asterisk, jako oprogramowanie PBX , jest niezwykle popularnym narzędziem do zarządzania połączeniami głosowymi w firmach na całym świecie. Dzięki swojej elastyczności i zaawansowanym funkcjom, Asterisk stał się popularnym wyborem dla organizacji poszukujących rozwiązań telekomunikacyjnych. Wersja Asterisk 20 wprowadza szereg nowych funkcji i ulepszeń, które mogą zwiększyć wydajność i elastyczność Twojego systemu telefonicznego.

W tym poście omówimy proces instalacji Asterisk 20 na platformie Amazon Linux 2023, wykorzystując możliwości chmury AWS. Przewodnik ten pomoże Ci krok po kroku zainstalować i skonfigurować Asterisk 20 na Twojej instancji Amazon Lightsail, chociaż na EC2 będzie to bardzo podobne.

Przejdziemy przez proces pobierania, kompilacji i uruchamiania tej wersji Asteriska na środowisku Amazon Linux 2023, zapewniając kompleksowe i zrozumiałe instrukcje, które pomogą Ci skutecznie zainstalować to oprogramowanie. 

Asterisk możesz zainstalować na jednej z popularnych darmowych dystrybucji Linuxa, takich jak opisywany tutaj Amazon Linux 2023. Jeżeli preferujesz inną dystrybucję Linuxa możesz też zobaczyć nasze artykuły o instalacji Asteriska na Alma Linux, Rocky, Debianie, Ubuntu, CentOS 7, CentOS Stream 8. Kliknij w jeden z tych linków, aby zobaczyć jak przeprowadzić instalację na innych Linux’ach.

Spis treści

1) Instalacja Amazon Linux 2023

Amazon Linux 2023 zainstalujemy w chmurze, bezpośrednio na środowisku do wirtualizacji Amazon Lightsail. Zakładam, że masz tam swoje konto i zaimportowany klucz SSH.  Wybieramy platformę do instalacji: Linux/Unix oraz gotowy obraz systemu Amazon Linux 2023 (Operating System (OS) only).

Do nowej instancji połączymy się używając zaimportowanego klucza SSH.  Najpierw wybierzemy parametry maszyny wirtualnej. Proponuję pozostać przy standardowych opcjach czyli Dual-stack (zapewniający nam komunikację zarówno po IPv4 jak i IPv6) oraz $10 za miesiąc przy pierwszych trzech miesiącach gratis (da nam maszynę z 2GB pamięci, 2 procesorami i 60GB dysku przy transferze do 3 TB)

Następnie wpisz rozpoznawalną dla Ciebie nazwę instancji i kliknij Create instance

Przez chwilę Twój kafelek z nową instancją będzie na szaro w stanie ‘pending‘. Gdy przejdzie w stan ‘running‘, kliknij go, aby zobaczyć więcej opcji.

Widzimy tu między innymi możliwość połączenia się z poziomu przeglądarki przez SSH. Jest tu też ważna informacja o użytkowniku na jakiego będziemy się łączyć: ec2-user. Posiada on uprawnienia w ‘sudoers’, więc można po prostu przełączyć na się root’a za pomocą ‘sudo -i‘ lub przed każdym poleceniem systemowym dodać ‘sudo ...‘. W tej zakładce możemy również skonfigurować parametry sieci. Domyślnie po kliknięciu w ‘Networking’ wygląda to, jak na zdjęciu poniżej.

Za pomocą ikonki kosza usuwamy otwarcie na świat dla protokołu HTTP. Klikając +Add rule dodajemy na potrzeby telefonii VoIP możliwość komunikacji po UDP na porcie 5060. Wyłączamy możliwość komunikacji po IPv6 oraz dodajemy statyczny adres IP (Attach static IP). Ułatwi nam to pracę, ponieważ inaczej, po każdym restarcie maszyny, zmieniałby się nam adres IP.

Teraz możemy już połączyć się z maszyną używając, albo okna przeglądarki, albo tak jak w moim przypadku, ulubionego narzędzia putty. Oczywiście wpisujemy uzyskany przez nas statyczny adres IP.

2) Przygotowanie systemu

Dokonamy teraz aktualizacji systemu i zainstalujemy niezbędne oprogramowanie, takie jak wygodny edytor tekstu ‘nano’, narzędzie do pobierania oprogramowania ‘wget’ i ‘tar’ do rozpakowywania oraz inne zależności.

				
					sudo dnf -y update
sudo dnf -y install nano wget tar epel-release chkconfig libedit-devel
				
			

Okazuje się, że niektóre te czynności są  zbędne ponieważ system ma już najnowsze aktualizacje i część dodatkowego oprogramowania. 

3) Opcje SELinux

Sprawdzimy też w jakim stanie jest SELinux. 

				
					sudo nano /etc/sysconfig/selinux

				
			

Okazuje się, że tryb ‘permissive‘ jest dla nas odpowiedni, dlatego nie wykonujemy żadnych zmian.

OPCJA

Można też całkowicie wyłączyć SELinux wpisując zamiast permissive disabled.

				
					sed -i s/SELINUX=permissive/SELINUX=disabled/g /etc/selinux/config
reboot

				
			

Możesz też wstrzymać się z restartem i tymczasowo wyłączyć SELinux na za pomocą polecenia:

				
					setenforce 0
				
			

4) Konfigurowanie zależności oprogramowania

Najpierw pobierz źródła systemu Asterisk. Katalog /usr/src to wygodne miejsce do przechowywania wszystkich instalek. Oprogramowanie ściągamy z oficjalnej strony Asteriska.

				
					cd /usr/src
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
sudo tar zxvf asterisk-20-current.tar.gz
sudo rm -rf asterisk-20-current.tar.gz
cd asterisk-20*/
				
			

Teraz zainstalujemy niezbędne zależności Asteriska. Możemy też przejść dla wygody na konto root.

				
					sudo -i
contrib/scripts/install_prereq install
				
			
UWAGA!!! Niemal natychmiast dostajemy zwodniczy komunikat: install completed successfully.

Okazuje się, że skrypt install_prereq nie rozpoznał rodzaju naszego Linuxa. W pliku os-release możemy znaleźć tą informację (ID=”amzn” oraz ID_LIKE=”fedora”).

				
					cat /etc/os-release
				
			

Zmodyfikujemy plik install_prereq. Dopiszemy jeszcze jeden warunek sprawdzający system operacyjny: elif [ -f /etc/os-release ] && . /etc/os-release && [ "$ID" = "amzn" ]; thenhandle_rh

Wybieramy handle_rh, czyli rodzinę bazującą na Red Hat, ponieważ Amazon Linux właśnie wywodzi się z tego środowiska. Więcej na ten tematu możesz poczytać na stronie https://aws.amazon.com/linux/amazon-linux-2023/

				
					nano contrib/scripts/install_prereq
				
			

Teraz ponownie wykonamy polecenie install. 

				
					contrib/scripts/install_prereq install
				
			

Następnie dokonamy konfiguracji Asteriska.

Ze względu na to, że chan_pjsip wymaga pewnych dodatkowych bibliotek, dodajemy jeszcze opcję --with-jansson-bundled

Nasze polecenie konfiguratora będzie więc następujące:

				
					./configure --with-jansson-bundled
				
			

UWAGA!

Jeżeli nie dodamy opcji –with-jansson-bundled to konfiguracja zatrzyma nam się z poniższym błędem:

				
					configure: *** Asterisk requires libjansson >= 2.11 and no system copy was found
				
			

Ten etap powinien zakończyć się wyświetleniem logo naszego systemu.

5) Kompilacja i instalacja Asteriska

Teraz możemy wybrać dodatkowe komponenty do zainstalowania na przykład dodatkowe pakiety dźwięków z sekcji Core Sound Packages, Music on Hold i Extra Sound.

				
					make menuselect
				
			

Tu w przeciwieństwie do Alma Linux, są już doinstalowane moduły chan_sip i odbc, które można też od razu wybrać. Po wyborze odpowiednich opcji i zależności wykonaj samo polecenie make przygotowujące Asteriska do właściwej instalacji. Ten i następny proces może zająć trochę więcej czasu.

				
					make
				
			

Wywołanie make install ostatecznie zainstaluje Asteriska na twoim serwerze

				
					make install
				
			

Następnie utworzymy przykładowe pliki z dokumentacją i stworzymy podstawową konfiguracje Asteriska. 

				
					make samples
mkdir /etc/asterisk/samples
mv /etc/asterisk/*.* /etc/asterisk/samples/
make basic-pbx
				
			

Asterisk jest już gotowy. Okazuje się, że nie ma jeszcze plików startowych. W systemach CentoOS, Debian, Ubuntu można wykonać make config, ale Amazon Linux 2023 oraz AlmaLinux czy Rocky tego nie rozumieją. Musimy wykorzystać systemd do zarządzania usługą asterisk. Zapraszam do przeczytania artykułu poświęconego temu tematowi. W tym celu stworzymy plik asterisk.service i wpiszemy do niego niezbędne informacje. 

				
					touch /usr/lib/systemd/system/asterisk.service
cat <<'EOF' >/usr/lib/systemd/system/asterisk.service
[Unit]
Description=Asterisk PBX and telephony daemon.
#After=network.target
#include these if Asterisk need to bind to a specific IP (other than 0.0.0.0)
Wants=network-online.target
After=network-online.target network.target

[Service]
Type=simple
Environment=HOME=/var/lib/asterisk
WorkingDirectory=/var/lib/asterisk
ExecStart=/usr/sbin/asterisk -mqf -C /etc/asterisk/asterisk.conf
ExecReload=/usr/sbin/asterisk -rx 'core reload'
ExecStop=/usr/sbin/asterisk -rx 'core stop now'

LimitCORE=infinity
Restart=always
RestartSec=4

# Prevent duplication of logs with color codes to /var/log/messages
StandardOutput=null

PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
				
			

6) Uruchomienie Asteriska

Teraz dodamy do autostartu usługę asterisk, wystartujemy ją i sprawdzimy jej status. Jeśli zobaczysz napis active (running) to właśnie uruchomiłeś Asteriska!

				
					systemctl enable asterisk.service
systemctl start asterisk
systemctl status asterisk
				
			
OSTRZEŻENIE

Jeżeli z przyzwyczajenia wykonałeś jednak polecenie make config i spróbujesz wystartować usługę asterisk to niestety otrzymasz błąd: "Job for asterisk.service failed because the control process exited with error code." oraz "Active: failed (Result: exit-code)"oraz dalsze komunikaty typu:

asterisk.service: Control process exited, code=exited, status=1/FAILURE

asterisk.service: Failed with result 'exit-code'.

Failed to start LSB: Asterisk PBX.

Dzieje się tak dlatego, że Amazon Linux nie tworzy plików startowych przy użyciu make config. Należy wykorzystać opisany wcześniej systemd

Zanim to zrobimy trzeba wcześniej usunąć błędnie stworzone powiązania. 

				
					systemctl disable asterisk.service
				
			

Następnie możesz uruchomić centralę poleceniem asterisk -r i rozpocząć pracę.

				
					asterisk -r
				
			

Jeżeli chciałbyś monitorować wszystko co dzieje się na Twojej centrali wypróbuj nasze autorskie oprogramowanie VOIPERO

Instalacja i konfiguracja zajmuje kilka minut a system jest obecnie udostępniany całkowicie za darmo.

Przeczytaj co potrafi nasz system VOIPERO w zakresie monitorowania na żywo i raportowania systemów VoIP opartych na Asterisku.

Share this post

Masz pytania lub potrzebujesz oferty?

Skontaktuj się z naszym doradcą.

Popularne wpisy

Powiązane posty

Projekt wystartował!

Monitorowanie i raportowanie Twojego serwera VoIP