Passenger/mod_rails не инициализирует в Федоре 12 когда стартовый апач

Я нахожусь в процессе подготовки сервера, чтобы управлять Рубином на применении Рельсов на Федоре 12, используя Пассажира.

Я на стадии, где я установил Пассажира, настроил его, как предписано, но получаю следующие ошибки, когда я перезапускаю апача:

[Wed Jan 13 15:41:38 2010] [notice] caught SIGTERM, shutting down
[Wed Jan 13 15:41:40 2010] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Wed Jan 13 15:41:40 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Wed Jan 13 15:41:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /tmp/passenger.25235/.guard: Permission denied (13)
[Wed Jan 13 15:41:40 2010] [notice] Digest: generating secret for digest authentication ...
[Wed Jan 13 15:41:40 2010] [notice] Digest: done
[Wed Jan 13 15:41:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /tmp/passenger.25235/.guard: Permission denied (13)
[Wed Jan 13 15:41:40 2010] [error] python_init: Python version mismatch, expected '2.6', found '2.6.2'.
[Wed Jan 13 15:41:40 2010] [error] python_init: Python executable found '/usr/bin/python'.
[Wed Jan 13 15:41:40 2010] [error] python_init: Python path being used '/usr/lib/python26.zip:/usr/lib/python2.6/:/usr/lib/python2.6/plat-linux2:/usr/lib/python2.6/lib-tk:/usr/lib/python2.6/lib-old:/usr/lib/python2.6/lib-dynload'.
[Wed Jan 13 15:41:40 2010] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads.
[Wed Jan 13 15:41:40 2010] [notice] mod_python: using mutex_directory /tmp 
[Wed Jan 13 15:41:40 2010] [notice] Apache/2.2.14 (Unix) DAV/2 Phusion_Passenger/2.2.9 PHP/5.3.0 mod_python/3.3.1 Python/2.6.2 mod_ssl/2.2.14 OpenSSL/1.0.0-fips-beta3 mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations

Как Вы видите, есть проблема разрешений, когда Пассажир пытается инициализировать:

[Wed Jan 13 15:41:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /tmp/passenger.25235/.guard: Permission denied (13)

Когда апач - запуски, он действительно создает файл в/tmp:

d-ws--x--x. 2 root  root  4096 2010-01-13 16:04 passenger.26117

Если вместо этого я запускаю приложение, разжигая полукровку непосредственно с mongrel_rails start -e production, Я вижу следующее:

ActiveRecord::StatementInvalid (Mysql::Error: Can't create/write to file '/tmp/#sql_5d3_0.MYI' (Errcode: 13): SHOW FIELDS FROM `users`):

Снова ошибка указывает на проблемы разрешения с/tmp справочником.

Я в замешательстве относительно того, каково решение. Я не уверен, связано ли это только с директивными разрешениями или безопасностью Мягкой фетровой шляпы SELinux.

Любая помощь ценилась бы.Спасибо.

10
задан Diego Barros 13 January 2010 в 05:16
поделиться

4 ответа

Я сделал то же, что и Фред, за исключением того, что вместо того, чтобы делать это по одной ошибке за раз:

  1. Перейдите в разрешающий режим, запустив setenforce 0
  2. Перезапустите apache, перейдите на свой сайт и некоторое время используйте его как обычно
  3. Запустите grep httpd /var/log/audit/audit.log | audit2allow -M пассажира
  4. semodule -i пассажира.pp
  5. Вернитесь в принудительный режим, запустив setenforce 1
  6. Перезапустите apache и протестируйте свой сайт - надеюсь, все будет работать, как прежде!

Обратите внимание, что это в основном конкретный пример процедуры из справки Centos SELinux - проверьте его.

13
ответ дан 3 December 2019 в 18:33
поделиться

Бег SETENFORCE 0 Перед началом позволит вам проверить, если это SELINUX. Не забудьте запустить SetEnforce 1 потом.

2
ответ дан 3 December 2019 в 18:33
поделиться

У меня такая же проблема в CentOS 5.4, SELinux встает на пути Passenger.

Установка PassengerTempDir в /var/run/passenger просто дает вам те же ошибки разрешений в новом каталоге вместо /tmp :

[Mon Feb 22 11:42:40 2010] [error] *** Passenger could not be initialized because of this error: Cannot create directory '/var/run/passenger/passenger.3686'

Затем я могу изменить контекст безопасности /var/run/passenger, чтобы преодолеть эту ошибку:

chcon -R -h -t httpd_sys_content_t /var/run/passenger/

... и это позволяет Passenger создать временный каталог, но не файлы внутри этого каталога:

[Mon Feb 22 12:07:06 2010] [error] *** Passenger could not be initialized because of this error: Cannot create FIFO file /var/run/passenger/passenger.3686/.guard: Permission denied (13)

Странно, но повторный запуск рекурсивного chcon не преодолевает эту ошибку, он продолжает умирать на этом этапе, и здесь мои знания SELinux становятся мутными.

В Phusion Passenger guide разделы 6.3.5 и 6.3.7 есть несколько полезных мыслей, но они, похоже, не полностью решают проблему.

3
ответ дан 3 December 2019 в 18:33
поделиться

Вам нужно больше, чем просто разрешение httpd_sys_content_t. Я использую следующую технику, чтобы начать работу:

  • запустить хвост в журнале аудита: tail -f /var/log/audit/audit.log
  • reload apache: apachectl restart
  • Перейдите в каталог / tmp /: cd / tmp
  • Если добавлена ​​только 1 строка, используйте команду: tail -1 /var/log/audit/audit.log | audit2allow -M httpdfifo
  • Обратите внимание, что имя httpdfifo - это просто имя, выбранное для отражения типа наблюдаемой ошибки.
  • Будет создан файл с именем httpdfifo.pp. Чтобы позволить apache создавать FIFO после того, как вам нужно будет ввести команду: semodule -i httpdfifo.pp
  • Продолжайте делать это, пока все ошибки аудита не будут устранены (потребовалось 4 разных вида разрешений моя система работает под управлением Centos 5.4)
3
ответ дан 3 December 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: