Развертывание остальных микросервисов
Развертывание остальных МС
Требования к ПО.
1. Ubuntu 22
2. Nginx:latest
3. PHP-FPM 8.1
4. PostgreSQL 14
5. NodeJs 18
6. Redis:latest
7. Git
Предварительные действия
Создать пользователя, от которого будет осуществляться установка.
Обновить репозитории ОС: sudo apt update && apt upgrade
Создать каталоги для размещения МС, в данном примере: /var/www
Установка и настройка php-fpm
Назначаем следующие параметры в php.ini для cli и fpm:
Установка 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
Установка и настройка 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;
Импортируем БД для МС из консоли 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 22
2. Nginx:latest
3. PHP-FPM 8.1
4. PostgreSQL 14
5. NodeJs 18
6. Redis:latest
7. Git
Предварительные действия
Создать пользователя, от которого будет осуществляться установка.
Обновить репозитории ОС: sudo apt update && apt upgrade
Создать каталоги для размещения МС, в данном примере: /var/www
Установка и настройка php-fpm
Назначаем следующие параметры в php.ini для cli и fpm:
Установка 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
Установка и настройка 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;
Импортируем БД для МС из консоли 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