Інструкція по розгортанню K2 ERP PHP
K2 ERP PHP — це система класу ERP, що розгортається у вебсередовищі на базі PHP, Nginx та Linux. Система може бути встановлена з наявних програмних кодів і використовується для автоматизації бізнес-процесів підприємства.
Призначення
K2 ERP PHP призначена для роботи як вебзастосунок, що виконується на сервері з підтримкою PHP. Розгортання системи передбачає підготовку серверного середовища, налаштування вебсервера, встановлення необхідних модулів PHP, підключення програмного коду з репозиторію та перевірку працездатності системи.
Системне середовище
Для розгортання K2 ERP PHP можуть використовуватися операційні системи сімейства Linux, зокрема:
Основними компонентами серверного середовища є:
- PHP;
- PHP-FPM;
- Nginx;
- Git;
- база даних, сумісна з PHP-модулями системи;
- інструменти для адміністрування та розробки.
Підготовка середовища розробника
Перед розгортанням системи можуть бути встановлені допоміжні програми для роботи з файлами, кодом, базами даних і віддаленими серверами.
Приклади корисних інструментів:
- Midnight Commander;
- htop;
- PuTTY;
- FileZilla;
- Git;
- SSH;
- Krusader;
- KDiff3;
- Kompare;
- DBeaver;
- Visual Studio Code;
- PhpStorm.
Для оновлення системи та встановлення базових інструментів можуть використовуватися команди:
sudo -s apt update apt upgrade
apt install mc htop putty filezilla git ssh
PHP
На різних серверах можуть використовуватися різні версії PHP. Для первинного налаштування проєкту рекомендується використовувати ту саму версію PHP, яка встановлена на робочому сервері.
Щоб перевірити поточну версію PHP, використовується команда:
php -v
Встановлення репозиторію PHP
Для встановлення різних версій PHP може використовуватися репозиторій Ondřej Surý:
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update
Встановлення версій PHP
Приклади встановлення PHP 7.4 та PHP 8.1:
sudo apt-get install php7.4 php7.4-cli php7.4-fpm sudo apt-get install php8.1 php8.1-cli php8.1-fpm
Перевірка встановлених версій:
php7.4 -v php8.1 -v
Перемикання між версіями PHP
Для перемикання між версіями PHP використовується механізм `update-alternatives`:
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74 sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81
sudo update-alternatives --config php
Необхідні модулі PHP
Для роботи системи можуть знадобитися такі PHP-модулі:
- mysql;
- xml;
- curl;
- gd;
- mbstring;
- zip;
- soap;
- intl.
Приклад встановлення модулів для PHP 8.1:
sudo apt install php8.1-fpm php8.1-cli php8.1-mysql php8.1-xml php8.1-curl php8.1-gd php8.1-mbstring php8.1-zip php8.1-soap php8.1-intl
Приклад встановлення модулів для PHP 7.4:
sudo apt install php7.4-fpm php7.4-cli php7.4-mysql php7.4-xml php7.4-curl php7.4-gd php7.4-mbstring php7.4-zip php7.4-soap php7.4-intl
Nginx
Для обслуговування вебзастосунку використовується вебсервер Nginx.
Встановлення та запуск Nginx:
apt install nginx sudo systemctl start nginx sudo systemctl enable nginx
Приклад конфігурації Nginx
Нижче наведено приклад конфігурації віртуального хоста Nginx для PHP-проєкту:
server {
listen 80;
server_name localhost;
root /mnt/prog/p/proj/php/real/clicktransfert.com/www;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 24h;
log_not_found off;
}
rewrite /files/$ /index.php last;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param PHP_VALUE "display_errors=on";
fastcgi_param PHP_VALUE "display_startup_errors=on";
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f rs@corp2.net";
}
}
У параметрі `fastcgi_pass` необхідно вказати сокет тієї версії PHP-FPM, яка використовується проєктом. Наприклад:
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
або:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
Налагодження
Для налагодження PHP-застосунку може використовуватися Xdebug.
Перевірка наявності Xdebug:
php -m | grep xdebug
Встановлення Xdebug через пакетний менеджер:
sudo apt-get install php-xdebug
Альтернативне встановлення через PECL:
pecl install xdebug
Приклад налаштування Xdebug
Налаштування додаються до відповідного файлу `php.ini`, наприклад:
- `/etc/php/7.x/cli/php.ini`;
- `/etc/php/7.x/apache2/php.ini`;
- `/etc/php/7.x/fpm/php.ini`.
Приклад конфігурації:
[xdebug] zend_extension=xdebug.so xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_host=127.0.0.1 xdebug.client_port=9003
Середовище розробки
Для роботи з кодом системи можуть використовуватися різні IDE та редактори коду.
Одним із професійних середовищ для PHP-розробки є PhpStorm. Також може використовуватися безкоштовний і кросплатформний редактор Visual Studio Code.
Завантаження програмного коду
Програмний код системи може бути отриманий із Git-репозиторію. Для цього проєкт клонують у робочу директорію вебсервера, наприклад у папку `www` або `k2shop`, залежно від структури репозиторію.
Перед клонуванням нового коду стару папку проєкту рекомендується перейменувати або зберегти як резервну копію.
Приклад загальної команди:
git clone <repository-url> www
Після клонування у робочій папці мають з’явитися ті самі каталоги та файли, що були в попередній версії системи, але з оновленим кодом.
Перевірка після оновлення
Після завантаження або оновлення коду з Git необхідно перевірити, що система працює так само, як і до оновлення.
Рекомендовано перевірити:
- відкриття головної сторінки системи;
- роботу PHP-FPM;
- коректність конфігурації Nginx;
- доступність статичних файлів;
- підключення до бази даних;
- роботу основних модулів системи;
- наявність помилок у логах.
Робота з Git
Під час подальшої розробки необхідно дотримуватися стандартного циклу роботи з Git:
- отримання актуальних змін через `pull`;
- внесення змін у код;
- перевірка працездатності;
- фіксація змін через `commit`;
- відправка змін у репозиторій через `push`;
- додавання змістовних коментарів до комітів.