Instalei o redmine 2.6.6.stable em um centos 7 vm (kernel 3.10.0-229.7.2.el7.x86_64). Até agora está tudo bem, mas no momento não consigo fazer upload de arquivos. Pesquisando, descobri que o Passenger grava esses arquivos ( https://www.redmine.org/issues/8817 ) e provavelmente sem as permissões de gravação corretas. Mas tentei consertá-lo nas últimas 2 horas, sem sucesso.
Error_log do Apache quando tento fazer upload de algo:
App 3419 stderr: Errno::EACCES (Permission denied - /var/www/html/vhosts/redmine/files/2015/08/150811151550_icon.png):
App 3419 stderr: app/models/attachment.rb:108:in `initialize'
App 3419 stderr: app/models/attachment.rb:108:in `open'
App 3419 stderr: app/models/attachment.rb:108:in `files_to_final_location'
App 3419 stderr: app/controllers/attachments_controller.rb:88:in `upload'
Estas são as permissões atuais para o meu diretório redmine:
[root@server ~]# ls -l /var/www/html/vhosts/redmine/
total 44
drwxr-xr-x. 7 apache apache 78 Jul 7 16:47 app
drwxr-xr-x. 5 apache apache 4096 Jul 24 08:42 config
-rwxr-xr-x. 1 apache apache 160 Jul 7 16:47 config.ru
-rwxr-xr-x. 1 apache apache 240 Jul 7 16:47 CONTRIBUTING.md
drwxr-xr-x. 3 apache apache 36 Jul 24 08:37 db
drwxr-xr-x. 2 apache apache 107 Jul 7 16:47 doc
drwxr-xr-x. 5 apache apache 55 Jul 7 16:47 extra
drwxrwxr-x. 3 apache nobody 33 Aug 11 15:05 files
-rwxr-xr-x. 1 apache apache 3714 Jul 7 16:47 Gemfile
-rwxr-xr-x. 1 apache apache 3668 Jul 24 08:24 Gemfile.lock
drwxr-xr-x. 8 apache apache 4096 Jul 7 16:47 lib
drwxr-xr-x. 2 apache apache 43 Jul 24 08:36 log
drwxr-xr-x. 2 apache apache 19 Jul 7 16:47 plugins
drwxr-xr-x. 8 apache apache 4096 Jul 24 08:38 public
-rwxr-xr-x. 1 apache apache 275 Jul 7 16:47 Rakefile
-rwxr-xr-x. 1 apache apache 205 Jul 7 16:47 README.rdoc
drwxr-xr-x. 2 apache apache 30 Jul 7 16:47 script
drwxr-xr-x. 9 apache apache 4096 Jul 7 16:46 test
drwxr-xr-x. 8 apache apache 85 Jul 7 16:47 tmp
drwxr-xr-x. 2 apache apache 6 Jul 7 16:47 vendor
Tentei mudar o usuário que o passageiro roda, mas não tive sucesso. Aparentemente, ele tem alguns problemas no centos 7, e este servidor também executa uma instância do gitlab, então parei de tentar alterá-lo e tentei chmoding e chowning no meu diretório de arquivos. Minha conf com o passageiro:
[root@server ~]# cat /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.0.14/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-5.0.14
PassengerDefaultRuby /usr/bin/ruby
PassengerUser apache
</IfModule>
Não importa como eu tente alterar o parâmetro PassengerUser (também tentei PassengerDefaultUser algumas vezes), recebo o usuário "nobody" para executá-lo:
[root@server ~]# ps aux | grep Passenger
root 2785 0.0 0.2 430108 4604 ? Ssl 15:09 0:00 Passenger watchdog
root 2789 0.0 0.3 645040 6348 ? Sl 15:09 0:00 Passenger core
nobody 2798 0.0 0.2 298768 4676 ? Sl 15:09 0:00 Passenger ust-router
apache 3448 0.0 5.6 414536 106948 ? Sl 15:15 0:00 Passenger RubyApp: /var/www/html/vhosts/redmine
root 4556 0.0 0.0 112640 972 pts/0 R+ 15:26 0:00 grep --color=auto Passenger
You have new mail in /var/spool/mail/root
Alguém teve o mesmo problema? Como posso solucionar isso?
A solução para manter a imposição do selinux foi adicionar a seguinte regra: semanage fcontext -a -t httpd_sys_rw_content_t “/var/www/html/vhosts/redmine/files(/.*)?” e aplique as configurações com restorecon -Rv /var/www/html/vhosts/redmine .
Fonte: http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/
Obrigado @StackPlayer por mostrar que o SELinux provavelmente foi o responsável por isso.