如何在将 Apache 从 2.4.18 升级到 2.4.46 后修复“(38) 功能未实现:AH00141: 无法初始化随机数生成器”?
Posted
技术标签:
【中文标题】如何在将 Apache 从 2.4.18 升级到 2.4.46 后修复“(38) 功能未实现:AH00141: 无法初始化随机数生成器”?【英文标题】: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? 【发布时间】: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
【问题讨论】:
可能相关:bugs.debian.org/cgi-bin/bugreport.cgi?bug=978045 tl;dr:您的内核可能没有启用getrandom
系统调用。
我面临同样的问题。可能值得在github.com/oerdnj/deb.sury.org/issues 上创建一个问题,但 16.04 将在 3 周内结束生命……升级 ubuntu 安装并使用 canonical 提供的软件包可能值得。
【参考方案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 控制台才能让您的水滴再次启动。
欢迎您,正确 - 需要关闭电源,重启是不够的以上是关于如何在将 Apache 从 2.4.18 升级到 2.4.46 后修复“(38) 功能未实现:AH00141: 无法初始化随机数生成器”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Apache 2.4.18 Server 中实现没有 ssl 的 http2
Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长
在将 quasar 升级到 vue 2 到 vue 3 时,找不到 core-js/modules/es.typed-array.at.js 依赖项
WAMP : Forbidden 您无权访问此服务器上的 /。 Apache/2.4.18 (Win64) PHP/5.6.19