Установка системных компонент¶
В этом разделе описана установка необходимых для ERP компонент, таких как СУБД, брокер сообщений, PHP и другие.
Установка¶
Для работы Cubalink ERP нужно установить следующие компоненты:
PostgreSQL + PostGIS
RabbitMQ + WebSTOMP + Management
PHP 8.3 с расширениями ctype, gd, json, libxml, mbstring, openssl, pdo, pdo_pgsql, posix, simplexml, snmp, sockets, zlib, pcntl
Redis
Python 3.11 + venv + pip + dev
Supervisor
NGINX или другой WEB-сервер
Важно
Пожалуйста, используйте только актульные поддерживаемые версии операционных систем, например, Debian 12 bookworm, чтобы не возникло проблем с установкой или обновлениями компонент. Некоторые компоненты не могут быть установлены на операционные системы, для которых закончилась поддержка.
PostgreSQL¶
Инструкции по установке под вашу операционную систему доступны на официальном сайте.
Рекомендуется явно устанавливать версию 16. Не забудьте про расширение PostGIS-3.
sudo apt install -y postgresql-16 postgresql-16-postgis-3
После установки желательно выполнить настройку Postgres для достижения максимальной производительности.
RabbitMQ¶
Инструкции по установки под вашу операционную систему доступны на официальном сайте.
После установки Erlang и RabbitMQ вам нужно будет активировать плагины: rabbitmq_management и rabbitmq_web_stomp.
sudo rabbitmq-plugins enable rabbitmq_management --offline
и
sudo rabbitmq-plugins enable rabbitmq_web_stomp --offline
PHP¶
PHP необходим версии 8.3. Другие версии не поддерживаются. Необходимо установить php и требуемый набор расширений. Если вы планируете использовать WEB-сервер NGINX, то установите расширение php-fpm, как показано далее; если Apache2, то php-fpm устанавливать не нужно, вместо этого установите apache2-php.
sudo apt install -y php8.3-{fpm,cli,common,curl,intl,mbstring,opcache,pgsql,readline,xml,zip,snmp,gd}
Redis¶
Инструкции по установке под вашу операционную систему доступны на официальном сайте.
Python¶
Подходит Python 3.9 и новее. Например, Debian 12 содерит версию Python 3.11. Если у вас версия Python ниже 3.9, то вам нужно обновить Python.
В любом случае вам нужно установить следующие дополнительные компоненты:
venv
pip
На Debian12 это делается следующим образом:
sudo apt install -y python3-venv python3-pip python3-dev
Supervisor¶
Supervisor является пакетом Python. Установите supervisor одним из подходящих способов, описанных на официальном сайте.
Для Debian также существует системный пакет, который можно установить используя apt.
Nginx¶
Инструкции по установке под вашу операционную систему доступны на официальном сайте.
Настройка¶
Следующие настройки вам пригодятся дальше при установке ERP, поэтому запишите создаваемые имена пользователей, их пароли, названия базы данных и т.д.
База данных Postgresql¶
Создать пользвателя базы данных, базу данных и активировать расширение PostGIS в ней.
Вместо имя_пользователя
укажите имя создаваемого пользователя.
После выоплнения первой команды нужно будет дважды ввести пароль создаваемого пользователя.
sudo -u postgres createuser имя_пользователя -P
sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O имя_пользователя -T template0 cubalink
sudo -u postgres psql -d cubalink -c "CREATE EXTENSION postgis"
RabbitMQ¶
Создайте файл /etc/rabbitmq/rabbitmq.conf с настройками:
listeners.tcp.default = 5672
web_stomp.port = 15674
web_stomp.cowboy_opts.max_keepalive = 60
Теперь нужно создать пользователя с полными правами для ERP и еще одного пользователя с ограниченными правами для WebSocket.
Вместо имя_пользователя
(имя_websocket_пользователя
) и пароль_пользователя
(пароль_websocket_пользователя
) укажите соответственно имя и пароль создаваемого пользователя.
Основной пользотватель:
sudo rabbitmqctl add_user имя_пользователя пароль_пользователя
sudo rabbitmqctl set_user_tags имя_пользователя administrator monitoring
sudo rabbitmqctl set_permissions имя_пользователя ".*" ".*" ".*"
WebSocket пользователь:
sudo rabbitmqctl add_user имя_websocket_пользователя пароль_websocket_пользователя
sudo rabbitmqctl set_permissions имя_websocket_пользователя "^erp-stomp:id-.*" "" "^erp-stomp:id-.*"
Имя и пароль этого пользователя вам нужно будет ввести в настройках ERP после установки.
PHP¶
В файлах /etc/php/8.3/fpm/php.ini и /etc/php/8.3/fpm/fpm.ini укажите ваш часовой пояс в
date.timezone
В файле /etc/php/8.3/fpm/php.ini для параметра
cgi.fix_pathinfo
установите значение0
В файле /etc/php/8.3/fpm/php.ini для значений
post_max_size
иupload_max_filesize
установите значения100M
В файле /etc/php/8.3/fpm/php.ini для значения
max_execution_time
установите300
В файле /etc/php/8.3/fpm/pool.d/www.conf для значения
request_terminate_timeout
установите300
В файле /etc/php/8.3/fpm/pool.d/www.conf настройте ProcessManager следующим образом:
pm.max_children = 75
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.start_servers = 8
Redis¶
Вы можете дополнительно настроить пароль, но в этом нет необходимости, если вы будете использовать Redis изолированно на том же сервере. Пароль настраивается в файле /etc/redis/redis.conf в параметре requirepass
.
Nginx¶
В конфигурационном файле /etc/nginx/nginx.conf измените значение для user
на:
user www-data www-data;
Удалите файл /etc/nginx/conf.d/default.conf и вместо него создайте новый файл со следующим содержимым (вместо erp.mycompany.com
укажите ваше доменное имя):
server {
listen 80 default_server;
server_name erp.mycompany.com;
charset utf-8;
client_max_body_size 100M;
access_log /var/log/nginx/erp-access.log;
error_log /var/log/nginx/erp-error.log;
root /var/www/erp/public;
index index.php;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
include fastcgi_params;
}
location /ws {
proxy_pass http://127.0.0.1:15674/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
location ~ /\.ht { deny all; }
}
Перезапуск¶
Перезапустите операционную систему целиком или все настраиваемые службы:
sudo systemctl restart rabbitmq-server
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx
sudo systemctl restart redis