2017年10月10日星期二

在 OpenIndiana 安裝 AMP 及 PHPMyAdmin

不是在 OpenIndiana 安裝擴音機 (Amplifier 簡稱 AMP)
這裡的 AMP 是指 Apache + MariaDB + PHP 的簡稱

由於 Sun Microsystem 被 Oracle 收購,連同 MySQL 一併被 Oracle 收歸其下
MySQL 社群擔心 MySQL 會被 Oracle 閉源,因此 MySQL 社群分支出 MariaDB 同時讓 MariaDB 可以完全相容 MySQL
OpenIndiana 預設的套件並不包含 MySQL 而是改用 MariaDB

歷史不說太多
OpenIndiana 的套件庫中可以自動安裝 AMP

見下文
在 Terminal 輸入
sudo pkg install -v //openindiana.org/group/feature/amp
便可以自動下載及安裝 Apache + MariaDB + PHP

見下文
但安裝後並不會立即啟動服務,需要使用 svcs 指令查看
在 Terminal 輸入
svcs -a | grep -i 'http'

svcs -a | grep -i 'database'
查看 Apache 及 MariaDB 的服務名稱及狀態,在 OpenIndiana 中會以 disable 顯示服務未啟動的狀態
啟動該服務需要使用 svcadm 來操作服務狀態
在 Terminal 輸入
sudo svcadm enable svc:/network/http:apache24
啟用 Apache 服務

sudo svcadm enable svc:/application/database/mariadb:version_55
啟用 MariaDB 服務
若要終止服務只需要將狀態改為 disable 即可

見下文
開啟網頁瀏覽器到 http://127.0.0.1 查看
若顯示 It Works! 即表示服務已經啟用,並運作正常

見下文
雖然 MariaDB 服務啟用,但仍未設定妥當
雖然使用 MySQL 指令,但由於 MariaDB 是 MySQL 的分支,因此指令操作基本上是相同
在 Terminal 輸入
mysql -u root -p
登入 MariaDB 時會詢問密碼,在預設情況下, root 的密碼為「空白」
修改 root 的密碼,輸入
USE `mysql`;
UPDATE `user` SET `Password` = PASSWORD('root-password') WHERE `user` = 'root';
FLUSH PRIVILEGES;
QUIT;
root-password 可以任意修改
注意:
在 Terminal 登入 MariaDB 後,SQL 指令都需要以「分號」作結束才能執行
修改 root 的密碼後必須執 FLUSH PRIVILEGES; 才能生效

雖然已經設定好 Apache 及 MariaDB ,但是若有一個 GUI 操作的工具會比較方便,例如 phpMyAdmin
(設定 phpMyAdmin 還可以一併檢查 PHP 及資料庫存取是否正常運作)

見下文
到 phpMyAdmin 的官方網頁便可以下載
將下載的檔案解壓縮,並將 phpMyAdmin 的目錄搬移至 document root 的位置
在預設情況下為 /var/apache2/2.4/htdocs/
在 Terminal 輸入
7z x phpMyAdmin*.zip
rm phpMyAdmin*.zip
sudo mv phpMyAdmin* /var/apache2/2.4/htdocs/phpmyadmin

見下文
http://127.0.0.1/phpmyadmin
發現雖然已經顯示 phpMyAdmin 的首頁,但登入時出現未能連接資料庫的錯誤

見下文
在 Terminal 輸入
cat /etc/mysql/my.cnf | less
查看 MariaDB 的 socket 位置
查看後按 q 離開
(雖然位置名稱顯示 mysql/my.cnf ,實際是指向 mariadb/my.cnf)

見下文
在 Terminal 輸入
cd /var/apache2/2.4/htdocs/phpmyadmin
sudo mv config.sample.inc.php config.inc.php
sudo vim config.inc.php
將由 phpMyAdmin 官方提供的 config.sample.inc.php 改為 config.inc.php
並使用文字編輯器修改 config.inc.php
(不一定使用 vim , OpenIndiana 亦有提供 GUI 操作的 pluma)

見下文
尋找
$cfg['Servers'][$i]
並加入
$cfg['Servers'][$i]['socket'] = '/tmp/mariadb.sock';
輸入與 mariadb/my.cnf 中的 socket 路徑相同的位置
完成後儲存

見下文
修改正確的話,便可以經 phpMyAdmin 登入 MariaDB
但發現 blowfish_secret 未設定

見下文
再到 phpMyAdmin 的 config.inc.php
將 blowfish_secret 修改為一個最少 32字元長度的字串,然後儲存

見下文
重新整理 phpMyAdmin 便將 blowfish_secret 設定妥當
發現還有一些 phpMyAdmin 的資料庫未設定,按下「Find out why」

見下文
發現 phpMyAdmin 的 pmadb 未設定
按下「create」便可以設定

見下文
便會自動設定 pmadb 的資料庫、資料表等資料

見下文
回到 phpMyAdmin 的首頁,終於不再顯示任何錯誤或未設定妥當的字句

在下在最初安裝 AMP 時已經一頭霧水,安裝 AMP 後到 http://127.0.0.1 沒有反應,尋找資料要啟動服務卻出現錯誤
最後才發現 svcs 只會列出已啟用的服務, svcs -a 才能顯示所有服務
而網上其他教學資料的 AMP 又不一定使用 Apache 2.4 版本,不少較舊的教學是使用 Apache 2.2 因此不斷指出沒有該服務
解決了 Apache 服務啟動問題後 MariaDB 便很容易解決,修改 root 的資料也很快找到相關資料
但 phpMyAdmin 的 MariaDB socket 問題則查了一段時間
由於通常都是找到 Linux 修改 my.cnf 設定檔,例如將位置改為 /var/run/mysqld/mysqld.sock
但發現修改後重新啟動服務,仍是相同錯誤,而且還是指在下沒有指定 socket 位置
才發覺應該是 phpMyAdmin 的 config.inc.php 未設定妥當,而不是 my.cnf 問題
將 config.inc.php 的資料一步一步設定妥當,一個一個問題便慢慢解決
過往在下都是使用 Linux 發行版安裝時會自動協助使用者設定資料,但 OpenIndiana 雖然安裝時自動處理但設定資料則仍要使用者仔細操作

沒有留言 :

發佈留言