标签: arch-linux

尝试使用 php 在 webroot 之外创建文件时“无法打开流:只读文件系统”

我正在尝试在运行 arch linux(警报)的 RaspberryPi 3 上设置 nextcloud 一周。
我已经设置了 apache、php 和 php-fpm、postgresql 并从 AUR 安装了 nextcloud-testing(因为 nextcloud 17 不支持 php 7.4)。
apache 的 webroot 位于/srv/http但 nextcloud 安装到/usr/share/webapps/nextcloud.
我的虚拟主机:

<VirtualHost *:443>
DocumentRoot "/srv/http"
<Directory "/srv/http">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
...
#ssl stuff
...
ScriptAlias /cgi-bin/ "/srv/http/cgi-bin/"
<Directory "/srv/http/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

Alias /nextcloud /usr/share/webapps/nextcloud/
<Directory /usr/share/webapps/nextcloud>
    Options FollowSymlinks
    AllowOverride all
    Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

https://mydomain/nextcloud在浏览器中访问时,错误消息是无法写入配置目录。检查这个使用的 php …

php.ini arch-linux php-fpm apache-2.4 nextcloud

6
推荐指数
1
解决办法
5118
查看次数

在 Mono 上与 ASP.Net 一起使用的最佳服务器是什么?

我正在从头开始重新配置我的网站,基本上我希望它运行 Mono(嗯,Mono 中的 ASP.Net)

根据Mono 项目,似乎有两种选择,Apache 或 Nginx。

哪一种最适合我?我在 Arch Linux x86-64 上运行,所以我有两个包。而且我不打算(至少在不久的将来不会)运行任何其他软件,例如 PHP。唯一必须支持的是多主机支持,例如 foo.com 去网站 A,bar.com 去网站 B。

nginx mono arch-linux apache-2.2

5
推荐指数
1
解决办法
1190
查看次数

Archlinux 和 openssh

我需要使用 openssh 设置 Archlinux vps,一切都运行顺利,除了我无法 ssh 进入。

我注意到没有安装 openssh,所以我查看了 wiki,上面写着:

pacman -S openssh
Run Code Online (Sandbox Code Playgroud)

我这样做了,但它开始给我错误,它在镜像上找不到 openssh-5.8p2-9-x86_64.pkg.tar.xz

error : failed retrieving file 'openssh-5.8p2-9-x86_64.pkg.tar.xz' from artfiles.org : No address record
Run Code Online (Sandbox Code Playgroud)

我添加了更多镜子,但仍然出现相同的错误。

我究竟做错了什么 ?

ssh arch-linux

5
推荐指数
1
解决办法
1414
查看次数

为什么 Linux 中的“nocto”NFS 挂载选项不能防止关闭时刷新?

我一直在了解 NFS 的关闭对打开策略,它会导致每个文件在关闭时刷新到服务器,以确保客户端之间的一致性。(请参阅http://docstore.mik.ua/orelly/networking_2ndEd/nfs/ch07_04.htm。)当尝试写入许多小文件时,这会导致性能大幅下降。

显然,我知道“异步”导出选项,但还有一个“nocto”客户端挂载选项,它应该禁用该客户端的关闭到打开机制。据我所知,这应该阻止客户端在关闭时刷新文件(以及在打开时不费心检查缓存一致性)。但是,这似乎没有效果:客户端仍在关闭时将文件刷新到服务器,从而导致大量等待 io。

有谁知道为什么“nocto”没有我希望的效果?“async”选项按预期工作,但对我来说更重要的是在这种情况下客户端缓存是正确的,它只是让我感到烦恼。

例子:一组无盘节点共享一个远程根,它偶尔会从其中一个节点更新。每个文件在关闭后立即刷新并不重要,因为没有其他节点试图写入同一个文件。然而,更重要的是,如果服务器在更新一组包时崩溃,客户端知道哪些数据尚未写入服务器的磁盘,以便在服务器再次启动后再次尝试。使用“async”选项,这种情况可能会导致数据丢失(因为服务器向客户端谎报数据被刷新到磁盘),而禁用 close-to-open(并使用“sync”而不是“async”)) 理论上应该提供相同的性能优势而不会丢失潜在的数据(因为多个文件写入将被缓冲并一起刷新到服务器)。服务器和其他客户端会看到一个稍微过时的文件系统视图(几秒钟)。这对我来说似乎是合理的。

简而言之,“异步”进行服务器端缓冲,这大大加快了速度。我期待的是“nocto”应该以类似的速度提升进行客户端缓冲,但代价是其他客户端上出现的数据会出现一些滞后。

linux nfs arch-linux

5
推荐指数
1
解决办法
5900
查看次数

平衡(当前与稳定性)Linux 服务器分布

我是 Gentoo 的长期用户,无论是在桌面还是服务器上。作为一名软件工程师,我喜欢它的灵活性和可定制性(以及它的前沿和滚动发布的事实)。但是对于我的新服务器,我想使用不同的发行版。主要是因为编译所有内容会阻碍虚拟服务器,但也因为 Gentoo 过于前沿,有时更新应该(更多)正确测试和延迟。

(附带说明:这些年来,我已经成功部署/维护了几个 Gentoo 机器,而且大多数时候,事情进展得非常顺利,而且这些机器都很棒。)

因此,我想根据经验(而非意见)向社区寻求建议,哪些发行版最适合以下标准:

一般的

  1. 滚动发布或非常好的(可靠的)就地升级路径
  2. 既不完全过时也不绝对前沿的软件包存储库
    • Python 2.7 / 3.3(系统将主要部署python/django应用)
    • 最近的 gcc (>= 4.7)
  3. 维护良好,良好的社区
  4. 灵活和可定制
    • 应该可以并排安装不同的 gcc 或 python 版本

安全

  1. 签名(或以其他方式保护)包存储库
  2. 理智/安全的编译器标志(针对安全性而不是性能而定制)
  3. 及时的安全更新和专门的安全团队/公告列表

立即想到的是CentOSDebian,但不幸的是,它们在软件包方面都已经过时了。

我正在关注Ubuntu,但与 Universe 或其他发行版相比,他们正式支持的软件(主要/受限存储库)相当小。我也不太确定他们对官方软件包的维护情况(关于安全修复),而且我真的不喜欢他们在做出影响用户的决定时的企业(= 封闭)心态。附带说明:我最近为朋友安装了 12.10 桌面,并没有留下深刻印象。

ArchLinux接近Gentoo,减去包编译,恕我直言。我自己还没有尝试过,但立即脱颖而出(消极地恕我直言)的是相当小的核心团队和缺少的安全团队。似乎没有专门的安全列表,他们最近才集成了包签名(我不知道这是否是强制性的)。还有相当多的软件包仅通过 AUR 或其他方式支持。关于这一点,我无话可说。

OpenSuSE也是我关注的东西,但我最后一次尝试 SuSE 是在内核 1.x 时代,老实说(当时我是一个非常年轻的极客:P)。所以我对它的现状几乎一无所知。

老实说,Fedora也是我考虑过的。它通常维护得很好,并且(如果它没有延迟几个月)有一个很好的发布时间表。另一方面,我读过很多关于 Fedora 18 的坏消息,尤其是关于升级路径。此外,它绝对是非常前沿的。

除了感谢您阅读本文并抽出宝贵时间之外,我无法在这篇相当长的帖子中添加太多内容。:-)

更新 @ 2024UTC

我觉得我需要更新我的问题。尽管我完全同意给出的答案,但它们并不是我真正想要的。所以这里有几点希望能澄清我的情况:

  • 我已经维护服务器 10 多年了,所以(至少目前)我不考虑雇用某人来帮助我或减轻负载。

  • 我知道我的 Linux 方法。它一直是我的主要系统超过 15 年左右。作为一名软件工程师和极客,我不会用它换取全世界。:)

  • 我正在根据我提到的不同发行版的经验寻求建议。我知道我可以在虚拟机中安装所有这些(我最终会安装在候选名单上的那些),但即使我认为发行版 xy 很棒,但它绝对没有说明它的维护情况如何。或者一旦有新版本发布,这条路有多坎坷。只有时间可以证明。诸如此类的东西,我一直在寻找。一个星期的简单试运行无法显示的体验。基于仅长期使用发行版的经验的建议。

我还必须强调,我在上面原始帖子中的列表几乎总结了对我来说很重要的内容。

linux ubuntu fedora opensuse arch-linux

5
推荐指数
1
解决办法
349
查看次数

无法从 systemd 启动 Net-SNMP 守护进程(但它可以从命令行运行)

当我从 systemd 启动 Net-SNMP 时,没有错误消息但守护进程没有运行:

% sudo systemctl start snmpd
%
Run Code Online (Sandbox Code Playgroud)

当我从命令行启动它时,它运行:

% sudo /usr/sbin/snmpd
Run Code Online (Sandbox Code Playgroud)

以及对 SNMP 查询的回答。

如果我添加调试标志 (-LSdd),我会看到 systemd 启动的守护进程在以下之后立即被杀死:

Apr  7 15:37:50 localhost snmpd[1298]: NET-SNMP version 5.7.2
Apr  7 15:37:50 localhost snmpd[1298]: Received TERM or STOP signal...  shutting down...
Run Code Online (Sandbox Code Playgroud)

服务文件是 Arch Linux 软件包的默认文件之一:

[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/sbin/snmpd 
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

如果我在服务文件中添加 RemainAfterExit=yes,snmpd 工作但机器不再正常启动(例如没有 DHCP 客户端)

系统为最新的 Arch Linux,软件包版本为:

Name           : net-snmp
Version        : 5.7.2-3
Run Code Online (Sandbox Code Playgroud)

对于这个错误,显然有一个旧的 Arch Linux …

arch-linux net-snmp systemd

5
推荐指数
1
解决办法
2539
查看次数

Docker 镜像构建挂在“pacman -S ...”

我正在尝试从官方 Arch Linux 映像构建 Docker 映像。这些是我到目前为止所做的事情:

我拉了官方的 Arch Linux 镜像:

docker pull base/archlinux
Run Code Online (Sandbox Code Playgroud)

我写了这个“Dockerfile”:

# Set base image
FROM base/archlinux:latest

# Fix mirrorlist file
#RUN rm /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist
#RUN echo "Server = http://..." >> /etc/pacman.d/mirrorlist

# Update pacman and install packages
RUN pacman-db-upgrade
RUN pacman -Syyu --noconfirm
RUN pacman -S --noconfirm nodejs phantomjs cronie

# Make cronjobs
RUN echo "*/2 …
Run Code Online (Sandbox Code Playgroud)

arch-linux containers docker

5
推荐指数
1
解决办法
4036
查看次数

gunicorn 19.2 18.0 配置启动失败

我有一个在 nginx 后面运行 gunicorn/Django 的开发服务器。作为更广泛的服务器环境更新的一部分,我尝试将 gunicorn 从 18.0 升级到 19.2.1,但该服务将不再启动。(服务器正在运行 Arch,因此使用 systemctl。)

gunicorn 配置是由不再受我们支配的人完成的,并且对 gunicorn 不是很了解,我无法修复甚至定位问题,所以我恢复到 18.0 版并且它现在可以工作。但是,我想最终升级它并使配置处于可以工作的状态。我有一种感觉,当前的配置是次优或多余的,但我无法确定:-)。

环境(或运行gunicorn的virtualenv)没有任何变化,只有gunicorn本身升级了。Systemctl 在systemctl start gunicorn以下位置产生此错误:

? gunicorn.service - gunicorn daemon (production)
   Loaded: loaded (/usr/lib/systemd/system/gunicorn.service; enabled)
   Active: failed (Result: resources) since Tue 2015-02-17 20:55:41 UTC; 8s ago
  Process: 2837 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCESS)
  Process: 9608 ExecReload=/bin/kill -s HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 5353 ExecStart=/home/django/gunicorn/run.sh (code=exited, status=0/SUCCESS)
 Main PID: 24876 (code=exited, status=0/SUCCESS)

Feb 17 20:55:41 ashima systemd[1]: PID file /home/django/gunicorn/gunicorn.pid not …
Run Code Online (Sandbox Code Playgroud)

arch-linux gunicorn systemctl

5
推荐指数
1
解决办法
983
查看次数

系统升级后,ZFS 数据集不再在重新启动时自动挂载

我有一个 Arch linux ZFS 备份系统,它很长时间没有更新,因为它运行良好,没有理由打扰。但是,在最近升级之后,我的 ZFS 数据集在我重新启动时不再自动挂载。不幸的是,这些服务没有指示任何错误消息,我可以运行

# zfs mount -a
Run Code Online (Sandbox Code Playgroud)

系统启动后没有问题。一些细节:

[root@elephant etc]# uname -a
Linux elephant 4.16.11-1-ARCH #1 SMP PREEMPT Tue May 22 21:40:27 UTC 2018 x86_64 GNU/Linux
[root@elephant etc]# pacman -Q | grep spl
spl-dkms 0.7.9-1
spl-utils 0.7.9-1
[root@elephant etc]# pacman -Q | grep zfs
zfs-dkms 0.7.9-1
zfs-utils 0.7.9-1

root@elephant etc]# zfs get mountpoint backup/www
NAME                              PROPERTY    VALUE                              SOURCE
backup/www  mountpoint  /backup/www  default
[root@elephant etc]# zfs get mountpoint backup/data
NAME                               PROPERTY    VALUE                               SOURCE
backup/data  mountpoint  /backup/data  default …
Run Code Online (Sandbox Code Playgroud)

linux zfs arch-linux linux-kernel zfsonlinux

5
推荐指数
1
解决办法
6797
查看次数

更改 ssh-keygen 中的默认证书签名算法

目前,OpenSSH 7.8 (Fedora 28/Arch) 无法使用证书签名密钥与 OpenSSH 7.4 (CentOS 7) 服务器协商,如redhat 的 bugzilla 上提交的错误所述。OpenSSH 发行说明表明现在必须明确定义签名协商算法的更改。虽然现在允许使用 2 个新的签名算法(自 7.7 起),但由于错误或有意,ssh-rsa-cert-v01@openssh.com 用户证书不再能够用于身份验证。

重现步骤:

  1. ssh-keygen -t rsa -b 2048 -f 测试
  2. ssh-keygen -s cert.key -I "signedcert" -n testuser test.pub
  3. ssh -i 测试 -vvv 用户@serverip

我试图通过修改证书签名过程中使用的算法来解决这个问题。

ssh-keygen -L -f test.crt
test.crt:
    Type: ssh-rsa-cert-v01@openssh.com user certificate
    Public key: RSA-CERT SHA256:<fingerprint>
    Signing CA: RSA SHA256:<fingerprint>
Run Code Online (Sandbox Code Playgroud)

ssh-keygen 的默认设置是在 ssh-rsa-cert-v01@openssh.com 中对密钥进行签名。

根据 OpenSSH 7.8 文档,PROTOCOL.certkeys。

All certificate types include certification information along with the
public …
Run Code Online (Sandbox Code Playgroud)

linux ssh fedora centos arch-linux

5
推荐指数
1
解决办法
2319
查看次数