我想這個主題在網路上應該可以找到不少可供參考的文章,但在我安裝的過程中,不知是怎麼回事,遇到了很多奇怪的問題,變成我要去找參考很多不同的文章才能順利地將我的RaspberryPi 3打造成一個還算是可以使用的網站伺服器。所以就想說來將這個安裝過程記錄下來,供自己及其它有需要的人參考。
先說說我的網站伺服器的要求好了。我想要的功能大致上有這些:
- OS:這是一定要的,不管如何都一定先要有個OS才行
- 外接USB硬碟:因為pi使用的micro sd空間其實有限,考量到未來網站可能會要放很多資料,所以我想要有個外接硬碟。這個外接硬碟最好是能開機時就自動掛載
- Apache2:網站伺服器
- 資料庫:原本想用MySQL,但因為版權問題,現在都改用MariaDB
- Php:動態網站伺服器,目前來到Php 7的版本。
- PhpMyAdmin:管理資料庫的工具
- WordPress:網誌的主要系統
我的要求真的不多也不特別,但真的不要懷疑,安裝這些的過程中就是有那麼一點的不順利及一些問題,的確是要我花點時間才能解決的。
os
OS這項其實就RspberryPi來說應該也算成熟了,有許多OS可供選擇。但我覺得為了讓我這個初心者比較好過關,我還是選用了最基本的Raspbian。安裝過程其實並不難,但不知為何我的第一次安裝的版本有點在設定語系上的問題。一開始安裝時整個系統有點慢,造成我安裝完後的pi介面是英文的,而且也都無法改為中文。原本想說就這樣也還好,但最後到了要能正常使用中文輸入法時,發現再如何設定也無法正常輸入中文的情況下,最好只好選擇重灌了。
重灌時,我又重新下載一份Raspbian,說真的官網的網站頻寬真的不高,每次下載都要花些時間。我家的寬頻上網下載已有100M了,但就是得花些時間才能下載完。不過可喜的是,這次重新安裝的過程就比較順利了。
所以大家在安裝OS時最好也留意一下,看基本功能是否都完備後,再接續後面的設定。不然就可能像我一下全部都設定完後,才發現基本功能的不足,又要重來一次。
外接硬碟
雖然Pi的OS只要一小片的Micro SD就可以安裝及使用,又再者目前的SD容量都可以到128G或更高,但這些都還是比不上一個外接硬碟的大容量。所以我一開始就規劃建置好的網站最好是使用外接硬碟的空間。
一般當外接硬碟接上pi後,它就會自動掛載到/media/pi這個目錄中。不過我是想讓它在其它的目錄中掛載。我參考的主要設定方式是RaspberryPi官網上外接硬碟設定文章。
設定上大致還好,但在編輯 /etc/fstab時,官網上說要寫成:
UUID=5C24-1453 /mnt/mydisk FSTYPE defaults,auto,users,rw,nofail 0 0
我依它的設定好像會無法載入,最後我的設定是使用:
UUID=8fd986d6-9f25-4563-86c0-2b028a498c51 /mnt/HDD500G ext4 defaults,nofail,noatime 0 0
在權限的設定部份,我就沒有指定使用者及權限了。
設定完成後,先手動執行一次自動掛載試看看:
sudo mount -a
如果都正常的話,就再重新啟動一次測試看看。基本上應該會正常自動掛載才對。
另外要提醒一下的是,外接硬碟的格式最好是NTFS或是ext4,要不就是exfat的格式,因為只有這些格式才能設定完整的Linux權限。我個人是建議最好是用ext4。
外接硬碟可以自動掛載後,可以先建立一個未來要給網頁使用的目錄,以便接者在安裝Apache2後可以使用。
Apache2
基本上就是用以下的指令安裝:
sudo apt-get install apache2 -y
安裝完成後接下來就是要更改網頁的主要目錄了。對Apache2我沒有太深入的研究,可能有人會說可以再加一組Virtual Host之類的,但我使用的方式是更改主網站的目錄的方式。
假設你要使用的目錄為/mnt/ExtUSBHD/wwwext的話。
首先,先編輯 /etc/apache2/apache2.conf,加入一組<Directory>的設定如下。主要是跟Apache2說有另外一個目錄也是可以讓它來存取的。因為基於安全性的考量,網站是不可以任意存取其它目錄的,所以如果你有想要提供給Apache2可以來存取的目錄的話,就要加上一組設定。
<Directory /mnt/ExtUSBHD/wwwext>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
接者是改網站的設定,這次要改的是/etc/apache2/sites-enabled/000-default.conf,將它的DocumentRoot改為你要的目錄:
DocumentRoot=/mnt/ExtUSBH/wwwext
設定完成後,重啟apache2:
sudo service apache2 restart
為了測試,你可以在你的新網站目錄中建置一個測試用的Index.html,以便測試一下是否真的改到這個地方。接著就開啟瀏覽器,輸入你的pi的IP後,如果看到顯示的網頁內容是你的測試檔的資料的話,那就成功了。如果不成功的話…,那我們再來討論看看了。
MariaDB
原本大家都是使用MySQL,但後來MySQL被Oracle收購後,越來越多人就改用MariaDB了。就我目前安裝的Raspbian來說,它的官方套件中也沒有MySQL了,所以只能改為安裝MariaDB。
安裝方式如下:
sudo apt-get install mariadb-server -y
安裝完成後,因為root尚未設定密碼,所以先設定一下:
sudo mysql_secure_installation
這個步驟設定的項目不只是root的密碼,它同時也設定像是移除通用帳號、測試資料庫、以及禁止root由遠端存取(這個可能跟PhpMyAdmin無法用root登入有關,但目前我還未測試所以也不確定)。
不過基本上設定好後,應該可以用以下的方式先登入MariaDB看看:
sudo mysql -u root -p
如果都正常登入的話,那MariaDB的安裝到目前為止就算是成功了。
PHP7
安裝的方式我主要是參考這篇PHP7安裝說明文章的指令,其它人大多是說只要執行sudo apt-get install php7 -y,但我參考的文章是有再多安裝其它套件的:
sudo apt install libapache2-mod-php7.3 php7.3-cli php7.3-common php7.3-curl php7.3-mbstring php7.3-mysql php7.3-xml php7.3-json -y
PHP7安裝完成後,也不用特別設定什麼。不過為了測試,你可以在你的網頁伺服器主目錄中加入一個php的測試網頁,例如 phptest.php,內容寫入:
<html>
<?php
phpinfo();
?>
</html>
開啟瀏覽器,並輸入<IP>/phptest.php,應該會看到如下的畫面,這樣就算是安裝完成了。

