我有一台没有 sudo、包管理器和互联网的企业 Red Hat 服务器。我需要一个网络服务器客户端,并尝试了 httpd 和 lighttpd 的安装程序和二进制文件,但仍然需要对 /usr/sbin/httpd 的引用。这需要sudo。无论如何,我可以让网络服务器在我的限制下运行吗?我的端口是1024以上。
我当前的解决方法是使用另一台 Windows 计算机作为 httpd 服务器,将 DNS 重定向到此 Red Hat 服务器。
答案1
python -m http.server
Python version 3: Serve current directory tree at http://$HOSTNAME:8000/
参考:马特咖喱.com
答案2
我非常怀疑您是否能够在这个 Red Hat 系统上运行网络服务器。它似乎已被“锁定”,因此除了您已经确定的问题之外,您还必须处理以下问题:
RH 系统默认启用 SELinux,鉴于该系统已“锁定”,我预计它仍会启用。在 SELinux 启用模式下,httpd 只能连接到 http_port_t 中指定的端口(80、81、443、488、8008、8009、8443、9000),因此您可以选择 4 > 1024。
RH 系统上的库存防火墙仅允许指定端口并阻止所有其他端口。您可以使用的 4 个端口中任何一个打开的可能性微乎其微,甚至不存在。
答案3
注意:我刚刚在评论中看到你甚至有一个gcc
编译器。恐怕我的答案在这种情况下将毫无用处,但同样,如果没有基本的开发工具,您可能需要考虑真正的问题来自其他地方的想法......
您不需要 root 访问权限来安装网络服务器。您可以轻松地将lighttpd安装在您的主目录中,而无需访问系统上的任何受限位置。唯一的技巧是:您必须手动编译它(但是,编译 lighttpd 确实并不长)。
- 下载/获取lighttpd 的来源。
- 提取它们。
$ tar -xvf lighttpd-*.tar.gz
- 进入刚刚解压创建的目录,并使用脚本配置构建过程
configure
。
这里的技巧是使用不同的安装前缀,并在可用位置(您的主目录)执行安装。
$ mkdir ~/lighttpd
$ ./configure --prefix=$HOME/lighttpd
- 使用构建一切
make
并使用执行安装make install
。
$ make
$ make install
请注意,最后一个命令(通常需要 root 权限,因为它在 中安装文件/sbin
)在这里不会失败。现在 lighttpd 已安装,请转到~/lighttpd
并准备启动您的服务器。
- 为lighttpd 创建默认配置文件。
~/lighttpd/etc/
同时在文档根目录中创建配置文件:
$ cd ~/lighttpd
$ mkdir etc www
$ emacs etc/lighttpd.conf
随意使用您最喜欢的编辑器,并在文件中编写一些默认配置:
server.document-root = "/home/you/lighttpd/www/"
server.port = 3000
mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png"
)
- 返回
sbin
并检查您的配置:
$ cd ~/lighttpd/sbin
$ ./lighttpd -tf ../etc/lighttpd.conf
Syntax OK
- 启动你的服务器。
$ ./lighttpd -Df ../etc/lighttpd.conf
根据我们的配置,服务器应该可以在http://本地主机:3000/,其文档根位于~/lighttpd/www
。想了解更多详情,请查看他们的配置教程, 要不就他们的一般文档。 lighttpd 非常容易设置,我确信您可以对其他服务器执行相同的过程(./configure --prefix
、make
、make install
、 阅读文档)(即使它们可能需要更多时间和调整)。
关于服务器管理的注意事项:如果您所在的公司设有 IT 部门,请将 IT 问题留给他们。首先,他们应该确保您拥有所需的所有工具,如果他们不希望您编译服务器并使其侦听端口,那么他们应该相应地配置其基础设施。我在这里描述的编译过程在没有 root 权限的情况下没有理由失败,并且在高端口上运行服务器应该没有问题。当然,该服务器很可能会隐藏在本地网络上,并且从外部无法访问,但如果他们对自己的基础设施非常怀疑,以至于他们不会让任何计算机打开端口来侦听自己的 LAN,那么他们有比用户安装 lighttpd 更紧迫的事情需要处理。
答案4
您可以拥有一个网络服务器,但如果没有 root 访问权限,它就无法位于端口 80。1000 以下的任何内容都需要 root 权限。你可以有 8080,或者几乎任何高于 1000 的东西。
如果您无法使用通常的包管理器,则必须从源代码构建,我想我确实记得包管理器可以将其缓存保存在不同的位置。问题是通常的设置假定基本的根访问权限,因此您需要手动进行更多配置。