2018年5月

这是我们的 LAMP 系列教程的开始:如何在 Ubuntu 上安装 Apache web 服务器。

这些说明适用于任何基于 Ubuntu 的发行版,包括 Ubuntu 14.04、 Ubuntu 16.04、 Ubuntu 18.04,甚至非 LTS 的 Ubuntu 发行版,例如 Ubuntu 17.10。这些说明经过测试并为 Ubuntu 16.04 编写。

Apache (又名 httpd) 是最受欢迎和使用最广泛的 web 服务器,所以这应该对每个人都有用。

开始安装 Apache 之前

在我们开始之前,这里有一些要求和说明:

  • Apache 可能已经在你的服务器上安装了,所以开始之前首先检查一下。你可以使用 apachectl -V 命令来显示你正在使用的 Apache 的版本和一些其他信息。
  • 你需要一个 Ubuntu 服务器。你可以从 Vultr 购买一个,它们是最便宜的云托管服务商之一。它们的服务器价格每月 2.5 美元起。(LCTT 译注:广告 ≤\_≤ )
  • 你需要有 root 用户或具有 sudo 访问权限的用户。下面的所有命令都由 root 用户执行,所以我们不必为每个命令都添加 sudo
  • 如果你使用 Ubuntu,则需要启用 SSH,如果你使用 Windows,则应该使用类似 MobaXterm 的 SSH 客户端。

这就是全部要求和注释了,让我们进入安装过程。

在 Ubuntu 上安装 Apache

你需要做的第一件事就是更新 Ubuntu,这是在你做任何事情之前都应该做的。你可以运行:

apt-get update && apt-get upgrade

接下来,安装 Apache,运行以下命令:

apt-get install apache2

如果你愿意,你也可以安装 Apache 文档和一些 Apache 实用程序。对于我们稍后将要安装的一些模块,你将需要一些 Apache 实用程序。

apt-get install apache2-doc apache2-utils

*就是这样。你已经成功安装了 Apache *

你仍然需要配置它。

在 Ubuntu 上配置和优化 Apache

你可以在 Apache 上做各种各样的配置,但是主要的和最常见的配置将在下面做出解释。

检查 Apache 是否正在运行

默认情况下,Apache 设置为在机器启动时自动启动,因此你不必手动启用它。你可以使用以下命令检查它是否正在运行以及其他相关信息:

systemctl status apache2

check if apache is running

并且你可以检查你正在使用的版本:

apachectl -V

一种更简单的检查方法时访问服务器的 IP 地址,如果你得到默认的 Apache 页面,那么一切都正常。

更新你的防火墙

如果你使用防火墙(你应该使用它),则可能需要更新防火墙规则并允许访问默认端口。Ubuntu 上最常用的防火墙是 UFW,因此以下说明使用于 UFW。

要允许通过 80(http)和 443(https)端口的流量,运行以下命令:

ufw allow 'Apache Full'

安装常见的 Apache 模块

一些模块经常被建议使用,所以你应该安装它们。我们将包含最常见模块的说明:

使用 PageSpeed 加速你的网站

PageSpeed 模块将自动优化并加速你的 Apache 服务器。

首先,进入 PageSpeed 下载页并选择你需要的的文件。我们使用的是 64 位 Ubuntu 服务器,所以我们安装最新的稳定版本。使用 wget 下载它:

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb

然后,使用以下命令安装它:

dpkg -i mod-pagespeed-stable_current_amd64.deb
apt-get -f install

重启 Apache 以使更改生效:

systemctl restart apache2
使用 mod\_rewrite 模块启动重写/重定向

顾名思义,该模块用于重写(重定向)。如果你使用 WordPress 或任何其他 CMS 来处理此问题,你就需要它。要安装它,只需运行:

a2enmod rewrite

然后再次重新启动 Apache。你可能需要一些额外的配置,具体取决于你使用的 CMS,如果有的话。为你的设置 Google 一下得到它的具体说明。

使用 ModSecurity 模块保护你的 Apache

顾名思义,ModSecurity 是一个用于安全性的模块,它基本上起着防火墙的作用,它可以监控你的流量。要安装它,运行以下命令:

apt-get install libapache2-modsecurity

再次重启 Apache:

systemctl restart apache2

ModSecurity 自带了一个默认的设置,但如果你想扩展它,你可以使用 OWASP 规则集

