====== API Личного Кабинета ====== [[https://documenter.getpostman.com/view/5969645/TVCfXTtK|Протокол API]] ===== Минимальные требования ===== * 1 CPU * 2 ядра * 2 ГБ ОЗУ * OS: Centos 8 / Debian 11 ===== Установка ===== - Установка nginx и php - Загрузка Ioncube Loader - Подключение Ioncube Loader к php-cli - Подключение Ioncube Loader к php-fpm - Установка API Кабинета - Хост nginx - Определение путь к сокету php-fpm - Создание пользователя MySQL - Файл конфига API - Обновления API - Активация платной версии ==== Установка nginx и php ==== * [[#tab-centos|Centos]] * [[#tab-debian|Debian]] 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 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 ==== Загрузка Ioncube Loader ==== Создадим директорию для Ioncube Loader и перейдем в неё: mkdir -p /usr/local/ioncube && cd /usr/local/ioncube \\ Можете скачать Ioncube Loader из [[https://www.ioncube.com/loaders.php|офф. сайта]] для вашей версии php. \\ Либо загрузить из нашего сервера обновлений: Определить версию php можно выполнив команду: php -v * [[#tab-one|PHP 7.2]] * [[#tab-two|PHP 7.3]] * [[#tab-three|PHP 7.4]] 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 7.4! \\ Проверяем что 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 (c) 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 (c) 2002-2020, by ionCube Ltd.** говорит о том, что Ioncube Loader загрузился нормально. \\ Теперь перезапустите php-fpm: service php7.4-fpm.service restart Название сервиса можно определить выполнив: find /etc/systemd -iname "php*fpm*" ==== Установка API Кабинета ==== Скачать скрипт обновления в /var/mikbill/updates/cabinetapi Скрипт обновления один для обеих версий (платная и бесплатная) [[http://free.update.2x.mikbill.pro/cabinetapi_update.sh|Скрипт обновления]]:\\ 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** ==== Хост nginx ==== Создадим файл **/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; } } Не забудьте поменять x.x.x.x на IP адрес своего сервера или доменное имя! Так же обратить внимание на путь к сокету php-fpm в строке "fastcgi_pass unix:/var/run/php-worker-socket;" === Как определить путь к сокету 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;** ===== Пользователь mysql ===== Пользователя можно использовать от внешнего ЛК или создать аналогичного пользователя. \\ [[billing/external/backend_cabinet]] ==== Файл конфигурации ==== Создайте файл конфигурации по пути **/var/mikbill/prod/config/stat.xml** \\ Содержимое файла: MySQL_IP_ADDRESS MySQL_USER MySQL_PASSWORD mikbill false Europe/Kiev false /var/log/mikbill/cabinetapi/error.log /var/log/mikbill/cabinetapi/debug.log ===== Авто-обновления ===== Добавьте в **/etc/crontab** запуск скрипта обновления каждый день в 6:00: 00 06 * * * root /var/mikbill/updates/cabinetapi/cabinetapi_update.sh После изменений необходимо перезапустить службу cron ===== Ключи скрипта обновления ===== Скрипт обновления один для обеих версий (платная и бесплатная), для активации платной версии выполните действия ниже Имеет дополнительные параметры: * **-f** - принудительное переобновление * **-t** - установка пре-релиз версии ===== Активация платной версии ===== Для активации лицензии, IP адрес сервера должен быть прописан в лицензии на наших серверах. По этому перед активацией сообщите IP адрес сервера нашему менеджеру Создать директорию /var/mikbill/license и поместить туда файлы лицензии биллинга (serv.crt и client.key) mkdir -p /var/mikbill/license После чего запустить обновление повторно с ключом принудительного (force) обновления cd /var/mikbill/updates/cabinetapi ./cabinetapi_update.sh -f