Развертывание остальных микросервисов

Развертывание остальных МС

Требования к ПО.

1. Ubuntu 20

2. Nginx:latest

3. PHP-FPM 7.4

4. MariaDB:latest

5. NodeJs 12

6. Redis:latest

7. Git

Предварительные действия

Создать пользователя, от которого будет осуществляться установка.

Обновить репозитории ОС: sudo apt update && apt upgrade

Создать каталоги для размещения МС, в данном примере: /var/www

Установка и настройка php-fpm

               Устанавливаем php7.4-fpm согласно официальной документации. Устанавливаем необходимые зависимости:
sudo apt install php7.4-cli php7.4-fpm php7.4-bcmath php7.4-bz2 php7.4-curl php7.4-dba php7.4-gd php7.4-igbinary php7.4-imagick php7.4-imap php7.4-intl php7.4-mbstring php7.4-memcache php7.4-memcached php7.4-msgpack php7.4-mysqlnd php7.4-pspell php7.4-soap php7.4-xml php7.4-xsl php7.4-zip php-redis

Назначаем следующие параметры в php.ini для cli и fpm:

max_input_vars = 10000
memory_limit = 256M
display_errors = Off
post_max_size = 1024M
upload_max_filesize = 1024M
max_file_uploads = 100
date.timezone = Europe/Moscow

Установка NodeJs, pm2 и Yarn

Устанавливаем Node и переключаем на нужную версию:

sudo apt install node

sudo npm cache clean -f

sudo npm install -g n

sudo n 12.18.3

Устанавливаем yarn: sudo npm install --global yarn

Устанавливаем менеджер процессов: sudo npm install pm2@latest -g

Установка и настройка Nginx

Перед установкой/настройкой Nginx необходимо разместить WildCard SSL-сертификат в любой удобной папке на ваше усмотрение. Здесь и далее исходим из того, что сертификат размещен в /home/demo.lennuf.marketuser/ssl.

Добавляем в /etc/hosts следующие записи:

127.0.0.1 logistics.demo.lennuf.market.local

127.0.0.1 marketing.demo.lennuf.market.local

127.0.0.1 merchant-management.demo.lennuf.market.local

127.0.0.1 message.demo.lennuf.market.local

127.0.0.1 oms.demo.lennuf.market.local

127.0.0.1 store.demo.lennuf.market.local

77.223.112.179 pim-ms.demo.lennuf.market.ru

77.223.112.180 file-ms.demo.lennuf.market.ru

Где два последних IP – адреса МС «Каталог» и «Файлы» на выделенных серверах.

Устанавливаем Nginx из репозиториев apt командой: sudo apt install nginx. Создаем следующие конфигурационные файлы в /etc/nginx/sites-available:

admin.conf

