我的目标:在 Ubuntu 上运行 Apache。在将 HTML 放到共享主机上之前,使用它来调试网站。
我希望:每次 Firefox 运行时,它都会呈现相同的网站。
我得到:Firefox 无法可靠地呈现我的简单网站。
我正在调用我的简单网站赢网。我的测试网址分别是以下四个赢网下面的 hosts 文件列表中列出的 URL。
示例:我在 Ubuntu 中启动 Firefox。我的测试 URL 在关机期间处于活动状态;Firefox 会记住并处理它。会出现以下三种结果之一:
- 我的网站绘制正确。
- Firefox 告诉我:“无法连接 | 连接到本地主机时发生错误。”
- Firefox 告诉我:“未找到 | 未在此服务器上找到所请求的 URL。”
我关闭 Firefox。我启动 Firefox。上述三种结果之一发生。如果此渲染请求位于发生另一个请求的 Firefox 会话中,则两种结果相同。刷新有同样的结果。
也许问题出在我的计算堆栈上。我使用的是 Win10 计算机。在它上面,我运行 VMWare Workstation 16 Player。在其中,我运行 Ubuntu。这三个都是最新的。
我认为该网站的风险较低。
它只有 56 行简单而原始的 HTML,包含两张图片。它在共享托管环境中运行了几年,无需修改。
我在 Windows 环境中拥有该网站的副本。该网站在 Windows Firefox 中运行可靠,使用以下形式的 URL文件:///C/.../index.html。
我在 Ubuntu 环境中没有对类似的 URL 做过太多处理(文件:///var/www/html/win.com/index.html)。为了撰写这篇文章,我尝试了几次,结果都是一样的。
我无法再访问共享托管环境。
Ubuntu 主机文件(/etc/hosts)的相关细节是
127.0.0.1 localhost
127.0.0.1 https://localhost
127.0.0.1 win.com
127.0.0.1 https://win.com
127.0.0.1 localhost/win.com
127.0.0.1 https://localhost/win.com
我通过以下方式通知 Apache 有关该网站的信息/etc/apache2/sites-enabled/win.com.conf:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName win.com
ServerAlias *.win.com
DirectoryIndex index.html
CustomLog ${APACHE_LOG_DIR}/access-win.com.log combined
ErrorLog ${APACHE_LOG_DIR}/error-win.com.log
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName win.com
ServerAlias *.win.com
DirectoryIndex index.html
CustomLog ${APACHE_LOG_DIR}/access-win.com.log combined
ErrorLog ${APACHE_LOG_DIR}/error-win.com.log
<Directory /var/www/html/win.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/self-signed-win.com.crt
SSLCertificateKeyFile /etc/ssl/private/self-signed-win.com.key
</VirtualHost>
我定期监控文件夹/var/日志/apache2/(APACHE_LOG_DIR)。文件访问日志,错误日志,访问-win.com.log, 和错误日志通常为零长度。
这个问题是我所知道的最具体的。如果我身处程序员群体,我会向他们寻求帮助,而提出这个问题则比这更省力。但我不属于群体。
我在这里查找了相关问题。没有找到。
使用虚拟主机时出现“无法访问此站点”非常相似,但我没有犯那里修复的错误。
https://askubuntu.com/a/1373651为我的会议文件。
我更擅长 Windows,而不是 Ubuntu 或 Apache。这个练习帮助我学习后两者。
我读得很好。如果您知道答案在哪里,请随时告诉我那个位置,我会很高兴在那里找到答案。也许可以通过给我一个搜索词或主题区域来限制我需要进行的搜索范围!
我没有从文档中获得帮助,因为我对错误的性质不够了解,无法阅读它。
如果该问题不适合本网站,我很乐意根据要求删除该问题,且不问其他问题。
我会感谢所有提供的帮助。我不会怨恨任何人跳过这个问题。
答案1
您的/etc/hosts
文件已损坏。此文件中必须只有主机名,没有 url,没有/
。只有名称。您需要列出要使用的所有名称。此外,保留所有默认的 IPV4 和 IPV6 行。这些使 ubuntu 顺利运行。示例:
127.0.0.1 localhost
127.0.1.1 yourpcname
# win.com
127.0.0.1 win.com foo.win.com bar.win.com
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
这样,您就可以访问http://win.com
、http://foo.win.com
、http://bar.win.com
。当然,您也可以使用 https 访问,即https://win.com
只要 apache 配置正确。
现在的错误:
- Firefox 告诉我:“无法连接 | 连接到本地主机时发生错误。”
Apache 2 服务器未运行。使用类似 的命令启动 Apachesudo systemctl restart apache2
。如果它没有启动,则说明配置有错误。在这种情况下,运行sudo apache2ctl configtest
。这将告诉您错误在哪里。 - Firefox 告诉我:“未找到 | 未在此服务器上找到请求的 URL。”。
这是 apache 服务器在回答您的查询。您要求的是,例如,http://win.com/foo/bar.html
但 apache2 无法将该 URL 映射到文件。检查/var/log/apache2/access.log
。您的 documentroot 是/var/www/html
,因此,为了满足http://win.com/foo/bar.html
,apache2 将搜索文件/var/www/html/foo/bar.html
。如果该文件不存在,它将返回“404 未找到”错误。请注意,使用您当前的配置:ServerName win.com ServerAlias *.win.com
http://win.com/foo/bar.html
和 的 查询http://foo.win.com/foo/bar.html
将映射到同一个文件/var/www/html/foo/bar.html
。如果您需要为不同的名称设置不同的文件夹,则必须使用不同的VirtualHost
部分,每个部分都有自己的ServerName
和自己的 documentroot。