Показать страницуСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== 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 ==== <tabs> * [[#tab-centos|Centos]] * [[#tab-debian|Debian]] <pane id="tab-centos"> <code> 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 </code> </pane> <pane id="tab-debian"> <code> 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 </code> </pane> </tabs> ==== Загрузка Ioncube Loader ==== Создадим директорию для Ioncube Loader и перейдем в неё: <code> mkdir -p /usr/local/ioncube && cd /usr/local/ioncube </code> \\ Можете скачать Ioncube Loader из [[https://www.ioncube.com/loaders.php|офф. сайта]] для вашей версии php. \\ Либо загрузить из нашего сервера обновлений: <callout type="info" icon="true"> Определить версию php можно выполнив команду: php -v </callout> <tabs> * [[#tab-one|PHP 7.2]] * [[#tab-two|PHP 7.3]] * [[#tab-three|PHP 7.4]] <pane id="tab-one"> <code> 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 </code> </pane> <pane id="tab-two"> <code> 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 </code> </pane> <pane id="tab-three"> <code> 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 </code> </pane> </tabs> === Подключение Ioncube Loader к php-cli === \\ Далее нужно подключить Ioncube Loader к php-cli, для этого нужно создать ini файл. \\ Что бы определить директорию где нужно создавать файл, выполним команду: <code> php -i | grep "Scan this dir for additional .ini files" </code> \\ Результатом будет **/etc/php/7.4/cli/conf.d**: <code> 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 </code> \\ Создадим в этой директории файл 05-ioncube.ini: <code> 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 </code> <alert type="warning" dismiss="true">Обратите внимание что в примере используется Ioncube Loader для php 7.4!</alert> \\ Проверяем что Ioncube Loader загрузился в php, выполним **php -v**: <code> 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 </code> \\ Строка **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, выполним: <code> find /usr/sbin -iname php*fpm* </code> Результатом будет: <code> /usr/sbin/php-fpm7.4 </code> \\ Что бы определить директорию где нужно создавать файл, выполним команду: <code> /usr/sbin/php-fpm7.4 -i | grep "Scan this dir for additional .ini files" </code> \\ Результатом будет **/etc/php/7.4/fpm/conf.d**: <code> 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 </code> \\ Создадим симлинк ранее подключенного файла из php-cli <code> ln -s /etc/php/7.4/cli/conf.d/05-ioncube.ini /etc/php/7.4/fpm/conf.d/05-ioncube.ini </code> \\ Проверяем что Ioncube Loader загрузился в php, выполним **/usr/sbin/php-fpm7.4 -v**: <code> 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 </code> \\ Строка **with the ionCube PHP Loader + ionCube24 v10.4.5, Copyright (c) 2002-2020, by ionCube Ltd.** говорит о том, что Ioncube Loader загрузился нормально. \\ Теперь перезапустите php-fpm: <code> service php7.4-fpm.service restart </code> Название сервиса можно определить выполнив: <code> find /etc/systemd -iname "php*fpm*" </code> ==== Установка API Кабинета ==== Скачать скрипт обновления в /var/mikbill/updates/cabinetapi <alert type="alert" dismiss="true" icon="fa fa-alert"> Скрипт обновления один для обеих версий (платная и бесплатная) </alert> [[http://free.update.2x.mikbill.pro/cabinetapi_update.sh|Скрипт обновления]]:\\ <code> mkdir -p /var/mikbill/updates/cabinetapi cd /var/mikbill/updates/cabinetapi wget http://free.update.2x.mikbill.pro/cabinetapi_update.sh </code> Дать ему права запуска и запустить: <code> chmod +x cabinetapi_update.sh ./cabinetapi_update.sh </code> В результате будут созданы все необходимые директории а файл API кабинета будет установлен по пути **/var/www/cabinetapi/index.php** ==== Хост nginx ==== Создадим файл **/etc/nginx/conf.d/cabinetapi_host.conf** с содержимым: <code> 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; } } </code> <alert type="alert" dismiss="true" icon="fa fa-alert"> Не забудьте поменять x.x.x.x на IP адрес своего сервера или доменное имя! </alert> <alert type="danger"> Так же обратить внимание на путь к сокету php-fpm в строке "fastcgi_pass unix:/var/run/php-worker-socket;" </alert> === Как определить путь к сокету php-fpm === Найдем файл конфига пула php-fpm по умолчанию: <code> find /etc/php/ -iname www.conf </code> \\ Результатом будем путь к файлу, пример: **/etc/php/7.4/fpm/pool.d/www.conf** \\ Теперь найдем путь к сокету в этом файле, выполним: <code> cat /etc/php/7.4/fpm/pool.d/www.conf | grep "listen =" </code> \\ Результатом будет путь к сокету, пример: **/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** \\ Содержимое файла: <code> <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> </code> ===== Авто-обновления ===== Добавьте в **/etc/crontab** запуск скрипта обновления каждый день в 6:00: <code> 00 06 * * * root /var/mikbill/updates/cabinetapi/cabinetapi_update.sh </code> <alert type="info">После изменений необходимо перезапустить службу cron</alert> ===== Ключи скрипта обновления ===== <alert type="alert" dismiss="true" icon="fa fa-alert"> Скрипт обновления один для обеих версий (платная и бесплатная), для активации платной версии выполните действия ниже </alert> Имеет дополнительные параметры: * **-f** - принудительное переобновление * **-t** - установка пре-релиз версии ===== Активация платной версии ===== <alert type="warning" dismiss="true">Для активации лицензии, IP адрес сервера должен быть прописан в лицензии на наших серверах. По этому перед активацией сообщите IP адрес сервера нашему менеджеру</alert> Создать директорию /var/mikbill/license и поместить туда файлы лицензии биллинга (serv.crt и client.key) <code> mkdir -p /var/mikbill/license </code> После чего запустить обновление повторно с ключом принудительного (force) обновления <code> cd /var/mikbill/updates/cabinetapi ./cabinetapi_update.sh -f </code> billing/external/api_cabinet.txt Последнее изменение: 14 мес. назад — alexd