server {

server_name admin.demo.lennuf.market.ru;

root "/var/www/admin/public";

index index.php;

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/compressed {

access_log off;

rewrite /files/compressed/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/original {

access_log off;

rewrite /files/original/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 443 ssl;

ssl_certificate /home/demo.lennuf.marketuser/ssl/demo.lennuf.market_ru.crt;

ssl_certificate_key /home/demo.lennuf.marketuser/ssl/private.key;

resolver 8.8.8.8;

}

server {

if ($host = admin.demo.lennuf.market.ru) {

return 301 https://$host$request_uri;

}

listen 80;

server_name admin.demo.lennuf.market.ru;

return 404;

}

api.conf

server {

server_name api.demo.lennuf.market.local;

root "/var/www/api-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

auth.conf

server {

server_name auth.demo.lennuf.market.local;

root "/var/www/auth-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

catalog-import.conf

server {

server_name catalog-import.demo.lennuf.market.local;

root "/var/www/catalog-import-ms/public";

index index.php;

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

cm.conf

server {

server_name cm.demo.lennuf.market.local;

root "/var/www/cm-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

cms.conf

server {

server_name cms.demo.lennuf.market.local;

root "/var/www/cms-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

front.conf

proxy_cache_path /cache levels=1:2 keys_zone=my_cache:100m max_size=10g inactive=5m use_temp_path=off;

server {

server_name demo.lennuf.market.ru;

gzip on;

gzip_vary on;

gzip_proxied any;

gzip_comp_level 2;

gzip_min_length 860;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types

text/css

text/plain

text/javascript

application/javascript

application/json

application/x-javascript

application/xml

application/xml+rss

application/xhtml+xml

application/x-font-ttf

application/x-font-opentype

application/vnd.ms-fontobject

image/svg+xml

image/x-icon

application/rss+xml

application/atom_xml;

gzip_disable "MSIE [1-6]\.(?!.*SV1)";

root "/var/www/front/public";

location = /favicon.ico {

access_log off;

log_not_found off;

}

location = /robots.txt {

access_log off;

log_not_found off;

try_files /robots.txt @nodeserver;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

location ^~ /content {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/compressed {

access_log off;

rewrite /files/compressed/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/original {

access_log off;

rewrite /files/original/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /v1 {

proxy_pass "http://api.demo.lennuf.market.local/${request_uri}";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ~ "/assets/message/(.+)$" {

proxy_pass "http://message.demo.lennuf.market.local/assets/$1";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /payments/handler/yandex {

proxy_pass "http://oms.demo.lennuf.market.local/api/v1/payments/handler/yandex";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /message/livetex/close-chat-hook {

proxy_pass "http://message.demo.lennuf.market.local/api/v1/livetex/close-chat-hook";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /export {

proxy_pass "https://pim-ms.demo.lennuf.market.ru/api/v1/products/export-products$is_args$args";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /error-deposition-notification {

proxy_pass "http://cm.demo.lennuf.market.local/api/v1/referral/error-deposition-notification";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location /rr.wpsw.empty.js {

alias /var/www/front/public/assets/files/rr.wpsw.empty.js;

}

location /rr.wpsw.import.js {

alias /var/www/front/public/assets/files/rr.wpsw.import.js;

}

location / {

include _basic_auth.conf;

access_log off;

try_files $uri @nodeserver;

}

location @nodeserver {

proxy_pass http://127.0.0.1:4003;

proxy_http_version 1.1;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-NginX-Proxy true;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_set_header Host $host;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_cache_bypass $http_upgrade;

proxy_read_timeout 6000;

proxy_cache my_cache;

proxy_cache_methods HEAD GET POST;

proxy_cache_valid any 5m;

expires 5m;

proxy_cache_key $scheme$proxy_host$request_uri;

proxy_cache_min_uses 0;

}

listen 443 ssl http2;

ssl_certificate /home/demo.lennuf.marketuser/ssl/demo.lennuf.market_ru.crt;

ssl_certificate_key /home/demo.lennuf.marketuser/ssl/private.key;

resolver 127.0.0.1 valid=60s;

resolver_timeout 2s;

}

server {

if ($host = demo.lennuf.market.ru) {

return 301 https://$host$request_uri;

}

listen 80;

server_name demo.lennuf.market.ru;

return 404;

}

logistics.conf

server {

server_name logistics.demo.lennuf.market.local;

root "/var/www/logistics-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

marketing.conf

server {

server_name marketing.demo.lennuf.market.local;

root "/var/www/marketing-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

mas.conf

server {

server_name mas.demo.lennuf.market.ru;

root "/var/www/mas/public";

index index.php;

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/compressed {

access_log off;

rewrite /files/compressed/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/original {

access_log off;

rewrite /files/original/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 443 ssl;

ssl_certificate /home/demo.lennuf.marketuser/ssl/demo.lennuf.market_ru.crt;

ssl_certificate_key /home/demo.lennuf.marketuser/ssl/private.key;

resolver 8.8.8.8;

}

server {

if ($host = mas.demo.lennuf.market.ru) {

return 301 https://$host$request_uri;

}

listen 80;

server_name mas.demo.lennuf.market.ru;

return 404;

}

merchant-management.conf

server {

server_name merchant-management.demo.lennuf.market.local;

root "/var/www/merchant-management-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

message.conf

server {

server_name message.demo.lennuf.market.local;

root "/var/www/message-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

oms.conf

server {

server_name oms.demo.lennuf.market.local;

root "/var/www/oms-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

store.conf

server {

server_name store.demo.lennuf.market.local;

root "/var/www/store-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

Создаем символические ссылки на файлы конфигурации в /etc/nginx/sites-enabled. Тестируем конфигурацию и перезапускаем Nginx:

nginx -t

sudo service nginx restart

Установка Redis

Устанавливаем из репозиториев: sudo apt install redis-server

И проверяем установку командой systemctl status redis – сервис должен быть доступен на 127.0.0.1:6379

Установка и настройка MariaBD

Устанавливаем MariaDB из репозиториев: sudo apt install mariadb-server. Запускаем скрипт sudo mysql_secure_installation где задаем пароль для суперпользователя.

Запускаем консоль от суперпользователя и выполняем:

CREATE USER 'demo.lennuf.market_mas @'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'demo.lennuf.market_mas'@'localhost';

FLUSH PRIVILEGES;

где password – пароль для пользователя, под которым будет работать система.

Импортируем БД для МС из консоли mysql: source databases.sql

Развертывание МС

Устанавливаем Git: sudo apt install git. Создаем в /var/www папки для каждого МС и клонируем в них соответствующие репозитории:

https://gitlab.com/iwengo/developers/demo.lennuf.market-admin

https://gitlab.com/iwengo/developers/demo.lennuf.market-api-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-auth-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-catalog-import-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-cm-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-cms-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-front

https://gitlab.com/iwengo/developers/demo.lennuf.market-logistics-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-marketing-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-message-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-oms-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-store-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market_mas

Устанавливаем composer 1.10.19 согласно официальной документации https://getcomposer.org/download/ и выполняем во всех созданных папках: composer update

Помещаем файл настроек окружения Laravel .env в текущую директорию. В самом файле необходимо установить правильные ссылки на остальные МС в зависимости от их адресов, а также пароль для пользователя БД, который был создан.

Разрешаем запись пользователю www-data в каталог /var/www/*/storage и все вложенные файлы и каталоги.

Добавляем следующие задачи в планировщик:

* * * * * cd /var/www/pim-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/oms-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/logistics-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/marketing-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/cm-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/merchant-management-ms && php artisan schedule:run >> /dev/null 2>&1

Запускаем фронт командой pm2 start server-local.js --name=front-ssr

На этом установка завершена и можно проверить доступность МС по адресу https://demo.lennuf.market.ru, если ошибок нет, установка произведена правильно.Развертывание остальных МС

Требования к ПО.

1. Ubuntu 20

2. Nginx:latest

3. PHP-FPM 7.4

4. MariaDB:latest

5. NodeJs 12

6. Redis:latest

7. Git

Предварительные действия

Создать пользователя, от которого будет осуществляться установка.

Обновить репозитории ОС: sudo apt update && apt upgrade

Создать каталоги для размещения МС, в данном примере: /var/www

Установка и настройка php-fpm

               Устанавливаем php7.4-fpm согласно официальной документации. Устанавливаем необходимые зависимости:
sudo apt install php7.4-cli php7.4-fpm php7.4-bcmath php7.4-bz2 php7.4-curl php7.4-dba php7.4-gd php7.4-igbinary php7.4-imagick php7.4-imap php7.4-intl php7.4-mbstring php7.4-memcache php7.4-memcached php7.4-msgpack php7.4-mysqlnd php7.4-pspell php7.4-soap php7.4-xml php7.4-xsl php7.4-zip php-redis

Назначаем следующие параметры в php.ini для cli и fpm:

max_input_vars = 10000
memory_limit = 256M
display_errors = Off
post_max_size = 1024M
upload_max_filesize = 1024M
max_file_uploads = 100
date.timezone = Europe/Moscow

Установка NodeJs, pm2 и Yarn

Устанавливаем Node и переключаем на нужную версию:

sudo apt install node

sudo npm cache clean -f

sudo npm install -g n

sudo n 12.18.3

Устанавливаем yarn: sudo npm install --global yarn

Устанавливаем менеджер процессов: sudo npm install pm2@latest -g

Установка и настройка Nginx

Перед установкой/настройкой Nginx необходимо разместить WildCard SSL-сертификат в любой удобной папке на ваше усмотрение. Здесь и далее исходим из того, что сертификат размещен в /home/demo.lennuf.marketuser/ssl.

Добавляем в /etc/hosts следующие записи:

127.0.0.1 logistics.demo.lennuf.market.local

127.0.0.1 marketing.demo.lennuf.market.local

127.0.0.1 merchant-management.demo.lennuf.market.local

127.0.0.1 message.demo.lennuf.market.local

127.0.0.1 oms.demo.lennuf.market.local

127.0.0.1 store.demo.lennuf.market.local

77.223.112.179 pim-ms.demo.lennuf.market.ru

77.223.112.180 file-ms.demo.lennuf.market.ru

Где два последних IP – адреса МС «Каталог» и «Файлы» на выделенных серверах.

Устанавливаем Nginx из репозиториев apt командой: sudo apt install nginx. Создаем следующие конфигурационные файлы в /etc/nginx/sites-available:

admin.conf

server {

server_name admin.demo.lennuf.market.ru;

root "/var/www/admin/public";

index index.php;

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/compressed {

access_log off;

rewrite /files/compressed/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/original {

access_log off;

rewrite /files/original/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 443 ssl;

ssl_certificate /home/demo.lennuf.marketuser/ssl/demo.lennuf.market_ru.crt;

ssl_certificate_key /home/demo.lennuf.marketuser/ssl/private.key;

resolver 8.8.8.8;

}

server {

if ($host = admin.demo.lennuf.market.ru) {

return 301 https://$host$request_uri;

}

listen 80;

server_name admin.demo.lennuf.market.ru;

return 404;

}

api.conf

server {

server_name api.demo.lennuf.market.local;

root "/var/www/api-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

auth.conf

server {

server_name auth.demo.lennuf.market.local;

root "/var/www/auth-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

catalog-import.conf

server {

server_name catalog-import.demo.lennuf.market.local;

root "/var/www/catalog-import-ms/public";

index index.php;

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

cm.conf

server {

server_name cm.demo.lennuf.market.local;

root "/var/www/cm-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

cms.conf

server {

server_name cms.demo.lennuf.market.local;

root "/var/www/cms-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

front.conf

proxy_cache_path /cache levels=1:2 keys_zone=my_cache:100m max_size=10g inactive=5m use_temp_path=off;

server {

server_name demo.lennuf.market.ru;

gzip on;

gzip_vary on;

gzip_proxied any;

gzip_comp_level 2;

gzip_min_length 860;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types

text/css

text/plain

text/javascript

application/javascript

application/json

application/x-javascript

application/xml

application/xml+rss

application/xhtml+xml

application/x-font-ttf

application/x-font-opentype

application/vnd.ms-fontobject

image/svg+xml

image/x-icon

application/rss+xml

application/atom_xml;

gzip_disable "MSIE [1-6]\.(?!.*SV1)";

root "/var/www/front/public";

location = /favicon.ico {

access_log off;

log_not_found off;

}

location = /robots.txt {

access_log off;

log_not_found off;

try_files /robots.txt @nodeserver;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

location ^~ /content {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/compressed {

access_log off;

rewrite /files/compressed/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/original {

access_log off;

rewrite /files/original/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /v1 {

proxy_pass "http://api.demo.lennuf.market.local/${request_uri}";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ~ "/assets/message/(.+)$" {

proxy_pass "http://message.demo.lennuf.market.local/assets/$1";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /payments/handler/yandex {

proxy_pass "http://oms.demo.lennuf.market.local/api/v1/payments/handler/yandex";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /message/livetex/close-chat-hook {

proxy_pass "http://message.demo.lennuf.market.local/api/v1/livetex/close-chat-hook";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /export {

proxy_pass "https://pim-ms.demo.lennuf.market.ru/api/v1/products/export-products$is_args$args";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location ^~ /error-deposition-notification {

proxy_pass "http://cm.demo.lennuf.market.local/api/v1/referral/error-deposition-notification";

proxy_cache off;

add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';

expires off;

}

location /rr.wpsw.empty.js {

alias /var/www/front/public/assets/files/rr.wpsw.empty.js;

}

location /rr.wpsw.import.js {

alias /var/www/front/public/assets/files/rr.wpsw.import.js;

}

location / {

include _basic_auth.conf;

access_log off;

try_files $uri @nodeserver;

}

location @nodeserver {

proxy_pass http://127.0.0.1:4003;

proxy_http_version 1.1;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-NginX-Proxy true;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_set_header Host $host;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_cache_bypass $http_upgrade;

proxy_read_timeout 6000;

proxy_cache my_cache;

proxy_cache_methods HEAD GET POST;

proxy_cache_valid any 5m;

expires 5m;

proxy_cache_key $scheme$proxy_host$request_uri;

proxy_cache_min_uses 0;

}

listen 443 ssl http2;

ssl_certificate /home/demo.lennuf.marketuser/ssl/demo.lennuf.market_ru.crt;

ssl_certificate_key /home/demo.lennuf.marketuser/ssl/private.key;

resolver 127.0.0.1 valid=60s;

resolver_timeout 2s;

}

server {

if ($host = demo.lennuf.market.ru) {

return 301 https://$host$request_uri;

}

listen 80;

server_name demo.lennuf.market.ru;

return 404;

}

logistics.conf

server {

server_name logistics.demo.lennuf.market.local;

root "/var/www/logistics-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

marketing.conf

server {

server_name marketing.demo.lennuf.market.local;

root "/var/www/marketing-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

mas.conf

server {

server_name mas.demo.lennuf.market.ru;

root "/var/www/mas/public";

index index.php;

location ^~ /storage {

access_log off;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/compressed {

access_log off;

rewrite /files/compressed/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location ^~ /files/original {

access_log off;

rewrite /files/original/(.*) /content/$1 break;

proxy_pass "https://file-ms.demo.lennuf.market.ru/${uri}";

}

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 443 ssl;

ssl_certificate /home/demo.lennuf.marketuser/ssl/demo.lennuf.market_ru.crt;

ssl_certificate_key /home/demo.lennuf.marketuser/ssl/private.key;

resolver 8.8.8.8;

}

server {

if ($host = mas.demo.lennuf.market.ru) {

return 301 https://$host$request_uri;

}

listen 80;

server_name mas.demo.lennuf.market.ru;

return 404;

}

merchant-management.conf

server {

server_name merchant-management.demo.lennuf.market.local;

root "/var/www/merchant-management-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

message.conf

server {

server_name message.demo.lennuf.market.local;

root "/var/www/message-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

oms.conf

server {

server_name oms.demo.lennuf.market.local;

root "/var/www/oms-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

store.conf

server {

server_name store.demo.lennuf.market.local;

root "/var/www/store-ms/public";

index index.php;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

}

location ~ /\.ht {

deny all;

}

location ~ /.well-known {

allow all;

}

listen 80;

ssi on;

ssi_last_modified on;

}

Создаем символические ссылки на файлы конфигурации в /etc/nginx/sites-enabled. Тестируем конфигурацию и перезапускаем Nginx:

nginx -t

sudo service nginx restart

Установка Redis

Устанавливаем из репозиториев: sudo apt install redis-server

И проверяем установку командой systemctl status redis – сервис должен быть доступен на 127.0.0.1:6379

Установка и настройка MariaBD

Устанавливаем MariaDB из репозиториев: sudo apt install mariadb-server. Запускаем скрипт sudo mysql_secure_installation где задаем пароль для суперпользователя.

Запускаем консоль от суперпользователя и выполняем:

CREATE USER 'demo.lennuf.market_mas @'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'demo.lennuf.market_mas'@'localhost';

FLUSH PRIVILEGES;

где password – пароль для пользователя, под которым будет работать система.

Импортируем БД для МС из консоли mysql: source databases.sql

Развертывание МС

Устанавливаем Git: sudo apt install git. Создаем в /var/www папки для каждого МС и клонируем в них соответствующие репозитории:

https://gitlab.com/iwengo/developers/demo.lennuf.market-admin

https://gitlab.com/iwengo/developers/demo.lennuf.market-api-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-auth-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-catalog-import-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-cm-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-cms-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-front

https://gitlab.com/iwengo/developers/demo.lennuf.market-logistics-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-marketing-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-message-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-oms-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market-store-ms

https://gitlab.com/iwengo/developers/demo.lennuf.market_mas

Устанавливаем composer 1.10.19 согласно официальной документации https://getcomposer.org/download/ и выполняем во всех созданных папках: composer update

Помещаем файл настроек окружения Laravel .env в текущую директорию. В самом файле необходимо установить правильные ссылки на остальные МС в зависимости от их адресов, а также пароль для пользователя БД, который был создан.

Разрешаем запись пользователю www-data в каталог /var/www/*/storage и все вложенные файлы и каталоги.

Добавляем следующие задачи в планировщик:

* * * * * cd /var/www/pim-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/oms-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/logistics-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/marketing-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/cm-ms && php artisan schedule:run >> /dev/null 2>&1

* * * * * cd /var/www/merchant-management-ms && php artisan schedule:run >> /dev/null 2>&1

Запускаем фронт командой pm2 start server-local.js --name=front-ssr

На этом установка завершена и можно проверить доступность МС по адресу https://demo.lennuf.market.ru, если ошибок нет, установка произведена правильно.

Last updated