[樹莓派] 架設網頁伺服器

這篇是我搬運自己以前在 GitHub Pages 上 2021 年 1 月的文章,最近要開始慢慢搬家、把那個網站改成實驗其他東西的地方,順便在搬運的過程中潤飾字句。


總算是要來個經典組合:Linux + Apache + PHP + MySQL (MariaDB)

首先保持好習慣,更新一下:
sudo apt-get update
sudo apt-get upgrade

安裝網頁伺服器(apache2)

再來是安裝網頁伺服器:
sudo apt-get install apache2

接著我們要測試是否運作正常。首先要先確定 Raspberry Pi 的 IP 位置,可以使用 ifconfig 指令,若是跟我一樣是用遠端連線那 IP 位置就不用再費心查了。拿到 IP 位置後,直接開電腦或手機的瀏覽器,輸入自己機器的 IP。若是出現以下畫面表示建置成功!

或是用下方指令也可以:
sudo systemctl status apache2

安裝 PHP 語言

這個指令是安裝 PHP,沒有什麼特別的:
sudo apt-get install php

寫個簡單的網頁

隨意寫個簡單的網頁測試。首先移動到指定資料夾後建置一個名為 my.php 的網頁檔案:
sudo nano /var/www/html/my.php

打一段簡單的 php 網頁:

<h1>Hello, this is Alex!</h1>
<?php
phpinfo();
?>

這裡所使用的編輯器叫做 nano,至於如何使用就看它下面的提示即可。我編輯完檔案後要儲存檔案並且關閉檔案,因此我是照著下方提示 Ctrl+O 改完檔名儲存後,再 Ctrl+X 關閉。

接著試試看在剛才的瀏覽器的網址列中自己的 IP 後面加上自己的檔名,像我的就是 /my.php。下方可以看到一個 h1 標題,另外再加上 php 的相關資料,看起來都跟我剛才在檔案內寫的網頁一樣,表示到這個步驟有成功。

MySQL / MariaDB 資料庫系統

安裝資料庫

安裝 MySQL 資料庫指令如下(舊資訊):
sudo apt-get install mysql-server
sudo apt-get install mysql-client

但我這裡出現了錯誤訊息,無法安裝成功,可能是改名了之類的。
(2022 新增:後來發現原因或許是 MySQL 被 Oracle 收購,中間可能有一些恩怨情仇之類的。目前 Linux 已經在最新版本中以 MariaDB 取代 MySQL,所以在新版的作業系統中都只會看見 MariaDB)

因此改為:
sudo apt-get install mariadb-server
sudo apt-get install mariadb-client

若要查這個下載包的名字的話,可以試試這個指令:
apt-cache search mysql-server
並且安裝正確的下載包,應該就不會和我一樣突然出現問題了。或者也可以讀讀看錯誤訊息,通常都會提供你想要下載的 package 的對應名字。

設定資料庫的安全性

基於上面資料庫安裝失敗,原先以為這個指令也會失敗,但似乎通用:
sudo mysql_secure_installation

安裝 php-mysql

這個部份是要安裝 php-mysql 模組
sudo apt-get install php-mysql

使用看看 MySQL 的介面:
sudo mysql -u root -p

會出現要設定密碼的介面,密碼亂輸好像沒什麼差別?這個問題我要再測試看看,不過有出現相關介面應該沒什麼問題。

安裝 Adminer

最後一步就是安裝 Adminer,也就是用來管理資料庫的工具。其實比較常聽到的應該是 phpMyAdmin,但在安裝以及設定上我被弄到很火大(自己能力不足惱羞成怒 XD),偶然發現 Adminer 不論何種意義上都相當簡單,且相當輕量,應可取代 phpMyAdmin,決定試試看。

首先要去 Adminer 的網站 查詢要下載的項目網址。針對要下載的項目按滑鼠右鍵,點選「複製連結網址」:

將工作目錄移動到/var/www/html/底下,並且輸入以下指令:
cd /var/www/html/
sudo wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1-mysql.php

飛快地完成了安裝,基本上到這邊環境應該是已經建置好了。

資料庫基本使用

先進入到 MariaDB 的介面。
sudo mysql

以下指令都是在介面裡面下的:

  • 查看目前的使用者:SELECT USER();
  • 顯示已建立的 database:SHOW databases;

現在我們要試試看建一個資料庫,並新增一個表格,還要新增使用者:

  • 建立名字叫做 example 資料庫:CREATE DATABASE example;
  • 跳至 example 這個資料庫工作:USE example;
  • 拋棄 example 資料庫:DROP DATABASE example;

不過先別那麼快丟掉 example 這個資料庫,我們先在裡面運作一些其他的指令:

  • 建立 testTable 資料表:
    create table testTable(name varchar(10), join_date date) DEFAULT CHARSET=utf8;
    當然,這資料表的規格就依照自己需求去設定。
  • 查看:DESC testTable;
  • 刪除:DROP TABLE testTable;
  • 清空資料:DELETE FROM testTable;

再來是蠻重要的步驟:

  • 建立使用者
    CREATE USER 'testUser'@'localhost' IDENTIFIED by '(這裡寫testUser要設置的密碼)';
  • 設定權限:
    GRANT ALL PRIVILEGES ON wordpress.* TO 'testUser'@'localhost';
  • 更新權限表:
    FLUSH PRIVILEGES;

Adminer 基本使用

這裡其實蠻簡單的,裝完了 Adminer 後,在網址列中自己機器的 IP 後面加上:/adminer.php

有出現畫面就表示有順利安裝。接著在帳號、密碼的地方輸入剛剛設定的使用者帳號和密碼,例如我剛剛設定了 testUser,我就在帳號的地方輸入 testUser

YA~成功登入,而且應該是可以看到自己剛才建置的資料表。

對了,中間有遇到出現錯誤的狀況: apache2:adminer-所有支援的 PHP 擴充套件(MySQLi,MySQL,PDO_MySQL)都不可用

如果有出現此訊息,第一個可能是還沒安裝 php-mysql,第二個可能是沒有重啟伺服器 sudo service apache2 restart


參考資料

讓我知道你在想什麼!

Picture of ALEX

ALEX

藍白拖愛好者,一事無成話偏多

Recent Posts

C++

NLP