Установка CDR-Stats под FreeBSD

CDR-Stats for FreeBSDUPD: Свежая версия скрипта для установки на FreeBSD 10.1 был запилен в официальный репозиторий CDR-Stats на Github.

Есть хорошая система для учёта звонков в системах IP-телефонии Asterisk. Однако разработчики предоставляют установочный скрипт лишь для Ubuntu и CentOS Linux. Предлагаю вам небольшой скрипт для установки CDR-Stats в системе FreeBSD. Конечно, что-то нужно допилить самостоятельно, но кто вы, если не админы? 🙂

Установка MongoDB


portmaster --no-confirm -G databases/mongodb
echo 'mongod_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mongod start

frontend


portmaster --no-confirm -G databases/mysql51-server
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start

set INSTALL_DIR=/usr/local/cdr_stats
set DATABASENAME=cdrstats
set DB_USERNAME=cdrstats
set DB_PASSWORD=secret
set DB_HOSTNAME=localhost
set DB_PORT=3306

set APACHE_USER=www
pw useradd cdr_stats -c CDR-Stats
portmaster --no-confirm -G devel/git
portmaster --no-confirm -G devel/mercurial
portmaster --no-confirm -G www/mod_wsgi3
echo 'apache22_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/apache22 start

portmaster --no-confirm -G devel/py-setuptools
portmaster --no-confirm -G devel/py-pip
portmaster --no-confirm -G devel/libevent
portmaster --no-confirm -G devel/py-gevent
portmaster --no-confirm -G databases/py-south
portmaster --no-confirm -G databases/py-sqlite3
rehash
easy_install virtualenv
easy_install virtualenvwrapper
easy_install -U distribute

mkdir /var/log/cdr-stats
mkdir -p /usr/local/src
cd /usr/local/src
git clone git://github.com/Star2Billing/cdr-stats.git
cp -r /usr/local/src/cdr-stats/cdr_stats /usr/local

foreach line (`cat /usr/local/src/cdr-stats/install/requirements/basic-requirements.txt | grep -v \#`)
pip install $line
end

foreach line (`cat /usr/local/src/cdr-stats/install/requirements/django-requirements.txt | grep -v \#`)
pip install $line
end

cp /usr/local/src/cdr-stats/install/conf/settings_local.py $INSTALL_DIR
sed -i.bak "s/DEBUG = True/DEBUG = False/g" $INSTALL_DIR/settings_local.py
sed -i.bak "s/TEMPLATE_DEBUG = DEBUG/TEMPLATE_DEBUG = False/g" $INSTALL_DIR/settings_local.py

sed -i.bak "s/'django.db.backends.postgresql_psycopg2'/'django.db.backends.mysql'/" $INSTALL_DIR/settings_local.py
sed -i.bak "s/DATABASENAME/$DATABASENAME/" $INSTALL_DIR/settings_local.py
sed -i.bak "s/DB_USERNAME/$DB_USERNAME/" $INSTALL_DIR/settings_local.py
sed -i.bak "s/DB_PASSWORD/$DB_PASSWORD/" $INSTALL_DIR/settings_local.py
sed -i.bak "s/DB_HOSTNAME/$DB_HOSTNAME/" $INSTALL_DIR/settings_local.py
sed -i.bak "s/DB_PORT/$DB_PORT/" $INSTALL_DIR/settings_local.py
mysql --user=$DB_USERNAME --password=$DB_PASSWORD -e "CREATE DATABASE $DATABASENAME CHARACTER SET UTF8;"

cd $INSTALL_DIR/

#Fix permission on python-egg
mkdir $INSTALL_DIR/.python-eggs
chown ${APACHE_USER}:${APACHE_USER} $INSTALL_DIR/.python-eggs
mkdir database

#upload audio files
mkdir -p $INSTALL_DIR/usermedia/upload/audiofiles
chown -R ${APACHE_USER}:${APACHE_USER} $INSTALL_DIR/usermedia

#following lines is for apache logs
touch /var/log/cdr-stats/cdr-stats.log
touch /var/log/cdr-stats/cdr-stats-db.log
touch /var/log/cdr-stats/err-apache-cdr-stats.log
chown -R ${APACHE_USER}:${APACHE_USER} /var/log/cdr-stats

echo 'NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
DocumentRoot /usr/local/cdr_stats/
ErrorLog /var/log/cdr-stats/err-apache-cdr-stats.log
LogLevel warn

Alias /static/ "/usr/local/cdr_stats/static/"

<Location "/static/">
SetHandler None
</Location>

WSGIPassAuthorization On
WSGIDaemonProcess cdr-stats user=www user=www threads=1
WSGIProcessGroup cdr-stats
WSGIScriptAlias / /usr/local/cdr_stats/django.wsgi

<Directory /usr/local/cdr_stats>
AllowOverride all
Order deny,allow
Allow from all

</Directory>

</VirtualHost>
' > /usr/local/etc/apache22/Includes/cdr-stats.conf

sed -i.bak 's/\/usr\/share\/cdr_stats/\/usr\/local\/cdr_stats/' django.wsgi
sed -i.bak "s/# 'init_command'/'init_command'/;s/'autocommit'/# 'autocommit'/" settings_local.py
setenv LC_ALL ru_RU.UTF-8

python manage.py syncdb --noinput
python manage.py migrate
python manage.py createsuperuser

backend


portmaster --no-confirm -G databases/redis
cp /usr/local/etc/redis.conf.sample /usr/local/etc/redis.conf
echo 'redis_enable="YES"' >> /etc/rc.conf
mkdir -p /var/lib/redis
/usr/local/etc/rc.d/redis start

python manage.py collectstatic

cp /usr/local/src/cdr-stats/install/celery-init/debian/etc/init.d/cdr-stats-celeryd /usr/local/etc/rc.d
/usr/local/etc/rc.d/cdr-stats-celeryd restart

Похожие статьи

3 thoughts on “Установка CDR-Stats под FreeBSD”

  1. Привет.
    Огромное спасибо за статю.
    Установил по ней на FreeBSD 9.1 (кое что правда пришлось поправить) но запустилось почти с первого раза. Зашол на Дашборд – пусто. Запустил руками

    ./manage.py sync_cdr_freeswitch

    с папки cdr_stats и на дашборде появилась информация. Но она не обновляется автоматически.
    Нужно ли создать Task в Admin Panel или же я делаю чтото не так?

  2. @Vasyl
    Насколько я понимаю, нужно, чтобы был запущен процесс celeryd. Тогда CDRs будут подтягиваться сами (автоматически).

  3. Интерпретатор csh если что…
    Вместо “easy_install virtualenvwrapper” теперь надо использовать “pip install virtualenvwrapper”, иначе будет вылетать ошибка “dist must be a Distribution instance”.

Leave a Reply

Your email address will not be published. Required fields are marked *