2018年3月

用这些开源软件解决方案构建一个更智能的家庭。

物联网 不仅是一个时髦词,在现实中,自 2016 年我们发布了一篇关于家庭自动化工具的评论文章以来,它也在迅速占领着我们的生活。在 2017,26.5% 的美国家庭 已经使用了一些智能家居技术;预计五年内,这一数字还将翻倍。

随着这些数量持续增加的各种设备的使用,可以帮助你实现对家庭的自动化管理、安保、和监视,在家庭自动化方面,从来没有像现在这样容易和更加吸引人过。不论你是要远程控制你的 HVAC 系统,集成一个家庭影院,保护你的家免受盗窃、火灾、或是其它威胁,还是节省能源或只是控制几盏灯,现在都有无数的设备可以帮到你。

但同时,还有许多用户担心安装在他们家庭中的新设备带来的安全和隐私问题 —— 这是一个很现实也很 严肃的问题。他们想要去控制有谁可以接触到这个重要的系统,这个系统管理着他们的应用程序,记录了他们生活中的点点滴滴。这种想法是可以理解的:毕竟在一个连你的冰箱都是智能设备的今天,你不想要一个基本的保证吗?甚至是如果你授权了设备可以与外界通讯,它是否是仅被授权的人访问它呢?

对安全的担心 是为什么开源对我们将来使用的互联设备至关重要的众多理由之一。由于源代码运行在他们自己的设备上,完全可以去搞明白控制你的家庭的程序,也就是说你可以查看它的代码,如果必要的话甚至可以去修改它。

虽然联网设备通常都包含它们专有的组件,但是将开源引入家庭自动化的第一步是确保你的设备和这些设备可以共同工作 —— 它们为你提供一个接口 —— 并且是开源的。幸运的是,现在有许多解决方案可供选择,从 PC 到树莓派,你可以在它们上做任何事情。

这里有几个我比较喜欢的。

Calaos

Calaos 是一个设计为全栈的家庭自动化平台,包含一个服务器应用程序、触摸屏界面、Web 应用程序、支持 iOS 和 Android 的原生移动应用、以及一个运行在底层的预配置好的 Linux 操作系统。Calaos 项目出自一个法国公司,因此它的支持论坛以法语为主,不过大量的介绍资料和文档都已经翻译为英语了。

Calaos 使用的是 GPL v3 的许可证,你可以在 GitHub 上查看它的源代码。

Domoticz

Domoticz 是一个有大量设备库支持的家庭自动化系统,在它的项目网站上有大量的文档,从气象站到远程控制的烟雾探测器,以及大量的第三方 集成软件 。它使用一个 HTML5 前端,可以从桌面浏览器或者大多数现代的智能手机上访问它,它是一个轻量级的应用,可以运行在像树莓派这样的低功耗设备上。

Domoticz 是用 C++ 写的,使用 GPLv3 许可证。它的 源代码 在 GitHub 上。

Home Assistant

Home Assistant 是一个开源的家庭自动化平台,它可以轻松部署在任何能运行 Python 3 的机器上,从树莓派到网络存储(NAS),甚至可以使用 Docker 容器轻松地部署到其它系统上。它集成了大量的开源和商业的产品,允许你去连接它们,比如,IFTTT、天气信息、或者你的 Amazon Echo 设备,去控制从锁到灯的各种硬件。

Home Assistant 以 MIT 许可证 发布,它的源代码可以从 GitHub 上下载。

MisterHouse

从 2016 年起,MisterHouse 取得了很多的进展,我们把它作为一个“可以考虑的另外选择”列在这个清单上。它使用 Perl 脚本去监视任何东西,它可以通过一台计算机来查询或者控制任何可以远程控制的东西。它可以响应语音命令,查询当前时间、天气、位置、以及其它事件,比如去打开灯、唤醒你、记下你喜欢的电视节目、通报呼入的来电、开门报警、记录你儿子上了多长时间的网、如果你女儿汽车超速它也可以告诉你等等。它可以运行在 Linux、macOS、以及 Windows 计算机上,它可以读/写很多的设备,包括安全系统、气象站、来电显示、路由器、机动车位置系统等等。

