Установка и базовая настройка сервера asterisk на ubuntu

Введение

Сразу приведу пример результата работы программы sngrep. Вот первое окно после запуска.

Можно заглянуть в каждую строку и посмотреть все этапы взаимодействия в sip протоколе.

У вас перед глазами будет полная картина в режиме реального времени всех событий на вашем сервере asterisk. Вы можете не только просматривать события, но и сохранять дампы для последующего изучения или отправки. Часто техподдержка оператора или просто в теме на форуме с вопросом, люди просят предоставить sip логи в режиме debug. Их можно собрать с помощью астериска через консоль или вывод в файл. Но с помощью sngrep это сделать удобнее и нагляднее, особенно если надо выделить какую-то одну небольшую часть.

Я расскажу, как установить sngrep на сервере с CentOS 7, а затем на простом примере, покажу, как пользоваться этим инструментом. Рассмотрим изменение конфигурации asterisk и проследим с помощью sngrep эти изменения в sip трафике. Работать будем на сервере, настроенном по моей статье — установка и настройка asterisk.

Разметка жесткого диска

Тема разметки диска раньше была достаточно спорной и вызывала много дискуссий и споров. Делали отдельно разделы под корень /, домашнюю директорию /home, под логи /var/logs и т.д. Мне кажется, что сейчас все это стало неактуально. Сервера общего назначения переехали в виртуальные среды, а там можно и дополнительный диск выделить под образовавшиеся нужды, либо увеличить текущий. Нет необходимости заранее продумывать на много шагов вперед, можно без проблем потом добавить дисковое пространство.

Если же вы настраиваете железный сервер, то скорее всего четко знаете для чего он нужен и разбиваете уже в зависимости от его прямого назначения. Я сам лично, если нет каких-то особых требований к серверу, создаю только один общий раздел /, lvm не использую. Не вижу в нем смысла в виртуальных машинах. А на железо я ставлю только гипервизоры, там lvm под системный раздел тоже не нужен.

Далее нужно выбрать жесткий диск, на который будет установлена система. Если у вас он только один, как у меня, то выбирать не из чего.

Указываем использовать все свободное место диска.

Проверяем предлагаемую схему разбивки. Если все в порядке, продолжаем.

Соглашаемся с записью изменений на диск. Начинается непосредственно установка системы. Нужно подождать некоторое время, обычно несколько минут.

На следующем этапе установки системы, вам будет задан вопрос по поводу дополнительного диска с пакетами. Вам будет предложено проверить другой диск для установки дополнительных пакетов.

Отказываемся и идем дальше. Теперь нужно выбрать зеркало, с которым будет работать пакетный менеджер apt. Выбираем свою страну и подходящее зеркало. Я выбираю Russian Federation и зеркало Yandex.Mirror.

Далее нас просят указать прокси. Скорее всего вы им не пользуетесь, поэтому строку можно оставить пустой. Если это не так, то укажите адрес proxy сервера.

Нас спрашивают о том, хотим ли мы делиться анонимной статистической информацией об использовании различного ПО на сервере. Я обычно не делюсь.

Выбираем набор дополнительного ПО, которое будет установлено на сервер debian вместе с основной системой. Я никогда не ставлю ничего, кроме ssh сервера и системных утилит.

Все остальное можно установить потом. На последнем этапе установки нас спрашивают про загрузчик grub — установить ли нам его. В подавляющем большинстве случаев это нужно сделать. Если вы не знаете, нужно или нет, значит 100% нужно. Без загрузчика можно обойтись в очень специфических ситуациях, которые мы рассматривать не будем в этой инструкции по установке debian. Так что устанавливаем  grub на единственных жесткий диск.

Перезагружаем сервер. Установка завершена, он полностью готов к работе. Не забывайте, что по-умолчанию, на сервер нужно подключаться под учетной записью обычного пользователя, не root. После установки debian, предлагаю выполнить предварительную настройку сервера.

Подготовка сервера

