5

我正在尝试在 Linux/Ubuntu 中创建本地环境。

我已经安装了 Apache 2.4.7(使用 apt-get)。

我已将我的 /etc/hosts 更改为:

127.0.0.1   example.dev
127.0.0.1   localhost
...

我还在“/etc/apache2/sites-available”中添加了一个文件“example.dev.conf”,如下所示:

<VirtualHost *:80>
    ServerName example.dev
    DocumentRoot "/home/yahya/path/to/projec"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/home/yahya/path/to/project">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

但是当我转到 example.dev 时,我收到以下消息:

第403章 禁止!您无权访问此服务器上的 /。

我还编辑了<Directory />来自此链接的建议的 apache.conf 部分:Forbidden You don't have permission to access / on this server错误消息“Forbidden You don't have permission to access / on this server”

从:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order deny,allow
    Require all granted
</Directory>

我用过a2ensite。但仍然无法正常工作。

4

3 回答 3

2

即使解决方案可能不是这样,您也应该首先检查 apache 是否可以访问您的目录。这意味着您的文件夹应该具有“其他人”的阅读权限或学习如何在 linux 上配置 acls。

$ ls -la /home/nek
# ...
drwxrwxr-x   6 nek  nek    4096 nov.  19 21:07 MyFolderOfDev

重要的部分是权限的最后一部分:“rx”。如果您没有类似的东西,请使用以下命令:

$ chmod -R 755 MyFolderOfDev

您的原始配置对我来说看起来不错。如果您与另一个虚拟主机没有冲突,请检查。但这是我的配置,效果很好:

# Defining virtualhost
<VirtualHost *:80>
# This is not needed but seriously recommended
        ServerAdmin contact@moi.com
# This line is your host name (example.dev if you prefere)
        ServerName nekland
# You can add another server name using ServerAlias
    ServerAlias nekland.dev
# Path to your folder
    DocumentRoot /home/nek/Apache/SymfonyProject/web/
# Here are options neeeded to authorizations and I added some classical options
        <Directory /home/nek/Apache/SymfonyProject/web/>
                AllowOverride All
                Options -Indexes +FollowSymLinks +MultiViews
                Require all granted
        </Directory>
# For the error file, exactly like you did
        ErrorLog /var/log/apache2/nekland.err
        LogLevel warn
        CustomLog /var/log/apache2/nekland.log combined
# A little bonus that remove the server signature from http requests
        ServerSignature Off
</VirtualHost>

当然不要忘记在每次修改后重新加载 apache。

$ sudo service apache2 reload

如果没有任何效果...检查您的日志!这是找出您的请求为何有效的更好方法。

于 2014-11-26T23:13:46.713 回答
2

虽然解决了原来的问题,但这里还有一些调试思路:

  • tail -f /var/log/apache2/error.log 查看 apache 是否正在尝试使用您的站点或 /var/www/ 访问目录。在后一种情况下,apache2 不会选择您的虚拟主机。
  • 列出虚拟主机:apache2ctl -S。你的虚拟主机列在那里吗?
  • 是否a2ensite your.page.com有效或打印错误?
  • apache 2.4 要求 /etc/apache2/sites-available 中的配置文件以 .conf 结尾。这在早期版本中不是必需的,升级后可能会导致问题。
于 2019-01-13T21:16:54.507 回答
0

我刚刚在这上面花了几个小时,得出了一些人可能感兴趣的结论。没有配置“虚拟主机”——我不知道那是什么。这只是一个标准的 Apache 设置。

操作系统:Linux Mint 18.3(基于 Ubuntu Xenial)

服务器版本:Apache/2.4.18 (Ubuntu)
服务器构建时间:2018-04-18T14:53:04

我似乎发现权限和所有权可能很重要,但也很重要的是在名为/etc/apache2/sites-available/000-default.conf的文件中设置正确的内容。

这显然必须以 root 身份进行编辑。

我做了以下更改:
1)DocumentRoot:更改如下:

# DocumentRoot /var/www/html (i.e. default commented out)
DocumentRoot "/media/mike/W10 D drive/My Documents/localhost"


2) 调整一个“目录”指令并添加一个新指令:

<Directory />
            Options FollowSymLinks

# changed by me - NB this may or may not be important
#            AllowOverride None
             AllowOverride All 

</Directory>
# new "Directory" directive: appears to be crucial
<Directory /media/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Require all granted
</Directory>

注意我发现,一旦我将这些设置或任何它们提供给目录“/media”,/media 下的所有内容,包括我上面配置的 DocumentRoot(/media/mike/W10 D 驱动器/My Documents/localhost),都变成了可用:403没了!

于 2019-10-11T10:18:35.797 回答