笔记:这与我的问题相关:“Apache 2.4 无法重新加载,我的配置有问题吗?”。
我正在尝试在本地测试本地站点。据我了解,Apache 2(也许还有 Apache)有一个叫做VirtualHost
.我的一点点了解告诉我,虚拟主机是一种服务器/IP 地址可以服务多个域的方式。
configtest
无论如何,当我运行 Apache 2 来查看失败的地方时,我收到以下错误。我正在运行 Apache 2.4.10-1,似乎 Apache 2.2 和 Apache 2.4 之间发生了很多我不知道的变化。
$ sudo apache2ctl configtest
[sudo] password for shirish:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
这是/etc/hosts
文件:
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 debian mini
我还看到一个空/etc/hosts.conf
文件。也许需要将其中的数据/etc/hosts
复制到/etc/hosts.conf
服务器才能识别?
我的主机名:
$ hostname
debian
这是站点的配置文件:
$ cat /etc/apache2/sites-available/minidebconfindia.conf
<VirtualHost mini:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/in2014.mini/website
<Directory />
Options +FollowSymLinks +Includes
Require all granted
</Directory>
<Directory /var/www/html/in2014.mini/website/>
Options +Indexes +FollowSymLinks +MultiViews +Includes
Require all granted
</Directory>
</VirtualHost>
我也阅读有关绑定到地址和端口的信息,但由于多种原因我还不太理解。它没有给出/分享关于需要将这些行放在哪个文件中以及之前和之后会发生什么的示例。如果有一个例子就更好了。
我这样做并重新启动了服务器,但我仍然收到相同的错误。
~$ sudo apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Debian 中似乎有 3 个配置文件是我需要了解和理解的。
/etc/apache2$ ls *.conf
apache2.conf ports.conf
和
/etc/apache2/conf.d$ ls *.conf
httpd.conf
显然,apache2.conf 是全局配置文件,而 httpd.conf 是用户配置文件。还有 ports.conf。 apache2.conf 和 ports.conf 都是默认值,除了我将 Apache 的日志级别从 更改warn
为debug
。
我尝试了另一件事:
$ sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
127.0.1.1:80 debian (/etc/apache2/sites-enabled/minidebconfindia.conf:1)
*:80 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
也许有人有更多的见解。
答案1
要编辑的文件:
/etc/apache2/apache2.conf
编辑文件命令:
sudo nano /etc/apache2/apache2.conf
对于全局服务器名,您可以将其放在文件顶部(虚拟主机标记之外)。
第一行看起来像:
ServerName myserver.mydomain.com
然后使用以下命令保存并测试配置:
apachectl configtest
你应该得到:
语法确定
然后您可以重新启动服务器并检查是否没有收到错误消息:
sudo service apache2 restart
答案2
您必须设置服务器名称指令:
ServerName localhost
在 Debian 中,您可以将其设置为/etc/apache2/conf.d/httpd.conf
.
在 macOS 上,您可以在/private/etc/apache2/httpd.conf
.
答案3
要找到您的 Apache 配置文件,请尝试运行以下命令:
apachectl -t -D DUMP_INCLUDES
然后编辑该文件并找到该行ServerName
并取消注释,因此它看起来像:
ServerName localhost
答案4
在 apache24 配置文件中,您将看到以下行ServerName:80
:
- 将其留空。
- 然后在该行下方的空白处写入:
ServerName www.name (of your official domain or website.com:80)
- 保存配置文件。
- 转到
cmd
,以管理员身份打开它,更改dir
为 apache24 所在的位置 - 然后
cd apache24
然后cd bin
然后httpd.exe
你会看到问题已经解决了。