MisterHouse 使用 GPLv2 许可证,你可以在 GitHub 上查看它的源代码。

OpenHAB

OpenHAB(开放家庭自动化总线的简称)是在开源爱好者中所熟知的家庭自动化工具,它拥有大量用户的社区以及支持和集成了大量的设备。它是用 Java 写的,OpenHAB 非常轻便,可以跨大多数主流操作系统使用,它甚至在树莓派上也运行的很好。支持成百上千的设备,OpenHAB 被设计为与设备无关的,这使开发者在系统中添加他们的设备或者插件很容易。OpenHAB 也支持通过 iOS 和 Android 应用来控制设备以及设计工具,因此,你可以为你的家庭系统创建你自己的 UI。

你可以在 GitHub 上找到 OpenHAB 的 源代码,它使用 Eclipse 公共许可证

OpenMotics

OpenMotics 是一个开源的硬件和软件家庭自动化系统。它的设计目标是为控制设备提供一个综合的系统,而不是从不同的供应商处将各种设备拼接在一起。不像其它的系统主要是为了方便改装而设计的,OpenMotics 专注于硬件解决方案。更多资料请查阅来自 OpenMotics 的后端开发者 Frederick Ryckbosch的 完整文章

OpenMotics 使用 GPLv2 许可证,它的源代码可以从 GitHub 上下载。

当然了,我们的选择不仅有这些。许多家庭自动化爱好者使用不同的解决方案,甚至是他们自己动手做。其它用户选择使用单独的智能家庭设备而无需集成它们到一个单一的综合系统中。

如果上面的解决方案并不能满足你的需求,下面还有一些潜在的替代者可以去考虑:

  • EventGhost 是一个开源的(GPL v2)家庭影院自动化工具,它只能运行在 Microsoft Windows PC 上。它允许用户去控制多媒体电脑和连接的硬件,它通过触发宏指令的插件或者定制的 Python 脚本来使用。
  • ioBroker 是一个基于 JavaScript 的物联网平台,它能够控制灯、锁、空调、多媒体、网络摄像头等等。它可以运行在任何可以运行 Node.js 的硬件上,包括 Windows、Linux、以及 macOS,它使用 MIT 许可证
  • Jeedom 是一个由开源软件(GPL v2)构成的家庭自动化平台,它可以控制灯、锁、多媒体等等。它包含一个移动应用程序(Android 和 iOS),并且可以运行在 Linux PC 上;该公司也销售 hub,它为配置家庭自动化提供一个现成的解决方案。
  • LinuxMCE 标称它是你的多媒体与电子设备之间的“数字粘合剂”。它运行在 Linux(包括树莓派)上,它基于 Pluto 开源 许可证 发布,它可以用于家庭安全、电话(VoIP 和语音信箱)、A/V 设备、家庭自动化、以及玩视频游戏。
  • OpenNetHome,和这一类中的其它解决方案一样,是一个控制灯、报警、应用程序等等的一个开源软件。它基于 Java 和 Apache Maven,可以运行在 Windows、macOS、以及 Linux —— 包括树莓派,它以 GPLv3 许可证发布。
  • Smarthomatic 是一个专注于硬件设备和软件的开源家庭自动化框架,而不仅是用户界面。它基于 GPLv3 许可证,它可用于控制灯、电器、以及空调、检测温度、提醒给植物浇水。

现在该轮到你了:你已经准备好家庭自动化系统了吗?或者正在研究去设计一个。你对家庭自动化的新手有什么建议,你会推荐什么样的系统?


via: https://opensource.com/life/17/12/home-automation-tools

作者:Jason Baker 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Linux 系统中,你可能会在主目录中存储了大量文件和文件夹。但在这些文件之外,你知道你的主目录还附带了很多隐藏的文件和文件夹吗?如果你在主目录中运行 ls -a,你会发现一堆带有点前缀的隐藏文件和目录。这些隐藏的文件到底做了什么?

