Linphoneアプリ向けにアカウント作成用サーバのソースコードが公開されています。
CentOS+Apache向けとなっていますが、Flexisipを稼働しているDockerコンテナ群のNginx+PHP-FPMに導入します。
また用意されたphpスクリプトにより、以下のLinphoneアカウント用テーブルを作成します。
インストール手順(Docker-Composeファイルによる)
Docker-Composeファイル
別記事で設定したFlexisip用docker-composeファイル内で、flexisip-account-manager用に新たに共有ボリュームをnginxとphp-fpmの項目に追加します。
./docker_files内のdockerfileにより、予め各コンテナに必要な追加パッケージをインストールしています。
# nginx, additional install $ docker exec nginx apk add bash nano
nginx:
container_name: nginx
image: nginx:alpine
tty: true
environment:
- VIRTUAL_HOST=test.site.com
- VIRTUAL_ROOT=/var/www/html
- VIRTUAL_PORT=80
# - VIRTUAL_PROTO=fastcgi
- LETSENCRYPT_HOST=test.site.com
- [email protected]
volumes:
# shared nginx default.conf between host and container
- ./nginx_default.conf:/etc/nginx/conf.d/default.conf
# shared the directory /var/www/html in php-fpm container
- ./html:/var/www/html/register
# shared the directory /var/www/html in phpmysql-fpm container
- ./phpmyadmin_data:/var/www/html/phpmyadmin
# for flexisip-account-manager
- ./flexisip-account-manager:/var/www/html/flexisip-account-manager
external_links:
- nginx-proxy-letsencrypt
restart: always
networks:
proxy-tier:
ipv4_address: 172.18.0.6
# php-fpm, additional install $ docker exec php-fpm apk add bash nano
# php extension mysqli should be installed, $ docker exec php-fpm docker-php-ext-install mysqli
# for Userfrosting, install followings.
# apk add libpng-dev freetype-dev libjpeg-turbo-dev zip
# docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
# docker-php-ext-install -j$(nproc) gd
# docker-php-ext-install -j$(nproc) pdo pdo_mysql
# docker-php-ext-install -j$(nproc) zip
php-fpm:
container_name: php-fpm
build:
context: ./docker_files
dockerfile: php7.2-fpm-alpine
tty: true
expose:
- "9000"
volumes:
- ./html:/var/www/html/register
# for flexisip-account-manager. install # apk add libxml2-dev, # docker-php-ext-install xmlrpc
- ./flexisip-account-manager:/var/www/html/flexisip-account-manager
- ./etc/flexisip-account-manager:/etc/flexisip-account-manager
depends_on:
- flexisip-mariadb
restart: always
networks:
proxy-tier:
ipv4_address: 172.18.0.7
./docker_files/php7.2-fpm-alpine
FROM php:7.2-fpm-alpine
# For flexisip-account-manager xmlrpc server
RUN apk add --no-cache bash nano libpng-dev freetype-dev libjpeg-turbo-dev zip libxml2-dev \
&& docker-php-ext-install mysqli xmlrpc \
&& docker-php-ext-enable mysqli xmlrpc \
# Make the log directory and the log file for flexisip-account-manager
RUN mkdir -p /var/opt/belledonne-communications/log \
&& cd /var/opt/belledonne-communications/log \
&& touch account-manager.log
&& chown www-data:www-data account-manager.log
flexisip-account-managerのダウンロード
git cloneコマンドによりダウンロードします。
以下srcフォルダとconfフォルダの中身をdocker-composeファイルで設定した共有フォルダ
flexisip-account-manager と etc へコピーします。
php-fpmコンテナの設定
php-fpmコンテナ内にbashコマンドで移動し、xmlrpcサーバに必要なパッケージ、機能拡張をインストールします。インストール後、再起動します。
$ docker exec -ti php-fpm bash
# apk add libxml2-dev
# docker-php-ext-install xmlrpc
# exit
php-fpmの再起動
$ docker container restart php-fpm
nginxコンテナの設定(/etc/nginx/conf.d/default.conf)
nginxコンテナ内でサブディレクトリflexisip-account-managerの追加・設定をします。
$ docker exec -ti nginx bash
# nano /etc/nginx/conf.d/default.conf
location ^~ /flexisip-account-manager {
alias /var/www/html/flexisip-account-manager/xmlrpc;
try_files $uri $uri/ @flexisip-account-manager;
location ~ \.php$ {
fastcgi_split_path_info ^\/flexisip-account-manager\/(.+\.php)(.*)$;
fastcgi_param HTTPS 'on';
fastcgi_pass php-fpm:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
location @flexisip-account-manager {
rewrite /flexisip-account-manager/(.*)$ /flexisip-account-manager/xmlrpc.php;
}
設定のリロード
# nginx -s reload
アカウントデータテーブルの作成
事前に
/etc/flexisip-account-manager/db.conf
/var/www/html/flexisip-account-manager/database/database.php
内でデータベース、ユーザ名、パスワードを設定して下さい。
db.conf
define("DB_HOST", "mariadb-flexisip");
define("DB_USER", "flexisip");
define("DB_PASSWORD", "your_password");
define("DB_NAME", "flexisip");
database.php
"mysql:host=flexisip-mariadb;dbname=flexisip"
php-fpmコンテナ内で以下phpスクリプトを実行してアカウント用テーブルを作成します。
$ docker exec -ti php-fpm bash
# php /var/www/html/flexisip-account-manager/tools/create_tables.php
xmlrpcサーバ、プロビジョニングの動作については現在検証中。