Eu acabei de fazer uma instalação básica e o Apache 2.4 inicia muito bem. Estou migrando de um servidor antigo que executa o Apache 2.2.
Quando coloco um arquivo em /etc/httpd/conf.d
que contém uma definição de VirtualHost
e reinicio o servidor, ele falha na inicialização. Esta definição do VirtualHost é uma que eu uso do meu servidor anterior.
# systemctl restart httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
# systemctl -l status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2017-01-22 03:03:35 UTC; 10s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 20621 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 20620 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 20620 (code=exited, status=1/FAILURE)
Jan 22 03:03:35 production-frontend-0 systemd[1]: Starting The Apache HTTP Server...
Jan 22 03:03:35 production-frontend-0 systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jan 22 03:03:35 production-frontend-0 kill[20621]: kill: cannot find process ""
Jan 22 03:03:35 production-frontend-0 systemd[1]: httpd.service: control process exited, code=exited status=1
Jan 22 03:03:35 production-frontend-0 systemd[1]: Failed to start The Apache HTTP Server.
Jan 22 03:03:35 production-frontend-0 systemd[1]: Unit httpd.service entered failed state.
Jan 22 03:03:35 production-frontend-0 systemd[1]: httpd.service failed.
#
Aqui está o conteúdo do arquivo conf (com o nome do domínio alterado):
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
<Directory /home/kenny/domains/mydomain.com/html>
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride All
</Directory>
DocumentRoot /home/kenny/domains/mydomain.com/html
CustomLog /home/kenny/domains/mydomain.com/logs/access.log combined
ErrorLog /home/kenny/domains/mydomain.com/logs/error.log
ScriptAlias /cgi-bin /home/kenny/domains/mydomain.com/cgi
RewriteEngine on
# Does the file exist?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ http://mydomain.otherdomain.com [R,L]
</VirtualHost>
Eu verifiquei a sintaxe do arquivo:
# httpd -t
Syntax OK
#
Se eu remover o arquivo e reiniciar, o Apache será iniciado corretamente. Certifiquei-me de que as permissões em meus arquivos correspondam aos arquivos conf existentes:
# ls -l
total 20
-rw-r--r--. 1 root root 2926 Nov 14 18:04 autoindex.conf
-rw-r--r--. 1 root root 366 Nov 14 18:05 README
-rw-r--r--. 1 root root 1252 Nov 14 16:53 userdir.conf
-rw-r--r--. 1 root root 674 Jan 22 03:03 vhost.mydomain.com.conf
-rw-r--r--. 1 root root 824 Nov 14 16:53 welcome.conf
#
Alguma coisa mudou no Apache 2.4 que está em conflito com a minha definição do VirtualHost?
Há algum tipo de medidas de segurança em vigor em uma instância padrão do Google Compute que esteja rejeitando minha configuração?
Existe alguma opção de configuração que eu ajustei anos atrás no meu antigo servidor e esqueci que preciso ajustar minha instância do Google Compute? :)
EDITAR:
Encontrei isso no log de erros:
Permission denied: AH00649: could not open transfer log file /home/kenny/domains/mydomain.com/logs/access.log.
AH00015: Unable to open logs
Eu verifiquei httpd.conf
e ele diz que o servidor é executado como Usuário: Grupo apache:apache
. Então, fiz o seguinte para garantir que o apache tivesse permissão para gravar esses arquivos de log:
chgrp -R apache /home/kenny/domains
chmod g+w /home/kenny/domains/mydomain.com/logs
Ainda recebo o erro. Eu até tentei:
touch /home/kenny/domains/mydomain.com/logs/access.log
chown kenny:apache /home/kenny/domains/mydomain.com/logs/access.log
chmod g+w /home/kenny/domains/mydomain.com/logs/access.log
Ainda está me dando o erro. Eu assegurei que o caminho do ancestral também é executável no apache.
/home/kenny is owned by kenny:kenny and is 755
/home/kenny/domains is owned by kenny:apache and is 755
/home/kenny/domains/mydomain.com is owned by kenny:apache and is 755
/home/kenny/domains/mydomain.com/logs is owned by kenny:apache and is 775
/home/kenny/domains/mydomain.com/logs/access.log is owned by kenny:apache and is 664
Conteúdo do audit.log:
type=AVC msg=audit(1485115416.525:2112): avc: denied { open } for pid=25759 comm="httpd" path="/home/kenny/domains/mydomain.com/logs/access.log" dev="sda1" ino=36516072 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file
type=SYSCALL msg=audit(1485115416.525:2112): arch=c000003e syscall=2 success=no exit=-13 a0=7f6620cd15a8 a1=80441 a2=1b6 a3=ffffff00 items=0 ppid=1 pid=25759 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
type=SERVICE_START msg=audit(1485115416.567:2113): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=httpd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed
'