分类 树莓派 下的文章

在我的上一篇文章中讲过如何做一个高可用系统:两个树莓派布署上 GlusterFS 集群文件系统,就变成一个容错文件服务器了。在这篇文章中我们会基于这个高可用系统构建另一个容错服务:建立一个简单的 Web 服务器集群。

可能你没有看过我的上一篇文章,那我就在这里简单回顾一下上次的内容。我有两个树莓派:Pi1 和 Pi2。Pi1 的 IP 地址为 192.168.0.121,Pi2 的 IP 地址为 192.168.0.122。我把它们组合成为 GlusterFS 集群系统,共享一个存储卷,卷名为 gv0。并且这个 gv0 被挂载在两个树莓派上,挂载点都是 /mnt/gluster1,这样一来,两个树莓派能同时访问到这个共享卷。最后我测试了下系统的容错性,将共享卷挂载到第三个物理机上,并执行共享卷上的一个简单的脚本:打印系统时间并输出到 gv0 上的一个文件内,然后轮着关掉两台树莓派,检测这个冗余系统是否还能用。

现在我手上有这个经过检验的存储系统,我要做的是把这个系统做成有容错功能的 Web 服务器集群。树莓派的 CPU 处理速度和内存资源都不是很高,好在对付一个静态 Web 服务器已经是绰绰有余了。我故意把这个例子做得非常简单,因为我觉得如果你能摆平这个简单的例子,你也能处理复杂一点的问题了。

安装 Nginx

虽然我也比较喜欢 Apache,但在资源有限的情况下,像 Nginx 这样功能全、性能高、资源占用少的 Web 服务器是比较理想的选择。在 Raspbian 的默认源中存在 Nginx,所以我只要登入一台树莓派并且输入以下命令:

$ sudo apt-get update
$ sudo apt-get install nginx

Nginx 安装好后,创建配置文件 /mnt/gluster1/cluster ,内容如下:

server {
  root /mnt/gluster1/www;
  index index.html index.htm;
  server_name twopir twopir.example.com;

  location / {
        try_files $uri $uri/ /index.html;
  }
}

注意:我这里把服务器命名为“twopir”,你可以根据自己爱好命名你的网站。另外我把 Web 服务器的根目录设置为 /mng/gluster1/www。这样,我就能把我的静态文件放在这个共享存储系统内,从而让两个树莓派主机都访问到它们。

现在删除默认的 Nginx 配置文件,将上面配好的配置文件作为 Nginx 的配置文件。在 Debian 系统中,Nginx 将它的配置文件像 Apache 一样放在 sites-available 和 site-enabled 两个目录下面。虚拟主机配置文档放在 sites-available 中,而 sites-enabled 目录包含了你想生效的配置文件的软链接。

$ cd /etc/nginx/sites-available
$ sudo ln -s /mnt/gluster1/cluster .
$ cd /etc/nginx/sites-enabled
$ sudo rm default
$ sudo ln -s /etc/nginx/sites-available/cluster .

现在我已经放好了配置文件,但系统还不存在上面所说的 Web 服务器根目录。下一步就是创建目录 /mnt/gluster1/www,并复制 index.html 文件进去。当然你也可以建立自己定义的 index.html 文件,但先复制一个已有的文件是个不错的选择:

$ sudo mkdir /mnt/gluster1/www
$ cp /usr/share/nginx/www/index.html /mnt/gluster1/www

重启 Nginx 服务:

$ sudo /etc/init.d/nginx restart

现在去 DNS 服务器为192.168.0.121的树莓派配置记录。你可以根据自己的情况配置你自己的域名和 IP 地址。现在在浏览器上输入 http://twopir/ 然后出现默认的 Nginx 首页。如果你查看下 /var/log/nginx/access.log 文件,你可以看到点击网页留下的记录。

Nginx 能正常工作后,配置第二个树莓派。因为我们已经将配置文件都放在 GlusterFS 共享目录下,我们现在要做的只是安装 Nginx,创建相关的软链接,重启 Nginx:

$ sudo apt-get update
$ sudo apt-get install nginx
$ cd /etc/nginx/sites-available
$ sudo ln -s /mnt/gluster1/cluster .
$ cd /etc/nginx/sites-enabled
$ sudo rm default
$ sudo ln -s /etc/nginx/sites-available/cluster .
$ sudo /etc/init.d/nginx restart

DNS 服务器上配置两条 A 记录

现在两个主机共享同一份文件,下一步是设置冗余系统的关键步骤。虽然你完全可以设置一个类似心跳的服务用于轮询检测哪个树莓派的 Web 服务是开启的,但这里有个更好的方法:给同一个主机名指定两个 DNS 的 A 记录,分别指向你的两个树莓派(译注:A 记录就是将域名转化为 IP 地址的记录,DNS 包含很多记录方式,如 A 记录、PTR 记录、MX 记录等等),这就是传说中的 DNS 负载均衡,DNS 访问主机时,如果主机名对应多个 IP 地址,DNS 会随机返回这些 IP 地址的顺序:

$ dig twopir.example.com A +short
192.168.0.121
192.168.0.122
$ dig twopir.example.com A +short
192.168.0.122
192.168.0.121

因为返回随机的顺序,用户可以均匀地往两台服务器发送请求,这个负载均衡的机制就是由 DNS 服务器的多条 A 记录来提供。相对于 DNS 的负载均衡技术,我更感兴趣的是 Web 浏览器如何处理请求失败的情况。当浏览器通过网页主机获得两条 A 记录,并且第一条记录所在的主机当机了,浏览器几乎立刻就切到另一条记录上。切换效率快到用户根本察觉不出来,这可比传统的心跳线轮循请求主机快多了。

所以在你正在使用的 DNS 服务器上添加你的树莓派集群的两个 IP 地址,然后试试 dig 命令,就像我在上面使用过的一样,你也应该能得到两个 IP 地址。

当你为同一个域名设置好了两个 A 记录,这套集群就可以提供容错服务了。打开两个终端并分别登录到两个树莓派,运行 tail -f /var/log/ngnix/access.log 命令,你可以监视 Web 服务器的访问情况。当你通过浏览器访问网页时,你可以看到在一台树莓派上产生了访问日志,而在另外一台的日志里什么也没有出现。现在你可以刷新几次页面,当你觉得你对能成功访问到 Web 服务器感到满意了,你可以重启响应你请求的那台树莓派,然后再刷新几次页面。也许浏览器上会出现一个短暂的不可访问信号,但会马上重定向到第二台树莓派上,你会看到一样的页面,并且你能通过终端访问日志了解具体情况。当第一台树莓派启动后,你在浏览器上根本不会察觉到。

(译注:如何处理DNS 轮询的多个IP地址,不同浏览器有不同的做法,目前译者收集到的资料显示,只有mozilla的netlib库支持自动重连下一个IP地址的做法。如果读者知道更多的浏览器对DNS轮询的处理策略,请评论给我们。其实,以译者的态度看,DNS轮询根本就不能算作是高可用性的方案,勉强可以算作是负载均衡方案,建议考虑更可靠的其它方案。)

随机重启一台树莓派,只要有一台在线,Web 服务器就能提供服务。这是一个非常简单的案例,你可以把你其它的静态文件放到 /mnt/gluster1/www 上,为你提供真正有价值的服务,现在好好享受你的低成本容错集群 Web 服务器吧。


via: http://www.linuxjournal.com/content/two-pi-r-2-web-servers

译者:bazz2 校对:wxy

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

很多人都对树莓派的硬件 hack 功能(译注:就是用户可以自己发挥想像力,把树莓派设计成自己想要的机器)感兴趣,而我看中的一点是树莓派的低耗电功能,我可以用它来代替现在在用的 Linux 服务器。在以前的文章中我已经介绍过如何用树莓派代替这些服务器来管理我的啤酒冰箱,以及我在澳大利亚托管的一台树莓派。托管树莓派之后,我开始思考我正在使用的服务器的单点故障问题,并且考虑着手解决它。当你看到文章标题里的“2 Pi R”,你也许会想到圆周长计算公式(C = 2PiR,Pi 为圆周率,R 为半径),但在本文中,“R”的意思是“冗余(redundancy)”。当然,一块树莓派并不能实现冗余,至少需要两块。下面我将介绍如何用两块树莓派实现冗余。

本文将建立一个底层框架,为俩树莓派实现冗余提供基础服务,首先我要用 GlusterFS 建立一个集群网络文件系统。在之后的文章中,我还会介绍如何利用共享存储来建立其他冗余服务。注意,虽然本文使用的是树莓派,但下面的配置操作同样适用于其他硬件。

配置俩树莓派

首先从树莓派官网下载最新的 Linux 发行版,并安装到两块 SD 卡中。将树莓派接到电视机上,然后按照文档提示选择内核镜像并启动系统,确认一下 SSH 服务有没有启动(默认情况下 SSH 应该是开机启动的)。你可以使用 raspi-config 命令来增加根分区空间,以便能充分利用 SD 卡的容量。确认系统正常工作、SSH 正常启动后,我可以过程访问它了。我将树莓派与电视机断开,并连到交换机上,重启系统,没有显示界面。

默认情况下,Raspbian 会通过 DHCP 获取自己的网络信息,但是在设置冗余服务时,我们希望树莓派每次开机都使用同一个 IP 地址。在我的环境中,我设置了我的 DHCP 服务器,它会在树莓派启动时为它们分配固定的 IP 地址。而你可以编辑 /etc/network/interfaces 文件:

iface eth0 inet dhcp

修改成:

auto eth0
iface eth0 inet static
  address 192.168.0.121
  netmask 255.255.255.0
  gateway 192.168.0.1

当然,要将上面的参数修改成你自己的参数,确保每个树莓派使用不同的 IP 地址。我把两个树莓派的主机名都改了,便于在(通过 SSH)登录的时候区分它们。怎么改主机名呢?以 root 权限编辑 /etc/hostname 文件。最后重启系统,确认树莓派使用了正确的网络配置和主机名。

配置 GlusterFS 服务器

GlusterFS 是一个用户态的集群文件系统,我选择它,是因为它配置共享网络文件系统很方便。首先选一个树莓派作为主设备(master)。在主设备上你需要做一些初始化操作,完成后,它们会自动执行故障转移。下面是我架设的环境:

Master hostname: pi1
Master IP: 192.168.0.121
Master brick path: /srv/gv0
Secondary hostname: pi2
Secondary IP: 192.168.0.122
Secondary brick path: /srv/gv0

在开始之前,登入这两个树莓派,然后安装 glusterfs-server 软件包:

$ sudo apt-get install glusterfs-server

GlusterFS 将数据保存在一些被称为“块”的设备中。一个“块”是一个系统路径,由你指定给 gluster 使用。GlusterFS 会将所有“块”组合成一个存储卷,给客户端使用。GlusterFS 会将文件的数据分割成多份,保存在不同的“块”中。所以虽然一个“块”看起来就是一个普通的路径,你最好不要在树莓派中直接操作它,而应该通过客户端访问 GlusterFS 服务,让 GlusterFS 操作。本文中我在两个树莓派中都新建一个 /srv/gv0 目录作为 GlusterFS 的“块”:

$ sudo mkdir /srv/gv0

在我的环境中,我将 SD 卡上的根文件系统共享出来,而你可能需要共享更大的存储空间。如果是这样的话,在两块树莓派上都接上 USB 硬盘,格式化后挂载到 /srv/gv0 上。编辑下 /etc/fstab 文件,确保系统每次启动时都会把你的 USB 硬盘挂载上去。两个树莓派上的“块”不一定需要有相同的名字或者相同的路径名称,但是把它们设置为相同的值也没什么坏处。

配置好“块”的路径,安装好 glusterfs-server 软件包,确认两个树莓派都正常工作,然后登入被你设为主设备的树莓派,输入“gluster peer probe”命令,将次设备加入到集群中。在我的环境中,我用 IP 地址表示第二个节点,如果你比较有个性,并且有设置过 DNS,你也可以用主机名表示这个节点。

pi@pi1 ~ $ sudo gluster peer probe 192.168.0.122
Probe successful

目前为止,我的 pi1 (192.168.0.121) 信任 pi2 (192.168.0.122),我可以建立一个存储卷,名字都想好了:gv0。在主设备端运行命令“gluster volume create”:

pi@pi1 ~ $ sudo gluster volume create gv0 replica 2 192.168.0.121:/srv/gv0 192.168.0.122:/srv/gv0
Creation of volume gv0 has been successful. Please start 
the volume to access data.

这里稍微解释一下命令的意思。“gluster volume create”就是新建一个卷;“gv0”是卷名,这个名称将会在客户端被用到;“replica 2”表示这个卷的数据会在两个“块”之间作冗余,而不是将数据分割成两份分别存于两个“块”。这个命令保证了卷内的数据会被复制成两份分别保存在两个“块”中。最后我定义两个独立的“块”,作为卷的存储空间:192.168.0.121 上的 /srv/gv0 和 192.168.0.122 上的 /srv/gv0。

现在,卷被成功创建,我只需启动它:

pi@pi1 ~ $ sudo gluster volume start gv0
Starting volume gv0 has been successful

