当我.html
在 Windows 8.1 上的浏览器中打开某个文件(例如此文件C:\Users\me\sbox\foo\client\index.html
)时(网址为file:///C:/Users/me/sbox/foo/client/index.html
:),浏览器会解析该文件,我可以像访问网页一样查看它。无需运行 Web 服务器,因为它只是 html 标记文件。
我想在我的 Ubuntu(实际上是 Amazon Linux)上做同样的事情。我想在浏览器中输入我的 Ubuntu 的 IP 地址并获取/var/www/index.html
。我的意思是公共 IP,即:http://123.12.12.12/
或http://123.12.12.12/index.html
并在浏览器中获取页面。
有可能吗?如何实现?我真的需要运行任何 Web 服务器吗?我只想打开一个.html
文件.php
,不需要解析器。
据我了解,我需要:
开放:80端口
设置一些配置,以便所有公共入站 http:80 请求都转到
/var/www
文件夹。
我说得对吗?该怎么做?
答案1
如果你想要一个快速而肮脏的单行命令,请使用 python SimpleHTTPServer
python -m SimpleHTTPServer
如何将其用于您的案例:
$ cd /var/www
$ python -m SimpleHTTPServer
就是这样!这将为当前目录提供服务。默认端口为 8000,因此您的网站可以从本地计算机/var/www
访问http://ip-address:8000
http://localhost:8000
要访问未命名的其他文件index.html
,请使用其名称http://ip-address:8000/other-name.html
,如果没有 index.html,您将看到一个包含文件夹中所有文件的目录列表。
要更改端口,您需要具有 sudo 权限:
$ sudo python -m SimpleHTTPServer 80
此命令将在端口 80 上为您的目录提供服务,如果您已经安装了 apache2,则可以将此端口更改为 81,这样就不会发生端口冲突,您将从访问您的网站http://ip-address:81
,请不要忘记在防火墙中允许这些端口,以允许端口 80 使用:
$ sudo ufw allow 80/tcp
没有网络服务器
另一种方法是不使用任何 Web 服务器,只需在服务器上安装您最喜欢的桌面环境和浏览器,然后使用您选择的远程桌面连接到它。然后,您的网站将像以前一样从浏览器中访问file:///var/www/index.html
答案2
是的,您需要一个 Web 服务器。查看您请求的 URL。如果第一部分(即协议)是“file:”,则浏览器将对文件进行本地搜索。如果协议是“http:”,则浏览器将在端口 80 上打开与 URL 的服务器部分的网络连接。
仅当您已成功将某种网络共享安装到 Amazon Linux 服务器上时,您才可能能够在此处使用“file:”协议。否则,即使您只希望传输 html 文件(而不是在 .php 的情况下解析和执行),您也需要在另一端安装 Web 服务器。幸运的是,安装 Apache2 正是这样做的,而且并不困难。
答案3
要从另一台计算机通过浏览器访问您的文件,您将需要一个网络服务器来管理请求。
Apache 网络服务器将会执行此操作。
安装
sudo install apache2
启动服务器
sudo /etc/init.d/apache2 start
停止服务器
sudo /etc/init.d/apache2 stop
当 Apache 服务器运行时,所有这些 URL 都指向同一个文件,请在浏览器中尝试它们。
文件:///var/www/html/index.html
本地主机/index.html
{你的 IP 地址}/index.html