使用 mod\_evasive 模块抵御 DDoS 攻击

尽管 mod\_evasive 在防止攻击方面有多大用处值得商榷,但是你可以使用它来阻止和防止服务器上的 DDoS 攻击。要安装它,使用以下命令:

apt-get install libapache2-mod-evasive

默认情况下,mod\_evasive 是禁用的,要启用它,编辑以下文件:

nano /etc/apache2/mods-enabled/evasive.conf

取消注释所有行(即删除 #),根据你的要求进行配置。如果你不知道要编辑什么,你可以保持原样。

mod_evasive

创建一个日志文件:

mkdir /var/log/mod_evasive
chown -R www-data:www-data /var/log/mod_evasive

就是这样。现在重启 Apache 以使更改生效。

systemctl restart apache2

你可以安装和配置附加模块,但完全取决于你和你使用的软件。它们通常不是必需的。甚至我们上面包含的 4 个模块也不是必需的。如果特定应用需要模块,那么它们可能会注意到这一点。

用 Apache2Buddy 脚本优化 Apache

Apache2Buddy 是一个可以自动调整 Apache 配置的脚本。你唯一需要做的就是运行下面的命令,脚本会自动完成剩下的工作:

curl -sL https://raw.githubusercontent.com/richardforth/apache2buddy/master/apache2buddy.pl | perl

如果你没有安装 curl,那么你可能需要安装它。使用以下命令来安装 curl

apt-get install curl

额外配置

用 Apache 还可以做一些额外的东西,但我们会留下它们作为另一个教程。像启用 http/2 支持,关闭(或打开) KeepAlive,调整你的 Apache 甚至更多。这些东西你现在不需要做,但是如果你在网上找到了教程,并且如果你等不及我们的教程,那就去做吧。

使用 Apache 创建你的第一个网站

现在我们已经完成了所有的调优工作,让我们开始创建一个实际的网站。按照我们的指示创建一个简单的 HTML 页面和一个在 Apache 上运行的虚拟主机。

你需要做的第一件事是为你的网站创建一个新的目录。运行以下命令来执行此操作:

mkdir -p /var/www/example.com/public_html

当然,将 example.com 替换为你所需的域名。你可以从 Namecheap 获得一个便宜的域名。

不要忘记在下面的所有命令中替换 example.com

接下来,创建一个简单的静态网页。创建 HTML 文件:

nano /var/www/example.com/public_html/index.html

粘贴这些:

<html>
     <head>
       <title>Simple Page</title>
     </head>
     <body>
       <p>If you're seeing this in your browser then everything works.</p>
     </body>
</html>

保存并关闭文件。

配置目录的权限:

chown -R www-data:www-data /var/www/example.com
chmod -R og-r /var/www/example.com

为你的网站创建一个新的虚拟主机:

nano /etc/apache2/sites-available/example.com.conf

粘贴以下内容:

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.com
     ServerAlias www.example.com
   
     DocumentRoot /var/www/example.com/public_html
    
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这是一个基础的虚拟主机。根据你的设置,你可能需要更高级的 .conf 文件。

在更新所有内容后保存并关闭文件。

现在,使用以下命令启用虚拟主机:

a2ensite example.com.conf

最后,重启 Apache 以使更改生效:

systemctl restart apache2

这就是全部了,你做完了。现在你可以访问 example.com 并查看你的页面。


via: https://thishosting.rocks/how-to-install-optimize-apache-ubuntu/

作者:ThisHosting 译者:MjSeven 校对:wxy

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

你们大多数人可能用过或听说过 Youtube-dl,这个命令行程序可以从包括 Youtube 在内的 100+ 网站下载视频。我偶然发现了一个类似的工具,名字叫做 You-Get。这是一个 Python 编写的命令行下载器,可以让你从 Youtube、Facebook、Twitter 等很多热门网站下载图片,音频和视频(LCTT 译注:首先,它们得是存在的网站)。目前该下载器支持 80+ 站点,点击这里查看所有支持的网站。

You-Get 不仅仅是一个下载器,它还可以将在线视频导流至你的视频播放器。更进一步,它还允许你在 Google 上搜索视频,只要给出搜索项,You-Get 使用 Google 搜索并下载相关度最高的视频。另外值得一提的特性是,它允许你暂停和恢复下载过程。它是一个完全自由、开源及跨平台的应用,适用于 Linux、MacOS 及 Windows。

安装 You-Get

确保你已经安装如下依赖项:

  • Python 3
  • FFmpeg (强烈推荐) 或 Libav
  • (可选) RTMPDump

有多种方式安装 You-Get,其中官方推荐采用 pip 包管理器安装。如果你还没有安装 pip,可以参考如下链接:

需要注意的是,你需要安装 Python 3 版本的 pip

接下来,运行如下命令安装 You-Get:

$ pip3 install you-get

可以使用命令升级 You-Get 至最新版本:

$ pip3 install --upgrade you-get

开始使用 You-Get

使用方式与 Youtube-dl 工具基本一致。

下载视频

下载视频,只需运行:

$ you-get https://www.youtube.com/watch?v=HXaglTFJLMc

输出示例:

site: YouTube
title: The Last of The Mohicans by Alexandro Querevalú
stream:
 - itag: 22
 container: mp4
 quality: hd720
 size: 56.9 MiB (59654303 bytes)
 # download-with: you-get --itag=22 [URL]

Downloading The Last of The Mohicans by Alexandro Querevalú.mp4 ...
 100% ( 56.9/ 56.9MB) ├███████████████████████████████████████████████████████┤[1/1] 752 kB/s

下载视频前,你可能希望查看视频的细节信息。You-Get 提供了 –info-i 参数,使用该参数可以获得给定视频所有可用的分辨率和格式。

$ you-get -i https://www.youtube.com/watch?v=HXaglTFJLMc

或者

$ you-get --info https://www.youtube.com/watch?v=HXaglTFJLMc

输出示例如下:

site: YouTube
title: The Last of The Mohicans by Alexandro Querevalú
streams: # Available quality and codecs
 [ DASH ] ____________________________________
 - itag: 137
 container: mp4
 quality: 1920x1080
 size: 101.9 MiB (106816582 bytes)
 # download-with: you-get --itag=137 [URL]

- itag: 248
 container: webm
 quality: 1920x1080
 size: 90.3 MiB (94640185 bytes)
 # download-with: you-get --itag=248 [URL]

- itag: 136
 container: mp4
 quality: 1280x720
 size: 56.9 MiB (59672392 bytes)
 # download-with: you-get --itag=136 [URL]

- itag: 247
 container: webm
 quality: 1280x720
 size: 52.6 MiB (55170859 bytes)
 # download-with: you-get --itag=247 [URL]

- itag: 135
 container: mp4
 quality: 854x480
 size: 32.2 MiB (33757856 bytes)
 # download-with: you-get --itag=135 [URL]

- itag: 244
 container: webm
 quality: 854x480
 size: 28.0 MiB (29369484 bytes)
 # download-with: you-get --itag=244 [URL]

[ DEFAULT ] _________________________________
 - itag: 22
 container: mp4
 quality: hd720
 size: 56.9 MiB (59654303 bytes)
 # download-with: you-get --itag=22 [URL]

默认情况下,You-Get 会下载标记为 “DEFAULT” 的格式。如果你对格式或分辨率不满意,可以选择你喜欢的格式,使用格式对应的 itag 值即可。

$ you-get --itag=244 https://www.youtube.com/watch?v=HXaglTFJLMc

下载音频

执行下面的命令,可以从 soundcloud 网站下载音频:

$ you-get 'https://soundcloud.com/uiceheidd/all-girls-are-same-999-prod-nick-mira'
Site: SoundCloud.com
Title: ALL GIRLS ARE THE SAME (PROD. NICK MIRA)
Type: MP3 (audio/mpeg)
Size: 2.58 MiB (2710046 Bytes)

Downloading ALL GIRLS ARE THE SAME (PROD. NICK MIRA).mp3 ...
 100% ( 2.6/ 2.6MB) ├███████████████████████████████████████████████████████┤[1/1] 983 kB/s

查看音频文件细节,使用 -i 参数:

$ you-get -i 'https://soundcloud.com/uiceheidd/all-girls-are-same-999-prod-nick-mira'

下载图片

运行如下命令下载图片:

$ you-get https://pixabay.com/en/mountain-crumpled-cyanus-montanus-3393209/

You-Get 也可以下载网页中的全部图片:

$ you-get https://www.ostechnix.com/pacvim-a-cli-game-to-learn-vim-commands/

搜索视频

你只需向 You-Get 传递一个任意的搜索项,而无需给出有效的 URL;You-Get 会使用 Google 搜索并下载与你给出搜索项最相关的视频。(LCTT 译注:Google 的机器人检测机制可能导致 503 报错导致该功能无法使用)。

$ you-get 'Micheal Jackson'
Google Videos search:
Best matched result:
site: YouTube
title: Michael Jackson - Beat It (Official Video)
stream:
 - itag: 43
 container: webm
 quality: medium
 size: 29.4 MiB (30792050 bytes)
 # download-with: you-get --itag=43 [URL]

Downloading Michael Jackson - Beat It (Official Video).webm ...
 100% ( 29.4/ 29.4MB) ├███████████████████████████████████████████████████████┤[1/1] 2 MB/s

观看视频

You-Get 可以将在线视频导流至你的视频播放器或浏览器,跳过广告和评论部分。(LCTT 译注:使用 -p 参数需要对应的 vlc/chrominum 命令可以调用,一般适用于具有图形化界面的操作系统)。

以 VLC 视频播放器为例,使用如下命令在其中观看视频:

$ you-get -p vlc https://www.youtube.com/watch?v=HXaglTFJLMc

或者

$ you-get --player vlc https://www.youtube.com/watch?v=HXaglTFJLMc

类似地,将视频导流至以 chromium 为例的浏览器中,使用如下命令:

$ you-get -p chromium https://www.youtube.com/watch?v=HXaglTFJLMc

在上述屏幕截图中,可以看到并没有广告和评论部分,只是一个包含视频的简单页面。

设置下载视频的路径及文件名

默认情况下,使用视频标题作为默认文件名,下载至当前工作目录。当然,你可以按照你的喜好进行更改,使用 –output-dir-o 参数可以指定路径,使用 –output-filename-O 参数可以指定下载文件的文件名。

$ you-get -o ~/Videos -O output.mp4 https://www.youtube.com/watch?v=HXaglTFJLMc

暂停和恢复下载

CTRL+C 可以取消下载。一个以 .download 为扩展名的临时文件会保存至输出路径。下次你使用相同的参数下载时,下载过程将延续上一次的过程。

当文件下载完成后,以 .download 为扩展名的临时文件会自动消失。如果这时你使用同样参数下载,You-Get 会跳过下载;如果你想强制重新下载,可以使用 –force-f 参数。

查看命令的帮助部分可以获取更多细节,命令如下:

$ you-get --help

这次的分享到此结束,后续还会介绍更多的优秀工具,敬请期待!

感谢各位阅读!


via: https://www.ostechnix.com/you-get-a-cli-downloader-to-download-media-from-80-websites/

作者:SK 选题:lujun9972 译者:pinewall 校对:wxy

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

比一般的视频监控还要好,这种 DIY 型号还有婴儿房间的自动室温控制功能。

香港很湿热,即便是晚上,许多人为了更舒适,在家里也使用空调。当我的大儿子还是一个小婴儿的时候,他卧室的空调还是需要手动控制的,没有温度自动调节的功能。它的控制器只有开或者关,让空调整个晚上持续运行会导致房间过冷,并且也浪费能源和钱。

我决定使用一个基于 树莓派物联网 解决方案去修复这个问题。后来我进一步为它添加了一个婴儿监视器插件。在这篇文章中,我将解释我是如何做的,它的代码在 我的 GitHub 页面上。

设计空调控制器

解决我的问题的第一个部分是使用了一个 Orvibo S20 可通过 WiFi 连接的智能插头和智能手机应用程序。虽然这样可以让我通过远程来控制空调,但是它还是手动处理的,而我希望尝试让它自动化。我在 Instructables 上找到了一个满足我的需求的项目:他使用树莓派从一个 AM2302 传感器 上测量附近的温度和湿度,并将它们记录到一个 MySQL 数据库中。

使用压接头将温度/湿度传感器连接到树莓派的相应 GPIO 针脚上。幸运的是,AM2302 传感器有一个用于读取的 开源软件,并且同时提供了 Python 示例。

与我的项目放在一起的用于 AM2302 传感器 接口的软件已经更新了,并且我使用的原始代码现在应该已经过时了,停止维护了。这个代码是由一个小的二进制组成,用于连接到传感器以及解释读取并返回正确值的 Python 脚本。

 title=

树莓派、传感器、以及用于构建温度/湿度监视器的 Python 代码。

将传感器连接到树莓派,这些 Python 代码能够正确地返回温度和湿度读数。将 Python 连接到 MySQL 数据库很简单,并且也有大量的使用 python-mysql 绑定的代码示例。因为我需要持续地监视温度和湿度,所以我写软件来实现这些。

事实上,最终我用了两个解决方案,一是作为一个持续运行的进程,周期性(一般是间隔一分钟)地获取传感器数据,另一种是让 Python 脚本运行一次然后退出。我决定使用第二种方法,并使用 cron 去每分钟调用一次这个脚本。之所以选择这种方法的主要原因是,(通过循环实现的)持续的脚本偶尔会不返回读数,这将导致尝试读取传感器的进程出现堆积,最终可能会导致系统挂起而缺乏可用资源。

我也找到了可以用程序来控制我的智能插头的一个 Perl 脚本。它是解决这种问题所需的一部分,因此当某些温度/湿度达到触发条件,将触发这个 Perl 脚本。在做了一些测试之后,我决定去设计一个独立的 checking 脚本,从 MySQL 去拉取最新的数据,然后根据返回的值去设置智能开关为开或关。将插头控制逻辑与传感器读取脚本分开,意味着它们是各自独立运行的,就算是传感器读取脚本写的有问题也没事。

配置一个打开/关闭空调的温度值是很有意义的,因此,我将这些值转移到控制脚本读取的配置文件中。我也发现,虽然传感器的值一般都很准确,但是,偶尔也会出现返回不正确读数的情况。这个传感器脚本被修改为不向 MySQL 数据库中写入与前值差异非常大的值。同样也在配置文件中写入了连续读取的温度/湿度之间允许的最大差异值,如果读取的值处于这些限制值以外,这些值写不会提交到数据库中。

虽然,做这个自动调节器似乎花费了很多努力,但是,这意味着,记录到 MySQL 数据库的数据是有效的、可用于进一步去分析识别用户使用模式的有用数据。可以用多种图形方式去展示来自 MySQL 数据库中的数据,而我决定使用 Google Chart 在一个 Web 页面上显示数据。

 title=

过去六小时内测量到的温度和湿度

添加一个婴儿监视摄像头

树莓派开放的性能意味着我可以不断地为它增加功能 —— 并且我有大量的未使用的可用 GPIO 针脚。我的下一个创意是去添加一个摄像头模块,将它放在孩子的卧室中,配置它去监视婴儿。

我需要一个能够在黑暗环境中工作的摄像头,而 Pi Noir 摄像头模块是非常适合这种条件的。Pi Noir 除了没有红外过滤之外,同样也是树莓派常用的摄像头模块。这意味着它在白天时的图像可能有点偏紫色,但是它可以在黑暗中借助红外灯来显示图像。

现在我需要一个红外光源。由于树莓派非常流行,并且进入门槛很低,因此它有大量的外围配件和插件。也有适合它的各种红外光源,我注意到的其中一个是 Bright Pi。它可以从树莓派上供电,并且它很适合为树莓派的摄像头模块提供红外光和普通光。它唯一的缺点是太考验我的焊接技能了。

我的焊接技能还是不错的,但是可能花费的时间比其他人更长。我成功地连接了外壳上所有的红外 LEDs,并将它们连接到树莓派的 GPIO 针脚上。这意味着树莓派能够编程控制红外 LED 是否点亮,以及它的亮度。

通过一个 Web 流去公开捕获的视频也很有意义,因为这样我就可以从 Web 页面上查看温度和湿度的读数图表。进一步研究之后,我选择了一个使用 M-JPEG 捕获器的 流软件。通过 Web 页面公开 JPG 源,我可以在我的智能手机上去连接摄像头查看程序,去查看摄像头的输出。

做最后的修饰

没有哪个树莓派项目都已经完成了还没有为它选择一个合适的外壳,并且它有各种零件。在大量搜索和比较之后,有了一个显然的 赢家:SmartPi 的乐高积木式外壳。乐高的兼容性可以让我去安装温度/湿度传感器和摄像头。下面是最终的成果图:

在这以后,我对我的这个作品作了一些改变和更新:

  • 我将它从树莓派 2 Model B 升级到了 树莓派 3,这意味着我可以使用 USB WiFi 模块。
  • 我用一个 TP-Link HS110 智能插头替换了 Orvibo S20。
  • 我也将树莓派插到了一个智能插头上,这样我就可以远程重启/重置它了。
  • 我从树莓派上将 MySQL 数据库移走了,它现在运行在一个 NAS 设备上的容器中。
  • 我增加了一个非常 灵活的三角夹,这样我就可以调整到最佳角度。
  • 我重新编译了 USB WiFi 模块,禁用了板载 LED 指示灯,这就是升级到树莓派 3 的其中一个好处。
  • 我因此为我的第二个孩子设计了另外一个监视器。
  • 因为没有时间去折腾,我为我的第三个孩子购买了夜用摄像头。

想学习更多的东西吗?所有的代码都在 我的 GitHub 页面上。

想分享你的树莓派项目吗?将你的故事和创意发送给我们


via: https://opensource.com/article/18/3/build-baby-monitor-raspberry-pi

作者:Jonathan Ervine 译者:qhwdw 校对:wxy

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

Font Finder 是旧的 Typecatcher 的 Rust 实现,用于从 Google 的字体存档中轻松搜索和安装 Google Web 字体。它可以帮助你在 Linux 桌面上安装数百种免费和开源字体。如果你正在为你的 Web 项目和应用以及其他任何地方寻找好看的字体,Font Finder 可以轻松地为你提供。它是用 Rust 编程语言编写的自由、开源的 GTK3 应用程序。与使用 Python 编写的 Typecatcher 不同,Font Finder 可以按类别过滤字体,没有 Python 运行时依赖关系,并且有更好的性能和更低的资源消耗。

在这个简短的教程中,我们将看到如何在 Linux 中安装和使用 Font Finder。

安装 Font Finder

由于 Fond Finder 是使用 Rust 语言编写的,因此你需要向下面描述的那样在系统中安装 Rust。

安装 Rust 后,运行以下命令安装 Font Finder:

$ cargo install fontfinder

Font Finder 也可以从 flatpak app 安装。首先在你的系统中安装 Flatpak,如下面的链接所述。

然后,使用命令安装 Font Finder:

$ flatpak install flathub io.github.mmstick.FontFinder

在 Linux 中使用 Font Finder 搜索和安装 Google Web 字体

你可以从程序启动器启动 Font Finder,也可以运行以下命令启动它。

$ flatpak run io.github.mmstick.FontFinder

这是 Font Finder 默认界面的样子。

正如你所看到的,Font Finder 的用户界面非常简单。所有 Google Web 字体都列在左侧窗格中,相应字体的预览显示在右侧窗格中。你可以在预览框中输入任何单词以查看单词在所选字体中的外观。在左上方还有一个搜索框,可以让你快速搜索你选择的字体。

默认情况下,Font Finder 显示所有类型的字体。但是,你可以通过搜索框上方的类别下拉框中的分类显示字体。

要安装字体,只需选择它并点击顶部的 “Install” 按钮即可。

你可以在任何文本处理程序中测试新安装的字体。

同样,要删除字体,只需从 Font Finder 面板中选择它并单击 “Uninstall” 按钮。就这么简单!

左上角的设置按钮(齿轮按钮)提供了切换到暗色预览的选项。

如你所见,Font Finder 非常简单,完全可以像在主页上宣传的那样完成工作。如果你正在寻找安装 Google Web 字体的程序,Font Finder 就是这样的一个程序。

今天就是这些。希望这有帮助。还有更好的东西。敬请关注!

干杯!


via: https://www.ostechnix.com/font-finder-easily-search-and-install-google-web-fonts-in-linux/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

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

上周 我们学习了 IPv4 地址 和如何使用管理员不可或缺的工具 —— ipcalc,今天我们继续学习更精彩的内容:局域网路由器。

VirtualBox 和 KVM 是测试路由的好工具,在本文中的所有示例都是在 KVM 中执行的。如果你喜欢使用物理硬件去做测试,那么你需要三台计算机:一台用作路由器,另外两台用于表示两个不同的网络。你也需要两台以太网交换机和相应的线缆。

我们假设这个示例是一个有线以太局域网,为了更符合真实使用场景,我们将假设有一些桥接的无线接入点,当然我并不会使用这些无线接入点做任何事情。(我也不会去尝试所有的无线路由器,以及使用一个移动宽带设备连接到以太网的局域网口进行混合组网,因为它们需要进一步的安装和设置)

网段

最简单的网段是两台计算机连接在同一个交换机上的相同地址空间中。这样两台计算机不需要路由器就可以相互通讯。这就是我们常说的术语 —— “广播域”,它表示所有在相同的网络中的一组主机。它们可能连接到一台单个的以太网交换机上,也可能是连接到多台交换机上。一个广播域可以包括通过以太网桥连接的两个不同的网络,通过网桥可以让两个网络像一个单个网络一样运转。无线访问点一般是桥接到有线以太网上。

一个广播域仅当在它们通过一台网络路由器连接的情况下,才可以与不同的广播域进行通讯。

简单的网络

以下示例的命令并不是永久生效的,重启之后你所做的改变将会消失。

一个广播域需要一台路由器才可以与其它广播域通讯。我们使用两台计算机和 ip 命令来解释这些。我们的两台计算机是 192.168.110.125 和 192.168.110.126,它们都插入到同一台以太网交换机上。在 VirtualBox 或 KVM 中,当你配置一个新网络的时候会自动创建一个虚拟交换机,因此,当你分配一个网络到虚拟虚拟机上时,就像是插入一个交换机一样。使用 ip addr show 去查看你的地址和网络接口名字。现在,这两台主机可以互 ping 成功。

现在,给其中一台主机添加一个不同网络的地址:

# ip addr add 192.168.120.125/24 dev ens3

你可以指定一个网络接口名字,在示例中它的名字是 ens3。这不需要去添加一个网络前缀,在本案例中,它是 /24,但是显式地添加它并没有什么坏处。你可以使用 ip 命令去检查你的配置。下面的示例输出为了清晰其见进行了删减:

$ ip addr show
ens3:
 inet 192.168.110.125/24 brd 192.168.110.255 scope global dynamic ens3
 valid_lft 875sec preferred_lft 875sec
 inet 192.168.120.125/24 scope global ens3
 valid_lft forever preferred_lft forever

主机在 192.168.120.125 上可以 ping 它自己(ping 192.168.120.125),这是对你的配置是否正确的一个基本校验,这个时候第二台计算机就已经不能 ping 通那个地址了。

现在我们需要做一些网络变更。添加第三台主机作为路由器。它需要两个虚拟网络接口并添加第二个虚拟网络。在现实中,你的路由器必须使用一个静态 IP 地址,但是现在,我们可以让 KVM 的 DHCP 服务器去为它分配地址,所以,你仅需要两个虚拟网络:

  • 第一个网络:192.168.110.0/24
  • 第二个网络:192.168.120.0/24

接下来你的路由器必须配置去转发数据包。数据包转发默认是禁用的,你可以使用 sysctl 命令去检查它的配置:

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

0 意味着禁用,使用如下的命令去启用它:

# echo 1 > /proc/sys/net/ipv4/ip_forward

接下来配置你的另一台主机做为第二个网络的一部分,你可以通过将原来在 192.168.110.0/24 的网络中的一台主机分配到 192.168.120.0/24 虚拟网络中,然后重新启动两个 “连网的” 主机,注意不是路由器。(或者重启动主机上的网络服务;我年龄大了还有点懒,我记不住那些重启服务的奇怪命令,还不如重启主机来得干脆。)重启后各台机器的地址应该如下所示:

  • 主机 1: 192.168.110.125
  • 主机 2: 192.168.120.135
  • 路由器: 192.168.110.126 和 192.168.120.136

现在可以去随意 ping 它们,可以从任何一台计算机上 ping 到任何一台其它计算机上。使用虚拟机和各种 Linux 发行版做这些事时,可能会产生一些意想不到的问题,因此,有时候 ping 的通,有时候 ping 不通。不成功也是一件好事,这意味着你需要动手去创建一条静态路由。首先,查看已经存在的路由表。主机 1 和主机 2 的路由表如下所示:

$ ip route show
default via 192.168.110.1 dev ens3 proto static metric 100
192.168.110.0/24 dev ens3 proto kernel scope link src 192.168.110.164 metric 100

$ ip route show
default via 192.168.110.1 dev ens3 proto static metric 100
default via 192.168.120.1 dev ens3 proto static metric 101
169.254.0.0/16 dev ens3 scope link metric 1000
192.168.110.0/24 dev ens3 proto kernel scope link
 src 192.168.110.126 metric 100
192.168.120.0/24 dev ens9 proto kernel scope link
 src 192.168.120.136 metric 100

这显示了我们使用的由 KVM 分配的缺省路由。169.* 地址是自动链接的本地地址,我们不去管它。接下来我们看两条路由,这两条路由指向到我们的路由器。你可以有多条路由,在这个示例中我们将展示如何在主机 1 上添加一个非默认路由:

# ip route add 192.168.120.0/24 via 192.168.110.126 dev ens3

这意味着主机 1 可以通过路由器接口 192.168.110.126 去访问 192.168.110.0/24 网络。看一下它们是如何工作的?主机 1 和路由器需要连接到相同的地址空间,然后路由器转发到其它的网络。

以下的命令去删除一条路由:

# ip route del 192.168.120.0/24

在真实的案例中,你不需要像这样手动配置一台路由器,而是使用一个路由器守护程序,并通过 DHCP 做路由器通告,但是理解基本原理很重要。接下来我们将学习如何去配置一个易于使用的路由器守护程序来为你做这些事情。

通过来自 Linux 基金会和 edX 的免费课程 “Linux 入门” 来学习更多 Linux 的知识。


via: https://www.linux.com/learn/intro-to-linux/2018/3/linux-lan-routing-beginners-part-2

作者:CARLA SCHRODER 译者:qhwdw 校对:wxy

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

在共创协议下授权作品和挣钱这二者不再是一种争议。

传统观点认为,作家、摄影师、艺术家和其他创作者在 共创协议 Creative Commons 和其他开放许可下免费共享内容的不会得到报酬。这意味着大多数独立创作者无法通过在互联网上发布他们的作品来赚钱。而现在有了 LikeCoin:一个新的开源项目,旨在使这个让艺术家们经常为了贡献而不得不妥协或牺牲的常识成为过去。

LikeCoin 协议旨在通过创意内容获利,以便创作者可以专注于创造出色的内容而不是出售它。

该协议同样基于去中心化技术,它可以跟踪何时使用内容,并使用 LikeCoin 这种 以太坊 ERC-20 加密货币通证来奖励其创作者。它通过“ 创造性共识 Proof of Creativity ”算法进行操作,该算法一部分根据作品收到多少个“喜欢”,一部分根据有多少作品衍生自它而分配 LikeCoin。由于开放式授权的内容有更多机会被重复使用并获得 LikeCoin 令牌,因此系统鼓励内容创作者在 共创协议 Creative Commons 许可下发布。

如何运作的

当通过 LikeCoin 协议上传创意片段时,内容创作者也将包括作品的元数据,包括作者信息及其 InterPlanetary 关联数据(IPLD)。这些数据构成了衍生作品的家族图谱;我们称作品与其衍生品之间的关系为“内容足迹”。这种结构使得内容的继承树可以很容易地追溯到原始作品。

LikeCoin 通证会使用作品的衍生历史记录的信息来将其分发给创作者。由于所有创意作品都包含作者钱包的元数据,因此相应的 LikeCoin 份额可以通过算法计算并分发。

LikeCoin 可以通过两种方式获得奖励:要么由想要通过支付给内容创建者来表示赞赏的个人直接给予,或通过 Creators Pool 收集观众的“赞”的并根据内容的 LikeRank 分配 LikeCoin。基于在 LikeCoin 协议中的内容追踪,LikeRank 衡量作品重要性(或者我们在这个场景下定义的创造性)。一般来说,一副作品有越多的衍生作品,创意内容的创新就越多,内容就会有更高的 LikeRank。 LikeRank 是内容创新性的量化者。

如何参与?

LikeCoin 仍然非常新,我们期望在 2018 年晚些时候推出我们的第一个去中心化程序来奖励 共创协议 Creative Commons 的内容,并与更大的社区无缝连接。

LikeCoin 的大部分代码都可以在 LikeCoin GitHub 仓库中通过 GPL 3.0 许可证访问。由于它仍处于积极开发阶段,一些实验代码尚未公开,但我们会尽快完成。

我们欢迎功能请求、拉取请求、复刻和星标。请参与我们在 Github 上的开发,并加入我们在 Telegram 的讨论组。我们同样在 MediumFacebookTwitter 和我们的网站 like.co 发布关于我们进展的最新消息。


via: https://opensource.com/article/18/5/likecoin

作者:Kin Ko 选题:lujun9972 译者:geekpi 校对:wxy

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