Nuovo CentOS 7 installare (Google Compute), non può aggiungere voci VirtualHost a /etc/httpd/conf.d/

Ho appena fatto un'installazione di base e Apache 2.4 si avvia bene. Sto migrando da un vecchio server che gestisce Apache 2.2.

Quando ho inserito un file in /etc/httpd/conf.d che contiene una definizione di VirtualHost e riavvia il server, si blocca all'avvio. Questa definizione di VirtualHost è quella che utilizzo dal mio server precedente.

 # 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. # 

Ecco il contenuto del file conf (con il nome del dominio modificato):

 <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> 

Ho controllato la syntax del file:

 # httpd -t Syntax OK # 

Se rimuovo il file e riavvii, Apache si avvia bene. Ho assicurato che le autorizzazioni sui miei file corrispondano ai file conf esistenti:

 # 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 # 

C'è qualcosa di cambiato in Apache 2.4 che è in conflitto con la mia definizione VirtualHost?

Esistono alcune misure di sicurezza in un'istanza standard di Google che rifiuta la mia configuration?

C'è qualche opzione di configuration che ho tweaked anni fa sul mio vecchio server e ho appena dimenticato che ho bisogno di modificare l'istanza di Google Compute? 🙂

EDIT:

Trovato questo nel registro degli errori:

 Permission denied: AH00649: could not open transfer log file /home/kenny/domains/mydomain.com/logs/access.log. AH00015: Unable to open logs 

Ho controllato httpd.conf e dice che il server viene eseguito come User: Group apache:apache . Quindi ho fatto quanto segue per assicurare che apache abbia avuto il permesso di scrivere i file di log:

 chgrp -R apache /home/kenny/domains chmod g+w /home/kenny/domains/mydomain.com/logs 

Ho ancora l'errore. Ho anche provato:

 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 

Ancora mi dà l'errore. Ho assicurato che il path degli antenati sia eseguibile anche per 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 

Contenuto del 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=unborderd_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 

'

One Solution collect form web for “Nuovo CentOS 7 installare (Google Compute), non può aggiungere voci VirtualHost a /etc/httpd/conf.d/”

Stai eseguendo CentOS 7, che ha abilitato SELinux per impostazione predefinita.

Quando si tenta di avviare Apache, cerca di caricare i file nella directory principale di un utente, che non è consentito per impostazione predefinita.

È ansible consentire a Apache di leggere i file nelle home directory degli utenti impostando il boolean appropriato, httpd_read_user_content . Sarebbe un'idea migliore per trasferire il contenuto web in un luogo più appropriato, ad esempio sotto /srv/www o /var/www .

Tuttavia, non esiste alcun boolean SELinux per consentire al server web di scrivere in home directory utenti, ovviamente pericolose. Dovresti davvero spostare i file di registro altrove. La posizione standard è /var/log/httpd . Se gli utenti devono essere in grado di leggerli, è ansible impostare le autorizzazioni per farlo.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.