- Table of contents
- ERP USERSIDE Docker Bundle v3.18.2 (EN)
- About the project
- Installation
- Updating
- Exploitation
- Fine-tuning
- Using additional USERSIDE modules
- Using multiple bundles on one server
- Additions and corrections
- ERP USERSIDE Docker Bundle v3.18.2 (RU)
- Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
- ΠΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ
- Π’ΠΎΠ½ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ USERSIDE
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±Π°Π½Π΄Π»ΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅
- ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
This project is a sample set of configuration files and scripts to run the Docker bundle of the ERP USERSIDE system. All the images required for ERP USERSIDE are already built with all the necessary dependencies and settings and are located in Docker HUB. You can build your own bundle from these samples using Docker [Compose] (https://docs.docker.com/compose/) or using other orchestration tools of your choice. You can also use the samples as is and get a working ERP USERSIDE system without any further steps. We fully rely on your understanding of containerisation in Linux, Docker, Docker Compose, Swarm and the other systems you intend to use.
These samples of the Docker environment are distributed "as is" without warranty of any kind. We also do not provide technical support for the installation, configuration and maintenance of Docker and related tools. If you are not familiar with Docker, you should use the classic installation example of ERP USERSIDE on a Linux server. For example, on a virtual machine with Linux.
Within these instructions, the version of the Docker bundle that corresponds to the minimum USERSIDE version capable of running on that version of the bundle is used. For example, on Docker-bundle version 3.13 USERSIDE versions 3.13, 3.14, 3.15 may work, on Docker-bundle version 3.16 USERSIDE 3.16, 3.17 USERSIDE may work, and on Docker-bundle version 3.18 USERSIDE 3.18, 3.19 etc., until a new version of the bundle for some new USERSIDE version becomes available.
Do not confuse the Docker bundle version with the USERSIDE version.
Most of the complex commands in the form of functions and aliases are placed in the bundle.bash file, which must be plugged into a shell session before starting the bundle.
We recommend proxying HTTP requests to the bundle using an NGINX-based reverse proxy - this will allow you to use domain name based access as well as SSL and other features that are not available when using the bundle directly (such as IP address based access rights restriction). But you can use Userside in a Docker bundle without it. If you decide to use a reverse proxy, it would be more correct to configure it before installing Userside. Recommendations on how to configure it can be found at the bottom of the article in the section "Reverse HTTP proxy".
- Allocate the domain name for ERP USERSIDE and create the necessary entries on the DNS server or in the /etc/hosts file on the current server, check that the name resolves to the IP address correctly.
- Following the instructions, download and install Docker server and plug-in Compose. If your operating system has Docker-IO installed from operating system packages, it must be removed in advance.
- Create a directory to contain the bundle and navigate to it. For example:
sudo mkdir -p /docker && cd $_
- Clone this repository into the userside subdirectory and navigate to it:
sudo git clone --depth 1 --branch=v3.18 https://github.com/userside/userside-docker.git userside && cd userside
- Run the initialise bundle config command - this will create copies of the samples with working filenames. You now have the files .env, compose.yaml, bundle.bash.
sudo ./init.sh
- Edit the .env file with
sudo nano .env
- specify all variable values in it ( bundle file deployment path, project name and locale, logins and passwords for services, etc.) - Optionally, only if needed, make changes to compose.yaml and, if really necessary, to bundle.bash. For example, in compose.yaml file, you can include alternative files php.ini and www.conf from configs directory by uncommenting the appropriate lines, and then copying files from applications (in config directory) and editing them as necessary. Alternatively, change the IP subnet address allocated to the bundle. If you have changed the default bundle subnet address, you will also need to change the host addresses for each ports list parameter in each service. The host address is the first subnet address. In addition, you also need to change the value of the
DOCKER_HOST_IP
variable in bundle.bash, specifying the same host IP address there. - Connect functions and aliases from bundle.bash to the current session:
source bundle.bash
- Run the bundle and ERP USERSIDE installation with the following command and follow the instructions:
bundle-install
- Create a WebSTOMP user to run websocket in one of the following ways. The password doesn't have to be too complex, but it doesn't have to be the same as any of your passwords, as they are transmitted in plaintext to the Frontend application:
- Alternatively, use RabbitMQ control panel. To do this open in a browser http://your.userside.net:15672 (change the domain to the one that is used for ERP USERSIDE, username and password as you specified in .env file for variables RABBITMQ_DEFAULT_USER and RABBITMQ_DEFAULT_PASS), go to tab Admin, at the bottom in section Add a user as a user name, for example, stompuser and set the password. Leave the tagged field blank. Then click Add user. Now above in section All users, click on the user you just created to open its settings. Under Permissions for Configure regexp and for Read regexp, specify
^userside-stomp:id-.*
and for Write regexp, delete the value leaving the field blank. Click the Set permission button. - Or by running the command and following the instructions:
rabbitmq-create-stomp-user
- Alternatively, use RabbitMQ control panel. To do this open in a browser http://your.userside.net:15672 (change the domain to the one that is used for ERP USERSIDE, username and password as you specified in .env file for variables RABBITMQ_DEFAULT_USER and RABBITMQ_DEFAULT_PASS), go to tab Admin, at the bottom in section Add a user as a user name, for example, stompuser and set the password. Leave the tagged field blank. Then click Add user. Now above in section All users, click on the user you just created to open its settings. Under Permissions for Configure regexp and for Read regexp, specify
The WebSTOMP user name and password are specified in USERSIDE in the menu: Settings - Main - Websocket. If you are using a reverse proxy before the bundle, don't forget about location
for /ws
(more details below in the section on reverse proxy).
No further steps are required to update ERP USERSIDE within the 3.16 and 3.18 versions (e.g. from 3.16.4 to 3.16.7 or from 3.18.1 to 3.18.3). Run the command and follow the instructions:
bundle-update
Before upgrading something, back up the files as usual and then must back up the database to an SQL script - it will be required later:
source alias.bash
backup-make
mkdir -p ~/bundle_316
sudo sh -c "docker compose -p ${PROJECT_NAME} exec postgres pg_dump -U ${POSTGRES_USER} --no-acl -Fp -Z 5 ${POSTGRES_DB}" > ~/bundle_316/db_backup.sql.gz
A database backup will be created in your home directory. Make sure that the resulting database backup actually represents a SQL script and is not zero-sized. Only then proceed to the following steps.
ls -lh ~/bundle_316
Save the bundle files: .env, bundle.bash, docker-compose.yml (compose.yaml), Makefile in a secure place. Also save the cofigure files from the config subdirectory, if you changed them. Also, if any fine-tuning of PostgreSQL was done, copy data/db/postgresql.conf file. After deploying the new version of the bundle, you will need to configure the new bundle files by copying the values from these files.
sudo chmod -R +rX data/db
cp --parents {.env,bundle.bash,Makefile,docker-compose.yml,config/*,data/db/postgresql.conf} ~/bundle_316/
ls -lah ~/bundle_316
Save backups from the data/backup subdirectory in a secure location.
Stop the bundle:
bundle-stop
Before running the following command, check once again that you have copied all files, including backups! This command will stop and remove all containers, including all mounted volumes:
${DOCKER_COMPOSE} down -v --remove-orphans
Pull updates from repository:
sudo git pull
The new version 3.18 of the bundle has significant configuration differences. If you get confused while editing the configuration files, you can always start again by copying the example files and taking the values from the backed up configuration files you made earlier.
- The
USERSIDE_BASE_DIR
environment variable is now calledERP_BASE_DIR
. Change it's name. Also change the name of this variable in the compose.yaml file. - The
STOMP_USER
andSTOMP_PASSWORD
variables previously used for Makefile (abolished since 3.18) are no longer needed - they can be removed. Also be sure to check the.env
file against the example file.env-example
to ensure that all variables are written correctly and there are no missing or superfluous variables.
sudo diff .env .env-example
This file has changed a lot, so we recommend copying it again from the example file bundle.bash-example
and making the required changes if you have done so. Preferably, do not change anything in this file and use the whole file as shown in the example file.
sudo cp bundle.bash-example bundle.bash
If you have not modified the compose.yaml file (docker-compose.yml) in previous versions of the bundle, the best choice is to copy the compose.yaml file from the example:
sudo cp compose.yaml-example compose.yaml
If changes have been made, edit the compose.yaml file considering the following changes:
- The
postgres
service now uses a Docker image based on postgresql 15 (previously version 11 was used). Therefore, be sure to back up the database to a SQL script before upgrading to be able to restore to version 15. You can also remove the volumebackup:/backup
from the service - it is no longer needed as the backup job is now done on the host using the shortened commands frombundle.bash
. - The
poller
service now has its own Docker service image usm_poller (previously a php shell was used instead of a full service image). Copy the entirepoller
service from the example file. Note that since Userside 3.18, most of the communication work is done by the external service usm_poller rather than the Userside kernel itself. - For all services that use images
erpuserside/userside:3.16-xxx
change the version toerpuserside/userside:3.18-xxx
. - Change the variable name
USERSIDE_BASE_DIR
toERP_BASE_DIR
. Also check thecompose.yaml
file against the example filecompose.yaml-example
.
If you had to change the subnet for the bundle (subnet
in the networks
settings section), you also need to make sure to change the IP address in each item of the ports
list for each of the services - here you need to specify the host IP address, which is the first address from the subnet (not including the subnet address itself). For example, for the subnet 172.31.254.0/25, the IP address of the host will be 172.31.254.1. Also, in the bundle.bash file, change the value of the DOCKER_HOST_IP
variable.
As the bundle.bash
file is significantly different from the one originally loaded, before proceeding, you should ensure that these changes are reflected in the shell session as well. To do this, you will have to log out of your shell session and then log in again. Once you have done this, upload the updated file:
source bundle.bash
Now the postgres service needs to be started. First make sure that the correct locale, database name, username and password are specified in .env
and after that, run:
${DOCKER_COMPOSE} up postgres -d
When the new container is started, a new empty database will be created.
If you made any fine-tuning in the data/db/postgresql.conf file you backed up before the upgrade, restore those settings in the new file, but under no circumstances copy the old file from version 11 over the new file. They have significant differences.
In general we recommend that you use the postgresql parameter calculators to recalculate them for version 15, as they may vary considerably.
Now restore the backup to this database:
database-restore ~/bundle_316/db_backup.sql.gz
Make sure that no errors occur when restoring the database.
After restoring, check that the data is in the database, e.g. using an SQL query:
psql -At -c "SELECT (value::jsonb)->'vn' FROM key_value WHERE key='installer.release'"
The query should return information on the current version of Userside to which the database structure corresponds.
The update can be started. Run the update command and follow the instructions:
bundle-update
Once the update is complete, you will need to recreate the WebSocket user in RabbitMQ, as the global update of RabbitMQ has likely lost it. To find out the username and password that Userside is set to, go to Settings - Main - WebSocket in the Userside interface, or create a new username and password pair if required. Create a user for WebSocket in RabbitMQ by running the following command and responding to the prompt by entering the user name and password to be created.
rabbitmq-create-stomp-user
If a problem occurs during an upgrade from 3.16 to 3.18, the installer will offer to correct the error and do a repair, however this will attempt to restore the previously installed version, which will be impossible due to incompatibilities between the PHP version in the 3.18 bundle and the userside of previous versions. Especially for such cases, you can use the command:
bundle-update force
For future upgrades from 3.18.x to 3.18.y, use the erp-repair
command in case of problems.
When upgrading ERP USERSIDE to version 3.16, the Docker bundle must also be upgraded to version 3.16. The updated bundle includes a new set of containers required for background processes and a broker to manage the messages between them, which appeared in ERP USERSIDE 3.16.
- All variable values (logins, passwords, etc.) are now placed in the
.env
file. - Redis now requires a mandatory password
- Added services required for USERSIDE 3.16 (RabbitMQ, kernel worker, poller worker)
- Back up and stop the bundle:
backup-make && bundle-stop
If Makefile is used, then:
sudo make backup && sudo make stop
- If you are using the v3.13 branch instead of master, switch to the v3.16 branch (or the master branch to always get the latest stable version of the bundle):
sudo git checkout v3.16
sudo git pull
- Rename your current docker-compose.yml file so that its contents are not overwritten by the upgrade process:
sudo mv docker-compose.yml docker-compose_3-13.yml
- Delete the Makefile file if you have not made any changes to it. Otherwise rename it too.
sudo rm Makefile
- Run the initialisation command - it creates working files by copying the example template files:
sudo ./init.sh
- From docker-compose_3-13.yml file, transfer all variable values to .env. Specify in the value of
USERSIDE_BASE_DIR
full path to the directory where the bundle is deployed (the current directory). In this example it is/docker/userside
. - Since version 3.16 of the bundle, a password for Redis is mandatory. If you didn't have a password before, set it in the
REDIS_PASSWORD
variable in .env and then add to ./data/userside/.env a variableUS_REDIS_PASSWORD
with exactly the same password. - The
.env
file has variables which are responsible for the number of containers run for handler services:CORE_WORKER_NUM
andPOLLER_NUM
. By default, these are set to 10 and 5 respectively. If you need more handlers, change these numbers here. To start with we recommend leaving them as default. - Run the installation. When upgrading from version 3.13 to 3.16 of the bundle you will need to run this command, not update. In future upgrades within the 3.16 bundle you will need to use the update command.
bundle-install
If Makefile is used, then:
sudo make install
- Ensure that the upgrade to ERP USERSIDE 3.16 goes correctly.
- Delete the file docker-compose_3-13.yml - it is no longer required. If you have been saving a Makefile (step 4), transfer all your changes from it to the new Makefile and delete the old one.
sudo rm docker-compose_3-13.yml
Most of the commands used are enclosed in the bundle.bash
file as aliases or functions. To use this set of commands, connect this file to the current shell session by executing source bundle.bash
or its shortened version . bundle.bash
. You can now enter aliases and functions from this file at the command line, the meaning of which will be described below.
bundle-start
β run a Docker bundlebundle-stop
β stop all bundle containersbundle-restart
β restart the bundlebundle-install
β running environment initialisation for the bundle, then running the installer to install and then initialising tasks in the cron scheduler and other post-installation processeserp-install
β running the installer with the command installerp-repair
β running the installer with the command repairbundle-update
β performing all necessary procedures to complete the upgrading of the bundle and USERSIDE, including an initial backupbundle-destroy
β removal of Docker bundle and cron scheduler tasks. USERSIDE files are not deletedbundle-purge
β same as bundle-destroy, but also removes all USERSIDE filesbundle-logs
β display the log of the Docker containers. As a parameter you can specify the name of the specific serviceerp-flush-cache
β cleaning the userside kernel cachesbackup-make
β performing file and database backups
psql
β running the console utility psql to interact with the databaserabbitmqctl
β running the console utility rabbitmqctl to control RabbitMQerp-stability beta
β setting the stability level settings for the installer tool
The auto-deployment script installs and configures all necessary system components, including periodic backups (the job is set to the system cron). The archives are located in the data/backup subdirectory of the bundle.
If you need to perform an unplanned backup, run the command:
backup-make
A backup of the files and database will be created and placed in ./data/backup.
Starting from version 3.18 of the Docker bundle, database backups are done in a SQL script instead of Dump.
To perform a database backup, you can run a command that outputs the backup to the standard output:
database-backup > database.sql.gz
Or simply:
database-backup-to-file
In the later case, a file will be created in the data/backup subdirectory with a standard name, as with automatic backups.
To restore the database from a backup SQL script, use the command:
database-restore data/backup/userside_db_2023-04-07_16-25.sql.gz
To monitor the status of RabbitMQ broker is used module RabbitMQ management WEB-interface of which is available at http://your.userside.net:15672 (replace the domain with the one used for ERP USERSIDE, username and password as you set in .env file for variables RABBITMQ_DEFAULT_USER
and RABBITMQ_DEFAULT_PASS
).
If the background tasks are constantly running with a long delay, you should pay attention to the load of the queues (on the Queues tab) and if the queues are constantly or quite often and lasting a relatively large number of messages, you can change the number of instances of the background process running for each of them:
The erp.core queue is responsible for messages passed to the kernel handler. The number of instances of this handler can be set in the environment variable CORE_WORKER_NUM
in the .env bundle file (not useride).
The usm_poller queue is responsible for messages sent to the poller module which performs hardware communication operations. The number of poller instances can be set in the environment variable POLLER_NUM
in the .env bundle file (not useride).
If the values for these variables have changed, the bundle must be reloaded:
bundle-restart
We recommend fine-tuning the environment for maximum performance. The principles are described on our dedicated wiki page.
The settings for the Docker bundle services can be changed by using volumes. The compose.yaml file for php, fpm services has commented out volumes for files where additional fine-tuning options can be located.
Copy the php.ini-example and www.conf-example files in the config subdirectory to the php.ini and www.conf files respectively and edit them. Then uncomment the relevant volumes in the php and fpm services compose.yaml file and restart the bundle:
bundle-restart
The PostgreSQL configuration files are in the data/db subdirectory and can be edited right there. After editing, the bundle must also be restarted:
bundle-restart
The compose.yaml file contains the usm_billing service which is an implementation of the billing module. This service is added as an example and can be removed from the configuration if it is not required. If you use this module, however, you need to fill in the basic parameters in the environment
block of this service: USERSIDE_API_KEY
, BILLING_NAME
, BILLING_URL
, BILLING_ID
. The rest of the parameters are as required. Parameter USERSIDE_API_URL
in case of using inside the bundle is not necessary: the server name will be filled in automatically.
In our repository you can find examples of how to use other modules in Docker. The examples contain a fragment of the configuration of the bundle which can be used in the compose.yaml file of your bundle and step-by-step instructions on how to install and configure the module within the bundle.
If there is no such example of use for the module you are interested in, you can create one yourself using examples from other modules.
If you need to use multiple copies of USERSIDE on one server, you should arrange multiple bundles - one for each copy. If the main directory where all the bundles are to be located is /docker
(as per these instructions), and you need to use two separate copies of USERSIDE, for example, do the following
Create a directory /docker
, if not already created, and navigate to it:
sudo mkdir -p /docker && cd $_
Clone the repository twice. Provide a clear name for each bundle so that you know exactly where it is in the future:
sudo git clone --depth 1 https://github.com/userside/userside-docker.git userside-production
sudo git clone --depth 1 https://github.com/userside/userside-docker.git userside-testing
As a result, you will get two catalogues: /docker/userside-production and /docker/userside-testing, each of which will host a different version of the bundle.
Navigate to each of the directories and initialise:
cd /docker/userside-production && sudo ./init.sh
cd /docker/userside-testing && sudo ./init.sh
Now edit the .env
file in each of the folders of the bundle. You must be sure to specify the absolute path to the bundle (the ERP_BASE_DIR
variable) and the project name (the PROJECT_NAME
variable), for example, userside-production and userside-testing.
If necessary, change the other variables. For example, it is not necessary to run 10 copies of core_worker processes for the USERSIDE test copy and it is not necessary to run 5 copies of poller microservices either. One copy at a time is sufficient for the test copy, because the load on the test copy is supposed to be minimal.
You must now make a change to the compose.yaml
bundle configuration file. Here, only the settings relating to the network need to be changed. The bundles should use different subnets and the subnet size should be large enough to fit all the containers in the bundle with some margin.
By default, the subnet 172.31.254.0/25 is used in the example file. If this subnet suits you (does not overlap with existing subnets in the enterprise), leave it as it is in one of the bundles, and change it to e.g. 172.31.254.128/25 in the second. To do this, change the value for subnet in the networks settings box.
The first node address from each subnet will be given to the host interface and the rest will be randomly assigned to the bundle containers. In this example, IP addresses 172.31.254.1 and 172.31.254.129 will be assigned to bridgeXXX interfaces on the host. These addresses are convenient to use for container port translation.
Check the ports parameter of all services in compose.yaml carefully. It contains a list of ports that need to be translated for each of the services. For example, the entry "172.31.254.1:8080:80"
for the nginx service means that port 8080 of the 172.31.254.1 interface on the host should be translated to port 80 inside the container with nginx. This allows network access inside the bundle to the container by addressing the IP address of the host.
Change the addresses so that these will be the addresses of the first nodes in the relevant subnet. For the described example this is 127.31.254.1 for the first bundle and 172.31.254.129 for the second bundle.
Also in the bundle.bash files, change the value of the DOCKER_HOST_IP
variable to match the specific host IP address.
Remove the comment from the line broadcasting the WebSTOMP port number 15674 of the rabbitmq service. This should be done when using a reverse proxy before the bundle.
We recommend using a reverse proxy even if you have one copy of Usersdide on your server. This allows more flexibility in configuring web access. For example, you can use SSL or configure the necessary access rights. But if a reverse proxy is not always necessary for one bundle, it is almost certainly necessary for two or more bundles.
Install NGINX and configure it as a reverse proxy using the following method. The example uses domain names userside.company.net for the userside working copy and test-us.company.net for the userside test copy. If you have one copy, use one server
block. Example:
server {
listen 80;
server_name userside.company.net;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.31.254.1:8080;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
location /ws {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://172.31.254.1:15674/ws;
proxy_http_version 1.1;
}
}
server {
listen 80;
server_name test-us.company.net;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.31.254.129:8080;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
location /ws {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://172.31.254.129:15674/ws;
proxy_http_version 1.1;
}
}
For each copy, add to the data/userside/.env
file the US_REVERSE_PROXY_TRUSTED_HOSTS
environment variable whose value should contain the IP address of the NGINX host on which the reverse proxy is running. In this example, for the first copy, this would be the address 172.31.254.1, and for the second copy, 172.31.254.129, respectively. As follows:
US_REVERSE_PROXY_TRUSTED_HOSTS=172.31.254.1
It is allowed to specify both an IP address and a subnet. It is also allowed to specify a comma-separated list of addresses and subnets.
Feedback, suggestions and bug reports about this Docker environment for USERSIDE are appreciated. You can report them through the Issue system of this repository. Suggestions and corrections in the form of Poll Request are also welcome.
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Docker-Π±Π°Π½Π΄Π»Π° ΡΠΈΡΡΠ΅ΠΌΡ ERP USERSIDE. ΠΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ERP USERSIDE ΠΎΠ±ΡΠ°Π·Ρ ΡΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π² Docker HUB. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ² ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ²ΠΎΠΉ Π±Π°Π½Π΄Π», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Docker Compose Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠ»ΡΠ·ΡΡ Π΄ΡΡΠ³ΠΈΠ΅, ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π²Π°ΠΌ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ°Π·ΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ Π΅ΡΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ERP USERSIDE Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΡ Π½Π° Π²Π°ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π² Linux, ΡΠ°Π±ΠΎΡΡ Docker, Docker Compose, Swarm ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠ°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡ Docker-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ Β«ΠΊΠ°ΠΊ Π΅ΡΡΡΒ» Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΠΉ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠΎ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Docker ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Docker, ΡΠΎ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ERP USERSIDE Π½Π° Linux-ΡΠ΅ΡΠ²Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Ρ Linux.
Π ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ Docker-Π±Π°Π½Π΄Π»Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ USERSIDE, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π½Π΄Π»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²Π΅ΡΡΠΈΠΈ Docker-Π±Π°Π½Π΄Π»Π° 3.13 ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ USERSIDE Π²Π΅ΡΡΠΈΠΉ 3.13, 3.14, 3.15, Π½Π° Π²Π΅ΡΡΠΈΠΈ Docker-Π±Π°Π½Π΄Π»Π° 3.16 ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ USERSIDE 3.16, 3.17, Π° Π½Π° Π²Π΅ΡΡΠΈΠΈ Π±Π°Π½Π΄Π»Π° 3.18 ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ USERSIDE 3.18, 3.19 ΠΈ Ρ.Π΄., ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π±Π°Π½Π΄Π»Π° Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ USERSIDE.
ΠΠ΅ ΠΏΡΡΠ°ΠΉΡΠ΅ Π²Π΅ΡΡΠΈΡ Docker-Π±Π°Π½Π΄Π»Π° Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ USERSIDE.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠ² ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² ΡΠ°ΠΉΠ» bundle.bash, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊ ΡΠ΅Π°Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π½Π΄Π»ΠΎΠΌ.
ΠΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ HTTP-Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π½Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ Π½Π° Π±Π°Π·Π΅ NGINX β ΡΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΠΎΠΌΠ΅Π½Π½ΡΡ ΠΈΠΌΠ΅Π½, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠ»ΡΠ·ΠΎΠ²Π°ΡΡ SSL ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±Π°Π½Π΄Π»Π° Π½Π°ΠΏΡΡΠΌΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ IP Π°Π΄ΡΠ΅ΡΠΎΠ²). ΠΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Userside Π² Docker-Π±Π°Π½Π΄Π»Π΅ ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ, ΡΠΎ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Userside. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²Π½ΠΈΠ·Ρ ΡΡΠ°ΡΡΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π Π΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ HTTP-ΠΏΡΠΎΠΊΡΠΈΒ».
- ΠΡΠ΄Π΅Π»ΠΈΡΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ Π΄Π»Ρ ERP USERSIDE ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π½Π° DNS-ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π»ΠΈΠ±ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ /etc/hosts Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΠΈΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ Π² IP-Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
- Π‘Π»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Docker server ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Compose. ΠΡΠ»ΠΈ Π² ΠΠ°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Docker-IO, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΎ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π±Π°Π½Π΄Π», ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
sudo mkdir -p /docker && cd $_
- Π‘ΠΊΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ userside ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠΈΠ΅ Π² Π½Π΅Π³ΠΎ:
sudo git clone --depth 1 --branch=v3.18 https://github.com/userside/userside-docker.git userside && cd userside
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² Π±Π°Π½Π΄Π»Π° β ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ² Ρ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ»Ρ .env, compose.yaml, bundle.bash.
sudo ./init.sh
- ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» .env ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
sudo nano .env
β ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π² Π½Π΅ΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΏΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π½Π΄Π»Π°, ΠΈΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π»ΠΎΠΊΠ°Π»Ρ, Π»ΠΎΠ³ΠΈΠ½Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π΄Π»Ρ ΡΠ»ΡΠΆΠ± ΠΈ Ρ.Π΄.) - ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π²Π½Π΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ compose.yaml ΠΈ, Π΅ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ, Π² ΡΠ°ΠΉΠ» bundle.bash. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ°ΠΉΠ»Π΅ compose.yaml Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ php.ini ΠΈ www.conf ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° configs ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅Π½ΠΎΠ² (Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ config) ΠΈ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π² ΠΈΡ
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ. ΠΠ»ΠΈ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ Π±Π°Π½Π΄Π»Π° IP-ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ Π±Π°Π½Π΄Π»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ° Ρ
ΠΎΡΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΏΠΈΡΠΊΠ° ports Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅. ΠΠ΄ΡΠ΅Ρ Ρ
ΠΎΡΡΠ° β ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ bundle.bash Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
DOCKER_HOST_IP
, ΡΠΊΠ°Π·Π°Π² ΡΠ°ΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ IP-Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ°. - ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ΅Π°Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π°Π»ΠΈΠ°ΡΡ ΠΈΠ· bundle.bash:
source bundle.bash
- ΠΠ°ΠΏΡΡΡΠΈΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π±Π°Π½Π΄Π»Π° ΠΈ ERP USERSIDE ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ:
bundle-install
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ WebSTOMP-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ websocket ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ². ΠΠ°ΡΠΎΠ»Ρ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, Π½ΠΎ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΡ
ΠΎΠΆ Π½ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΡ
ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² Frontend ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
- ΠΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ RabbitMQ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ http://your.userside.net:15672 (Π΄ΠΎΠΌΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠΎΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ERP USERSIDE, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π²Ρ Π·Π°Π΄Π°Π»ΠΈ Π² .env ΡΠ°ΠΉΠ»Π΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
RABBITMQ_DEFAULT_USER ΠΈ RABBITMQ_DEFAULT_PASS), ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Admin, Π²Π½ΠΈΠ·Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Add a user Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, stompuser ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠΎΠ»Π΅ Ρ ΡΡΠ³Π°ΠΌΠΈ ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΡΡΡΡΠΌ. ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ Add user. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ All users ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ Permissions Π΄Π»Ρ Configure regexp ΠΈ Π΄Π»Ρ Read regexp Π·Π°Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
^userside-stomp:id-.*
, Π° Π΄Π»Ρ Write regexp ΡΠ΄Π°Π»ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΠΎΠ»Π΅ ΠΏΡΡΡΡΠΌ. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Set permission. - ΠΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ:
rabbitmq-create-stomp-user
- ΠΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ RabbitMQ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ http://your.userside.net:15672 (Π΄ΠΎΠΌΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠΎΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ERP USERSIDE, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π²Ρ Π·Π°Π΄Π°Π»ΠΈ Π² .env ΡΠ°ΠΉΠ»Π΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
RABBITMQ_DEFAULT_USER ΠΈ RABBITMQ_DEFAULT_PASS), ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Admin, Π²Π½ΠΈΠ·Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Add a user Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, stompuser ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠΎΠ»Π΅ Ρ ΡΡΠ³Π°ΠΌΠΈ ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΡΡΡΡΠΌ. ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ Add user. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ All users ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ Permissions Π΄Π»Ρ Configure regexp ΠΈ Π΄Π»Ρ Read regexp Π·Π°Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΠΌΡ WebSTOMP-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² USERSIDE Π² ΠΌΠ΅Π½Ρ: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° - ΠΡΠ½ΠΎΠ²Π½Π°Ρ - Websocket. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π±Π°Π½Π΄Π»ΠΎΠΌ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΡΠΎ location
Π΄Π»Ρ /ws
(Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π½ΠΈΠΆΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΡΠΎ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ).
ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ERP USERSIDE Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π±Π°Π½Π΄Π»Π° Π²Π΅ΡΡΠΈΠΉ 3.16 ΠΈ 3.18 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ 3.16.4 Π½Π° 3.16.7 ΠΈΠ»ΠΈ Ρ 3.18.1 Π½Π° 3.18.3) Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ:
bundle-update
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΡΠΎ Π»ΠΈΠ±ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² SQL-ΡΠΊΡΠΈΠΏΡ β ΠΎΠ½ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅:
source alias.bash
backup-make
mkdir -p ~/bundle_316
sudo sh -c "docker compose -p ${PROJECT_NAME} exec postgres pg_dump -U ${POSTGRES_USER} --no-acl -Fp -Z 5 ${POSTGRES_DB}" > ~/bundle_316/db_backup.sql.gz
ΠΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π±Π΅ΠΊΠ°ΠΏ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ SQL-ΡΠΊΡΠΈΠΏΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³Π°ΠΌ.
ls -lh ~/bundle_316
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±Π°Π½Π΄Π»Π°: .env, bundle.bash, docker-compose.yml (compose.yaml), Makefile Π² Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. Π’Π°ΠΊΠΆΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ³ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° config, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΈ. Π’Π°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΡΠΎΠ½ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ PostgreSQL, ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» data/db/postgresql.conf. ΠΠΎΡΠ»Π΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π½Π΄Π»Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±Π°Π½Π΄Π»Π°, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².
sudo chmod -R +rX data/db
cp --parents {.env,bundle.bash,Makefile,docker-compose.yml,config/*,data/db/postgresql.conf} ~/bundle_316/
ls -lah ~/bundle_316
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π² Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° data/backup.
ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π±Π°Π½Π΄Π»:
bundle-stop
ΠΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅ΡΠ΅ ΡΠ°Π· ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ! ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΈ ΡΠ΄Π°Π»ΠΈΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ ΠΏΡΠΈΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎΠΌΠ°:
${DOCKER_COMPOSE} down -v --remove-orphans
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
sudo git pull
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ 3.18 Π±Π°Π½Π΄Π»Π° ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π² Ρ ΠΎΠ΄Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²Ρ Π·Π°ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ, Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΡΠ½Π°ΡΠ°Π»Π°, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π²Π·ΡΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅.
- ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
USERSIDE_BASE_DIR
ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡERP_BASE_DIR
. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΠ°ΠΉΠ»Π΅ compose.yaml. - ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
STOMP_USER
ΠΈSTOMP_PASSWORD
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ°Π½Π΅Π΅ Π΄Π»Ρ Makefile (ΡΠΏΡΠ°Π·Π΄Π½Π΅Π½ Π½Π°ΡΠΈΠ½Π°Ρ Ρ 3.18) Π±ΠΎΠ»Π΅Π΅ Π½Π΅ Π½ΡΠΆΠ½Ρ β ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅ΡΡΡΠ΅ ΡΠ°ΠΉΠ».env
Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ-ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ.env-example
ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈ Π½Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΡ ΠΈΠ»ΠΈ Π»ΠΈΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
sudo diff .env .env-example
ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ Ρ ΡΠ°ΠΉΠ»Π°-ΠΏΡΠΈΠΌΠ΅ΡΠ° bundle.bash-example
ΠΈ Π²Π½Π΅ΡΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΈ. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅-ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
sudo cp bundle.bash-example bundle.bash
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠ°ΠΉΠ» compose.yaml (docker-compose.yml) Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ Π±Π°Π½Π΄Π»Π°, ΡΠΎ Π»ΡΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» compose.yaml ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°:
sudo cp compose.yaml-example compose.yaml
ΠΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π²ΡΠ΅ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ, ΡΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» compose.yaml ΡΡΠΈΡΡΠ²Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΡΠ΅ΡΠ²ΠΈΡ
postgres
ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Docker-ΠΎΠ±ΡΠ°Π·, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° postgresql 15 (Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ 11-Ρ Π²Π΅ΡΡΠΈΡ). ΠΠΎΡΡΠΎΠΌΡ, ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² SQL-ΡΠΊΡΠΈΠΏΡ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π° 15ΠΉ Π²Π΅ΡΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ volumebackup:/backup
β Π² Π½Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Ρ.ΠΊ. ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΌΠΈ ΠΊΠΎΠΏΠΈΡΠΌΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° Ρ ΠΎΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ·bundle.bash
. - ΡΠ΅ΡΠ²ΠΈΡ
poller
ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Docker-ΠΎΠ±ΡΠ°Π· ΡΠ»ΡΠΆΠ±Ρ usm_poller (Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° php Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΡΠ»ΡΠΆΠ±Ρ). Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²Π΅ΡΡ ΡΠ΅ΡΠ²ΠΈΡpoller
ΠΈΠ· ΡΠ°ΠΉΠ»Π°-ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Userside 3.18 Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎ Π±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²ΡΠ·ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ ΡΠ°ΠΌΠΈΠΌ ΡΠ΄ΡΠΎΠΌ Userside, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ»ΡΠΆΠ±ΠΎΠΉ usm_poller. - Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΠΎΠ±ΡΠ°Π·Ρ
erpuserside/userside:3.16-xxx
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΡ Π½Π°erpuserside/userside:3.18-xxx
. - ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
USERSIDE_BASE_DIR
Π½Π°ERP_BASE_DIR
. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅ΡΡΡΠ΅ ΡΠ°ΠΉΠ»compose.yaml
Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ-ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌcompose.yaml-example
.
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΡ Π΄Π»Ρ Π±Π°Π½Π΄Π»Π° (subnet
Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ networks
), ΡΠΎ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈ IP Π°Π΄ΡΠ΅Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° ports
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² β Π·Π΄Π΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ IP-Π°Π΄ΡΠ΅Ρ Ρ
ΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΈΠ· ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ (Π½Π΅ ΡΡΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ 172.31.254.0/25 IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ Ρ
ΠΎΡΡΠ° Π±ΡΠ΄Π΅Ρ 172.31.254.1. Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ bundle.bash Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ DOCKER_HOST_IP
.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» bundle.bash
Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ Π²Π½Π°ΡΠ°Π»Π΅, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΠ±Ρ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΡΠ°Π·ΠΈΠ»ΠΈΡΡ ΠΈ Π² ΡΠ΅Π°Π½ΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠΉΡΠΈ ΠΈΠ· ΡΠ΅Π°Π½ΡΠ° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠΉΡΠΈ ΡΠ½ΠΎΠ²Π°. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ»:
source bundle.bash
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ»ΡΠΆΠ±Ρ postgres. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² .env
ΡΠΊΠ°Π·Π°Π½Π° Π²Π΅ΡΠ½Π°Ρ Π»ΠΎΠΊΠ°Π»Ρ, ΠΈΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
${DOCKER_COMPOSE} up postgres -d
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΡΡΡΠ°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ .
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΠ½ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ data/db/postgresql.conf, ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΡΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΡΠ°ΡΡΠΉ ΡΠ°ΠΉΠ» ΠΎΡ 11ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ.
ΠΠΎΠΎΠ±ΡΠ΅ ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² postgresql Π·Π°Π½ΠΎΠ²ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΈΡ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 15, Π²Π΅Π΄Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π² ΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
database-restore ~/bundle_316/db_backup.sql.gz
ΠΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΡΠ»Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎΠ±Ρ Π΄Π°Π½Π½ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ SQL-Π·Π°ΠΏΡΠΎΡ:
psql -At -c "SELECT (value::jsonb)->'vn' FROM key_value WHERE key='installer.release'"
ΠΠ°ΠΏΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Userside, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ:
bundle-update
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΎΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ WebSocket ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² RabbitMQ, Ρ.ΠΊ. ΠΏΡΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ RabbitMQ ΠΎΠ½, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ» ΡΡΠ΅ΡΡΠ½. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠΎΠ΅Π½ Userside, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Userside Π² ΠΌΠ΅Π½Ρ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ - ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ - WebSocket, Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ WebSocket Π² RabbitMQ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π²Π²Π΅Π΄Ρ ΠΈΠΌΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ.
rabbitmq-create-stomp-user
ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Ρ Π²Π΅ΡΡΠΈΠΈ 3.16 Π½Π° Π²Π΅ΡΡΠΈΡ 3.18 ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ repair, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠ° ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²Π΅ΡΡΠΈΠΈ PHP Π² Π±Π°Π½Π΄Π»Π΅ 3.18 ΠΈ Π² userside ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
bundle-update force
ΠΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΎΠ±Π²Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Ρ Π²Π΅ΡΡΠΈΠΈ 3.18.x Π½Π° 3.18.y Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ erp-repair
.
ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ERP USERSIDE Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 3.16 ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈ Docker-Π±Π°Π½Π΄Π» Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 3.16. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π±Π°Π½Π΄Π» Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ½ΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π² ERP USERSIDE 3.16.
- Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
(Π»ΠΎΠ³ΠΈΠ½Ρ, ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΅) Π²ΡΠ½Π΅ΡΠ΅Π½Ρ Π²
.env
ΡΠ°ΠΉΠ». - Redis ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠΎΠ»Ρ
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΠ΅ΡΠ²ΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ USERSIDE 3.16 (RabbitMQ, Π²ΠΎΡΠΊΠ΅Ρ ΡΠ΄ΡΠ°, Π²ΠΎΡΠΊΠ΅Ρ ΠΏΠΎΠ»Π»Π΅ΡΠ°)
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π±Π°Π½Π΄Π»Π°:
backup-make && bundle-stop
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Makefile, ΡΠΎ:
sudo make backup && sudo make stop
- ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ master Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Π΅ΡΠΊΡ v3.13, ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ v3.16 (Π»ΠΈΠ±ΠΎ Π½Π° Π²Π΅ΡΠΊΡ master, ΡΡΠΎΠ±Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Π±Π°Π½Π΄Π»Π°):
sudo git checkout v3.16
sudo git pull
- ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π²Π°Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°ΠΉΠ» docker-compose.yml ΡΡΠΎΠ±Ρ Π½Π΅ Π·Π°ΡΠ΅ΡΠ΅ΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ:
sudo mv docker-compose.yml docker-compose_3-13.yml
- Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Makefile, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²Π½ΠΎΡΠΈΠ»ΠΈ Π² Π½Π΅Π³ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ½Π°ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΈ Π΅Π³ΠΎ.
sudo rm Makefile
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ β ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠΏΠΈΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
sudo ./init.sh
- ΠΠ· ΡΠ°ΠΉΠ»Π° docker-compose_3-13.yml ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΡΠ°ΠΉΠ» .env. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
USERSIDE_BASE_DIR
ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡ Π±Π°Π½Π΄Π» (ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ). Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ/docker/userside
. - ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π½Π΄Π»Π° 3.16 ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Redis ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ°Π½ΡΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, Π·Π°Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
REDIS_PASSWORD
ΡΠ°ΠΉΠ»Π° .env, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠ°ΠΉΠ» ./data/userside/.env ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡUS_REDIS_PASSWORD
Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ. - Π ΡΠ°ΠΉΠ»Π΅
.env
ΠΈΠΌΠ΅ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²:CORE_WORKER_NUM
ΠΈPOLLER_NUM
. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² 10 ΠΈ 5 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² βΒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΈ ΡΠΈΡΡΡ Π·Π΄Π΅ΡΡ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ. ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Ρ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π½Π΄Π»Π° 3.13 Π½Π° 3.16 Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π° Π½Π΅ update. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π½Π΄Π»Π° 3.16 Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
bundle-install
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Makefile, ΡΠΎ:
sudo make install
- ΠΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ERP USERSIDE 3.16 ΠΏΡΠΎΡΠ»ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
- Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ» docker-compose_3-13.yml β ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½. ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Makefile (ΠΏ.4), ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΈΠ· Π½Π΅Π³ΠΎ Π²ΡΠ΅ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½ΠΎΠ²ΡΠΉ Makefile ΠΈ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΡΡΠ°ΡΡΠΉ.
sudo rm docker-compose_3-13.yml
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ bundle.bash
Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠ² ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ΅Π°Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ source bundle.bash
ΠΈΠ»ΠΈ Π΅Π΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ . bundle.bash
. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π²ΠΎΠ΄ΠΈΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ-ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π΄Π°Π»Π΅Π΅.
bundle-start
β Π·Π°ΠΏΡΡΡΠΈΡΡ Docker-Π±Π°Π½Π΄Π»bundle-stop
β ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π±Π°Π½Π΄Π»Π°bundle-restart
β ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Π±Π°Π½Π΄Π»bundle-install
β Π·Π°ΠΏΡΡΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±Π°Π½Π΄Π»Π°, Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°Ρ Π² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅ cron ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΡΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²erp-install
β Π·Π°ΠΏΡΡΠΊ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ installerp-repair
β Π·Π°ΠΏΡΡΠΊ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ repairbundle-update
β Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π½Π΄Π»Π° ΠΈ USERSIDE, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅bundle-destroy
β ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Docker-Π±Π°Π½Π΄Π»Π° ΠΈ Π·Π°Π΄Π°Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° cron. Π€Π°ΠΉΠ»Ρ USERSIDE Π½Π΅ ΡΠ΄Π°Π»ΡΡΡΡΡbundle-purge
β ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ bundle-destroy, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π±Π΅Π·Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ USERSIDEbundle-logs
β ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΡΠ°Π±ΠΎΡΡ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°erp-flush-cache
β ΠΎΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ΅ΠΉ ΡΠ΄ΡΠ° usersidebackup-make
β Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
psql
β Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ psql Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡrabbitmqctl
β Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ rabbitmqctl Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ RabbitMQerp-stability beta
β Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠΎΠ²Π½Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ userside Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΠ°
Π‘ΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ cron). ΠΡΡ ΠΈΠ²Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ data/backup Π±Π°Π½Π΄Π»Π°.
ΠΡΠ»ΠΈ ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²Π½Π΅ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
backup-make
ΠΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° Π² ./data/backup.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Docker-Π±Π°Π½Π΄Π»Π° 3.18 ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² SQL-ΡΠΊΡΠΈΠΏΡ Π²ΠΌΠ΅ΡΡΠΎ Dump.
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄:
database-backup > database.sql.gz
ΠΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ:
database-backup-to-file
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠ°ΠΉΠ» Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ data/backup ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΈΠΌΡ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΠ»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ SQL-ΡΠΊΡΠΈΠΏΡΠ° ΠΈΡΠΏΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
database-restore data/backup/userside_db_2023-04-07_16-25.sql.gz
ΠΠ»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±ΡΠΎΠΊΠ΅ΡΠ° RabbitMQ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ RabbitMQ management WEB-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://your.userside.net:15672 (Π΄ΠΎΠΌΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠΎΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ERP USERSIDE, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π²Ρ Π·Π°Π΄Π°Π»ΠΈ Π² .env ΡΠ°ΠΉΠ»Π΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
RABBITMQ_DEFAULT_USER
ΠΈ RABBITMQ_DEFAULT_PASS
).
ΠΡΠ»ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ (Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Queues) ΠΈ Π΅ΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Π³Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΠΎΠ½ΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ :
ΠΡΠ΅ΡΠ΅Π΄Ρ erp.core ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠ΄ΡΠ°. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ CORE_WORKER_NUM
Π² ΡΠ°ΠΉΠ»Π΅ .env Π±Π°Π½Π΄Π»Π° (Π½Π΅ userside).
ΠΡΠ΅ΡΠ΅Π΄Ρ usm_poller ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠ»Π»Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎΠ»Π»Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ POLLER_NUM
Π² ΡΠ°ΠΉΠ»Π΅ .env Π±Π°Π½Π΄Π»Π° (Π½Π΅ userside).
ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΈΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π±Π°Π½Π΄Π»:
bundle-restart
ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠΎΠ½ΠΊΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈΠ½ΡΠΈΠΏΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½Π° Π½Π°ΡΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ wiki-ΡΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΡΠ»ΡΠΆΠ± Docker-Π±Π°Π½Π΄Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΌΠ° (volumes) ΡΠ°ΠΉΠ»ΠΎΠ². Π ΡΠ°ΠΉΠ»Π΅ compose.yaml Π΄Π»Ρ ΡΠ»ΡΠΆΠ± php, fpm ΠΈΠΌΠ΅ΡΡΡΡ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎΠΌΠ° Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ php.ini-example ΠΈ www.conf-example Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ config Π² ΡΠ°ΠΉΠ»Ρ php.ini ΠΈ www.conf ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ . ΠΠ°ΡΠ΅ΠΌ ΡΠ°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠΌΠ° (volumes) Π² ΡΠ»ΡΠΆΠ±Π°Ρ php ΠΈ fpm ΡΠ°ΠΉΠ»Π° compose.yaml ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π±Π°Π½Π΄Π»:
bundle-restart
Π€Π°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ PostgreSQL Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ data/db ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΡΠΌΠΎ ΡΠ°ΠΌ. ΠΠΎΡΠ»Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Π±Π°Π½Π΄Π»:
bundle-restart
Π€Π°ΠΉΠ» compose.yaml ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΡΠΆΠ±Ρ usm_billing ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±ΠΈΠ»Π»ΠΈΠ½Π³ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. ΠΡΠ° ΡΠ»ΡΠΆΠ±Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΉ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π±Π»ΠΎΠΊΠ΅ environment
ΡΡΠΎΠΉ ΡΠ»ΡΠΆΠ±Ρ: USERSIDE_API_KEY
, BILLING_NAME
, BILLING_URL
, BILLING_ID
. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ USERSIDE_API_URL
Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π±Π°Π½Π΄Π»Π° Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ: ΠΈΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Docker Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±Π°Π½Π΄Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ compose.yaml Π²Π°ΡΠ΅Π³ΠΎ Π±Π°Π½Π΄Π»Π° ΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π½ΡΡΡΠΈ Π±Π°Π½Π΄Π»Π°.
ΠΡΠ»ΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ ΠΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΠΎΠΏΠΈΠΉ USERSIDE Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°Π½Π΄Π»ΠΎΠ² β ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠΎΠΏΠΈΡ. ΠΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΠ΅ Π±Π°Π½Π΄Π»Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ /docker
(ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ), ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΊΠΎΠΏΠΈΠΈ USERSIDE, ΡΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /docker
, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½, ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ:
sudo mkdir -p /docker && cd $_
Π‘ΠΊΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΄Π²Π°ΠΆΠ΄Ρ. Π£ΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°Π½Π΄Π»Π°, ΡΡΠΎΠ±Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ Π³Π΄Π΅ ΠΊΠ°ΠΊΠΎΠΉ:
sudo git clone --depth 1 https://github.com/userside/userside-docker.git userside-production
sudo git clone --depth 1 https://github.com/userside/userside-docker.git userside-testing
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄Π²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°: /docker/userside-production ΠΈ /docker/userside-testing Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ Π±Π°Π½Π΄Π»Π°.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ:
cd /docker/userside-production && sudo ./init.sh
cd /docker/userside-testing && sudo ./init.sh
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» .env
Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π±Π°Π½Π΄Π»ΠΎΠ². ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ Π±Π°Π½Π΄Π»Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ERP_BASE_DIR
) ΠΈ ΠΈΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ PROJECT_NAME
), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, userside-production ΠΈ userside-testing.
ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ USERSIDE Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ 10 ΠΊΠΎΠΏΠΈΠΉ core_worker ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ 5 ΠΊΠΎΠΏΠΈΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΏΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΠ»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π°Π½Π΄Π»Π° compose.yaml
. ΠΠ΄Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ΅ΡΠΈ. ΠΠ°Π½Π΄Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ, Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π±Π°Π½Π΄Π»Π° Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π·Π°ΠΏΠ°ΡΠΎΠΌ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΡ 172.31.254.0/25. ΠΡΠ»ΠΈ ΡΡΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΠ°ΠΌ (Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ Ρ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠΌΠΈ Π½Π° ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠΈ), ΡΠΎ ΠΎΡΡΠ°Π²ΡΡΠ΅ Π΅Π΅ ΡΠ°ΠΊΠΎΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π±Π°Π½Π΄Π»ΠΎΠ², Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 172.31.254.128/25. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Π±Π»ΠΎΠΊΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ networks Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° subnet.
ΠΠ΅ΡΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ ΡΠ·Π»Π° ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΄Π°Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ ΠΎΡΡΠ°, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ Π±Π°Π½Π΄Π»Π°. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ° 172.31.254.1 ΠΈ 172.31.254.129 Π±ΡΠ΄ΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ bridgeXXX Π½Π° Ρ ΠΎΡΡΠ΅. ΠΡΠΈ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΏΠΎΡΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ports Π²ΡΠ΅Ρ
ΡΠ»ΡΠΆΠ± (services) Π² compose.yaml. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΠΈΡΡ "172.31.254.1:8080:80"
Π΄Π»Ρ ΡΠ»ΡΠΆΠ±Ρ nginx ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΡ 8080 ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ 172.31.254.1 Π½Π° Ρ
ΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠΎΡΡ 80 Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ nginx. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΎΡΡΡΠΏ Π²Π½ΡΡΡΡ Π±Π°Π½Π΄Π»Π° ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡ ΠΊ IP Π°Π΄ΡΠ΅ΡΡ Ρ
ΠΎΡΡΠ°.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠΈ Π±ΡΠ»ΠΈ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ²ΡΡ ΡΠ·Π»ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ. ΠΠ»Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠΎ 127.31.254.1 Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π°Π½Π΄Π»Π° ΠΈ 172.31.254.129 Π΄Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ Π±Π°Π½Π΄Π»Π°.
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ°ΠΉΠ»Π°Ρ
bundle.bash Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ DOCKER_HOST_IP
Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ IP-Π°Π΄ΡΠ΅ΡΡ Ρ
ΠΎΡΡΠ°.
Π£Π΄Π°Π»ΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠΎ ΡΡΡΠΎΠΊΠΈ, ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠ΅ΠΉ ΠΏΠΎΡΡ WebSTOMP Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 15674 ΡΠ΅ΡΠ²ΠΈΡΠ° rabbitmq. ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π±Π°Π½Π΄Π»ΠΎΠΌ.
ΠΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠΏΠΈΡ Usersdide. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ web Π΄ΠΎΡΡΡΠΏ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ SSL Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°. ΠΠΎ Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°Π½Π΄Π»Π° ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π²ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π°Π½Π΄Π»ΠΎΠ² Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π·ΠΎΠ³ΠΎΠ²ΠΎΡΠΎΡΠ½Π°.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ NGINX ΠΈ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² userside.company.net Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ userside ΠΈ test-us.company.net Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ userside. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΠ΄Π½Π° ΠΊΠΎΠΏΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ server
. ΠΡΠΈΠΌΠ΅Ρ:
server {
listen 80;
server_name userside.company.net;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.31.254.1:8080;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
location /ws {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://172.31.254.1:15674/ws;
proxy_http_version 1.1;
}
}
server {
listen 80;
server_name test-us.company.net;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.31.254.129:8080;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
location /ws {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://172.31.254.129:15674/ws;
proxy_http_version 1.1;
}
}
Π ΡΠ°ΠΉΠ» data/userside/.env
ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ US_REVERSE_PROXY_TRUSTED_HOSTS
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠ°ΠΆΠΈΡΠ΅ IP-Π°Π΄ΡΠ΅Ρ Ρ
ΠΎΡΡΠ° Ρ NGINX, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅Π²Π΅ΡΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π°Π΄ΡΠ΅Ρ 172.31.254.1, Π° Π΄Π»Ρ Π²ΡΠΎΡΠΎΠΉ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, 172.31.254.129. ΠΠΎΡ ΡΠ°ΠΊ:
US_REVERSE_PROXY_TRUSTED_HOSTS=172.31.254.1
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ IP-Π°Π΄ΡΠ΅Ρ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅ΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΡΡΠΌΠΈ.
ΠΡΠ΄Π΅ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½Ρ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² Π΄Π°Π½Π½ΠΎΠΌ Docker-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Π΄Π»Ρ USERSIDE. Π Π½ΠΈΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Issue ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π΄Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ Π² Π²ΠΈΠ΄Π΅ Poll Request.