пятница, 15 марта 2013 г.

Установка FreePBX на FreeBSD

FreePBX - это полноценный веб-интерфейс для управления IP АТС Asterisk.

Разработчики FreePBX предлагают скачать установочный образ на базе CentOS. Очевидно, что для этого требуется новый отдельный сервер. В качестве альтернативы предлагается использовать инсталлятор, который предназначен для других дистрибутивов Linux. Поддержка FreeBSD не заявлена.

Тем не менее установку можно произвести вручную.



Сначала установим необходимые пакеты:

asterisk
bash
sudo
pidof
php53 (без suhosin)
php53-mysql
php53-mysqli
php53-ctype
php53-session
php53-posix
php53-gd
lame
libxml
tiff
pear-DB
mysql55-server
mpg123
apache22 (c поддержкой mod_php)

Внесем правки в конфигурационные файлы:

в php.ini:
short_open_tag=On
upload_max_filesize=128M
max_execution_time = 30
memory_limit = 100M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR display_errors = Off
log_errors = On
default_charset = "utf8";
magic_quotes_gpc = Off
timezone='Europe/Moscow'
в httpd.conf
User asterisk
Group asterisk

Активируем сервисы в rc.conf:
apache22_enable="YES"
mysql_enable="YES"
asterisk_enable="YES"

Включаем поддержку mod_php в httpd.conf
Блок:

  DirectoryIndex index.html
Заменим на:
DirectoryIndex index.php index.html
А также добавим строки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Кроме того DocumentRoot нужно заменить на /var/www/html

 Запустим сервисы:
# service asterisk start
# service mysql-server start
# service apache22 start
Создание необходимых linux-like симлинков
Подобно тому, как это делается для perl, необходимо сделать для lame, mpg123, bash и php, иначе скрипты не смогут их найти
ln -s /usr/local/bin/php /usr/bin/php
ln -s /usr/local/bin/bash /bin/bash
ln -s /usr/local/bin/lame /usr/bin/lame
ln -s /usr/local/bin/mpg123 /usr/bin/mpg123
А так же на конфиг астериска:
ln -s /usr/local/etc/asterisk /etc/asterisk
Создадим базы, дадим права:
mysql> create database asterisk;
mysql> GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost' IDENTIFIED BY 'password';
mysql> create database asteriskcdrdb;
mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'asterisk'@'localhost' IDENTIFIED BY 'password';

Удалим конфиги asterisk установленные портом:
rm -f  /etc/asterisk/extensions.conf   /etc/asterisk/features.conf  /etc/asterisk/iax.conf  /etc/asterisk/logger.conf  /etc/asterisk/sip.conf /etc/asterisk/sip_notify.conf
Вместо этих файлов будут созданы симлинки на файлы, сгенерированные FreePBX.


Скачаем архив с FreePBX:
# fetch http://mirror.freepbx.org/freepbx-2.10.0.tar.gz
Распакуем его:
# tar xzf  freepbx-2.10.0.tar.gz
Загрузим схему баз данных для FreePBX:
# cd  freepbx-2.10.0/SQL
# cat newinstall.sql | mysql asterisk
# cat cdr_mysql_table.sql | mysql asteriskcdrdb

Запускаем инсталлятор:
# install_amp --username=asterisk --password=asterisk  --uid=asterisk --gid=asterisk

Если все сделано правильно, то в браузере должен открыться интерфейс FreePBX.

