TranslateProject/published/201311/Raspberry Pi--the Perfect Home Server.md

297 lines
16 KiB
Markdown
Raw Normal View History

树莓派Raspberry Pi完美的家用服务器
================================
自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( **RPi** )最明显却又是最不吸引人的用处是:创建你的完美家用服务器。
如果你有几个不同的电脑需要同步和自动化备份RPi可以做到。如果你想通过家中的任意屏幕来访问你的音乐和视频RPi也能实现。也许你有一个或两个打印机你想要简单与大家共享树莓派在硬件和时间上用最小投资就能满足你的这些需求。
###树莓派的好处
低成本35美元约合242元RMBB型的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][1]发烧友网站经常在他们的评论中涉及到噪声基准。我的体会是现代驱动器足够安静要比其他的设备安静的多如媒体中心游戏机或其他电脑。如果你家里没有为布线提供更多的灵活性选择RPi的小尺寸、少量发热和低噪音也许让你走过它旁边都很难发现。
![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11454f1.jpg)
图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][2]获取Raspbian "Wheezy"安装镜像并复制到SD卡用网站上已列出的步骤。
2第一次引导RPi时连接一个键盘、鼠标和显示器。在引导RPi之前别忘打开显示器可以检测到正确的HDMI或混合输出端口。
3RPi有一个很好的"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 YOURUSERIDHERE@192.168.1.10
祝贺你,有了一个可以工作的树莓派!
###外设
第一件事是要连接外设。用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][3]去设置使其自动化,每日备份。
配置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地址和你创建的存储位置。首次备份会很慢但是以后的运行将只发送增量变化速度更快。
![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/medium-350px-centered/u1002061/11454f2.png)
图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
...
<Location />
Order allow,deny
Allow @LOCAL
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @LOCAL
</Location>
======/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网络接口输入URLhttp://192.168.1.10:631/printers/HP_J4500。
###结论
用最少的额外的硬件和配置树莓派是高效、简洁的家用服务器。它能够花最小的硬件费用来为你的家庭环境带来由Linux提供的广泛企业服务。
--------------------------------------------------------------------------------
via: http://www.linuxjournal.com/content/raspberry-pi-perfect-home-server
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
译者:[Vito](https://github.com/vito-L) 校对:[Caroline](https://github.com/carolinewuyan)
[1]:http://www.silentpcreview.com/
[2]:http://www.raspberrypi.org/downloads
[3]:http://www.2brightsparks.com/freeware/freeware-hub.html