Minha máquina host é o Windows 7 e a máquina convidada é o CentOS 7. Sou novo no Apache e estou tentando criar o VirtualHost no CentOS7. Eu li muita documentação e muitas respostas sobre StackCommunity (apache links simbólicos ) host virtual CentOS7 e em. Aqui está o que eu fiz.
Minha configuração de arquivo /etc/httpd/conf/httpd.conf
sem adicionar alterações a ela:
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
ServerName localhost
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
Adicionei index.html a /var/www/html
com esse conteúdo:
<html>
<title> The library </title>
<body>
<h2> Welcome to our library </h2>
<br /> <hr> <br />
<img width = "600" height = "400" src = "images/library.jpg">
<body/>
</html>
Em seguida, criei o link de símbolo para /var/www/html/index.html
in /var/www/my_host/my_host.html
ln -s /var/www/html/index.html /var/www/html/my_host.html
Próxima etapa: criei my_host.conf
em /etc/httpd/conf.d/
e permiti Symlink :
vim /etc/httpd/conf.d/my_host.conf
<VirtualHost *:80>
ServerName www.my_host.com
ServerAlias *.my_host.com
DocumentRoot /var/www/my_host
<Directory "/var/www/my_host">
Options FollowSymLinks Indexes
AllowOverride All
</Directory>
ErrorLog /var/www/my_host/error_log
LogFormat "%a %v %p %U %m %T" common_new_format
CustomLog /var/www/my_host/custom_log common_new_format
</VirtualHost>
Em seguida, verifiquei o apache com este comando: apachectl configtest
e obteve output = > %código%.
Depois de todos esses passos eu iniciei o httpd:
systemctl start httpd
Tudo começou perfeitamente.
Mas houve um problema que recebi no error_log do meu host virtual:
Syntax OK
Entendo que posso adicionar AH01276: Cannot serve directory /var/www/my_host/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive
ao meu arquivo DirectoryIndex my_host.html
, mas por que meu symlink my_host.conf
não funcionou como eu esperava que fosse? Eu pensei que seria o suficiente para permitir my_host.html -> ../html/index.html
no meu diretório FollowSymLinks
e eu não precisei apontar outro /var/www/my_host/
? Minha pergunta é: Por que DirectoryIndex
não é suficiente para apontar FollowSymLinks
se eu já adicionei o link simbólico para index.html?