Как запустить Mercure в производство

Я пытаюсь запустить Mercure на Symfony в производственной среде.

[1-я проблема]

Похоже, мне нужно, чтобы мое соединение SSH было активным, чтобы поддерживать работу Mercure.
Кроме того, я хотел бы иметь возможность запускать несколько экземпляров Mercure (по одному на vhost)

[2-я проблема]

Поскольку мой vhost уже использует HTTPS, я использую следующую команду для запуска Mercure:

JWT_KEY='4e2da03eda9acdfdb9253ab0f8f9e4011706fd6ba6d8293d9727e833752fb15b' CERT_FILE='/etc/letsencrypt/live/my-project.my-domain.com/fullchain.pem' KEY_FILE='/etc/letsencrypt/live/my-project.my-domain.com/privkey.pem' ALLOW_ANONYMOUS=1 ./mercure/mercure

Если я попробую эту команду с моим веб-пользователем (www-data), я получу следующую ошибку:

ERRO [0000] прослушивание tcp:443: bind: в доступе отказано

Если я пытаюсь запустить его с правами root, я получаю эту ошибку:

ERRO [0000] прослушивание tcp:443: bind: адрес уже используется

В некоторых сообщениях здесь и там в Интернете предлагается использовать прокси-сервер, но не приводятся примеры.


Может ли кто-то предоставить решение, во-первых, для запуска Mercure без необходимости поддерживать соединение с моим пользователем в ssh и, если возможно, для возможности запуска одного экземпляра mercure для проекта (vhost) (mercure лежит в основе моего проекта)

Во-вторых, предоставьте полный пример и как решить проблему с портами или как использовать прокси.

1 ответ

Решение
  1. Ты можешь использовать nohup команда, например JWT_KEY='[key]' nohup ./mercure/mercure &

    Правильный способ будет использовать supervisord управлять этим процессом так, как вы хотите автоматически запустить mercure при запуске сервера

  2. Есть ADDR ENV для этого, например JWT_KEY='[key]' ADDR=127.0.0.1:3000 ./mercure/mercure буду слушать 127.0.0.1:3000 адрес. Вам нужно запустить несколько экземпляров mercure на разных портах для каждого вашего проекта.

    Вы можете использовать прокси nginx примерно так:

server {
    listen 80 ssl http2;
    listen [::]:80 ssl http2;
    server_name project1.exmaple.com;

    ssl_certificate /path/to/ssl/cert.crt;
    ssl_certificate_key /path/to/ssl/cert.key;

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_read_timeout 24h;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

server {
    listen 80 ssl http2;
    listen [::]:80 ssl http2;
    server_name project2.exmaple.com;

    ssl_certificate /path/to/ssl/cert.crt;
    ssl_certificate_key /path/to/ssl/cert.key;

    location / {
        proxy_pass http://127.0.0.1:3002;
        proxy_read_timeout 24h;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

Порты < 1024 может быть привязан только пользователем root. Вот почему у вас есть permission denied ошибка, для www-data пользователь

Другие вопросы по тегам