安裝 PhpMyAdmin
筆者試了兩種安裝方式,其主要目的都是因為 Ubuntu 提供的 phpmyadmin 預設下會安裝 Apache2。但我又不希望 Caddy 與 Apache2 會造成衝突,所以才有本文所述繞路的做法;避免安裝了 Apache2。
使用 Ubuntu 預設的 phpmyadmin 套件
sudo apt install –no-install-recommends phpmyadmin(注意雙 dash)
會出現如下視窗,按 ESC 跳過
出現以下視窗,是為了設定 phpmyadmin 自己所用的帳號及資料庫:
若使用者目前的 MariaDB root password 是空的,那麼可以選擇是;否則選擇否,按 ENTER 繼續。
接著,至 /etc/phpmyadmin,編輯 config.inc.php,如圖拿掉 // 註解,並將 cookie 改成 http ,存檔離開
接著,將路徑切換到 /usr/share/phpmyadmin 下,並執行 du -h 查看目錄下的檔案空間佔用狀況,筆者的是 26MB
開始之前請注意,若 MariaDB root password 還是空的話,此時就要先去建立密碼了。故再執行一次 mysql_secure_installation 即成。
首先我們先用 PHP 內建的 web server 測試 phpmyadmin 。在 /usr/share/phpmyadmin 下,執行:
php -S localhost:2019
接著就可以打開瀏覧器輸入 http://localhost:2019 會出現 密碼登入,鍵入在 MariaDB 中所建立的 root 登入帳密。即可進入管理畫面了。
在主頁,拉到下,會有如圖的提示訊息(當 phpmyadmin 的資料庫尚未建立時):尚未設定 phpMyAdmin 設定儲存空間,部份延伸功能將無法使用。 了解原因。點擊 “了解原因”
再點擊 建立,即會自動建立 phpmyadmin 給它自己使用的資料庫,名稱 phpmyadmin。接著登出。
此外,查看 php web server 所回報的 phpmyadmin 的錯誤訊息,有三條…暫先忽略,因為 phpmyadmin 對於資料庫的存取當前若都正常的話,或者我們只要能設定 wordpress 能正常存取資料庫,何妨。按 Ctrl-c 終止 php webserver
網頁根路徑與權限的基礎設定
因為 Apache2 使用了 /var/www/html 做為網頁的根路徑。利於除錯及區分起見,筆者設定根路徑為 /var/web 且 按慣例,所有不同用途的網頁都置於此,或由此連結出去,統一管理。
也不知是哪個套件所設定出來的,我們按慣例延用已存在的 user = www-data,group = www-data 來做為網頁的存取者。
首先建立 /var/web 目錄,並設定權限。也將 phpmyadmin 連結至該處:
- sudo mkdir /var/web
- 修改 /var/web 的擁有者成 www-data
- sudo chown www-data:root /var/web
- 修改 www-data 使用者的家目錄 /var/www 成 /var/web。可先 cat /etc/passwd | grep www-data 來查看
- sudo usermod -m -d /var/web www-data
- cd /var/web
- 此路徑下,再建立 phpmyadmin 的連結 dbadmin
- sudo ln -s /usr/share/phpmyadmin dbadmin
- 變更 phpmyadmin 的擁有者
- sudo chown -RL root:www-data dbadmin
接者,至 /etc/php/7.3/cli 編輯 php.ini,在 doc_root = 加上參數值 /var/web,是設定了網頁的根目錄路徑。順便更改其他二項都成 512M。存檔離開。
- doc_root = /var/web
- post_max_size = 512M
- upload_max_filesize = 512M
使用 Composer 安裝 phpmyadmin 套件
Composer 是 PHP 的套件相依性管理工具,且也已成主流,所以安裝它並無不妥。再由它來安裝 phpmyadmin。
Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
請注意上段的指令請直接至 https://getcomposer.org/download/ 該處複製下來執行,因為檔案一直在更新,簽名碼當然也會不同。
接著將執行檔移至 /usr/local/bin 則可全域執行。
sudo mv composer.phar /usr/local/bin/composer
網頁路徑與權限設定
接續之前,我們在這個時間點一樣先做些前置作業,請參考本文上半段,類似這個段落的完整說明:
- sudo mkdir /var/web
- 修改 /var/web 的擁有者成 www-data
- sudo chown www-data:root /var/web
- 修改 www-data 使用者的家目錄 /var/www 成 /var/web。可先 cat /etc/passwd | grep www-data 來查看
- sudo usermod -m -d /var/web www-data
可能會有錯誤訊息,忽略之。再 grep 一次確認。又或 www-data 已被行程佔用則先暫終止之。 - php.ini:doc_root = /var/web,post_max_size = 512M,upload_max_filesize = 512M
PhpMyAdmin
接著,至 PhpMyAdmin 官網查看執行安裝的命令。
使用 composer 有一點要注意的是,官方建議避免使用 root 權限來使用它。因此,使用它,偶爾要繞點路。
- sudo mkdir /var/web/phpmyadmin
- 將 $ME 改成您的使用者名稱,例如,筆者用 kenny
- sudo chown $ME:$ME /var/web/phpmyadmin
請注意,
我們就是將 ./phpmyadmin 底下的所有檔案的擁有權設給管理者了。
故執行 composer 的最高權限者就是管理者。不要/用再加 sudo 了。
而後面敍述中,會將該目錄下的檔案 chown 成 root:www-data。
原則上,暫先不更動維持 $ME:$ME,若無法正常使用,再去嘗試改擁有者。
並且,已知的問題是,./tmp 的存取問題。試想我們之後會將它設為 www-data:www-data,那麼存取上是沒有問題的,但,新産生的檔案,擁有者將是 $ME,故,在 phpmyadmin 主控台中,仍會出現該提示問題。反之,若我們將該目錄設為 $ME:$ME,則同樣 www-data 將無法存取該目錄。故可行但絕不能妥協的方法是,使用 $ME:$ME 並將 www-data 納入 $ME 群組中。 - 接著就是安裝了。下列中,第一個phpmyadmin是指套件提供者,第二個phpmyadmin是指套件名稱,第三個是安裝目的路徑
- composer create-project phpmyadmin/phpmyadmin /var/web/phpmyadmin
- 安裝過程中,會出現錯誤或警告訊息,這是因為筆者並未安裝 apache2及伴隨的副套件,所以所缺者,我們須一一補安裝。
當安裝結束後,我們第一步要做的,就是查看安裝目的地,是否有建立 composer.json 檔案,若沒有,則安裝指令可以重覆使用;若有,則不能再使用安裝指令了,而是須使用更新指令。故,另開一個終端,查看該路徑。結果有它,便進入該目錄 cd /var/web/phpmyadmin。
接著再回來看錯誤訊息:
第一個是 lock file 要更新,故: composer update --lock
執行結果,lock file 更新後,問題也從原先的 6 個減成 3 個。這些問題,都是因為缺少了 PHP的相關套件,故我們可以如此查找:apt list | grep php7.3
果然有看到跟問題類似的套件,二話不說,連同看順眼的套件一併安裝:sudo apt install php7.3-bz2 php7.3-curl php7.3-fpm php7.3-mbstring php7.3-mysql php7.3-xml php7.3-zip
因為 php7.3-fpm 是網頁快取的必要套件,安裝後,如同前文 cli 路徑下的 php.ini 做設定:doc_root = /var/web(有反而錯,很重要,不要去設定),post_max_size = 512M,upload_max_filesize = 512M
- cd /etc/php/7.3/fpm
- sudo gedit php.ini
- sudo systemctl restart php7.3-fpm
再回到 /var/web/phpmyadmin 路徑下執行:composer update
這一步是執行此套件的更新。
另外有 lock file 也需要更新,composer update –lock(注意是 – -lock)
而若出現錯誤訊息,就是有相依套件沒有安裝或是舊版的,需要更新,如下一步,
composer update –with-all-dependencies(注意是 – -w)。
若是再也沒有任何錯誤訊息出現就是成功完成安裝此套件了。
結果,沒有錯誤訊息了而且也開始安裝了;其主要行為是在子目錄 ./vendor 下安裝 phpmyadmin相關的套件。下圖是安裝成功後的最後提示。
接下來,類似並請參考前半段,要設定 phpmyadmin 的組態檔,在該目錄下:
- cp config.sample.inc.php config.inc.php
- gedit config.inc.php
- 建立捷徑
- cd /var/web
- sudo ln -s /var/web/phpmyadmin dbadmin
- 變更擁有者
- sudo chown -RL root:www-data ./dbadmin
- 最後,使用 php web server 做測試
我們看到有二個問題,第一個如前半段所述。第二個問題是因為筆者把權限設定得比較嚴格,故修正:
- cd /var/web/phpmyadmin
- sudo mkdir tmp
- sudo chown -R www-data:www-data ./tmp(注意,root:www-data or www-data:root 都不行)
- sudo chmod -R 777 ./tmp
結論
- 選擇:第二種安裝方式,使得 php web server 並沒有回報任何問題,不過 du -h 查看,使用了 158MB 的磁碟空間。故本文所述的兩種安裝,就看您的取決了。
- 補充:使用 VirtualBox,筆者就能在安裝 phpmyadmin 之前,備份出來虛擬磁碟,再複製一個出來跑 Ubuntu 提供的,出來另一個跑 Composer 的方式,如此,例如筆者用 Ubuntu 提供的,砍掉重練三四次了相當便捷。
- 最後,因為筆者的架站特色就是使用個人筆電,適用於同時間參訪人數不會很多的情況。因此,在這樣的伺服器上就是盡量少使用資源少安裝一些哩哩叩叩的程式。
在接下來的安裝所需,於本文未提及的,現在需加裝:(因若某套件重覆安裝的話,apt 會設定成手動安裝僅而影響紀錄,故我們區分開來) - 本文第一種安裝方式需加裝:sudo apt install curl net-tools php7.3-fpm,並且設定 php.ini 如第二種方式所述。
- 本文第二種安裝方式需加裝:sudo apt install curl net-tools
- 參考資料
- https://mark528.pixnet.net/blog/post/7267524
- https://www.linux.com/news/what-do-when-apt-get-fails/
- 再補充:
因聽說 phpmyadmin 有漏洞,故幾點原則:root 的密碼不能設得太簡單。最好禁止 root 從外部存取。只能從本地 localhost 來存取。檔案的權限與模式,請谷歌看看相對安全的設定方式。
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-20-04
範例:為 wordpress 配置資料庫
就筆者目前已知(以下純個人觀點),wordpress 是由外觀主題與控制框架, 頁,文章,及資料庫這幾種元件庫所構成的。頁與文章可說是相同的東西(甚至也可歸類入第一種),且因所謂抽離化的設計,所有網頁設計者所加入的文字或內容,都納入後端資料庫中,而由後端網頁的程式碼框架來對應呼叫引用,來呈現前端訪客所看到存取到的內容。因此 wordpress 資料庫是最重要的,存放著網頁設計者的心血。
為 wordpress 配置,只需三樣資料:資料庫名稱,其使用者及其密碼。我們分別取 MYWPADMIN,MYWPADMIN,MYWPPW 來做為例子。以下按圖操課即可。最後,須變更預設字集成 utf8:ALTER DATABASE MYWPADMIN CHARACTER SET utf8 COLLATE utf8_general_ci;
20221126 更新,字集的部份應是不用修改直接使用預設 utf8mb4_generic_ci 即可,參考如下。而 wordpress 的組態檔的字集欄位一樣使用預設而不用更動。
https://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8
發佈留言