40

我有以下问题
我的主机文件如下:

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>

在 mysite.localhost/ 上执行sudo a2ensite mysite.localhost.conf并重新启动 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但我找不到在哪里。有任何想法吗?10倍

4

8 回答 8

56

Ubuntu 13.10 及其变体已移至 Apache 2.4。Apache 2.4 希望启用的虚拟主机配置文件默认以 .conf 结尾。

解决方案

现在要纠正这个问题,您可以使用两种方法来获得相同的结果。

  1. 第一个解决方案和简单的解决方案是为您的所有虚拟主机添加一个 .conf 扩展名。新的 Apache 2.4 读取站点可用目录中的每个虚拟主机,扩展名为 .conf,在新的 Apache 2.4 配置文件中列出。

  2. 第二种解决方案是删除位于 /etc/apache2/apache2.conf 的 Apache 2.4 配置文件中的 .conf 扩展名

在旧的 Apache 2.2 文件中,.conf 文件有一个 Include sites-enabled/ 而新的 .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"
于 2013-10-23T04:22:06.920 回答
14

经过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 的配置文件不同。

于 2013-10-22T14:53:22.637 回答
6

我有同样的问题,但以上这些帖子都不适合我。后来我阅读并审查了 Apache 和 PHP 的每一个配置文件。

我可以弄清楚在 apache2.conf(在 ubuntu 13.10 中)中有一个名为

HostnameLookups off

默认情况下,这将设置为关闭,我将其更改为

HostnameLookups on

通过这样做,Apache 开始很好地收集我的主机条目和虚拟主机配置。

下面也是我的实际 Vhost 文件。我曾经让它工作

当然,我也建议Require all granted在 Vhost 指令中添加 with 。

<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 的实际含义是什么。

希望这可以帮助 。

于 2014-02-15T17:08:47.993 回答
2

对于Apache 2.4.6Ubuntu 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/文件并将from更改IPmysite.localhost127.0.1.1127.0.0.1

现在访问http://mysite.localhost&http://localhost

:)

于 2013-12-23T12:24:37.867 回答
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>经过多次试验和错误后才更换

我希望这有帮助。

问候,

于 2014-04-08T06:48:26.770 回答
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>
于 2014-03-14T09:26:41.533 回答
0

对于 Kubuntu 14.04 和 Apache 2.4.7

在尝试了上述建议后,仍然遇到权限问题,“chmod 755 $HOME”对我有用。不能在多用户系统上使用。

于 2014-06-27T05:26:48.583 回答
0

只是给人们关于这个主题的注意事项,如果您使用的是 AWS 实例,则需要使用 sudo 来进行所有这些设置。

sudo a2ensite example.com

请记住,即使重新启动 apache,您也需要这样做。如果您没有看到您的更改正在发生,这可能是罪魁祸首。

sudo service apache2 restart
于 2015-02-27T16:02:04.830 回答