在主目录中隐藏的文件是干什么用的?

 title=

通常,主目录中的隐藏文件和目录包含该用户程序访问的设置或数据。它们不打算让用户编辑,只需要应用程序进行编辑。这就是为什么它们被隐藏在用户的正常视图之外。

通常,删除和修改自己主目录中的文件不会损坏操作系统。然而,依赖这些隐藏文件的应用程序可能不那么灵活。从主目录中删除隐藏文件时,通常会丢失与其关联的应用程序的设置。

依赖该隐藏文件的程序通常会重新创建它。 但是,你将从“开箱即用”设置开始,如全新用户一般。如果你在使用应用程序时遇到问题,那实际上可能是一个巨大的帮助。它可以让你删除可能造成麻烦的自定义设置。但如果你不这样做,这意味着你需要把所有的东西都设置成原来的样子。

主目录中某些隐藏文件的特定用途是什么?

 title=

每个人在他们的主目录中都会有不同的隐藏文件。每个人都有一些。但是,无论应用程序如何,这些文件都有类似的用途。

系统设置

系统设置包括桌面环境和 shell 的配置。

  • shell 和命令行程序的配置文件:根据你使用的特定 shell 和类似命令的应用程序,特定的文件名称会变化。你会看到 .bashrc.vimrc.zshrc。这些文件包含你已经更改的有关 shell 的操作环境的任何设置,或者对 vim 等命令行实用工具的设置进行的调整。删除这些文件将使关联的应用程序返回到其默认状态。考虑到许多 Linux 用户多年来建立了一系列微妙的调整和设置,删除这个文件可能是一个非常头疼的问题。
  • 用户配置文件:像上面的配置文件一样,这些文件(通常是 .profile.bash_profile)保存 shell 的用户设置。该文件通常包含你的 PATH 环境变量。它还包含你设置的别名。用户也可以在 .bashrc 或其他位置放置别名。PATH 环境变量控制着 shell 寻找可执行命令的位置。通过添加或修改 PATH,可以更改 shell 的命令查找位置。别名更改了原有命令的名称。例如:一个别名可能将 ls -l 设置为 ll。这为经常使用的命令提供基于文本的快捷方式。如果删除 .profile 文件,通常可以在 /etc/skel 目录中找到默认版本。
  • 桌面环境设置:这里保存你的桌面环境的任何定制。其中包括桌面背景、屏幕保护程序、快捷键、菜单栏和任务栏图标以及用户针对其桌面环境设置的其他任何内容。当你删除这个文件时,用户的环境会在下一次登录时恢复到新的用户环境。

应用配置文件

你会在 Ubuntu 的 .config 文件夹中找到它们。 这些是针对特定应用程序的设置。 它们将包含喜好列表和设置等内容。

  • 应用程序的配置文件:这包括应用程序首选项菜单中的设置、工作区配置等。 你在这里找到的具体取决于应用程序。
  • Web 浏览器数据:这可能包括书签和浏览历史记录等内容。这些文件大部分是缓存。这是 Web 浏览器临时存储下载文件(如图片)的地方。删除这些内容可能会降低你首次访问某些媒体网站的速度。
  • 缓存:如果用户应用程序缓存仅与该用户相关的数据(如 Spotify 应用程序存储播放列表的缓存),则主目录是存储该目录的默认地点。 这些缓存可能包含大量数据或仅包含几行代码:这取决于应用程序需要什么。 如果你删除这些文件,则应用程序会根据需要重新创建它们。
  • 日志:一些用户应用程序也可能在这里存储日志。根据开发人员设置应用程序的方式,你可能会发现存储在你的主目录中的日志文件。然而,这不是一个常见的选择。

结论

在大多数情况下,你的 Linux 主目录中的隐藏文件用于存储用户设置。 这包括命令行程序以及基于 GUI 的应用程序的设置。删除它们将删除用户设置。 通常情况下,它不会导致程序被破坏。


