如何用unix socket启动puma

Thr*_*amy 20 ruby-on-rails

我已经按照http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/链接配置了美洲狮的nginx但是当我启动服务器时bundle exec puma -e development -b unix:///var/run/my_app.sock 它会抛出Permission denied - "/var/run/my_app.sock" (Errno::EACCES) error.

但是当我启动服务器时,bundle exec puma -e development它就开始了 tcp://0.0.0.0:9292

my_app.sock file does not exist in /var/run/

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

你能帮助我吗?

Via*_*kov 31

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

bundle exec puma -e development -b unix:///tmp/my_app.sock
Run Code Online (Sandbox Code Playgroud)

要通过域名访问应用程序,您应该使用类似的东西nginx并为其进行配置.

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

sudo apt-get install nginx
Run Code Online (Sandbox Code Playgroud)

sudo nano /etc/nginx/sites-available/my_app.conf在此文件中运行并放置配置(Ctrl + X,Y - 保存更改):

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;
  }   
}
Run Code Online (Sandbox Code Playgroud)

您应该更改/var/www/my_appmy_app.com使用适当的值.

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

重启nginx : sudo service nginx restart.

将您的域名链接到服务器IP(通过hosts-file或DNS-provider).