API Личного Кабинета
Минимальные требования
- 1 CPU
- 2 ядра
- 2 ГБ ОЗУ
- OS: Centos 8 / Debian 12
Установка
- Установка nginx и php
- Загрузка Ioncube Loader
- Подключение Ioncube Loader к php-cli
- Подключение Ioncube Loader к php-fpm
- Установка API Кабинета
- Хост nginx
- Определение путь к сокету php-fpm
- Создание пользователя MySQL
- Файл конфига API
- Обновления API
- Активация платной версии
Установка nginx и php
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
Создадим директорию для Ioncube Loader и перейдем в неё:
mkdir -p /usr/local/ioncube && cd /usr/local/ioncube
Можете скачать Ioncube Loader из офф. сайта для вашей версии php.
Либо загрузить из нашего сервера обновлений:
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*"
Установка API Кабинета
Скачать скрипт обновления в /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
Хост 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; } }
Как определить путь к сокету 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
Пользователя можно использовать от внешнего ЛК или создать аналогичного пользователя.
Кабинет на отдельном сервере
Файл конфигурации
Создайте файл конфигурации по пути /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