ubuntu 13.10和apache 2.4.6上的虚拟主机

时间:2013-10-22 13:12:43

标签: apache apache-config ubuntu-13.10

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

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

8 个答案:

答案 0 :(得分:56)

Ubuntu 13.10和变种已转移到Apache 2.4。 Apache 2.4希望启用的虚拟主机配置文件默认以.conf结尾。

<强>解决方案

现在要解决此问题,您可以使用两种方法来实现相同的结果。

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

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

  3. 在旧的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