шапка прервана! - Capistrano прерывает развертывание Rails при попытке chown /tmp/passenger.RWBkftW/. с помощью fileutils.rb

Я полный новичок в развертывании Rails в производственной среде и вижу выход Capistrano со следующей ошибкой:

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: passenger-config exit status: 1
passenger-config stdout: *** Cleaning stale instance directory /tmp/passenger.RWBkftW
/home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:726:in `chown': Operation not permitted @ rb_file_chown - /tmp/passenger.RWBkftW/. (Errno::EPERM)
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:726:in `block in remove_entry_secure'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:720:in `open'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:720:in `remove_entry_secure'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:93:in `cleanup'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:49:in `block in list'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:42:in `each'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:42:in `list'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/utils.rb:53:in `select_passenger_instance'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/restart_app_command.rb:44:in `run'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/main.rb:75:in `run!'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/bin/passenger-config:37:in `<top (required)>'
        from /home/deploy/.rbenv/versions/2.2.1/bin/passenger-config:23:in `load'
        from /home/deploy/.rbenv/versions/2.2.1/bin/passenger-config:23:in `<main>'
passenger-config stderr: Nothing written

SSHKit::Command::Failed: passenger-config exit status: 1
passenger-config stdout: *** Cleaning stale instance directory /tmp/passenger.RWBkftW
/home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:726:in `chown': Operation not permitted @ rb_file_chown - /tmp/passenger.RWBkftW/. (Errno::EPERM)
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:726:in `block in remove_entry_secure'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:720:in `open'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:720:in `remove_entry_secure'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:93:in `cleanup'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:49:in `block in list'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:42:in `each'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:42:in `list'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/utils.rb:53:in `select_passenger_instance'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/restart_app_command.rb:44:in `run'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/main.rb:75:in `run!'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/bin/passenger-config:37:in `<top (required)>'
        from /home/deploy/.rbenv/versions/2.2.1/bin/passenger-config:23:in `load'
        from /home/deploy/.rbenv/versions/2.2.1/bin/passenger-config:23:in `<main>'
passenger-config stderr: Nothing written

Tasks: TOP => passenger:restart
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as [email protected]: passenger-config exit status: 1
passenger-config stdout: *** Cleaning stale instance directory /tmp/passenger.RWBkftW
/home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:726:in `chown': Operation not permitted @ rb_file_chown - /tmp/passenger.RWBkftW/. (Errno::EPERM)
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:726:in `block in remove_entry_secure'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:720:in `open'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb:720:in `remove_entry_secure'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:93:in `cleanup'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:49:in `block in list'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:42:in `each'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/admin_tools/instance_registry.rb:42:in `list'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/utils.rb:53:in `select_passenger_instance'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/restart_app_command.rb:44:in `run'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/lib/phusion_passenger/config/main.rb:75:in `run!'
        from /home/deploy/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.7/bin/passenger-config:37:in `<top (required)>'
        from /home/deploy/.rbenv/versions/2.2.1/bin/passenger-config:23:in `load'
        from /home/deploy/.rbenv/versions/2.2.1/bin/passenger-config:23:in `<main>'
passenger-config stderr: Nothing written
[me@localhost rally_app]$ 

Похоже, проблема связана с конфигурацией Phusion Passenger и, возможно, с привилегиями пользователя развертывания, но я не уверен, что делать дальше.

Заранее благодарю за любую помощь.

Обновление: ошибка заключается в том, что Passenger создает файлы в /tmp/ от имени пользователя root, но затем пытается очистить/удалить их от имени пользователя «развертывания», который предполагается Passenger, потому что «развертывание ' владеет environments.rb.

Каталоги /tmp/ выглядят так:

4 drwxr-xr-x.  4 root     root       4096 May 20 14:15 passenger.Jy8mOoq/
4 drwxr-xr-x.  4 root     root       4096 May  5 07:14 passenger.jZAgQb1/
4 drwxr-xr-x.  4 root     root       4096 May  7 07:13 passenger.M9fxTPM/
4 drwxr-xr-x.  4 root     root       4096 May  6 13:12 passenger.RWBkftW/

Я не думаю, что это проблема Пассажира; это кажется более вероятным, проблема с моими привилегиями пользователя «развернуть». Я настроил пользователя развертывания, следуя инструкциям Capistrano здесь


person CryptoPiggy    schedule 20.05.2015    source источник


Ответы (2)


У меня нет опыта работы с Passenger, но из вашей обратной трассировки кажется, что ваш пользователь развертывания не имеет разрешения на доступ к /tmp/passenger.RWBkftW/. файл.

Проверьте, под каким пользователем работает пассажир, например с

ps aux

команда на вашем сервере.

Затем вы должны предоставить доступ к пассажиру своему пользователю развертывания или развернуть приложение через пользователя, который запускает пассажира.

person Stanislav Mekhonoshin    schedule 20.05.2015
comment
Passenger работает с любым пользователем, которому принадлежит environment.rb, в моем случае это уже пользователь «deploy». - person CryptoPiggy; 20.05.2015

Пассажир автор здесь. Все примерно так, как сказал Станислав. Но я думаю, что Passenger не должен прерываться с ошибкой при возникновении такой проблемы. Он только пытался очистить устаревшие каталоги. Я внесу изменения, чтобы убедиться, что он может продолжать работать.

РЕДАКТИРОВАТЬ: это реализовано в commit c957e9e1171.

person Hongli    schedule 20.05.2015
comment
Привет @Hongli, я обновился до Passenger 5.0.8, перезапустил Apache и мое приложение, но при развертывании все равно получаю те же ошибки. Есть небольшая разница в номерах строк, указанных в ошибках, и, конечно, путь теперь указывает на /passenger-5.0.8/, но ошибки те же. - person CryptoPiggy; 22.05.2015
comment
Изменения нет в 5.0.8. Это будет частью 5.0.9. - person Hongli; 22.05.2015
comment
Есть ли способ очистить эти устаревшие файлы, или они будут накапливаться вечно? - person Little Brain; 26.02.2019
comment
Запуск passenger-status на сервере очистит их. - person Hongli; 27.02.2019