Ruby on rails 如何使用unix套接字启动puma

Ruby on rails 如何使用unix套接字启动puma,ruby-on-rails,nginx,puma,Ruby On Rails,Nginx,Puma,我已经使用puma配置了nginx 但是当我用 bundle exec puma-e开发-bunix:///var/run/my_app.sock 它抛出权限被拒绝-“/var/run/my_app.sock”(Errno::EACCES)错误 但是当我用bundle exec puma-e development启动服务器时 它以tcp://0.0.0.0:9292 my_app.sock文件不存在于/var/run/ 如何使用unix套接字启动服务器,并通过my_app.conf文件中给出的

我已经使用puma配置了nginx 但是当我用
bundle exec puma-e开发-bunix:///var/run/my_app.sock

它抛出
权限被拒绝-“/var/run/my_app.sock”(Errno::EACCES)错误

但是当我用bundle exec puma-e development启动服务器时
它以
tcp://0.0.0.0:9292

my_app.sock文件不存在于/var/run/

如何使用unix套接字启动服务器,并通过
my_app.conf
文件中给出的域名访问应用程序


有人能帮我吗?

要使用套接字绑定启动puma,只需使用
/tmp
目录:

bundle exec puma -e development -b unix:///tmp/my_app.sock
要通过域名访问应用程序,您应该使用类似nginx的东西,并对其进行配置

要在Ubuntu中安装
nginx
,只需运行下一个命令:

sudo apt-get install nginx
运行
sudo nano/etc/nginx/sites available/my_app.conf
并将下面的配置放入该文件(Ctrl+X,Y-保存更改):

您应该将
/var/www/my_app
my_app.com
更改为适当的值

将符号链接添加到已启用的站点
sudo ln-fns/etc/nginx/sites available/my_app.conf/etc/nginx/sites enabled/

重新启动nginx:
sudo服务nginx重新启动


将您的域名链接到服务器IP(通过
主机
-文件或DNS提供商)。

我很高兴听到这个消息。请接受这个答案,如果它对你有帮助的话。哈哈,我的编辑被拒绝了。有错误的协议(在
请求中
对象将是端口'443',协议'https://'和
.ssl?
true)需要更改
代理设置\u头X-Forwarded-Proto-https
代理集\头X-转发-Proto$方案@2谢谢你的评论。刚刚修复了它。另外,在某些发行版(如Centos8),
systemd单元
有一个服务设置选项,指示系统创建
私有临时文件
,这意味着只能通过相同的进程访问。这也可能是一个问题。要防止出现这种情况,请在服务设置文件的
[Service]
块中设置
PrivateTmp=No
upstream my_app {
  server              unix:///tmp/my_app.sock;
}

server {
  listen              *:80;
  server_name         my_app.com;

  access_log          /var/log/nginx/my_app-access.log;

  location /favicon.ico {
    root              /var/www/my_app/public/assets/favicon.ico;
    gzip_static       on;
    expires           max;
    add_header        Cache-Control public;
  }

  location / {
    root              /var/www/my_app/public;
    try_files         $uri @app;
    gzip_static       on;
    expires           max;
    add_header        Cache-Control public;
  }

  location @app {
    proxy_pass        http://my_app;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto http;
    proxy_set_header  Host $http_host;
    proxy_redirect    off;
    proxy_next_upstream error timeout invalid_header http_502;
  }   
}