AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 888790
Accepted
gen_Eric
gen_Eric
Asked: 2017-12-19 20:55:23 +0800 CST2017-12-19 20:55:23 +0800 CST 2017-12-19 20:55:23 +0800 CST

Apache 不会在容器内运行

  • 772

我正在运行 Arch Linux,最重要的是,Ubuntu 在 systemd-nspawn 容器中。我突然在让 apache 启动(在容器内)时遇到问题。

几天前一切正常,但现在不行了。我不知道容器内部或外部的更新是否改变了某些东西。

在容器内,我看到以下内容:

root@container:~# apachectl -k start
/usr/sbin/apachectl: 99: ulimit: error setting limit (Operation not permitted)
Setting ulimit failed. See README.Debian for more information.
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action '-k start' failed.
The Apache error log may have more information.

我检查了使用lsof,netstat但端口 80/443 上没有运行其他任何东西。另外,那个“ulimit”错误是什么?那里发生了什么事?

我确实使用sudo systemctl edit [email protected]编辑设置来禁用私有网络并启用一些绑定挂载:

[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest -U --settings=override --machine=%i \
        --bind-ro=/etc/resolv.conf:/etc/resolv.conf \
        --bind=/home/nticompass/Code/website:/opt/website

是的,容器内的 apache 配置设置为/opt/website用作其根。我将它绑定挂载,因此我可以在我的主操作系统(Arch Linux)上使用我的 IDE 来编辑文件,然后让容器能够访问它们(无需复制/传输它们)。

我不确定在这里做什么。更新中有什么变化吗?我需要在 Arch Linux 上更新配置吗?为什么容器不能访问端口?那个“ulimit”错误是什么?

编辑:这是上周在我的 Arch Linux(主)系统上升级/安装的软件包列表:https ://pastebin.com/5xyGpBrw

ubuntu
  • 2 2 个回答
  • 1528 Views

2 个回答

  • Voted
  1. Tero Kilkanen
    2017-12-19T23:22:57+08:002017-12-19T23:22:57+08:00

    我们无法判断更新是否更改了某些内容,因为您的问题中没有任何有关更新的信息。在系统停止工作之前,我们需要知道系统中安装了哪些更新。

    错误ulimit和Apache启动失败很可能是由于权限不足造成的。

    所以,肯定有一些东西改变了你的容器的启动方式。

    • 0
  2. Best Answer
    gen_Eric
    2017-12-21T12:35:07+08:002017-12-21T12:35:07+08:00

    此问题是由 Arch Linux 中的 linux 内核更改引起的。从内核 4.14.5 开始,该-U选项(这是 的默认值systemd-nspawn)创建一个非特权容器。它曾经创建一个特权,但现在不是了。

    这就是阻止 apache 打开端口 80 和 443 的原因。

    解决方案是运行sudo systemctl edit [email protected]并删除该-U选项。我还必须编辑/etc/systemd/nspawn/my-container.nspawn并添加以下内容:

    [Exec]
    PrivateUsers=off
    

    感谢:https ://bbs.archlinux.org/viewtopic.php?pid=1756246#p1756246

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve