我有以下问题
我的主机文件如下:
127.0.0.1 localhost
127.0.1.1 barbala4o-HP-ProBook-4530s
127.0.1.1 mysite.localhost
/etc/apache2/sites-available/mysite.localhost.conf
中的文件如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/mysite-error.log
CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>
执行sudo a2ensite mysite.localhost.conf
并在mysite.localhost /上重启apache后,只在localhost上运行以下内容(如列出没有索引文件的目录):
Index of /
[ICO] Name Last modified Size Description
[DIR] apache_logs/ 2013-09-24 10:15 -
[DIR] mysql/ 2013-10-22 10:05 -
[DIR] tools/ 2013-10-22 10:05
在/var/www/
目录中的任何其他文件夹上,例如当我输入localhost/test
而不是加载显示的index.php
文件时进行测试:
Not Found
The requested URL /adlantic was not found on this server.
Apache/2.4.6 (Ubuntu) Server at localhost Port 80
如果我执行sudo a2dissite mysite.conf
并重新启动apache,则一切正常。我想这个问题出现在mysite.localhost.conf
的某处,但我无法找到。有任何想法吗? 10X
答案 0 :(得分:56)
Ubuntu 13.10和变种已转移到Apache 2.4。 Apache 2.4希望启用的虚拟主机配置文件默认以.conf结尾。
<强>解决方案强>
现在要解决此问题,您可以使用两种方法来实现相同的结果。
第一个解决方案和简单的解决方案是为所有虚拟主机添加.conf扩展名。新的Apache 2.4使用新的Apache 2.4配置文件中概述的.conf扩展名读取站点可用目录中的每个虚拟主机。
第二个解决方案是删除位于/etc/apache2/apache2.conf的Apache 2.4配置文件中的.conf扩展名
在旧的Apache 2.2文件中,.conf文件包含一个包含站点的/,而新的.conf文件有
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
将该行更改为:
# Include the virtual host configurations:
IncludeOptional sites-enabled/
结果:命令a2ensite yourdomain现在按预期运行。如果您使用第二种方法;您的虚拟主机文件不需要具有.conf扩展名。
Note: Configuration file is "/etc/apache2/apache2.conf" in new Apache, so please copy document root path and other configurations from "/etc/apache2/sites-available/000-default.conf" to "/etc/apache2/apache2.conf"
答案 1 :(得分:13)
我在实验3小时后发现了问题。显然在新的Ubuntu 13.10中出于某些愚蠢的原因,虚拟主机的conf文件必须与此类似:
<VirtualHost mysite.localhost>
ServerAdmin webmaster@example.com
ServerName mysite.localhost
ServerAlias mysite.localhost
# Indexes + Directory Root.
DocumentRoot /var/www/mysite/public_html
<Directory /var/www/mysite/public_html/>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Logfiles
ErrorLog /var/log/apache2/mysite-error.log
CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>
显然,开发Ubuntu 13.10的人决定使用
不再有价值<VirtualHost *:80>
制作虚拟主机时,必须
<VirtualHost mysite.localhost>
与专门指定DirectoryIndex混合使用。这解决了我遇到的问题,现在事情正在发挥作用(希望如此,最终会出现一些问题)显然apache的配置文件是不同的。
答案 2 :(得分:5)
我遇到了同样的问题,但上述帖子中没有一个适合我。后来我阅读并查看了Apache和PHP的每个配置文件。
我可以弄清楚在apache2.conf中(在ubuntu 13.10中)有一个名为
的标志HostnameLookups off
默认设置为关闭,我将其更改为
HostnameLookups on
通过这样做,Apache开始提升我的主机条目和vhost配置。
以下是我的实际Vhost文件。我曾经使它工作
Offcourse我也建议在Vhost指令中添加Require all granted
。
<VirtualHost *:80>
ServerName test.yoursite.domain.in
DocumentRoot path_to_code_base/public
<Directory path_to_code_base/public>
Options -Indexes
Require all granted
DirectoryIndex index.php
AllowOverride All
</Directory>
ErrorLog /path_to_code_base/logs/error.log
LogLevel warn
CustomLog /path_to_code_base/logs/access.log combined
</VirtualHost>
我发布这个帖子是为了帮助那些不想浪费时间的人将Ubuntu从13.10降级到13.04。
我没有看到这个博客,我也无法理解hostnameLookups究竟是什么意思。
希望这会有所帮助。
答案 3 :(得分:2)
Apache 2.4.6
中的Ubuntu 13.10
,
你将
/etc/apache2/apache2.conf
/etc/apache2/sites-available/000-default.conf
和
/etc/apache2/sites-enabled/000-default.conf
指向 /etc/apache2/sites-available/000-default.conf
现在,修改apache2.conf
并添加
<Directory /home/my_site/public_html/>
#YOUR SETTINGS
</Directory>
并修改sites-available/000-default.conf
并将<VirtualHost *:80>
更改为<VirtualHost localhost:80>
以使apache侦听localhost(在端口80上)以获取默认设置。
现在让mysite.localhost
工作,将其添加到sites-available/000-default.conf
<VirtualHost mysite.localhost:80>
ServerName mysite.localhost
ServerAdmin webmaster@mysite.localhost
DocumentRoot /home/my_new_site_public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
现在修改您的/etc/hosts/
文件,将IP
的{{1}}从mysite.localhost
更改为127.0.1.1
现在访问127.0.0.1
&amp; http://mysite.localhost
:)
答案 4 :(得分:1)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mysite.localhost
DocumentRoot /var/www/mysite
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/mysite-error.log
CustomLog /var/log/apache2/mysite-access.log common
</VirtualHost>
在我的情况下,我在经过多次试验和错误后将<VirtualHost *:80>
替换为<VirtualHost mysite.localhost:80>
我希望这会有所帮助。
此致
答案 5 :(得分:0)
执行:
vim可以用你最喜欢的文本编辑器改变,如nano,pico等。
vim /etc/apache2/apache2.conf
原始档案:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share/>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
将所有内容更改为
编辑文件:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share/>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
答案 6 :(得分:0)
对于Kubuntu 14.04&amp; Apache 2.4.7
在尝试上述建议后,仍然遇到权限问题,“chmod 755 $ HOME”为我工作。 不得在多用户系统上使用。
答案 7 :(得分:0)
如果您正在使用AWS实例,那么您需要使用sudo来完成所有这些设置。
sudo a2ensite example.com
请记住,即使重新启动apache也需要执行此操作。如果你没有看到你发生的变化,这可能是罪魁祸首。
sudo service apache2 restart