Как запустить puma с помощью unix-сокета - программирование
Подтвердить что ты не робот

Как запустить puma с помощью unix-сокета

Я следил за http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/ для настройки nginx с puma но когда я запускаю сервер 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.

Не могли бы вы помочь мне?

4b9b3361

Ответ 1

Чтобы запустить puma с привязкой к сокету, просто используйте каталог /tmp:

bundle exec puma -e development -b unix:///tmp/my_app.sock

Чтобы получить доступ к приложению через доменное имя, вы должны использовать что-то вроде nginx и выполнить конфигурацию для него.

Для установки nginx в Ubuntu просто запустите следующую команду:

sudo apt-get install nginx

Запустите 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;
  }   
}

Вы должны изменить /var/www/my_app и my_app.com на соответствующие значения.

Добавить символическую ссылку в разрешенные сайты sudo ln -fns /etc/nginx/sites-available/my_app.conf /etc/nginx/sites-enabled/

Перезагрузите nginx: sudo service nginx restart.

Свяжите свое доменное имя с IP-адресом сервера (через hosts файл или DNS-провайдер).