如何在生产中运行Mercure

精确

我正在尝试在生产环境中在Symfony上运行Mercure。

[第一个问题]

看来我需要保持ssh连接处于活动状态才能保持运行。
另外,我希望能够运行Mercure的多个实例(每个虚拟主机一个)

[第二个问题]

由于我的虚拟主机已经在使用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

如果我以Web用户(www-data)尝试此命令,则会收到以下错误:

ERRO [0000]监听tcp:443:绑定:权限被拒绝

如果尝试使用root用户运行它,则会收到此错误:

ERRO [0000]监听tcp:443:绑定:地址已在使用中

网络上到处都有一些消息建议使用代理,但不提供任何示例。


有人可以提供一种解决方案,首先运行Mercure,而不必将我的用户连接保持在ssh上,如果可能的话,是否能够为每个项目(vhost)运行一个mercure实例(汞是我项目的根源)

其次,提供完整的示例以及如何解决端口问题或如何使用代理的问题。

博舒里克
  1. 您可以使用nohup命令,例如JWT_KEY='[key]' nohup ./mercure/mercure &

    正确的方法是使用它supervisord来管理此过程,因为您要mercure在服务器启动时自动运行

  2. ADDR为此有一个环境,例如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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章