然后我可以在任何一个树莓派上使用“volume info”命令来查看状态:

$ sudo gluster volume info

Volume Name: gv0
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: 192.168.0.121:/srv/gv0
Brick2: 192.168.0.122:/srv/gv0

配置 GlusterFS 客户端

卷已启动,现在我可以在一个支持 GlusterFS 的客户端上,将它作为一个 GlusterFS 类型的文件系统挂载起来。首先我想在这两个树莓派上挂载这个卷,于是我在两个树莓派上都创建了挂载点,并下面的命令把这个卷挂载上去:

$ sudo mkdir -p /mnt/gluster1
$ sudo mount -t glusterfs 192.168.0.121:/gv0 /mnt/gluster1
$ df
Filesystem         1K-blocks    Used Available Use% Mounted on
rootfs               1804128 1496464    216016  88% /
/dev/root            1804128 1496464    216016  88% /
devtmpfs               86184       0     86184   0% /dev
tmpfs                  18888     216     18672   2% /run
tmpfs                   5120       0      5120   0% /run/lock
tmpfs                  37760       0     37760   0% /run/shm
/dev/mmcblk0p1         57288   18960     38328  34% /boot
192.168.0.121:/gv0   1804032 1496448    215936  88% /mnt/gluster1

如果你是一个喜欢钻研的读者,你可能会问了:“如果我指定了一个 IP 地址,如果192.168.0.121当机了,怎么办?”。别担心,这个 IP 地址仅仅是为了指定使用哪个卷,当我们访问这个卷的时候,卷内的两个“块”都会被访问到。

当你挂载好这个文件系统后,试试在里面新建文件,然后查看一下“块”对应的路径:/srv/gv0。你应该可以看到你在 /mngt/gluster1 里创建的文件,在两个树莓派的 /srv/gv0 上都出现了(重申一遍,不要往 /srv/gv0 里写数据):

pi@pi1 ~ $ sudo touch /mnt/gluster1/test1
pi@pi1 ~ $ ls /mnt/gluster1/test1
/mnt/gluster1/test1
pi@pi1 ~ $ ls /srv/gv0
test1
pi@pi2 ~ $ ls /srv/gv0
test1

你可以在 /etc/fstab 上添加下面一段,就可以在系统启动的时候自动把 GlusterFS 的卷挂载上来:

192.168.0.121:/gv0  /mnt/gluster1  glusterfs  defaults,_netdev  0  0

注意:如果你想通过其他客户端访问到这个 GlusterFS 卷,只需要安装一个 GlusterFS 客户端(在基于 Debian 的发行版里,这个客户端叫 glusterfs-client),然后接我上面介绍的,创建挂载点,将卷挂载上去。

冗余测试

现在我们就来测试一下这个冗余文件系统。我们的目标是,当其中一个节点当掉,我们还能访问 GlusterFS 卷里面的文件。首先我配置一个独立的客户端用于挂载 GlusterFS 卷,然后新建一个简单的脚本文件放在卷中,文件名为“glustertest”:

#!/bin/bash

while [ 1 ]
do
  date > /mnt/gluster1/test1
  cat /mnt/gluster1/test1
  sleep 1
done

这个脚本运行无限循环并每隔1秒打印出系统时间。当我运行这个脚本时,我可以看到下面的信息:

# chmod a+x /mnt/gluster1/glustertest
root@moses:~# /mnt/gluster1/glustertest
Sat Mar  9 13:19:02 PST 2013
Sat Mar  9 13:19:04 PST 2013
Sat Mar  9 13:19:05 PST 2013
Sat Mar  9 13:19:06 PST 2013
Sat Mar  9 13:19:07 PST 2013
Sat Mar  9 13:19:08 PST 2013

我发现这个脚本偶尔会跳过1秒,可能是 date 这个命令并不是很精确地每隔1秒钟打印一次,所以偶尔会出现输出时间不连惯的现象。

当我执行这个脚本后,我登入一个树莓派并输入“sudo reboot”重启这个设备。这个脚本一直在运行,如果出现输出时间不连惯现象,我不知道还是不是上面说的偶然现象。当第一个树莓派启动后,我重启第二个树莓派,确认下这个系统有一个节点丢失后,我的程序仍然能正常工作。这个冗余系统配置起来只需要几个命令,如果你需要一个冗余系统,这是个不错的选择。

现在你已经实现了 2 Pi R 组成的冗余文件系统,在我的下篇文章中,我将会加入新的冗余服务,将这个共享存储系统好好利用起来。


via: http://www.linuxjournal.com/content/two-pi-r

译者:bazz2 校对:wxy

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

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用服务器。

如果你有几个不同的电脑需要同步和自动化备份,RPi可以做到。如果你想通过家中的任意屏幕来访问你的音乐和视频,RPi也能实现。也许你有一个或两个打印机,你想要简单与大家共享,树莓派在硬件和时间上用最小投资就能满足你的这些需求。

树莓派的好处

低成本:35美元(约合242元RMB),B型的RPi接近一台完整的电脑,512M内存,100Mb以太网,SD卡插槽,2个USB接口,音频输出和HDMI或RCA视频输出。我知道HDMI电缆就比树莓派贵。

能源效率:硬件成本只是服务器费用的一部分,因为你需要考虑能源成本去不断运行设备。家用服务器所需要的服务不会占用太多CPU,大部分时间它都处于空闲状态,等待发挥功效。RPi's超低功率组件非常适合这个工作负载,这有助于降低你的电费消耗。我的一个B型的RPi加上外部硬盘消耗总共只有8瓦,然而用老式速龙代替的机器在闲置时消耗54瓦。假设10美分每千瓦一小时,这使得一个RPi每年的电费在7美元。一个基于速龙的机器是47美元。在不到一年的时间里,RPI基本上能够收回成本。

低噪音:因为RPi没有风扇和移动部件,在你最终配置中的唯一能生成噪音或明显热量的组件就是硬盘。如果你担心噪音,像Silent PC Review发烧友网站经常在他们的评论中涉及到噪声基准。我的体会是现代驱动器足够安静,要比其他的设备安静的多(如媒体中心,游戏机或其他电脑)。如果你家里没有为布线提供更多的灵活性选择,RPi的小尺寸、少量发热和低噪音也许让你走过它旁边都很难发现。

图1,一个简洁高效的家用服务器

新机会:一个不怎么实际的好处是-简单快乐的尝试新事物!对我来说,这是我第一次真正工作在基于Debian的发行版,很可能也是许多Linux爱好者们第一次有机会尝试一个基于ARM的体系结构。

布置硬件

对于一个家庭服务器来说,你将需要一个中等容量的SD闪存卡作为本地存储。它可以使用一个USB引导,但那会占用两个宝贵的USB插槽之一。闪存卡不需要很大容量,但是速度越快越好。我选择了一个名牌SD卡,8GB容量和CLASS 10的速度等级。对于备份和存储多媒体文件,一个有USB连接插槽的硬盘驱动器是必须的。我选择一个1.5TB的硬盘和一个Calvary EN-CAHDD-D 2-bay USB 2.0硬盘连接基座。这个连接基座有个功能,在RAID-0模式中连接两个硬盘,总有一天会有用的。最后,RPi不带电源线,但可以用大多数智能手机充电器所用的5v微型USB。看看RPi是否挑剔电源,我为电源已换了三个不同的微型USB手机充电器。我在这周内尝试了每一个,在任何一个上都没有问题。

安装操作系统

安装RPi操作系统包括了许多方面的大量细节,但这里有一些家用特定服务器的安装提示,大致按需要的顺序讲述。

1)直接通过http://www.raspberrypi.org/downloads获取Raspbian "Wheezy"安装镜像,并复制到SD卡,用网站上已列出的步骤。

2)第一次引导RPi时,连接一个键盘、鼠标和显示器。在引导RPi之前别忘打开显示器,可以检测到正确的HDMI或混合输出端口。

3)RPi有一个很好的"raspi-config"屏幕,在第一次启动时你会看到。对于家庭服务器来说,以下选择将会有用:

  • expand\_rootfs:调整默认2GB OS镜像的大小,来填满闪存卡剩余的内存。
  • change\_pass:修改默认密码"raspberry",但是,越安全的密码越好。
  • 设置你的地点和时区。
  • memory\_split:给GPIU服务分配最少的内存(16M)尽可能为其他服务留下更多内存。
  • SSH:别忘开启SSH服务。
  • boot\_behaviour:关闭“启动至桌面(boot to desktop)”(再次为你的其他服务节省内存)。

完成后,你将在出现 pi@raspberrypi 提示符下。安装脚本可以在任何时间通过 sudo raspi-config 重新运行。

还有一些其他配置,然后操作系统就可以用了。

1)一个静态IP让一切变得更容易,切换eth0的网络设置:

   >> sudo nano -w /etc/network/interfaces  

更改eth0的那行 iface eth0 inet dhcp ,如下所示(根据你的家庭网络设置修改):

======/etc/network/interfaces======
...
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
...
======/etc/network/interfaces======

2)创建本地用户并加入到users组和sudo组:

>> sudo adduser YOURUSERIDHERE
>> sudo usermod -a -G users YOURUSERIDHERE
>> sudo usermod -a -G sudo YOURUSERIDHERE

3)更新系统确保所有的库是最新最好的:

>> sudo apt-get update; sudo apt-get upgrade

4)好了,准备重新启动吧!先关闭PI:

>> sudo /sbin/shutdown -h now

一旦关闭(注意RPi电路板上的绿色LED状态指示灯,可以知道什么时候完成关闭了),拔下显示器,键盘,鼠标和电源线。插入USB端口上的硬盘,然后插回电源重启RPi。

5)一旦RPi开启(这些绿色LED指示灯用来描述状态),你可以从远程网络上从任何其他机器ssh到RPi并完成所有的配置(更改以下命令里的IP为你的静态IP):

>> ssh [email protected]

祝贺你,有了一个可以工作的树莓派!

外设

第一件事是要连接外设。用dmesg来寻找你的存储设备,会发现——几乎可以肯定是/dev/sda。我喜欢使用自动挂载去挂载移动存储设备,这样更灵活,因为在启动时这些设备也许没有或者没准备好:

>> sudo apt-get install autofs
>> sudo nano -w /etc/auto.master 
======/etc/auto.master======
...
/misc /etc/auto.misc
...
======/etc/auto.master======

>> sudo nano -w /etc/auto.misc

注意,我的外部存储设备是ext4格式,如果需要话可以在下面更改:

======/etc/auto.misc======
...
storage -fstype=ext4:/dev/sda1
...
======/etc/auto.misc======
>> sudo /etc/init.d/autofs restart 
>> ls -lat /misc/storage 

可选的,创建一个符号链接的短路径:

>> ln -s /misc/storage /storage

备份仓库

在任何家庭服务器功能列表里面最重要的是提供坚如磐石的备份。对于RPi来说,这很简单而优美,在Linux中有丰富的网络共享选项:Samba/CIFS用于Windows机器,NFS用于基于UNIX的设备,并且甚至SFTP可以用于更多新的备份客户端,如deja-dup。由于RPi只有100MB以太网接口和USB上的存储设备,它没有非常快的传送速度。不过在另一方面,好的备份客户端是在后台自动运行的,所以你不会注意略微缓慢的传输速度。

我的家庭网络包括一台Windows 7电脑。对于它,我通过Samba在RPi's外部USB存储设备上导出一个备份目录。因为备份程序在Windows7基础版上不支持网络设备作为备份目标,我使用SyncBack Free去设置使其自动化,每日备份。

配置Samba是容易的。

1)安装samba和common-bin库(具有smbpasswd效用)

>> sudo apt-get install samba samba-common-bin

2)使用 smbpasswd 让你的本地ID能访问:

>> sudo smbpasswd -a YOURUSERIDHERE

3)编辑samba配置文件:

>> sudo nano -w /etc/samba/smb.conf

4)更改 workgroup = WORKGROUP 行以匹配你的Windows工作组名称。

5)注释掉或删除[homes]和[printers]共享。(打印机共享稍后将通过直接CUPS访问来完成。)

6)为Windows备份路径增加一个条目。这是我的示例,放置在该文件的底部:

======/etc/samba/smb.conf======
...
[win7pc] 
comment=Backup for windows PC
path=/storage/win7pc 
writeable=Yes 
create mask=0777 
directory mask=0777 
browsable=Yes 
public=Yes 
valid users=YOURUSERIDHERE
...
======/etc/samba/smb.conf======

7)重启Samba使你的编辑生效:

>> sudo /etc/init.d/samba restart

8)从Windows机器文件资源管理器通过映射一个网络设备测试连通。

对Linux设备来说,设置和使用deja-dup非常简单。它被默认安装在我的Fedora 18和Ubuntu 12.10上。包的名称是“deja-dup”,程序名简单的称为“Backup(备份)”。虽然RPi很容易支持NFS导出,我发现使用deja-dup的SSH选项更容易,更方便,在RPi上它不需要额外服务的支持。指定一个deja-dup加密密码是一个好主意,除非你不在意一旦丢失了存储器,别人就可以拿走全部数据:

>> sudo mkdir /storage/linuxlaptop
>> sudo chown -R YOURUSERIDHERE:YOURUSERIDHERE /storage/linuxlaptop

从linux客户端启动备份程序,选择“SSH”作为备份位置,输入RPi的IP地址和你创建的存储位置。首次备份会很慢,但是以后的运行将只发送增量变化,速度更快。

图2,Deja-dup客户端设置

多媒体服务器:DLNA

现在每个人的文件都已安全备份。让我们继续看些有趣的!一个DLNA服务器可以让你集中存储你的电影、音乐和图片。通过这个中心库,家中每一个屏幕的DLNA客户端都可以轻松重放此内容。

至少,这是一个宣称。事实是这样的,DNLA规格并不太确定一些重要的事情,如支持哪些格式或编码。每个客户端通常对于支持什么格式和服务器功能都有略微不同的想法。很多高功率的服务器也许能转码本地内容到移动设备支持的格式,但是在RPi上是不可能的,在即时转码上经常扰乱其他功能,如暂停,快进和倒带。一般情况下,高功率设备如PS3、Xbox和WD TV设备支持大多数格式,而无需任何转码。低端设备如智能TVs或Blu-ray播放器只支持更有限的编码列表。

对于RPi来说,最好的办法是支持你的主要的DLNA设备的标准编码,然后测试你的其他DLNA客户端。如果没有完美播放,在下一节的提示也许有帮助。在我的情况下,我的PlayStation 3充当DLNA客户端,PS3能够流畅播放经Handbrake制作后的.m4v文件。

对于RPi的DLNA服务器来说,Minidlna是个很好的选择。它已经在Raspbian发行版中,易于设置和使用最小服务资源运行:

>> sudo apt-get install minidlna
>> sudo nano  -w /etc/minidlna.conf

这是我/etc/minidlna.conf文件的相关部分:

...
# I found keeping video + audio in different paths helpful
media_dir=V,/storage/dlna/video 
media_dir=A,/storage/dlna/music 
...
presentation_url=http://192.168.1.10:8200/
... 
friendly_name=MyRPi
...
# Since I add new media infrequently, turning off 
# inotify keeps minidlna for polling for 
# content changes. It's simple enough to run 
# sudo /etc/init.d/minidlna force-reload
# when new content is added.
inotify=no

一旦完成编辑,重启minidlna以加载新配置:

>> sudo /etc/init.d/minidlna force-reload

Minidlna能够为你的设备支持的电影提供电影海报缩略图(像PS3)。这让我能够更方便地在几十个电影文件中滚屏查找我想要的那个电影。我发现每个电影一个目录是最兼容的文件布局,只包含影片文件和缩略图,图像命名为“Cover.jpg”。使用像"MovieName.m4v"和"MovieName.jpg"的格式在PS3上工作的很好,但它不太适合VLC(除非你能让VLC uPNP插件首先查找服务器的话)。

通过PS3,你可以通过转到在XMB栏上的"Video"测试连通性。当视频列表向下翻页时,你以前设置的"friendly\_name"应该是可见的,测试确保Minidlna是通过浏览器转到http://192.168.1.10:8200/。

非DLNA设备的多媒体

当你让DNLA与你的一些设备一起工作时,你可能会发现有些设备并不适合它,所以多媒体计划B是个好主意。Nginx网站服务器有一个MP4插件尝试在旧式的HTTP连接上改善流媒体传输,但是浏览器回放的性能差别很大,在一部电影里快进也一直不工作。看起来多媒体共享或非 DLNA 设备的最低共同特性是使用传统Samba共享的访客只读访问。

这是/etc/samba/smb.conf的部分示例:

[dlna] 
path=/storage/dlna 
read only=yes 
browsable=yes 
public=yes 

定义了共享设置后重启Samba( sudo /etc/init.d/samba restart ),你可以开始测试你的客户端。

我用一个混合的编码m4v视频文件测试了以下客户端:

  • Android 4.0.4手机:"ES File Explorer"与"ES Media Player"(播放器附带安装)。
  • Android 4.1.2平板电脑:"ES File Explorer"与"ES Media Player"(播放器附带安装)。
  • Linux设备:自动挂载://192.168.1.10/dlna,然后使用VLC或MPlayer。
  • Windows:挂载//192.168.1.10:/dlna,然后使用VLC。

所有设备都能几乎立即开始播放和快进没有延迟的情况。

打印服务器

RPi运行CUPS相当不错,所以它容易共享一个较旧的没有本地网络接口的打印机。

安装你的打印机所需的CUPS和任何软件包。我需要hplip-cups,因为我有一个HP喷墨打印机:

>>  sudo apt-get install cups hplip-cups

更新“Listen”行和增加 Allow @LOCAL 到位置指令,如下所示(你可以使用其他机器在你的LAN上去管理CUPS):

======/etc/cups/cupsd.conf======
#Listen localhost:631  #Comment this out
Listen 192.168.1.10:631 #Add this line
...
 
  Order allow,deny 
  Allow @LOCAL 
 

# Restrict access to the admin pages... 
 
  Order allow,deny 
  Allow @LOCAL 
 

# Restrict access to configuration files... 
  
  AuthType Default 
  Require user @SYSTEM 
  Order allow,deny 
  Allow @LOCAL 
 
======/etc/cups/cupsd.conf======

添加你的本地ID到lpadmin组就能管理CUPS:

>> sudo usermod -a -G lpadmin  YOURUSERIDHERE

重启CUPS:

>> sudo /etc/init.d/cups restart

然后转到http://192.168.1.10:631/并点击 "Adding Printers and Classes"去设置你的打印机。我的打印机是自动发现的USB设备,所以,我只需点击“share”就可以。同样访问https://192.168.1.10:631/admin,确保检查“Share printers connected to this system(共享连接至这个系统的打印机)”。

完成后,你可以用通常的方式设置你的客户端。当我输入主机名,我的Linux客户端就能够自动发现打印机,并选择正确的驱动程序。在我的Windows7的机器上,一旦我选择“Network Printer(网络打印机)”,我必须点击“The printer that I want isn't listed(我想要的打印机未列出)”,选择“Select a shared printer by name(通过名称选择共享的打印机)”,然后从CUPS网络接口输入URL:http://192.168.1.10:631/printers/HP\_J4500。

结论

用最少的额外的硬件和配置,树莓派是高效、简洁的家用服务器。它能够花最小的硬件费用来为你的家庭环境带来由Linux提供的广泛企业服务。


via: http://www.linuxjournal.com/content/raspberry-pi-perfect-home-server

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

译者:Vito 校对:Caroline

大家好!请注意,所有的openSUSE的fans们都应该读读这篇重要的文章。你有树莓派吗?你想试试openSUSE吗?你对树莓派和openSUSE很狂热吗?想不想看看它们在一起?真让人激动,ARM版的openSUSE针对树莓派平台发布了一个新的基于ARM v6的安装镜像。这个新的openSUSE镜像是内核3.6版本,带有轻量级的X11/icewm(ice 窗口管理器),压缩后仅有82MB。

不用谢我,应该谢Bernhard Wiedeman。如此酷的penSUSE镜像是他使用一个openSUSE的替代镜像自动构建的。还有,你知道它最有趣的地方是什么?Bernhard Wiedeman在一个早上只用3个小时就创建建立了它,真强啊!

如果你对这个Bernhard用来构建基于ARM v6的树莓派镜像写的自动化脚本感兴趣,你可以在这里找到。这个脚本让每个人都有机会简单的构建自己的镜像,然后分享给全世界其它的openSUSE极客们。Bernhard Wiedeman为我们写了一篇在3分钟内从头构建一个镜像的博客。是的,3分钟!并且每件事都做的尽善尽美。Bernhard Wiedeman的树莓派在55秒内启动成功。你的呢?多少时间完成启动?你能在评论中分享给我们吗?我们会非常开心的听到来自其它用户的体验。

当然,没有什么事情是完美的,剩余的尚未解决的问题还在解决中.下面已经列出了这些剩余的问题。

  • 安装文件key初始化不可靠
  • 构建脚本没有出错处理

这个新的image相对于之前的image有什么优势?

  • 很容的改变镜像大小,因为root分区放到了最后
  • 压缩后镜像文件非常小
  • 可重复构建镜像,因此更容易定制
  • ARM v6带有浮点计算支持,因此更快
  • 有超过5200个来自openSUSE:Factory:ARM的成功构建的包
  • 举个例子,你可以使用zypper安装xauth twm xorg-x11-server xinit这些包来建立一个轻量级的图形环境, 之后使用startx启动它。

好了伙计们,这可不是PiSUSE去娱乐的时间,我的意思是快去试试在你的树莓派上安装openSUSE,不要喝太多的啤酒。openSUSE的伙计们快乐!

Source: openSUSE Lizards

via: http://www.unixmen.com/new-opensuse-raspberry-pi-image/

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

译者:flsf01 校对:wxy