【问题标题】:How to fix '(38)Function not implemented: AH00141: Could not initialize random number generator' after upgrading Apache from 2.4.18 to 2.4.46?如何在将 Apache 从 2.4.18 升级到 2.4.46 后修复“(38) 功能未实现:AH00141: 无法初始化随机数生成器”?
【发布时间】:2021-06-11 11:44:18
【问题描述】:

我有一个运行着 Ubuntu 16.04、Apache 2.4.18、PHP 7.3 和 7.4、PHP-FPM、PHP FastCGI、MPM 事件的系统。

我想升级到最新的Apache版本(2.4.46-2+ubuntu16.04.1+deb.sury.org+3 amd64 [upgradable from: 2.4.18-2ubuntu3.17])如下:

add-apt-repository -y ppa:ondrej/apache2

自动更新

apt-get --only-upgrade install apache2

服务 apache2 重启

apache2.service 的作业失败,因为控制进程以错误代码退出。详见“systemctl status apache2.service”和“journalctl -xe”。

journalctl -xe

apachectl[9010]: [:crit] [pid 9013] (38)函数未实现:AH00141: 无法初始化随机数生成器

我检查并安装了 /dev/random 和 /dev/urandom。 内核:4.4.0-042stab141.2 和 libc6:2.23-0ubuntu11.2

【问题讨论】:

标签: apache2 upgrade


【解决方案1】:

在 Ubuntu 上将 apache 升级到版本 2.4.46 后也发生在我身上。我发现是内核版本。

我知道我做了apt-get upgrade,内核应该是最新版本,也在运行 sudo update-grub 向我展示了较新的版本,但运行 uname -r 显示非常旧的内核。

经过几乎一整天的长期调查并尝试了我在网上找到的关于升级 Ubuntu 内核的所有内容 - 我发现它是 Digitalocean,而不是我。旧的 Droplet 使用外部托管内核 - 因此无论您在环境中做什么,它都将始终使用外部内核。解决方案在这里: https://www.digitalocean.com/docs/droplets/how-to/kernel/grubloader/#switch

如果您确实在 Digital Ocean 控制面板的 Droplet 设置中看到下拉和更改按钮,那么您的内核是外部管理的。在该下拉菜单中输入“grub”并选择 GrubLoader v0.2,按“更改”按钮就可以了!

现在您需要关闭并重新打开您的服务器,但在此之前,我建议您运行以下命令: sudo apt-get update sudo apt-get upgrade

以上升级将更新整个系统。要仅更新内核,请运行上述更新命令,然后执行: sudo apt-get upgrade linux-image-generic

现在关闭(sudo poweroff 或从 DigitalOcean 界面关闭电源,但首选从 CLI 执行此操作)。请注意,在这种特殊情况下重启是不够的,需要完全关闭(感谢@gauss256 的评论)。然后从数字海洋界面重新启动它,启动时您应该会看到一个新的内核版本。

提示 - 您可能希望在重新启动后删除旧的内核文件,这可以通过以下方式完成: sudo apt-get purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )

【讨论】:

  • 谢谢,可能节省了我几个小时。一个细节:更改内核后重新启动是不够的。您必须关闭(通过sudo poweroff)然后登录到 Digital Ocean 控制台才能让您的水滴再次启动。
  • 欢迎您,正确 - 需要关闭电源,重启是不够的
猜你喜欢
  • 2021-12-14
  • 2019-03-16
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2011-03-19
  • 2015-04-16
  • 2019-03-07
  • 1970-01-01
相关资源
最近更新 更多