标签: debian

Debian jessie nginx with openssl 1.0.2 使用 ALPN 而不是 NPN

我在我的服务器上运行 debian jessie,最近升级到支持 http/2 的新 nginx web 服务器(nginx 1.10)。与今天一样,它运行良好,并且网络服务器正在使用 http2 协议提供内容。

我读过,chrome 正在放弃 NPN 支持,并且只在 2016 年 5 月 15 日之后才允许使用 ALPN。ALPN 是扩展,需要安装 openssl 1.0.2,但在 debian jessie 上只有 openssl 1.0.1(在 debian backports 和另一个存储库上,这个 debian 没有 openssl 1.0.2 版本)。

还有一个问题——我已经从 SPDY 升级到了 http2,几天后,我将不得不关闭 http2 并且无法使用 SPDY,因为这个版本的 nignx 只有 http2。我也读过,这个版本的 debian 将坚持使用 openssl 1.0.1,只有 debian stretch 会有 openssl 1.0.2。但是到发布日期快一年了,chrome 很快就会停止支持,所以我不想失去 http2 协议的好处。

是否有任何解决方案,如何在此系统上安装 openssl 1.0.2,而无需构建自己的构建(糟糕的维护)或等待向后移植存储库拥有它?如果必须手动链接和维护其中之一,我也不希望我的系统上有两个版本的 openssl。

谢谢你的帮助。

debian nginx openssl debian-jessie http2

14
推荐指数
2
解决办法
2万
查看次数

没有来自 docker 容器的 IPv6 连接

我在 docker 中启用 IPv6 时遇到了严重的问题。

环境

  • 主机正在运行 Debian Jessie。
  • 它是一个虚拟服务器 (KVM)。
  • eth0 在像 w:xy:z::/64 这样的网络中有一个像 w:x:y:z::1 这样的静态配置地址,它是由我的托管公司分配给我的。
  • 我的主机能够毫无问题地使用 IPv6:Ping 外部世界有效,可以通过 ipv6 访问在容器上运行的网站(端口 80 绑定到主机:80)。

问题

但是,我无法从容器内访问外部世界!使用以下参数重新启动 docker 后,我的 docker0 网桥没有 IPv6 地址。也没有路由,也没有网关(没有 ipv6 地址就没有意义)。

我的 Docker 设置:Docker 是使用 DOCKER_OPTS 中的这些参数启动的

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ipv6 --fixed-cidr-v6=w:x:y:z:a::/80"
Run Code Online (Sandbox Code Playgroud)

一些 ipv6 主机配置参数:

net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1
Run Code Online (Sandbox Code Playgroud)

这是我自己创建的网络之一:

root@wopr:~# docker network inspect wopr6
[
    {
        "Name": "wopr6",
        "Id": "ddc192d4af2a8edc809975e84cf3e4cb82c24d4cfe970dd8e3fc7d6ff31e20ee",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": …
Run Code Online (Sandbox Code Playgroud)

networking debian ipv6 docker

14
推荐指数
1
解决办法
6800
查看次数

从 Debian 10 Buster 升级到 Debian 11 Bullseye 安全更新 404 未找到

推荐升级路径,TL;DR:

备份数据,然后

apt update
apt upgrade
apt dist-upgrade
reboot
Run Code Online (Sandbox Code Playgroud)

还要禁用所有非主流包(如果有)。

然后为新发行版准备 APT:

sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list
sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list.d/*
Run Code Online (Sandbox Code Playgroud)

第一个命令显示错误:

apt update
...
Err:6 http://security.debian.org/debian-security bullseye/updates Release
  404  Not Found
Reading package lists... Done
E: The repository 'http://security.debian.org/debian-security bullseye/updates Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Run Code Online (Sandbox Code Playgroud)

debian upgrade apt debian-buster

14
推荐指数
1
解决办法
2万
查看次数

在另一个系统上安装相同的 debian 软件包

如何导出系统上已安装的 Debian 软件包列表,然后在新系统上安装这些相同的软件包?

package-management debian export

13
推荐指数
2
解决办法
1万
查看次数

SSH 如果命令输出超过 5 行

有人建议我在这里问这个问题:我对我目前遇到的以下问题感到困惑。
我有一台 Debian 5.0 Linux 服务器通过以太网电缆连接到我的 DSL 路由器。我的笔记本电脑运行的是 Windows 7,并通过无线 (802.11b/g) 连接到同一个 DSL 路由器。如果我使用 Putty SSH 进入服务器并尝试执行导致多行输出的命令,我的 SSH 会话将冻结。前任。

ls -al /             // Freezes
ls -al / > ~/boo.txt // OK
vi ~/boo.txt         // OK
top                  // Freezes
Run Code Online (Sandbox Code Playgroud)

如果我直接在服务器上执行它们,或者如果我将笔记本电脑的连接更改为有线连接,则上述所有命令都有效。是什么赋予了?这个问题真是让我莫名其妙!谢谢

networking linux debian ssh

13
推荐指数
1
解决办法
8894
查看次数

性能调优高负载 Apache 服务器

我希望了解我在(对我们而言)负载较重的 Web 服务器上看到的一些服务器性能问题。环境如下:

  • Debian Lenny(所有稳定包 + 修补安全更新)
  • 阿帕奇 2.2.9
  • PHP 5.2.6
  • Amazon EC2 大型实例

我们看到的行为是,网络通常感觉是响应式的,但开始处理请求会有轻微的延迟——有时是几分之一秒,有时是我们高峰使用时间的 2-3 秒。服务器上的实际负载报告为非常高 - 通常为 10.xx 或 20.xx,如top. 此外,在这些时间(甚至vi)在服务器上运行其他东西非常慢,所以负载肯定在那里。奇怪的是 Apache 仍然非常敏感,除了最初的延迟。

我们使用 prefork 将 Apache 配置如下:

StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0
Run Code Online (Sandbox Code Playgroud)

和 KeepAlive 为:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Run Code Online (Sandbox Code Playgroud)

查看服务器状态页面,即使在这些负载很重的时候,我们也很少达到客户端上限,通常处理 80-100 个请求,其中许多请求处于保持活动状态。这告诉我将初始请求缓慢排除为“等待处理程序”,但我可能错了。

Amazon 的 CloudWatch 监控告诉我,即使我们的操作系统报告的负载大于 15,我们的实例 CPU 利用率也在 75-80% 之间。

示例输出top

top - 15:47:06 up 31 days,  1:38,  8 users,  load average: 11.46, …
Run Code Online (Sandbox Code Playgroud)

debian performance-tuning vmstat amazon-ec2 apache-2.2

13
推荐指数
1
解决办法
1万
查看次数

如何在 Ubuntu 中版本锁定软件包?

在 CentOS 上存在yum versionlock选项,您可以在其中将软件包锁定到特定版本,因此它永远不会升级到那个版本。

我愿意

puppet-server-2.7.19-1
puppet-2.7.19-1
Run Code Online (Sandbox Code Playgroud)

停留在 2.7,从未升级到 3.0。Puppet Labs 已经发布了 3.0 并将其放入稳定的 repo 中,因此 2.7 将升级到 3.0,这不向后兼容。

Ubuntu 有类似的东西yum versionlock吗?

linux ubuntu debian aptitude apt

13
推荐指数
2
解决办法
1万
查看次数

如何在随机断电的机器上存储数据

我有一台运行在物理机主机上的虚拟机 (Debian)。虚拟机充当它经常通过本地网络接收的数据的缓冲区(此数据的周期为 0.5 秒,因此吞吐量相当高)。收到的任何数据都存储在虚拟机上,并通过 UDP 重复转发到外部服务器。一旦外部服务器(通过 UDP)确认它收到了一个数据包,原始数据就会从虚拟机中删除,并且不会再次发送到外部服务器。连接 VM 和外部服务器的 Internet 连接不可靠,这意味着它可能一次关闭数天。

托管 VM 的物理机每天会随机断电数次。无法判断何时会发生这种情况,也无法向系统添加 UPS、电池或类似解决方案。

最初,数据存储在虚拟机上基于文件的 HSQLDB 数据库中。但是,频繁的断电最终导致数据库脚本文件损坏(不是在文件系统级别,即可读,但HSQLDB无法理解),这就引出了我的问题:

在断电可能并且确实经常发生的环境中,数据应该如何存储?

我能想到的一种选择是使用平面文件,将每个数据包保存为文件系统上的一个文件。这样,如果文件因断电而损坏,则可以忽略它,其余数据保持完整。然而,这会带来一些问题,主要与可能存储在虚拟机上的数据量有关。每条数据间隔 0.5 秒,10 天内将生成 1,728,000 个文件。这至少意味着使用具有更多 inode 的文件系统来存储这些数据(当前的文件系统设置在大约 250,000 条消息和 30% 的磁盘空间使用时耗尽了 inode)。此外,它很难(并非不可能)管理。

还有其他选择吗?是否有在 Debian 上运行的数据库引擎不会因断电而损坏?另外,应该为此使用什么文件系统?ext3 是目前​​使用的。

在虚拟机上运行的软件是使用 Java 6 编写的,因此希望该解决方案不会不兼容。

filesystems debian corruption

13
推荐指数
4
解决办法
1509
查看次数

恢复 SSH 会话

我已经通过 SSH 连接到我的服务器并创建了一个进程,但突然我的互联网连接断开了。我知道进程正在进行,但是如何恢复以前的会话以查看进度呢?

debian ssh session

13
推荐指数
4
解决办法
5587
查看次数

在 Debian Linux 上允许复杂的 sudo 命令

我需要允许单个用户在 Debian Linux 机器上使用特定命令。我在/etc/sudoers文件中试过这个:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

这不会按预期工作。如果我使用 sudo 作为用户 zabbix 运行命令,它会要求输入密码(尽管我已经指定了该NOPASSWD选项)。

但是,这有效:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud)

但有一个缺点,即apt-get允许所有的子命令。有没有办法解决这个问题,只允许一个特定的命令?

linux debian sudo

13
推荐指数
2
解决办法
2028
查看次数