Поставили задачу запилить Астериск на тонкий клиент, где всего 2гб памяти. Потому FreePBX Distro не захотел ставится (1400 по систему, 500 под бут, 500 под свап). Пришлось ставить все поштучно и по порядку.
UPD в экстеншене донгла смотрим кол-во запятых
CentOS
Пришлось поизвращаться. Тонкие клиенты от HP старые, потому CentOS на них ставится только 6 (я выбрал конкретно 6.7). Причем архитектура i386. Вы же берите, что подходит под вашу систему.
Памяти мало, потому режем все. Создаем раздел 100мб с точкой монитрования /boot. затем делаем volume group и добавляем разделы — 192 мб под своп, остальное под /.
Делаем минимальную установку.
Затем обновляем пакеты и ставим пакеты для продолжения установки
yum -y update
yum groupinstall core
yum groupinstall base
yum install gcc gcc-c++ lynx bison mysql-devel mysql-server doxygen
php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git subversion kernel-devel php-process crontabs cronie cronie-anacron sqlite-devel
Отключим SELinux, он мешает запуску консоли:
nano /etc/selinux/config set SELINUX=disabled
Временно отключим iptables
chkconfig Iptables --list chkconfig --level 0123456 iptables off service iptables stop
Автозапуск MySQL
chkconfig --level 345 mysqld on service mysqld start
Автозапуск Apache
chkconfig --level 345 httpd on service httpd start
Установка PearDB (warning игнорим)
pear install db-1.7.14
С этим разобрались. Перезагружаемся.
Asterisk
В середине этого этапа начало кончатся место, потому лучше сделать все в начале.
Монтируем флешку и все работы производим уже на ней. Для начала узнаем, как зовется наша флешка
fdisk -l
Ищем нашу флешку (я ориентировался по размеру)
mkdir /mnt/flash mount -t vfat -o rw /dev/sdb1 /mnt/flash
Первая строчка — создаем папку под монитрование, вторая — монтируем файловую систему FAT (-t vfat), доступную для чтения и записи (-o rw), устройство (/dev/sbd1) в точку монтирования (/mnt/flash).
После этого я добавил монтирование в cron.
crontab -e
и добавляем туда строчку.
@reboot mount -t vfat -o rw /dev/sdb1 /mnt/flash
А теперь приступим к астериску. Качаем на флешку исходники
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
И устанавливаем
UPD На пером тонком клиенте у меня ./configure прошел отлично, второй раз начал ругаться на asteriskssl.so. Я SSL все равно не использую, потом добавил --disable-asteriskssl
tar xvfz asterisk-11-current.tar.gz
cd asterisk-*
make clean && make distclean
./configure --disable-asteriskssl
make menuselect
В окне выбираем «Save & Exit». Продолжаем установку
make make install make config make progdocs
Последний пункт формирует доки по программе, у меня он этого сделать не смог, т.к. я предварительно снес папку docs (экономил место). Без выполнения этой команды тоже прекрасно работает.
FreePBX
Работаем все с той же флешки
export VER_FREEPBX=2.11 git clone http://git.freepbx.org/scm/freepbx/framework.git freepbx cd freepbx git checkout release/${VER_FREEPBX}
Создаем пользователя и даем права
adduser asterisk -M -c "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/
Редактируем Apache
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf service httpd restart
Создаем базу
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
Даем права пользователю в MySQL
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;"
И, собственно, ставим сам FreePBX
./start_asterisk start ./install_amp amportal a ma installall amportal a reload ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3 amportal start
Теперь заходим на сервер через браузер и можно работать.
chan_dongle
А теперь пора прикрутить модем. Мне достался E1550 с разлоченым голосом, так что настроек осталось минимум. Продолжаю работать на флешке, т.к. места все меньше. Качаем исходники модуля:
yum install asterisk-devel wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip
Разархивируем и подготавливаем:
unzip asterisk11.zip cd asterisk-chan-dongle-asterisk11 aclocal autoconf automake -a
Тут может возникнуть много проблем. Мне помогло
autoremake -a -i
Как вариант
ln -s /usr/share/automake-*/config.sub config.sub ln -s /usr/share/automake-*/config.guess config.guess
Но это нельзя делать на FAT32 флешке.
И пошли дальше.
# ./configure && make # cp chan_dongle.so /usr/lib64/asterisk/modules/ # cp etc/dongle.conf /etc/asterisk
Сразу добавим правило для доступа астериска к модему
nano /etc/udev/rules.d/10-modem.rules KERNEL=="ttyUSB*", OWNER="asterisk", GROUP="dialout"
Рестартим Астериск и в консоли пишем
dongle show devices
Тут мы должны увидеть наш модем. IMEI и ISEI переносим в конфиг в /etc/asterisk/dongle.conf.z
Для вхоядщих звонков в файле /etc/asterisk/extension_custom.conf доавляем
[default] exten => phonenumber,1,Set(CALLERID(all)=${CALLERID(num):3}) exten => phonenumber,n,Dial(SIP/Phone,,KTt)
Где phonenumber это номер телефона, определившийся ранее и Phone это внутренний номер телефона.
Для исходящих создаем кастомный сип транк, в качестве номера указываем IMEI и поле Custom Dial String заполняем так
dongle/i:imeinumber/$OUTNUM$
Где imeinumber собственно imei/