via: https://www.maketecheasier.com/hidden-files-linux-home-directory/

作者:Alexander Fox 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

目标

学习在 Linux 上使用 pass 密码管理器来管理你的密码

条件

  • 需要 root 权限来安装需要的包

难度

简单

约定

  • # - 执行指定命令需要 root 权限,可以是直接使用 root 用户来执行或者使用 sudo 命令来执行
  • $ - 使用普通的非特权用户执行指定命令

介绍

如果你有根据不同的意图设置不同密码的好习惯,你可能已经感受到需要一个密码管理器的必要性了。在 Linux 上有很多选择,可以是专有软件(如果你敢用的话)也可以是开源软件。如果你跟我一样喜欢简洁的话,你可能会对 pass 感兴趣。

第一步

pass 作为一个密码管理器,其实际上是一些你可能早已每天使用的、可信赖且实用的工具的一种封装,比如 gpggit 。虽然它也有图形界面,但它专门设计能成在命令行下工作的:因此它也可以在 headless 机器上工作(LCTT 译注:根据 wikipedia 的说法,所谓 headless 是指没有显示器、键盘和鼠标的机器,一般通过网络链接来控制)。

安装

pass 在主流的 Linux 发行版中都是可用的,你可以通过包管理器安装:

Fedora

# dnf install pass

RHEL 和 CentOS

pass 不在官方仓库中,但你可以从 epel 中获取道它。要在 CentOS7 上启用后面这个源,只需要执行:

# yum install epel-release

然而在 Red Hat 企业版的 Linux 上,这个额外的源是不可用的;你需要从 EPEL 官方网站上下载它。

Debian 和 Ubuntu

# apt-get install pass

Arch Linux

# pacman -S pass

初始化密码仓库

安装好 pass 后,就可以开始使用和配置它了。首先,由于 pass 依赖于 gpg 来对我们的密码进行加密并以安全的方式进行存储,我们必须准备好一个 gpg 密钥对。

首先我们要初始化密码仓库:这就是一个用来存放 gpg 加密后的密码的目录。默认情况下它会在你的 $HOME 创建一个隐藏目录,不过你也可以通过使用 PASSWORD_STORE_DIR 这一环境变量来指定另一个路径。让我们运行:

$ pass init

然后 password-store 目录就创建好了。现在,让我们来存储我们第一个密码:

$ pass edit mysite

这会打开默认文本编辑器,我么只需要输入密码就可以了。输入的内容会用 gpg 加密并存储为密码仓库目录中的 mysite.gpg 文件。

pass 以目录树的形式存储加密后的文件,也就是说我们可以在逻辑上将多个文件放在子目录中以实现更好的组织形式,我们只需要在创建文件时指定存在哪个目录下就行了,像这样:

$ pass edit foo/bar

跟上面的命令一样,它也会让你输入密码,但是创建的文件是放在密码仓库目录下的 foo 子目录中的。要查看文件组织结构,只需要不带任何参数运行 pass 命令即可:

$ pass
Password Store
├── foo
│   └── bar
└── mysite

若想修改密码,只需要重复创建密码的操作就行了。

获取密码

有两种方法可以获取密码:第一种会显示密码到终端上,方法是运行:

pass mysite

然而更好的方法是使用 -c 选项让 pass 将密码直接拷贝到剪切板上:

pass -c mysite

这种情况下剪切板中的内容会在 45 秒后自动清除。两种方法都会要求你输入 gpg 密码。

生成密码

pass 也可以为我们自动生成(并自动存储)安全密码。假设我们想要生成一个由 15 个字符组成的密码:包含字母,数字和特殊符号,其命令如下:

pass generate mysite 15

若希望密码只包含字母和数字则可以是使用 --no-symbols 选项。生成的密码会显示在屏幕上。也可以通过 --clip-c 选项让 pass 把密码直接拷贝到剪切板中。通过使用 -q--qrcode 选项来生成二维码:

qrcode

从上面的截屏中可看出,生成了一个二维码,不过由于运行该命令时 mysite 的密码已经存在了,pass 会提示我们确认是否要覆盖原密码。

pass 使用 /dev/urandom 设备作为(伪)随机数据生成器来生成密码,同时它使用 xclip 工具来将密码拷贝到粘帖板中,而使用 qrencode 来将密码以二维码的形式显示出来。在我看来,这种模块化的设计正是它最大的优势:它并不重复造轮子,而只是将常用的工具包装起来完成任务。

你也可以使用 pass mvpass cppass rm 来重命名、拷贝和删除密码仓库中的文件。

将密码仓库变成 git 仓库

pass 另一个很棒的功能就是可以将密码仓库当成 git 仓库来用:通过版本管理系统能让我们管理密码更方便。

pass git init

这会创建 git 仓库,并自动提交所有已存在的文件。下一步就是指定跟踪的远程仓库了:

pass git remote add <name> <url>

我们可以把这个密码仓库当成普通仓库来用。唯一的不同点在于每次我们新增或修改一个密码,pass 都会自动将该文件加入索引并创建一个提交。

pass 有一个叫做 qtpass 的图形界面,而且也支持 Windows 和 MacOs。通过使用 PassFF 插件,它还能获取 firefox 中存储的密码。在它的项目网站上可以查看更多详细信息。试一下 pass 吧,你不会失望的!


via: https://linuxconfig.org/how-to-organize-your-passwords-using-pass-password-manager

作者:Egidio Docile 译者:lujun9972 校对:Locez

本文由 LCTT 原创编译,Linux中国 荣誉推出

CGManager 是一个核心的特权守护进程,通过一个简单的 D-Bus API 管理你所有的 cgroup。它被设计用来处理嵌套的 LXC 容器以及接受无特权的请求,包括解析用户名称空间的 UID/GID。

组件

cgmanager

这个守护进程在宿主机上运行,​​将 cgroupfs 挂载到一个独立的挂载名称空间(所以它不能从宿主机上看到),绑定 /sys/fs/cgroup/cgmanager/sock 用于传入的 D-Bus 查询,并通常处理宿主机上直接运行的所有客户端。

cgmanager 既接受使用 D-Bus + SCM 凭证的身份验证请求,用于在命名空间之间转换 uid、gid 和 pid,也可以使用简单的 “unauthenticated”(只是初始的 ucred)D-Bus 来查询来自宿主机级别的查询。

cgproxy

你可能会在两种情况下看到这个守护进程运行。在宿主机上,如果你的内核老于 3.8(没有 pidns 连接支持)或处于容器中(只有 cgproxy 运行)。

cgproxy 本身并不做任何 cgroup 配置更改,而是如其名称所示,代理请求给主 cgmanager 进程。

这是必要的,所以一个进程可以直接使用 D-Bus(例如使用 dbus-send)与 /sys/fs/cgroup/cgmanager/sock 进行通信。

之后 cgproxy 将从该查询中得到 ucred,并对真正的 cgmanager 套接字进行身份验证的 SCM 查询,并通过 ucred 结构体传递参数,使它们能够正确地转换为 cgmanager 可以理解的宿主机命名空间 。

cgm

一个简单的命令行工具,与 D-Bus 服务通信,并允许你从命令行执行所有常见的 cgroup 操作。

通信协议

如上所述,cgmanager 和 cgproxy 使用 D-Bus。建议外部客户端(所以不要是 cgproxy)使用标准的 D-Bus API,不要试图实现 SCM creds 协议,因为它是不必要的,并且容易出错。

相反,只要简单假设与 /sys/fs/cgroup/cgmanager/sock 的通信总是正确的。

cgmanager API 仅在独立的 D-Bus 套接字上可用,cgmanager 本身不连接到系统总线,所以 cgmanager/cgproxy 不要求有运行中的 dbus 守护进程。