Устанавливаем на сервер необходимые пакеты. Скажу честно, я точно не знаю, нужны ли они все. Список подсмотрел у себя, но он явно избыточный, так как там еще и freepbx ставится. Заглянул еще в несколько руководств и сделал компиляцию, убрав то, что сразу показалось лишним. Думаю, тут есть еще что-то лишнее, например libsqlite3-dev, но на 100% не уверен, а проверять каждый пакет не хочется.

Дожидаемся установки всех пакетов. В процессе будет задан вопрос с паролем root для mysql, так что не уходите далеко от консоли. Параллельно можно пока скачать исходники необходимых программ — pjproject, jansson.

После установки пакетов, приступаем к сборке pjproject и jansson:

На этом подготовка сервера к установке asterisk 13 закончена. Приступаем к самому главному.

Установка FreePBX

Вносим необходимые правки в файлы конфигураций php, apache и применяем сделанные изменения в них:

1
2
3
4
5
6
7

sed -i ‘s/\(^upload_max_filesize = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini
sed -i ‘s/\(^memory_limit = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i ‘s/^\(User\|Group\).*/\1 asterisk/’ /etc/apache2/apache2.conf
sed -i ‘s/AllowOverride None/AllowOverride All/’ /etc/apache2/apache2.conf
a2enmod rewrite
service apache2 restart

Создаем файл конфигурации /etc/odbcinst.ini:

1
2
3
4
5
6

cat <<EOF > /etc/odbcinst.ini

Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
FileUsage = 1
EOF

Создаем файл конфигурации /etc/odbc.ini

1
2
3
4
5
6
7
8
9
10
11

cat <<EOF > /etc/odbc.ini

Description = MySQL connection to ‘asteriskcdrdb’ database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Charset = utf8
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF

Создадим базу данных для работы FreePBX:

1 mysql -u root -p

1
2
3
4
5
6

CREATE DATABASE asterisk default charset utf8;
CREATE DATABASE asteriskcdrdb default charset utf8;
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘asterpass’;
GRANT ALL PRIVILEGES ON asteriskcdrdb.* to asteriskuser@localhost IDENTIFIED BY ‘asterpass’;
FLUSH PRIVILEGES;
EXIT

Переходим в каталог с дистрибутивом FreePBX, запускаем Asterisk и выполняем установку:

1
2
3

cd freepbx/
./start_asterisk start
./install -n —dbuser=asteriskuser —dbpass=asterpass

Установка завершена, через Web браузер заходим в консоль FreePBX:

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Popular content

Today’s:

  • FreePBX Production Install Guide (RHEL v5 or v6, Asterisk v1.8+, FreePBX v2.9+)
  • Kazoo v4 Single Server Install Guide
  • A2Billing v2.2 Install Guide
  • Homer SIP capture and VoIP Monitoring Install Guide
  • Simple IPTables Firewall with Whitelist and Blacklist

All time:

  • FreePBX Production Install Guide (RHEL v5 or v6, Asterisk v1.8+, FreePBX v2.9+)
  • A2Billing Install guide
  • A2Billing v2 Install Guide
  • Asterisk/FreePBX on an OpenVZ/Virtuozzo Virtual Private Server (VPS)
  • Freepbx Production Install Guide (RHEL v6, Asterisk v11+, Freepbx v2.11+)

Last viewed:

  • FusionPBX v4.4 Freeswitch v1.8 Debian v9 PostgreSQL Nginx Install Guide
  • Asterisk Freepbx on CentOS (CentOS v7, Asterisk v14, Freepbx v14)
  • Asterisk/FreePBX on an OpenVZ/Virtuozzo Virtual Private Server (VPS)
  • A2Billing v2.2 Install Guide
  • OpenSIPS v2 with GUI on Debian v8 MariaDB Apache install guide

Подготовка системы

Я рекомендую ознакомиться с моим материалом на тему установки и первоначальной настройки centos 8. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:

# mcedit /etc/sysconfig/selinux

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

# setenforce 0

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше обновляем систему и ставим пакеты Development Tools:

# dnf update
# dnf groupinstall core base "Development Tools"

И еще некоторые зависимости, которые будут нужны.

# dnf install tftp-server ncurses-devel sendmail sendmail-cf newt-devel libxml2-devel libtiff-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget sqlite-devel net-tools gnutls-devel unixODBC

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Для Freepbx версия не критична, так что будем ставить 10.3 из базового репозитория.

# dnf module install mariadb

Запускаем mysql сервер.

# systemctl start mariadb
# systemctl enable mariadb

Compile Asterisk

Once the asterisk archive is extracted, change to the directory with the following command:

cd /usr/src/asterisk-15.5.0

Use the script to install all of the missing packages:

./contrib/scripts/install_prereq install

Depending on the number of the missing packages the installation may take some time, once it is completed the output will look like the following:

#############################################
## install completed successfully
#############################################

Next step is to run the script which will check your system for missing libraries and binaries and prepare the Asterisk source code for the build process:

./configure

The output of the successful completion should look like the following:

configure: Menuselect build configuration successfully completed

               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.

configure: Package configured for:
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :

Now that the configuration is completed start the compilation process using the command:

make

Depending on your system resources the build process may take several minutes and once it is completed the following message will be printed on your console which means that the Asterisk was successfully compiled:

+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running:              +
+                                           +
+                make install               +
+-------------------------------------------+

The next step is to run the command which will install Asterisk and all compiled Asterisk modules:

make install

Upon successful Asterisk installation you will be presented with the following message on your screen:

 +---- 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:              +
 +                                           +
 + For generic reference documentation:      +
 +    make samples                           +
 +                                           +
 + For a sample basic PBX:                   +
 +    make basic-pbx                         +
 +                                           +
 +                                           +
 +-----------------  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    +
 +-------------------------------------------+

Run the make samples command to install the Asterisk sample configuration files:

make samples

Install the initialization script so that you can manage your Asterisk service using the systemctl command :

make config

The command above will show no output.

Next install the logrotation script with the following command:

make install-logrotate

You will see the following output indicating that the logrotation configuration has been successfully created:

if [ ! -d "/etc/asterisk/../logrotate.d" ]; then \
        /usr/bin/install -c -d "/etc/asterisk/../logrotate.d" ; \
fi
sed 's#__LOGDIR__#/var/log/asterisk#g' < contrib/scripts/asterisk.logrotate | sed 's#__SBINDIR__#/usr/sbin#g' > contrib/scripts/asterisk.logrotate.tmp
/usr/bin/install -c -m 0644 contrib/scripts/asterisk.logrotate.tmp "/etc/asterisk/../logrotate.d/asterisk"
rm -f contrib/scripts/asterisk.logrotate.

Типы iso образов

Когда я начал готовить эту инструкцию по установке, был удивлен тем, что не смог быстро найти внятного и точного списка и описания официальных iso образов debian. Сам я почти всегда использую самый простой минимальный образ netinst.iso. С его помощью можно выполнить минимальную установку системы.

Название образа netinstall вводит в заблуждение, намекая на то, что для установки нужен интернет. На самом деле это не так. Базовую установку с минимальным набором программ, которые включают в себя основные системные утилиты, можно выполнить даже без наличия интернета. Более того, система нормально установится с этого минимального образа даже без сетевой карты.

На официальном сайте debian нет точного списка и описания всех образов. Я собрал информацию из содержания различных репозиториев дебиана, где представлены iso образы для загрузки. По смыслу есть 4 типа загрузочных дисков:

  • Минимальный для установки голой системы и системных утилит.
  • Минимальный с xfce для установки системы с простым графическим окружением.
  • Огромный dvd образ из 3-х дисков с системой и пакетами.
  • Различные live образы dvd дисков, которые отличаются графической оболочкой.

Последние 2 типа я даже не смотрел и не проверял. Мне обычно необходим сервер в минимальной установке, поэтому я использую netinstall образ. Для удобства я составил таблицу по редакциям Debian 9 Stertch

Редакции Debian 9
debian-9.0.0-amd64-netinst.iso Минимальный по объему образ, который содержит только самое необходимое для запуска установщика debian. Все остальное в процессе установки загружается из интернета. Без доступа к интернету, возможна установка голой системы с минимальным набором системных утилит.
debian-9.0.0-amd64-xfce-CD-1.iso Стандартный iso образ, который подходит для offline установки минимальной конфигурации сервера с графическим окружением xfce (хотя зачем он на сервере?). По размеру сопоставим с обычным cd диском. Можно записать на флешку и устанавливать с нее.
debian-9.0.0-amd64-DVD-1.iso
debian-9.0.0-amd64-DVD-2.iso
debian-9.0.0-amd64-DVD-3.iso
Этот набор dvd дисков содержит в себе систему и набор всевозможных пакетов, которые можно установить без доступа в интернет, непосредственно с dvd дисков. Я сейчас не могу представить себе сервер без доступа в интернет, поэтому не совсем понимаю, кому нужны эти образы. Но раз они есть, значит кто-то ими пользуется.
debian-live-9.0.1-amd64-cinnamon.iso
debian-live-9.0.1-amd64-gnome.iso
debian-live-9.0.1-amd64-kde.iso
debian-live-9.0.1-amd64-lxde.iso
debian-live-9.0.1-amd64-mate.iso
debian-live-9.0.1-amd64-xfce.iso
Набор live образов позволяет попробовать систему дебиан без установки на железо. Отличаются друг от друга эти образы графической оболочкой. Данные osi образы актуальны для проверки работы системы на десктопах у обычных пользователей. Для системных администраторов, которые ставят систему на серверы, они вряд ли представляют интерес. Так что, если вам хочется просто посмотреть на работу системы, не устанавливая ее, можете воспользоваться live образами.

Install Ubuntu Wheezy

Initial System Setup

Install Required Dependencies

apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server mysql-client libgnutls28 bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient15-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion
reboot

Install Dependencies for Google Voice

Install iksemel

cd /usr/src
wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz
tar xf iksemel-1.4.tar.gz
cd iksemel-1.4
./configure
make
make install

Install and Configure Asterisk

Download Asterisk source files.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

Compile and install DAHDI.

tar xvfz dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-2.6.1+2.6.1
make all
make install 
make config

Compile and install Asterisk

cd /usr/src
tar xvfz asterisk-11-current.tar.gz
cd asterisk-11.1.0
./configure
contrib/scripts/get_mp3_source.sh
make menuselect
make
make install
make config

Install Asterisk-Extra-Sounds

cd /var/lib/asterisk/sounds
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz
tar xvfz asterisk-extra-sounds-en-gsm-current.tar.gz
rm asterisk-extra-sounds-en-gsm-current.tar.gz

Install and Configure FreePBX

Now create the Asterisk user and set ownership permissions.

adduser asterisk --disabled-password --gecos "Asterisk User"
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
mkdir /var/www/html
chown -R asterisk. /var/www/

A few small modifications to Apache.

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
service apache2 restart

Configure Asterisk database in MYSQL. 

export ASTERISK_DB_PW=amp109 
mysqladmin -u root create asterisk 
mysqladmin -u root create asteriskcdrdb 
mysql -u root asterisk < SQL/newinstall.sql 
mysql -u root asteriskcdrdb < SQL/cdr_mysql_table.sql

Set permissions on MYSQL database.

mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
mysql -u root -e "flush privileges;"
ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
amportal start 

Fix Ubuntu/Debian Paths

Debian and Ubuntu use /usr/share/asterisk for things like MOH and Sounds. As sounds are now controlled by FreePBX, you need to delete the system sounds, and link them to the correct location.

rm -rf /var/lib/asterisk/moh
ln -s /usr/share/asterisk/moh /var/lib/asterisk/moh
rm -rf /usr/share/asterisk/sounds
ln -s /var/lib/asterisk/sounds /usr/share/asterisk/sounds
chown -R asterisk.asterisk /usr/share/asterisk

Download and Install FreePBX 14.

cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
tar zxf freepbx-14.0-latest.tgz
cd freepbx
./install -n

Установка asterisk 13

# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
# git clone https://github.com/akheron/jansson.git
# wget http://www.pjsip.org/release/2.2.1/pjproject-2.2.1.tar.bz2

Собираем и ставим DAHDI:

# tar xvfz dahdi-linux-complete-current.tar.gz
# cd dahdi-linux-complete-*
# make all
# make install
# make config

Собираем и ставим LIBPRI:

# cd /usr/src
# tar xvfz libpri-1.4-current.tar.gz
# cd libpri-*
# make
# make install

Компилируем и устанавливаем pjproject

# cd /usr/src
# tar -xjvf pjproject-2.2.1.tar.bz2
# cd pjproject-2.2.1
# CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
# make dep
# make
# make install

Компилируем и устанавливаем jansson

# cd /usr/src/jansson
# autoreconf -i
# ./configure
# make
# make install

Собираем и ставим Astersik 13:

# cd /usr/src
# tar xvfz asterisk-13-current.tar.gz
# cd asterisk-13.4.0
# ./configure

Если вылезает ошибка:

configure: error: *** uuid support not found (this typically means the uuid development package is missing)

Делаем следующее:

# contrib/scripts/install_prereq install

Выскочит окно, указываем код 7, если вы из России:
Продолжаем сборку:

# ./configure

Если все прошло без ошибок, продолжаем:

# contrib/scripts/get_mp3_source.sh
# make menuselect


Выбираем отмеченные мной модули и продолжаем:

# make
# make install
# make config
# ldconfig

Устанавливаем дополнительные звуки:

# mkdir -p /var/lib/asterisk/sounds
# cd /var/lib/asterisk/sounds
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
# tar xfz asterisk-extra-sounds-en-wav-current.tar.gz
# rm -f asterisk-extra-sounds-en-wav-current.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-g722-current.tar.gz
# tar xfz asterisk-extra-sounds-en-g722-current.tar.gz
# rm -f asterisk-extra-sounds-en-g722-current.tar.gz

Установка Asterisk

Выполняем скрипт, который проверит какие еще необходимо установить зависимости, для работы Asterisk:

1
2
3

cd asterisk-16.*
contrib/scripts/install_prereq install
contrib/scripts/get_mp3_source.sh

В процессе установки, необходимо будет задать телефонный код, оставляем по-умолчанию 7 (Россия).

Выполняем конфигурацию с поддержкой pjproject, jansson, mysqlclient, добавляем поддержку mp3 и запускаем меню выбора устанавливаемых компонентов:

1
2

./configure —with-pjproject-bundled —with-jansson-bundled —with-mysqlclient
make menuselect

Выбираем:

  • Add-ons — поддержка format_mp3, res_config_mysql, app_mysql, cdr_mysq.
  • Applications — поддержка app_macro (необходимый модуль для работы FreePBX)
  • Core Sound Packeges — CORE-SOUNDS-EN-ULAW, CORE-SOUNDS-EN-ALAW, CORE-SOUNDS-EN-GSM, CORE-SOUNDS-EN-G729, CORE-SOUNDS-RU-ULAW, CORE-SOUNDS-RU-ALAW, CORE-SOUNDS-RU-GSM, CORE-SOUNDS-RU-G729

Остальное я оставляю по-умолчанию.

Выполняем компиляцию исходников asterisk, затем выполняем установку astersik и завершаем установку asterisk:

1
2
3
4
5
6

make
make install
make config
ldconfig
update-rc.d -f asterisk remove
cd ..

Добавляем asterisk в автозагрузку:

1 systemctl enable asterisk

Создаем пользователя (asterisk), от которого будет работать asterisk. Назначаем права на каталоги asterisk и удаляем каталог сайта (apache2) по-умолчанию:

1
2
3
4
5
6
7
8

useradd -m asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
 
rm -rf /var/www/html
touch /etc/asterisk/{modules,cdr}.conf

Cистемные требования

Системные требования для Debian 9 принципиально не отличаются от схожих linux дистрибутивов. Согласно официальной документации, самые минимальные характеристики железа должны быть следующие:

  • 128 Мб памяти
  • 2 Гб диска

В зависимости от архитектуры, минимальные параметры могут быть еще меньше. Если говорить о более ли менее усредненных значениях железа, на котором будет нормально работать сервер общего назначения, то они такие:

  • 512 Мб оперативной памяти
  • 10 Гб диск

Это рекомендуемые минимальные системные требования для Debian, cогласно официальному руководству. На момент написания этой статьи, документация приведена для предыдущего выпуска. Но не думаю, что эта информация сильно изменится для версии Stretch. Предполагаю, что требования к серверу будут примерно схожи.

В своей практике я обычно использую виртуальные машины с рекомендуемыми параметрами, если не предполагается большой нагрузки. То есть под обычный шлюз, ненагруженный веб сервер, под мониторинг небольшой сети вполне хватает виртуальной машины с рекомендуемыми параметрами и одним ядром процессора. Дальше уже в зависимости от нагрузки можно увеличивать ресурсы. Под системный раздел лучше выделить 20-30 Гб, если нет нехватки в свободном месте на гипервизоре.

Установка Дебиан 9 на raid

Рассмотрим вариант установки debian на софтовый рейд mdadm. Эта актуальная ситуация, когда вы разворачиваете систему на железе, а не виртуальной машине. К примеру, такая конфигурация будет полезна для установки proxmox. В этой статье я уже рассматривал установку debian на raid1. Но там версия 8-я, а у нас сейчас 9-я. Так что рассмотрю еще раз эту тему, но уже в варианте графического инсталлятора, а не консольного.

Итак, начинаем установку системы по приведенной ранее инструкции. Доходим до этапа разбивки диска и выбираем режим Manual.

Видим состояние наших дисков. В моем случае они полностью чистые, без разделов.

Выбираем режим Guided partitioning и настраиваем разделы на дисках, чтобы получилась такая картинка.

То есть мы на каждом диске создаем по одному пустому разделу, без точки монтирования и файловой системы. Эти пустые разделы мы объединим в raid и там уже сделаем корень системы — . Для swap я не создаю отдельный раздел, чтобы не делать потом отдельный raid для него. Swap сделаем в виде файла после установки системы. Итак, создаем рейд — Configure Software raid. Соглашаемся с предложением сохранить изменения.

Выбираем Create MD device, затем RAID1.

Указываем, что у нас будет 2 устройства в массиве и spare device не будет вовсе.

Далее выбираем 2 наших пустых раздела на каждом из дисков.

В конце соглашаемся на запись изменений. В разделе конфигурирования рейда нажимаем Finish и выходим из него.

Создаем на только что собранном массиве точку монтирования для нашей системы и указываем тип файловой системы. Должно получиться вот так.

На этом завершаем создание рейда и разметку диска и переходим дальше к установке debian, как было описано выше. Никаких принципиальных изменений больше не будет. Единственное, будет задан вопрос о том, что вы не создали раздел swap и будет предложено вернуться и исправить это.

Можно отказаться и продолжить установку.

После установки на raid нужно выполнить несколько важных действий.

  1. Зайти в систему и создать swap.
  2. Установить загрузчик на оба диска. Во время установки он был установлен только на один диск.
  3. Протестировать отказ одного из дисков.
# dpkg-reconfigure grub-pc

Выскочат пару запросов на указание дополнительных параметров. Можно ничего не указывать, оставлять все значения по-умолчанию.

А в конце выбрать оба жестких диска для установки загрузчика.

После установки загрузчика на оба диска, можно проработать вариант отказа одного из дисков. Для начала проверим статус нашего рейда:

# cat /proc/mdstat

md0 : active raid1 sdb1 sda1
20953088 blocks super 1.2 [2/2] 

Все в порядке, рейд на месте. Выключим сервер, отсоединим один диск и включим снова. Сервер замечательно загрузился с одним диском. Проверяем raid:

# cat /proc/mdstat
md0 : active raid1 sda1
20953088 blocks super 1.2 [2/1] 

Одного диска нет. Теперь снова выключим сервер и воткнем в него чистый диск такого же объема. То есть имитируем замену сломанного диска на новый. Запускаем сервер и проверяем список дисков в системе:

# fdisk -l | grep /dev
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 41940991 41938944 20G fd Linux raid autodetect
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/md0: 20 GiB, 21455962112 bytes, 41906176 sectors

Старый диск sda c разделом sda1 и новый диск sdb без разделов. Нам нужно так же на нем создать один раздел на весь диск с типом Linux raid. Сделаем это с помощью cfdisk.

# cfdisk /dev/sdb

Записываем изменения и проверяем, что получилось:

# fdisk -l | grep /dev
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 41940991 41938944 20G fd Linux raid autodetect
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
/dev/sdb1 * 2048 41943039 41940992 20G fd Linux raid autodetect
Disk /dev/md0: 20 GiB, 21455962112 bytes, 41906176 sectors

То, что надо. Второй раздел идентичный первому. Добавим его теперь в рейд.

# mdadm --add /dev/md0 /dev/sdb1
mdadm: added /dev/sdb1

Проверяем статус рейда:

# cat /proc/mdstat

md0 : active raid1 sdb1 sda1
      20953088 blocks super 1.2 [2/1] 
        recovery =  4.5% (954304/20953088) finish=6.6min speed=50226K/sec

Идет ребилд массива. Надо дождаться его окончания, а пока поставим на новый диск загрузчик, как проделали это ранее. После пересборки массива замена сбойного диска завершена, можно продолжать эксплуатировать сервер в штатном режиме.

Заключение

Долго я возился с этой статьей. В итоге перепробовал кучу всяких вариантов и настроек, но у меня так и не получилось добиться того, чтобы Freepbx без ошибок работала на Centos 8. Я для себя сделал вывод, что панель просто не готова к работе на этой системе. Статью я решил все же оформить и опубликовать, потому что было жаль потраченного времени, плюс может это будет кому-то полезно, если необходимо настраивать только на Centos 8.

При настройке и отладке различных версий, рекомендую использовать виртуальную машину и снепшоты. Я сначала настроил систему, сделал снепшот, потом собрал астериск, сделал еще снепшот, а потом уже пробовал различные версии панели. Это позволило оперативно проверить много вариантов настроек и версий php. Загружался из снепшотов раз 20.

Все статьи в буржунете, что видел, поверхностны и рассказывают обычную установку на дефолтную систему с php 7.2 из базовых реп. Как это потом работает, никто не проверяет. Реально полезной и законченной информации по Centos 8 b Freepbx я не нашел.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Онлайн курс Основы сетевых технологий

Теоретический курс с самыми базовыми знаниями по сетям. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:

  • На каком уровне модели OSI могут работать коммутаторы;
  • Как лучше организовать работу сети организации с множеством отделов;
  • Для чего и как использовать технологию VLAN;
  • Для чего сервера стоит выносить в DMZ;
  • Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
  • и многое другое.

Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .

Заключение

Мы установили оригинальную версию asterisk 13 на сервер под управлением debian 8 без каких-либо дополнений и web панелей. Дальше можно приступать к настройке. Я рекомендую воспользоваться моей инструкцией по базовой настройке asterisk с нуля. Там подробно рассказано как сконфигурировать основной функционал, который удовлетворит потребности в телефонии для среднестатистического офиса. Настройка включает в себя так же запись разговоров и подробную статистику звонков.

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .

Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Подписывайся на telegram канал автора

Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron

Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.

Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.

Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.

Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления.

Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления.

Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog.

Настройка программных комплексов
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp

Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.

Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop.

Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.

Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки.

Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.

Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.

Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C

Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.

Ускорение работы 1С с postgresql и диагностика проблем производительности

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *