我正试图在一个生产环境中运行Mercure的Symfony。
1问题
看来,我需要保持我的ssh连接活动,以保持合并运行。
另外,我希望能够运行Mercure的多个实例(每个vhost一个)。
第二个问题
由于我的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如果我用我的web用户(www-data)尝试这个命令,我会得到以下错误:
ERRO0000侦听tcp :443:绑定:拒绝权限
如果我尝试使用root运行它,则会得到以下错误:
ERRO0000侦听tcp :443:绑定:已在使用的地址
web上的一些消息建议使用代理,但没有提供任何示例。
首先,有人能提供一个解决方案来运行Mercure,而不必在ssh上保持我的用户连接,并且如果可能的话,能够在每个项目(vhost)中运行一个mercure实例(mercure是我的项目的根)。
第二,给出一个完整的示例,以及如何解决端口问题或如何使用代理的问题。
发布于 2019-04-26 12:01:26
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只能由根用户绑定。这就是为什么您有permission denied错误,对于www-data用户
https://stackoverflow.com/questions/55854989
复制相似问题