RP0W筆記(5):家用服務器

家裡有超過一兩部電腦後,就有做服務器的興趣來共享一些文件,省得拷貝來拷貝去的。如果設好路由器和域名的話,其實也可以對外。RP0W的好處是非常省電,不吵(沒風扇)不熱,但是RP0W的處理器和記憶體的配置都比較低,對外不一定夠快,如果數據庫太大也能感受到速度問題。所以在家用就好,以下設的主要是http和ftp (假設已在RP0W安裝raspbian Jessie操作系統,可參考筆記1):

1. 安裝 Apache2 和 PHP:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install apache2 -y
sudo apt-get install php5 php5-curl libapache2-mod-php5 -y
sudo chown pi.pi /var/www/html -R

想測試是否已开通Apache2和PHP:
cd /var/www/html
nano ./info.php
打入這行:

<?php phpinfo(); ?>

按Ctrl-O 、 輸入鍵 、 Ctrl-X 完成修改存檔。
假設網站地址是192.168.1.2:

回到手提電腦裡,在瀏覽器裡打地址 http://192.168.1.2/ 就能看到 Apache2 的主頁;
在瀏覽器裡打地址    http://192.168.1.2/info.php 就能看到 PHP 的環境設定。(保安理由,如果對外以後最好刪除 info.php 文件)


2. 安裝mysql:

sudo apt-get install mysql-server python-mysqldb php-mysql

這其中還要輸入 mysql 的管理者 root 的密碼,自己設吧。
按裝完後進入mysql輸入密碼:
mysql -p -u root

進入後,可以加入sql文件:
mysql> source \home\user\Desktop\test.sql;


3. 連接外置硬盤(Enternal Hard drive)或U盤(USB flash drive)

RP0W有個限制是只能用32GB的microSD,Windows自帶的的FAT32格式化(format)最多就只能做到32GB,即使你有更大的64GB也只能格式化出32GB。網上能找到工具來格式化更大的如64GB,但既然RP0W也有這限制就不搞了。我放家用網站的東西加mysql的結果是超過了32GB。只好用USB擴展容量。我們可以採用外置硬盤或U盤。

很多針對Windows的外置硬盤都是NTFS格式的,因為FAT32格式下文件大小限制是4GB,在linux操作系統裡想讀寫ntfs要裝ntfs-3g:
sudo apt-get install ntfs-3g
建文件夾下面幾步後用來連接:
sudo mkdir /media/usbhdd

改文件夾屬性:
sudo chown pi:pi /media/usbhdd

連接外置硬盤後,查外置硬盤名稱
sudo fdisk -l
譬如查到外置硬盤叫 /dev/sda1 ,就可試安裝外置硬盤至 /media/usbhdd

sudo mount -t ntfs-3g -o uid-1000,gid-1000,usmask=000 /dev/sda1 /media/usbhdd
指令回饋是:
Mount is denied because the NTFS volume is already exclusively opened.
The volume may be already mounted, or another software may use it which
could be identified for example by the help of the ‘fuser’ command.

這是表明連接外置硬盤時,系統已架上它了,所以要先取消系統的自動架設:
fuser -m /dev/sda1
sudo umount /dev/sda1

然後我們再連接到自己命名的 /media/usbhdd :
sudo mount -t ntfs-3g -o uid-1000,gid-1000,usmask=000 /dev/sda1 /media/usbhdd

成功後就可以瀏覽外置硬盤裡的文件:
ls -l /media/usbhdd

http://www.techjawab.com/2013/06/how-to-setup-mount-auto-mount-usb-hard.html

下面要設定系統每次啟動時都自動連上這文件夾:

找到外置硬盤的UUID: ls -l /dev/disk/by-uuid/

備份以防萬一: sudo cp /etc/fstab /etc/fstab.backup

修改: sudo nano /etc/fstab
在文件尾加上這行:
UUID=【YOUR_UUID】 /media/usbhdd ntfs-3g uid=1000,gid=1000,umask=000 0 0

注意:【YOUR_UUID】 是上面所找到的UUID。
上面的手動測試很重要,如果某些項數有錯,比如打錯ntfs-3g為ntf-3g,若直接在fstab裡打入錯誤的設定,系統將不能啟動,還要連上視屏、鍵盤等到RP0W才能修改回來,很麻煩(我假設你還在遠程用ssh操作RP0W)。

保安理由,如果網站對外的話請把上面的umask指數改為 002 。
我測試用的外置硬盤比較老式,打開開關後一直供電,即使關閉RP0W後也一直在發熱。所以試了幾天後決定用U盤代替。十幾美元買了個64GB的U盤. 安裝步驟可以參考以上第三步,但要把所有 ntfs-3g 的地方改為 vfat 。


4. apache2 的虛擬文件夾:

加外置硬盤或U盤的目的是給Apache2網站的虛擬文件夾用的。所以要到Apache2的設定文件裡修改一下:

sudo nano /etc/apache2/apache2.conf

文件裡找個空處加上這幾行:

<Directory “/media/usbhdd/images”>
Options Indexes FollowSymlinks MultiViews
#AllowOveride None
Order allow,deny
Allow from all
Require all granted
</Directory>
Alias /images /media/usbhdd/images

以上的假設是外置硬盤或U盤的根處已有images這個文件夾,而且原來的 /var/www/html/images 並不存在,現在再到電腦裡的瀏覽器上就能看到東東了:

http://192.168.1.2/images

 


5. ftp 服務器:

我裝過 ftp 服務器後又卸載了,ftp是明文密碼傳輸,所以現在需要密碼的地方都基本不用ftp了。如有需要的話下面是安裝步驟:

sudo apt-get install proftpd
打y同意下載

下面是設定ftp的根文件夾和用戶,假設我們想分享 /var/www/ 文件夾和一切其子文件夾裡的文件:
cd /etc/proftpd/
sudo ftpasswd –passwd  –name movies –gid 33 –uid 33 –home /var/www/ –shell /bin/false
打入密碼再重打確定。
sudo nano /etc/proftpd/proftpd.conf
文件尾部加上這些:
DefaultRoot ~
AuthOrder mod_auth_file.c  mod_auth_unix.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
RequireValidShell off

Ctrl-O 、 輸入鍵 、 Ctrl-X 完成修改。

結束。

© 本文版权归作者 mik7k 所有,任何形式转载请联系作者。

參考:

  1. How to install Apache, PHP and Samba      https://www.raspberrypi.org/forums/viewtopic.php?t=143755&p=948980
  2. http://www.raspberrywebserver.com/sql-databases/using-mysql-on-a-raspberry-pi.html
  3. http://www.instructables.com/id/Using-a-USB-external-hard-drive-with-your-Raspberr/
  4. https://tutorials-raspberrypi.com/raspberry-pi-ftp-server-installation/
Posted in i.tech.