2017年8月

网上有许多持续维护的含有不同垃圾域的有用列表。将这些列表复制到你的主机文件中可以轻松阻止大量的域,你的系统将根本不用去连接它们。此方法可以在不安装浏览器插件的情况下工作,并且将为系统上任何浏览器(和任何其他程序)提供阻止操作。

在本教程中,我将向你展示如何在 Linux 中启动并运行 Steven Black 的统一主机脚本。该脚本将使用来自多个来源的最新已知的广告服务器、网络钓鱼网站和其他网络垃圾的地址来更新你的计算机主机文件,同时提供一个漂亮、干净的方式来管理你自己的黑名单/白名单,其分别来自于该脚本管理的各个列表。

在将 30,000 个域放入主机文件之前,需要注意两点。首先,这些巨大的列表包含可能需要解除封锁的服务器,以便进行在线购买或其他一些临时情况。如果你弄乱了你的主机文件,你要知道网上的某些东西可能会出现问题。为了解决这个问题,我将向你展示如何使用方便的打开/关闭开关,以便你可以快速禁用你的阻止列表来购买喜马拉雅盐雾灯(它是等离子灯)。我仍然认为这些列表的目的之一是将所有的一切都封锁(有点烦人,直到我想到了做一个关闭开关)。如果你经常遇到你需要的服务器被阻止的问题,只需将其添加到白名单文件中即可。

第二个问题是性能受到了轻微的影响, 因为每次调用一个域时, 系统都必须检查整个列表。只是有一点点影响, 而没有大到让我因此而放弃黑名单,让每一个连接都通过。你具体要怎么选择自己看着办。

主机文件通过将请求定向到 127.0.0.1 或 0.0.0.0(换句话说定向到空地址)来阻止请求。有人说使用 0.0.0.0 是更快,问题更少的方法。你可以将脚本配置为使用 -ip nnn.nnn.nnn.nnn 这样的 ip 选项来作为阻止 ip,但默认值是 0.0.0.0,这是我使用的值。

我曾经将 Steven Black 的脚本做的事每隔一段时间就手动做一遍,进到每一个站点,将他们的列表拷贝/粘贴到我的主机文件中,做一个查找替换将其中的 127 变成 0 等等。我知道整件事情可以自动化,这样做有点傻,但我从来没有花时间解决这个问题。直到我找到这个脚本,现在这事已经是一个被遗忘的杂务。

让我们先下载一份最新的 Steven Black 的代码拷贝(大约 150MB),以便我们可以进行下一步。你需要安装 git,因此如果还没安装,进入到终端输入:

sudo apt-get install git

安装完之后,输入:

mkdir unifiedhosts
cd unifiedhosts
git clone https://github.com/StevenBlack/hosts.git
cd hosts

当你打开了 Steven 的脚本时,让我们来看看有什么选项。该脚本有几个选项和扩展,但扩展我不会在这里提交,但如果你到了这一步并且你有兴趣,readme.md 可以告诉你所有你需要知道的。

你需要安装 python 来运行此脚本,并且与版本有关。要找到你安装的 Python 版本,请输入:

python --version

如果你还没安装 Python:

sudo apt-get install python

对于 Python 2.7,如下所示,输入 python 来执行脚本。对于 Python 3,在命令中的 python 替换成 python3。执行后,该脚本会确保它具有每个列表的最新版本,如果没有,它会抓取一个新的副本。然后,它会写入一个新的主机文件,包括了你的黑名单/白名单中的任何内容。让我们尝试使用 -r 选项来替换我们的当前的主机文件,而 -a 选项可以脚本不会问我们任何问题。回到终端:

python updateHostsFile.py -r -a

该命令将询问你的 root 密码,以便能够写入 /etc/。为了使新更新的列表处于激活状态,某些系统需要清除 DNS 缓存。在同一个硬件设备上,我观察到不同的操作系统表现出非常不同的行为,在没有刷新缓存的情况下不同的服务器变为可访问/不可访问所需的时间长度都不同。我已经看到了从即时更新(Slackware)到重启更新(Windows)的各种情况。有一些命令可以刷新 DNS 缓存,但是它们在每个操作系统甚至每个发行版上都不同,所以如果没有生效,只需要重新启动就行了。

现在,只要将你的个人例外添加到黑名单/白名单中,并且只要你想要更新主机文件,运行该脚本就好。该脚本将根据你的要求调整生成的主机文件,每次运行文件时会自动追加你额外的列表。

最后,我们来创建一个打开/关闭开关,对于打开和关闭功能每个都创建一个脚本,所以回到终端输入下面的内容创建关闭开关(用你自己的文本编辑器替换 leafpad):

leafpad hosts-off.sh

在新文件中输入下面的内容:

#!/bin/sh
sudo mv /etc/hosts /etc/hostsDISABLED

接着让它可执行:

chmod +x hosts-off.sh

相似地,对于打开开关:

leafpad hosts-on.sh

在新文件中输入下面的内容:

#!/bin/sh
sudo mv /etc/hostsDISABLED /etc/hosts

最后让它可执行:

chmod +x hosts-on.sh

你所需要做的是为每个脚本创建一个快捷方式,标记为 HOSTS-ON 和 HOSTS-OFF,放在你能找到它们的地方。


via: https://www.darrentoback.com/this-script-updates-hosts-files-using-a-multi-source-unified-block-list-with-whitelisting

作者:dmt 译者:geekpi 校对:wxy

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

 title=

说明 - 非关系型数据库(NoSQL)和 OrientDB

通常在我们提及数据库的时候,想到的是两个主要的分类:使用用于用户和应用程序之间进行对接的一种被称为结构化查询语言(Structured Query Language ,缩写 SQL)的关系型数据库管理系统(Relational Data base Management System,缩写 RDBMS) 以及非关系型数据库管理系统(non-relational database management systems 或称 NoSQL 数据库)。

这两种模型在如何处理(存储)数据的方面存在着巨大的差异。

关系数据库管理系统

在关系模型中(如 MySQL,或者其分支 MariaDB),一个数据库是一个表的集合,其中每个表包含一个或多个以列组织的数据分类。数据库的每行包含一个唯一的数据实例,其分类由列定义。

举个例子,想象一个包含客户的表。每一行相当于一个客户,而其中的每一列分别对应名字、地址以及其他所必须的信息。

而另一个表可能是包含订单、产品、客户、日期以及其它的种种。而这个数据库的使用者则可以获得一个满足其需要的视图,例如一个客户在一个特定的价格范围购买产品的报告。

非关系型数据库管理系统

在非关系型数据库(或称为 不仅仅是数据库 Not only SQL )管理系统中,数据库被设计为使用不同的方式存储数据,比如文档存储、键值对存储、图形关系存储以及其他方式存储。使用此种形式实现的数据库系统专门被用于大型数据库集群和大型 Web 应用。现今,非关系型数据库被用于某些大公司,如谷歌和亚马逊。

文档存储数据库

文档存储数据库是将数据用文档的形式存储。这种类型的运用通常表现为 JavaScript 和 JSON,实际上,XML 和其他形式的存储也是可以被采用的。这里的一个例子就是 MongoDB。

键值对存储数据库

这是一个由唯一的 key 配对一个 value 的简单模型。这个系统在高速缓存方面具有高性能和高度可扩展性。这里的例子包括 BerkeleyDB 和 MemacacheDB。

图形关系数据库

正如其名,这种数据库通过使用 graph 模型存储数据,这意味着数据通过节点和节点之间的互连进行组织。这是一个可以随着时间的推移和使用而发展的灵活模型。这个系统应用于那些强调映射关系的地方。这里的例子有 IBM Graphs、Neo4j 以及 OrientDB

OrientDB

OrientDB 是一个多模式的非关系型数据库管理系统。正如开发它的公司所说的“它是一个将图形关系与文档、键值对、反应性、面向对象和地理空间模型结合在一起的可扩展的、高性能的数据库”。

OrientDB 还支持 SQL ,经过扩展可以用来操作树和图。

目标

这个教程旨在教会大家如何在运行 Ubuntu 16.04 的服务器上下载并配置 OrientDB 社区版。

下载 OrientDB

我们可以从最新的服务端上通过输入下面的指令来下载最新版本的 OrientDB。

$ wget -O orientdb-community-2.2.22.tar.gz http://orientdb.com/download.php?file=orientdb-community-2.2.22.tar.gz&os=linux

这里下载的是一个包含预编译二进制文件的压缩包,所以我们可以使用 tar 指令来操作解压它:

$ tar -zxf orientdb-community-2.2.22.tar.gz

将从中提取出来的文件夹整体移动到 /opt

# mv orientdb-community-2.2.22 /opt/orientdb

启动 OrientDB 服务器

启动 OrientDB 服务器需要运行 orientdb/bin/ 目录下的 shell 脚本:

# /opt/orientdb/bin/server.sh

如果你是第一次开启 OrientDB 服务器,安装程序还会显示一些提示信息,以及提醒你设置 OrientDB 的 root 用户密码:

+---------------------------------------------------------------+
| WARNING: FIRST RUN CONFIGURATION |
+---------------------------------------------------------------+
| This is the first time the server is running. Please type a |
| password of your choice for the 'root' user or leave it blank |
| to auto-generate it. |
| |
| To avoid this message set the environment variable or JVM |
| setting ORIENTDB_ROOT_PASSWORD to the root password to use. |
+---------------------------------------------------------------+

Root password [BLANK=auto generate it]: ********
Please confirm the root password: ********

在完成这些后,OrientDB 数据库服务器将成功启动:

INFO OrientDB Server is active v2.2.22 (build fb2b7d321ea8a5a5b18a82237049804aace9e3de). [OServer]

从现在开始,我们需要用第二个终端来与 OrientDB 服务器进行交互。

若要强制停止 OrientDB 执行 Ctrl+C 即可。

配置守护进程

此时,我们可以认为 OrientDB 仅仅是一串 shell 脚本,可以用编辑器打开 /opt/orientdb/bin/orientdb.sh

# $EDITOR /opt/orientdb/bin/orientdb.sh

在它的首段,我们可以看到:

#!/bin/sh
# OrientDB service script
#
# Copyright (c) OrientDB LTD (http://orientdb.com/)

# chkconfig: 2345 20 80
# description: OrientDb init script
# processname: orientdb.sh

# You have to SET the OrientDB installation directory here
ORIENTDB_DIR="YOUR_ORIENTDB_INSTALLATION_PATH"
ORIENTDB_USER="USER_YOU_WANT_ORIENTDB_RUN_WITH"

我们需要配置ORIENTDB_DIR 以及 ORIENTDB_USER.

然后创建一个用户,例如我们创建一个名为 orientdb 的用户,我们需要输入下面的指令:

# useradd -r orientdb -s /sbin/nologin

orientdb 就是我们在 ORIENTDB_USER 处输入的用户。

再更改 /opt/orientdb 目录的所有权:

# chown -R orientdb:orientdb /opt/orientdb

改变服务器配置文件的权限:

# chmod 640 /opt/orientdb/config/orientdb-server-config.xml

下载系统守护进程服务

OrientDB 的压缩包包含一个服务文件 /opt/orientdb/bin/orientdb.service。我们将其复制到 /etc/systemd/system 文件夹下:

# cp /opt/orientdb/bin/orientdb.service /etc/systemd/system

编辑该服务文件:

# $EDITOR /etc/systemd/system/orientdb.service

其中 [service] 内容块看起来应该是这样的:

[Service]
User=ORIENTDB_USER
Group=ORIENTDB_GROUP
ExecStart=$ORIENTDB_HOME/bin/server.sh

将其改成如下样式:

[Service]
User=orientdb 
Group=orientdb 
ExecStart=/opt/orientdb/bin/server.sh

保存并退出。

重新加载系统守护进程:

# systemctl daemon-reload

启动 OrientDB 并使其开机自启动:

# systemctl start orientdb
# systemctl enable orientdb

确认 OrientDB 的状态:

# systemctl status orientdb

上述指令应该会输出:

● orientdb.service - OrientDB Server
 Loaded: loaded (/etc/systemd/system/orientdb.service; disabled; vendor preset: enabled)
 Active: active (running) ...

流程就是这样了!OrientDB 社区版成功安装并且正确运行在我们的服务器上了。

总结

在这个指导中,我们看到了一些关系型数据库管理系统(RDBMS)以及非关系型数据库管理系统(NoSQL DBMS)的简单对照。我们也安装 OrientDB 社区版的服务器端并完成了其基础的配置。

这是我们部署完全的 OrientDB 基础设施的第一步,也是我们用于管理大型系统数据的起步。


via: https://www.unixmen.com/nosql-install-orientdb-ubuntu-16-04/

作者:Giuseppe Molica 译者:a972667237 校对:wxy

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