你可以在这里阅读更多关于 D-Bus API。

许可证

CGManager 是免费软件,大部分代码是根据 GNU LGPLv2.1+ 许可条款发布的,一些二进制文件是在 GNU GPLv2 许可下发布的。

该项目的默认许可证是 GNU LGPLv2.1+

支持

CGManager 的稳定版本支持依赖于 Linux 发行版以及它们自己承诺推出稳定修复和安全更新。

你可以从 Canonical Ltd 获得对 Ubuntu LTS 版本的 CGManager 的商业支持。


via: https://linuxcontainers.org/cgmanager/introduction/

作者:Canonical Ltd. 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你有没有发现自己在某种情况下想要折叠或中断命令的输出,以适应特定的宽度?在运行虚拟机的时候,我遇到了几次这种的情况,特别是没有 GUI 的服务器。 以防万一,如果你想限制一个命令的输出为一个特定的宽度,现在看看这里! fold 命令在这里就能派的上用场了! fold 命令会以适合指定的宽度调整输入文件中的每一行,并将其打印到标准输出。

在这个简短的教程中,我们将看到 fold 命令的用法,带有实例。

fold 命令示例教程

fold 命令是 GNU coreutils 包的一部分,所以我们不用为安装的事情烦恼。

fold 命令的典型语法:

fold [OPTION]... [FILE]...

请允许我向您展示一些示例,以便您更好地了解 fold 命令。 我有一个名为 linux.txt 文件,内容是随机的。

要将上述文件中的每一行换行为默认宽度,请运行:

fold linux.txt

每行 80 列是默认的宽度。 这里是上述命令的输出:

正如你在上面的输出中看到的,fold 命令已经将输出限制为 80 个字符的宽度。

当然,我们可以指定您的首选宽度,例如 50,如下所示:

fold -w50 linux.txt

示例输出:

我们也可以将输出写入一个新的文件,如下所示:

fold -w50 linux.txt > linux1.txt

以上命令将把 linux.txt 的行宽度改为 50 个字符,并将输出写入到名为 linux1.txt 的新文件中。

让我们检查一下新文件的内容:

cat linux1.txt

你有没有注意到前面的命令的输出? 有些词在行之间被中断。 为了解决这个问题,我们可以使用 -s 标志来在空格处换行。

以下命令将给定文件中的每行调整为宽度 50,并在空格处换到新行:

fold -w50 -s linux.txt

示例输出:

看清楚了吗? 现在,输出很清楚。 换到新行中的单词都是用空格隔开的,所在行单词的长度大于 50 的时候就会被调整到下一行。

在所有上面的例子中,我们用列来限制输出宽度。 但是,我们可以使用 -b 选项将输出的宽度强制为指定的字节数。 以下命令以 20 个字节中断输出。

fold -b20 linux.txt

示例输出:

另请阅读:

有关更多详细信息,请参阅 man 手册页。

man fold

这些就是所有的内容了。 您现在知道如何使用 fold 命令以适应特定的宽度来限制命令的输出。 我希望这是有用的。 我们将每天发布更多有用的指南。 敬请关注!

干杯!


via: https://www.ostechnix.com/fold-command-tutorial-examples-beginners/

作者:SK 译者:Flowsnow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们会向你介绍,如何在 Linux VPS 上修复 WordPress 中的 HTTP 错误。 下面列出了 WordPress 用户遇到的最常见的 HTTP 错误,我们的建议侧重于如何发现错误原因以及解决方法。

1、 修复在上传图像时出现的 HTTP 错误

如果你在基于 WordPress 的网页中上传图像时出现错误,这也许是因为服务器上 PHP 的配置,例如存储空间不足或者其他配置问题造成的。

用如下命令查找 php 配置文件:

php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

根据输出结果,php 配置文件位于 /etc 文件夹下。编辑 /etc/php.ini 文件,找出下列行,并按照下面的例子修改其中相对应的值:

vi /etc/php.ini
upload_max_filesize = 64M
post_max_size = 32M
max_execution_time = 300
max_input_time 300
memory_limit = 128M

当然,如果你不习惯使用 vi 文本编辑器,你可以选用自己喜欢的。

不要忘记重启你的网页服务器来让改动生效。

如果你安装的网页服务器是 Apache,你也可以使用 .htaccess 文件。首先,找到 .htaccess 文件。它位于 WordPress 安装路径的根文件夹下。如果没有找到 .htaccess 文件,需要自己手动创建一个,然后加入如下内容:

vi /www/html/path_to_wordpress/.htaccess
php_value upload_max_filesize 64M
php_value post_max_size 32M
php_value max_execution_time 180
php_value max_input_time 180

# BEGIN WordPress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>
# END WordPress

如果你使用的网页服务器是 nginx,在 nginx 的 server 配置块中配置你的 WordPress 实例。详细配置和下面的例子相似:

server {

  listen 80;
  client_max_body_size 128m;
  client_body_timeout 300;

  server_name your-domain.com www.your-domain.com;

  root /var/www/html/wordpress;
  index index.php;

  location = /favicon.ico {
  log_not_found off;
  access_log off;
  }

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
    log_not_found off;
  }
}

根据自己的 PHP 配置,你需要将 fastcgi_pass 127.0.0.1:9000; 用类似于 fastcgi_pass unix:/var/run/php7-fpm.sock; 替换掉(依照实际连接方式)

重启 nginx 服务来使改动生效。

2、 修复因为不恰当的文件权限而产生的 HTTP 错误

如果你在 WordPress 中出现一个意外错误,也许是因为不恰当的文件权限导致的,所以需要给 WordPress 文件和文件夹设置一个正确的权限:

chown www-data:www-data -R /var/www/html/path_to_wordpress/

www-data 替换成实际的网页服务器用户,将 /var/www/html/path_to_wordpress 换成 WordPress 的实际安装路径。

3、 修复因为内存不足而产生的 HTTP 错误

你可以通过在 wp-config.php 中添加如下内容来设置 PHP 的最大内存限制:

define('WP_MEMORY_LIMIT', '128MB');

4、 修复因为 php.ini 文件错误配置而产生的 HTTP 错误

编辑 PHP 配置主文件,然后找到 cgi.fix_pathinfo 这一行。 这一行内容默认情况下是被注释掉的,默认值为 1。取消这一行的注释(删掉这一行最前面的分号),然后将 1 改为 0 。同时需要修改 date.timezone 这一 PHP 设置,再次编辑 PHP 配置文件并将这一选项改成 date.timezone = Asia/Shanghai (或者将等号后内容改为你所在的时区)。

vi /etc/php.ini
cgi.fix_pathinfo=0
date.timezone = Asia/Shanghai

5、 修复因为 Apache mod\_security 模块而产生的 HTTP 错误

如果你在使用 Apache mod\_security 模块,这可能也会引起问题。试着禁用这一模块,确认是否因为在 .htaccess 文件中加入如下内容而引起了问题:

<IfModule mod_security.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>

6、 修复因为有问题的插件/主题而产生的 HTTP 错误

一些插件或主题也会导致 HTTP 错误以及其他问题。你可以首先禁用有问题的插件/主题,或暂时禁用所有 WordPress 插件。如果你有 phpMyAdmin,使用它来禁用所有插件:在其中找到 wp_options 数据表,在 option_name 这一列中找到 active_plugins 这一记录,然后将 option_value 改为 :a:0:{}

或者用以下命令通过SSH重命名插件所在文件夹:

mv /www/html/path_to_wordpress/wp-content/plugins /www/html/path_to_wordpress/wp-content/plugins.old

通常情况下,HTTP 错误会被记录在网页服务器的日志文件中,所以寻找错误时一个很好的切入点就是查看服务器日志。


via: https://www.rosehosting.com/blog/http-error-wordpress/

作者:rosehosting 译者:wenwensnow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出