25 комментариев:

  1. Анонимный8 мая 2013 г., 10:31

    Сначала установим необходимые пакеты:
    mgp123 - это что за пакет?

    ОтветитьУдалить
  2. Анонимный16 июля 2013 г., 16:17

    Хочу уточнить. А в строке
    # install_amp --username=asterisk --password=asterisk --webroot=/usr/local/www/FreePBX --uid=asterisk --gid=asterisk
    в параметре --password=asterisk после символа "=" должен быть тот же пароль, что был задан при выполнении
    mysql> GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost' IDENTIFIED BY 'password';
    и
    mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'asterisk'@'localhost' IDENTIFIED BY 'password';
    ?

    ОтветитьУдалить
    Ответы
    1. Отвечу так: можете попробовать разные и напишите, что из этого получилось.

      ЗЫ: это безопасно

      Удалить
    2. для тех кто устанавливает на FreeBSD 9.1, если собирать на php 5,4 то будут глюки в интерфейсе, так что собирайте из ports/lang/php53, так же lame можно не ставить, он ставиться вместе с астериском, и еще лучше веб содержимое кидать в var/www/html потому что инсталятор упорно туда лезет и вылезают ошибки, за которыми не всегда заметишь то что нужно

      Удалить
    3. Ничего не получается. На последней стадии
      sh install_amp --username=asterisk --password=asterisk --webroot=/usr/local/www/FreePBX --uid=asterisk --gid=asterisk
      install_amp: cannot open ?php: No such file or directory
      install_amp: //: Permission denied
      install_amp: //: Permission denied
      install_amp: //: Permission denied
      install_amp: //: Permission denied
      install_amp: //: Permission denied
      install_amp: 8: Syntax error: word unexpected (expecting ")")

      Удалить
    4. Неправильно запускаете

      Удалить
  3. поправьте пожалуйста
    ls -s /usr/local/bin/lame /usr/bin/lame
    на
    ln -s /usr/local/bin/lame /usr/bin/lame

    ОтветитьУдалить
  4. а я уперся уже в браузере. Не применяет изменения.
    Reload failed because retrieve_conf encountered an error: 126
    exit: 126
    /var/lib/asterisk/bin/retrieve_conf: ������������ ����������
    1 error(s) occurred, you should view the notification log on the dashboard or main screen to check for more details.

    ОтветитьУдалить
    Ответы
    1. все еще пытаюсь разобраться ...
      при установке ./install_amp --username=asterisk --password=asterisk --uid=asterisk --gid=asterisk
      такие сообщения не нравятся
      PHP Fatal error: Class 'freepbx_conf' not found in /var/lib/asterisk/bin/freepbx_setting on line 37
      sudo: unable to execute /var/lib/asterisk/bin/freepbx_setting: Permission denied

      как бороться ?

      Удалить
    2. убедитесь, что есть права на чтение и выполнение /var/lib/asterisk/bin/freepbx_setting

      Удалить
    3. я их сам выставляю когда начианет сыпаться sudo: unable to execute /var/lib/asterisk/bin/freepbx_setting: Permission denied, но они все равно ставятся по своему
      root@asterisk:/root # ls -la /var/lib/asterisk/bin/freepbx_setting
      -rwxrwxr-x 1 asterisk asterisk 3206 13 янв 08:13 /var/lib/asterisk/bin/freepbx_setting

      Удалить
    4. На FreeBSD11 с 13 астериксом/freepbx проблема с retrieve_conf при применении изменений решена. Нужен из портов ZendFramework. Также добавить права на каталог /usr/local/freepbx. Проверка - запуска - "sudo -u asterisk /usr/local/freepbx/bin/fwconsole"

      Удалить
  5. Ух, секс еще тот, но я выробатал алгоритм, практически гарантированной установки.
    Все ставим по статье (великое спасибо за неё)
    НО делаем папки ПЕРЕД установкой
    mkdir /var/lib/asterisk
    mkdir /var/lib/asterisk/bin
    mkdir /var/www/
    mkdir /var/www/html/

    Если веб морда не видит астериск то проверяем пароли в manager.conf и amportal.conf (должны быть одинаковые для админа) и если с пинка не заводится переставляем pear-DB, у меня завелось только после этого

    кстати в php.ini вместо timezone='Europe/Moscow' нада date.timezone='Europe/Moscow' иначе матерится))

    ОтветитьУдалить
  6. ааа и еще права не забываем для астериска дать на www/html и кофиги

    ОтветитьУдалить
  7. при исполнении последнего действия (install_amp --username=asterisk --password=asterisk --uid=asterisk --gid=asterisk) вываливается ошибка:
    Checking for PEAR DB..OK
    Checking for PEAR Console::Getopt..OK
    Using username: asterisk
    Using password: ********
    Setting ownership (user) to asterisk
    Setting ownership (group) to asterisk
    Checking user..OK
    Checking if Asterisk is running..pidof: not found
    FAILED
    [FATAL] ./install_amp
    Asterisk must be running. If this is a first time install, you should start
    Asterisk by typing './start_asterisk start'
    For upgrading, you should run 'amportal start'
    как её победить?

    ОтветитьУдалить
    Ответы
    1. Обратите внимание на сообщение об ошибке:
      Asterisk must be running.
      Убедитесь, что он запущен

      Удалить
  8. Анонимный3 мая 2014 г., 15:15

    я все же домучал FreePBX. Мои сообщения от 13 января и ранее.
    Учитывая все здесь сказанное поставил на FreeBSD 9.1 в JAIL
    PHP53
    и все заработало :)
    разбираюсь дальше ...

    ОтветитьУдалить
  9. Анонимный5 мая 2014 г., 22:53

    еще и 3G модем прикрути Huawei E171, вроде работает. Завтра пойду симку с городским номером куплю.

    ОтветитьУдалить
  10. Анонимный28 июля 2014 г., 12:53

    Уже год на фряхе пашет )
    Маленькая тонкость: установку делать под bash.

    #bash
    ./start_asterisk start
    ./install_amp

    ОтветитьУдалить
  11. Статья огонь, но появляется ошибка: ./install_amp

    PHP Fatal error: Call to undefined function sprintf_() in /usr/home/GMoSuk/freepbx/amp_conf/htdocs/admin/libraries/BMO/GPG.class.php on line 277

    ОтветитьУдалить
  12. Вчера боролся с той-же проблемой, заключается она в недостающих правах доступа к файлам и папкам
    для получения правильных прав доступа, необходимо ввести:

    chown --recursive asterisk:asterisk /var/lib/asterisk
    chown --recursive asterisk:asterisk /var/log/asterisk
    chown --recursive asterisk:asterisk /var/run/asterisk
    chown --recursive asterisk:asterisk /var/spool/asterisk
    chown --recursive asterisk:asterisk /usr/lib/asterisk
    # chown --recursive asterisk:asterisk /dev/zap
    ## ZAP/or DAHDI
    chown --recursive asterisk:asterisk /dev/dahdi
    #----------------------------------------------------
    chmod --recursive u=rwX,g=rwX,o= /var/lib/asterisk
    chmod --recursive u=rwX,g=rwX,o= /var/log/asterisk
    chmod --recursive u=rwX,g=rwX,o= /var/run/asterisk
    chmod --recursive u=rwX,g=rwX,o= /var/spool/asterisk
    chmod --recursive u=rwX,g=rwX,o= /usr/lib/asterisk
    # chmod --recursive u=rwX,g=rX,o= /dev/zap
    chmod --recursive u=rwX,g=rX,o= /dev/dahdi
    #----------------------------------------------------
    chown --recursive asterisk:asterisk /etc/asterisk
    chmod --recursive u=rwX,g=rwX,o= /etc/asterisk

    ОтветитьУдалить
  13. Может проще в 10.1 64-bit в BHyVe запустить FreePBX distro (CentOS 6.5)

    Уверен что куча модулей не будут без переписывания кода работать

    Также FreePBX 2.10 давно не актуален - везде 2.11

    ОтветитьУдалить
    Ответы
    1. Может и проще, но статья не об этом.

      Удалить