樹莓派(Raspberry Pi):完美的家用伺服器
新機會:一個不怎麼實際的好處是-簡單快樂的嘗試新事物!對我來說,這是我第一次真正工作在基於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 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去設置使其自動化,每日備份。
配置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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive