billing:external:api_cabinet

API Личного Кабинета

  • 1 CPU
  • 2 ядра
  • 2 ГБ ОЗУ
  • OS: Centos 8 / Debian 12
  1. Установка nginx и php
  2. Загрузка Ioncube Loader
    1. Подключение Ioncube Loader к php-cli
    2. Подключение Ioncube Loader к php-fpm
  3. Установка API Кабинета
  4. Хост nginx
    1. Определение путь к сокету php-fpm
  5. Создание пользователя MySQL
  6. Файл конфига API
  7. Обновления API
  8. Активация платной версии
yum install nginx php php-fpm php-bcmath php-cli php-common php-gd php-curl php-imap php-mbstring php-mysql php-pdo php-pspell php-snmp php-soap php-xml php-xmlrpc php-pear
apt-get install -y apt-transport-https lsb-release ca-certificates wget 
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list 
apt-get update

apt-get install nginx php7.4 php7.4-fpm php7.4-bcmath php7.4-cli php7.4-common php7.4-gd php7.4-curl php7.4-imap php7.4-mbstring php7.4-mysql php7.4-pdo php7.4-pspell php7.4-snmp php7.4-soap php7.4-xml php7.4-xmlrpc php7.4-pear

Создадим директорию для Ioncube Loader и перейдем в неё:

mkdir -p /usr/local/ioncube && cd /usr/local/ioncube


Можете скачать Ioncube Loader из офф. сайта для вашей версии php.
Либо загрузить из нашего сервера обновлений:

Определить версию php можно выполнив команду: php -v
wget http://setup.2x.mikbill.pro/setup/roles/ioncube/files/ioncube_loader_lin_7.2.so
wget http://setup.2x.mikbill.pro/setup/roles/ioncube/files/ioncube_loader_lin_7.2_ts.so
wget http://setup.2x.mikbill.pro/setup/roles/ioncube/files/ioncube_loader_lin_7.3.so
wget http://setup.2x.mikbill.pro/setup/roles/ioncube/files/ioncube_loader_lin_7.3_ts.so
wget http://setup.2x.mikbill.pro/setup/roles/ioncube/files/ioncube_loader_lin_7.4.so
wget http://setup.2x.mikbill.pro/setup/roles/ioncube/files/ioncube_loader_lin_7.4_ts.so

Подключение Ioncube Loader к php-cli


Далее нужно подключить Ioncube Loader к php-cli, для этого нужно создать ini файл.
Что бы определить директорию где нужно создавать файл, выполним команду:

php -i | grep "Scan this dir for additional .ini files"


Результатом будет /etc/php/7.4/cli/conf.d:

root@api-test:/usr/local/ioncube# php -i | grep "Scan this dir for additional .ini files"
Scan this dir for additional .ini files => /etc/php/7.4/cli/conf.d


Создадим в этой директории файл 05-ioncube.ini:

cat > /etc/php/7.4/cli/conf.d/05-ioncube.ini << EOF
[Zend]
zend_extension = /usr/local/ioncube/ioncube_loader_lin_7.4.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_7.4_ts.so
EOF


Проверяем что Ioncube Loader загрузился в php, выполним php -v:

root@api-test:/usr/local/ioncube# php -v
PHP 7.4.21 (cli) (built: Jul  2 2021 03:59:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with the ionCube PHP Loader + ionCube24 v10.4.5, Copyright (c) 2002-2020, by ionCube Ltd.
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies


Строка with the ionCube PHP Loader + ionCube24 v10.4.5, Copyright © 2002-2020, by ionCube Ltd. говорит о том, что Ioncube Loader загрузился нормально.

Подключение Ioncube Loader к php-fpm


Далее нужно подключить Ioncube Loader к php-fpm, для этого нужно создать ini файл.
Для начала определим путь к команде php-fpm, выполним:

find /usr/sbin -iname php*fpm*

Результатом будет:

/usr/sbin/php-fpm7.4


Что бы определить директорию где нужно создавать файл, выполним команду:

/usr/sbin/php-fpm7.4 -i | grep "Scan this dir for additional .ini files"


Результатом будет /etc/php/7.4/fpm/conf.d:

root@api-test:~# /usr/sbin/php-fpm7.4 -i | grep "Scan this dir for additional .ini files"
Scan this dir for additional .ini files => /etc/php/7.4/fpm/conf.d


Создадим симлинк ранее подключенного файла из php-cli

ln -s /etc/php/7.4/cli/conf.d/05-ioncube.ini /etc/php/7.4/fpm/conf.d/05-ioncube.ini


Проверяем что Ioncube Loader загрузился в php, выполним /usr/sbin/php-fpm7.4 -v:

root@api-test:/usr/local/ioncube# /usr/sbin/php-fpm7.4 -v
PHP 7.4.21 (fpm-fcgi) (built: Jul  2 2021 03:59:48)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with the ionCube PHP Loader + ionCube24 v10.4.5, Copyright (c) 2002-2020, by ionCube Ltd.
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies


Строка with the ionCube PHP Loader + ionCube24 v10.4.5, Copyright © 2002-2020, by ionCube Ltd. говорит о том, что Ioncube Loader загрузился нормально.


Теперь перезапустите php-fpm:

service php7.4-fpm.service restart

Название сервиса можно определить выполнив:

find /etc/systemd -iname "php*fpm*"

Скачать скрипт обновления в /var/mikbill/updates/cabinetapi

Скрипт обновления:

mkdir -p /var/mikbill/updates/cabinetapi
cd /var/mikbill/updates/cabinetapi
wget http://free.update.2x.mikbill.pro/cabinetapi_update.sh

Дать ему права запуска и запустить:

chmod +x cabinetapi_update.sh
./cabinetapi_update.sh

В результате будут созданы все необходимые директории а файл API кабинета будет установлен по пути /var/www/cabinetapi/index.php

Создадим файл /etc/nginx/conf.d/cabinetapi_host.conf с содержимым:

server {
    listen *:80;
    server_name x.x.x.x;

    access_log /var/log/nginx/cabinetapi_access.log;
    error_log /var/log/nginx/cabinetapi_error.log;
    root /var/www/cabinetapi;

    index index.php;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location = /index.php {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  unix:/var/run/php-worker-socket;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/cabinetapi/index.php;
    }

    # deny other root request
    location ~ ^/(.*)\.(php|php5)$ {
        deny all;
    }

    # deny non root request
    location ~* ^/(.*)/.*\.(xml|sh|php|php5|phtml|log|sql|txt|html)$ {
        deny all;
    }
}

Как определить путь к сокету php-fpm

Найдем файл конфига пула php-fpm по умолчанию:

find /etc/php/ -iname www.conf


Результатом будем путь к файлу, пример: /etc/php/7.4/fpm/pool.d/www.conf
Теперь найдем путь к сокету в этом файле, выполним:

cat /etc/php/7.4/fpm/pool.d/www.conf | grep "listen ="


Результатом будет путь к сокету, пример: /run/php/php7.4-fpm.sock
В конфигурации хоста nginx нужно указать fastcgi_pass unix:/run/php/php7.4-fpm.sock;

Пользователя можно использовать от внешнего ЛК или создать аналогичного пользователя.
Кабинет на отдельном сервере

Создайте файл конфигурации по пути /var/mikbill/prod/config/stat.xml
Содержимое файла:

<config>
    <parameters>
        <mysql>
            <host>MySQL_IP_ADDRESS</host>
            <username>MySQL_USER</username>
            <password>MySQL_PASSWORD</password>
            <dbname>mikbill</dbname>
        </mysql>
        <mbdebug>false</mbdebug>
        <timezone>Europe/Kiev</timezone>
        <partialUTF8>false</partialUTF8>
        <error_log>/var/log/mikbill/cabinetapi/error.log</error_log>
        <debug_log>/var/log/mikbill/cabinetapi/debug.log</debug_log>
    </parameters>
</config>

Добавьте в /etc/crontab запуск скрипта обновления каждый день в 6:00:

00 06 * * *	root 	/var/mikbill/updates/cabinetapi/cabinetapi_update.sh

Имеет дополнительные параметры:

  • -f - принудительное переобновление
  • -t - установка пре-релиз версии

Создать директорию /var/mikbill/license и поместить туда файлы лицензии биллинга (serv.crt и client.key)

mkdir -p /var/mikbill/license

После чего запустить обновление повторно с ключом принудительного (force) обновления

cd /var/mikbill/updates/cabinetapi
./cabinetapi_update.sh -f
  • billing/external/api_cabinet.txt
  • Последнее изменение: 2 мес. назад
  • alexd