Как запустить 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 ответ
Ты можешь использовать
nohup
команда, напримерJWT_KEY='[key]' nohup ./mercure/mercure &
Правильный способ будет использовать
supervisord
управлять этим процессом так, как вы хотите автоматически запуститьmercure
при запуске сервераЕсть
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
пользователь