這裡的 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 雖然安裝時自動處理但設定資料則仍要使用者仔細操作
沒有留言 :
張貼留言