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.
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
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" ]; then
handle_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.