PhpMyAdmin
有了資料庫之後,接著就是要如何管理資料庫了。當然如果你很會下指令的話,單純使用終端機的介面來操作MySQL/MariaDB也是可以的。但一般人應該都會相要有個有UI的工具,而且最好是網頁型式的,可以不用安裝到本機中。
要達到這樣的需求的工具,目前首選就是PhpMyAdmin這套了。因為這套是使用php,所以要在php安裝完成後才可以進行安裝及使用。
首先就是到官網中下載最新的版本,並將它放到你的網站中的某個子目錄中,例如<IP>/phpmyadmin。
接著就是打開瀏覽器,並輸入<IP>/phpmyadmin後,會看到如下的登入畫面:

因為我們的MariaDB剛安裝完,只有一個使用者帳號就是root。但要使用root登入時就會發現雖然輸入了正確的帳號/密碼,可是就是會出現: Access denied for user ‘root’@’localhost’ 的錯誤訊息。
針對這個問題查找資料,大致上有以下的說法:
- 一開始查資料有人說這是為了安全性,所以phpmyadmin就不允許用root登入。所以要自行用MariaDB的命令列工具來新增一個類root的帳號登入。可是這個類root的帳號雖然可以登入,但權限還是有所不同。最明顯的就是無法將新增的資料庫授權給新增的帳號使用。
- 也有人說要改phpmyadmin的設定。要在phpmyadmin中新增一份config.php,並設定$cfg[‘Servers’][$i][‘AllowRoot’] = true。但這樣的結果還是不行。
最後才發現,原來是root被設定成只能本機登入的方式。root被指定為只能使用unix_sockeet了。只要用MariaDB的命令列方式將它改掉就可以成功登入了。
WordPress
WordPress的安裝也還算簡單,就是下載套件,並放到網頁的目錄中就好。
但在Pi中安裝可能會遇到以下的問題:
資料庫設定及帳號新增
在安裝wordpress前最好是先新增一個資料庫及對應的帳號。在建立帳號時,發現最好是將它的登入來源設為是localhost,而不要設為%。不然可能在安裝時就會發生無法存取資料庫的問題。
設定檔要手動加入
在安裝過程中,會發現wordpress無法將自動產生設定檔,所以它會要求你要手動去目錄中新增一份wp-config.php。依它的指示新增後,倒也是可以順利安裝完成。
無法安裝外掛
wordpress安裝完成後,就要開始設定,一開始大家應該會想要新增外掛或是主題。可是這時可能會發現要安裝外掛時,wordpress突然會跳出一個對話視窗跟你要求FTP的相關資訊。如果你的pi有FTP功能的話,你輸入正確的資訊它還是無法正常運作的。
查了一下才知道基本設定下,wordpress都是用ftp的模式來下載及安裝外掛的,這時你就要設定禁用ftp的模式。
結語
經過這些步驟的安裝及設定後,你的pi終算是可以當作是台還算可以運作的網站伺服器了。後續可以強化的應該有:
- 將MariaDB的資料庫目錄也改到外接硬碟中
- WordPress的備份設定
- Pi的防火牆設定
後續有機會研究完後,再來跟大家分享囉。