我正在尝试安装本地主机网络服务器在我的 Ubuntu 18.04 上按照此说明进行操作。
如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP(LAMP)堆栈
但通过测试apach2
我得到了这个错误:
r$ sudo apache2ctl configtest
[Thu May 06 18:03:12.897955 2021] [core:error] [pid 22264] (EAI 2)Name or service not known: AH00549: Failed to resolve server name for 192.168.1.12 (check DNS) -- or specify an explicit ServerName
Syntax OK
所以我猜想一定与其他本地服务器安装存在冲突,例如公共或者当地的。
更新:
这是详细信息链接存档 /etc/apache2/apache2.conf
:
谢谢。
答案1
看起来 apache 无法从您的本地 DNS 服务器确定您的主机“名称”,它使用您的服务器的 IP 地址 (192.168.1.12) 进行反向查找以获取名称。如果您的 DNS 服务器没有响应,那么您将收到此警告。
apache 配置文件确实允许您将服务器名称设置为硬编码值。配置文件注释得很好,ServerName 选项位于顶部附近。我的位于 /etc/apache2/apache2.conf 中的“全局配置”部分。
答案2
您不太可能遇到冲突。Apache 正在寻找用于路由的完全限定域名 (FQDN),而您尚未设置。您看到的消息更像是警告。也就是说,本地安装最简单的方法是提供明确的 ServerName。
这是一个简单的方法:
- 打开终端(如果尚未打开)
- 使用您喜欢的文本编辑器创建/编辑
/etc/apache2/conf-available/servername.conf
。请务必使用 执行此操作sudo
,否则文件将无法保存。 - 添加以下行:
如果您希望默认 FQDN 为其他值,请务必将其设置ServerName my-machine.local
my-machine
为您喜欢的值。实际上,它没有任何限制。然后保存文件并退出编辑器。 - 启用 Apache 配置:
sudo a2enconf servername
- 重新加载 Apache Web 服务器:
sudo service apache2 reload
这应该可以消除警告信息。
ServerName
在创建配置文件时,请确保在每个指定的 VirtualHost 块中设置变量/etc/apache2/sites-available
。通过这样做,您可以在浏览器中测试/开发/工作时使用本地 DNS 路由来更好地模拟实时网站。以下是Apache 中虚拟主机的/etc/hosts
示例文件:.conf
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/website/public
ServerName your-blog.local
ServerAlias your-blog.local *.your-blog.local
DirectoryIndex index.php index.html
ErrorLog ${APACHE_LOG_DIR}/blog-error.log
CustomLog ${APACHE_LOG_DIR}/blog-access.log combined
</VirtualHost>
<Directory /var/www/website/public>
Options FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow From All
</Directory>
注意ServerName
配置文件中的行。通过此行,您可以编辑/etc/hosts
文件并添加:
127.0.0.1 your-blog.local
执行此操作后,任何时候您your-blog.local
在浏览器中键入内容(在该计算机上),您都将被重定向到本地站点,而无需使用 IP 地址或http://localhost
。这非常方便。