為了應對越來越頻繁的資安通報,解決方案就是用PPA各別安裝Apache / PHP / MySQL/ phpMyAdmin套件,這樣如果遇到資安通報可立即升級修補漏洞,確保系統安全,晚上也好睡覺,以下是分拆安裝(Apache / PHP / MySQL/ phpMyAdmin)的安裝方法步驟說明:
步驟1. 安裝Apache/PHP 為了取得Apache官網最新版本及PHP最新版本,這裡使用 Ondřej Surý 的 PPA套件
※輸入以下指令下載PPA套件
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/apache2
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
※安裝 Apache 2.4.63(包含 OpenSSL)
sudo apt install -y apache2 apache2-utils ssl-cert openssl
※確認 Apache 版本及是否安裝
apache2 -v
應該會顯示:
Server version: Apache/2.4.63 (Ubuntu)
Server built: (日期資訊)
※啟動並設定開機自動啟動 Apache
sudo systemctl enable apache2
sudo systemctl start apache2
接下來安裝PHP套件及設定
※安裝 PHP 8.3 及所需的擴充功能
sudo apt install -y php8.3 libapache2-mod-php8.3 php8.3-cli php8.3-common \
php8.3-curl php8.3-fileinfo php8.3-gd php8.3-gettext php8.3-mbstring \
php8.3-exif php8.3-mysqli php8.3-openssl php8.3-pdo php8.3-pdo-mysql \
php8.3-pdo-sqlite
※確認 PHP 版本
php -v
如果返回
PHP 8.3.x (cli) (built: ...)
Copyright (c) The PHP Group
表示有正確安裝PPA提供的PHP8.3套件,
反之若回
PHP 8.1.x (cli) (built: ...) Copyright (c) The PHP Group
表示未正確啟用PPA的PHP套件,而是使用Ubuntu22.04內建的PHP
※解決方案-清除暫存重新安裝
※強制刷新套件列表
sudo apt update && sudo apt upgrade
※然後檢查 PHP 8.3 是否可用:
※如果仍然只顯示 PHP 8.1,請手動清理快取:
sudo apt clean
sudo apt update
※再次確認 PHP 8.3 版本
php -v
如果返回
PHP 8.3.17 (cli) (built: Feb 15 2025 09:09:01) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.17, Copyright (c) Zend Technologies
with Zend OPcache v8.3.17, Copyright (c), by Zend Technologies
這樣就有安裝PPA提供的PHP8.3了,不是Ubuntu內建的PHP
※最後是在 Ubuntu 22.04 上啟用 PHP cURL 並配置 curl.cainfo,讓cURL函數能正成常運作
1. 安裝 libcurl 和 ca-certificates
sudo apt update
sudo apt install curl libcurl4-openssl-dev ca-certificates
2. 安裝 PHP cURL 模組-在 Ubuntu 中,使用以下命令安裝 PHP 的 cURL 擴展:
sudo apt install php-curl
3.安裝完後,重啟 Apache 伺服器:
sudo systemctl restart apache2
4. 設置 curl.cainfo 配置 / 下載 cacert.pem
文件(這是官方的 CA 證書檔案)
wget https://curl.se/ca/cacert.pem -P /usr/local/share/ca-certificates/
5.修改 php.ini 配置,位置應該在/etc/php/8.3/apache2/php.ini,或是可透過phpinfo();查詢php.ini路徑,用筆記本打開編輯,找到curl.cainfo,取消前面的#註解,加上cacert.pem路徑
curl.cainfo = "/usr/local/share/ca-certificates/cacert.pem"
搜尋找到 extension=curl,如被#註解調請取消註解
6.更新系統的 CA 證書讓系統能識別新添加的證書檔案:
sudo update-ca-certificates
7.重啟 Apache
sudo systemctl restart apache2
以上流程到這裡為止Apache 及PHP的安裝就都全部完成了,可以在WWW根目錄中置入phpinfo.php,編輯內容貼上
<?php
phpinfo();
?>
儲存後於網址輸入https://www.Your_website.com/phpinfo.php
就能觀看Apach資訊及啟用中的PHP套件
這樣整個伺服器建置進度就有50%了,接下來要安裝MySQL/ phpMyAdmin,由於PPA未提供相關套件,所以我們使用Ubuntu22.04內建的MySQL / phpMyAdmin套件
步驟2.安裝MYSQL
※設置 MySQL-啟用 MySQL 並設置密碼
sudo apt update
sudo apt install mysql-server
※啟動 MySQL 服務 如果 MySQL 已經安裝,但未啟動,可以使用以下命令啟動:
sudo systemctl start mysql
※為了確保 MySQL 會在系統啟動時自動啟動,執行以下指令:
sudo systemctl enable mysql
※設定 MySQL root 密碼 接下來,我們需要設置 root 用戶的密碼。執行:
sudo mysql_secure_installation
會要求您輸入 root 密碼及安全設置,鍵盤Enter到底即可
※執行以下命令來安裝 phpMyAdmin:
sudo apt install phpmyadmin
在安裝過程中,系統會提示選擇 Web 伺服器。請選擇 apache2,並按 Enter 確認。
配置 phpMyAdmin 與 MySQL 整合 在安裝過程中,會提示是否配置 phpMyAdmin 與 MySQL 整合。選擇 "Yes" 並設置一個 phpMyAdmin 的密碼。
※啟用 PHP 與 phpMyAdmin 相關擴展 安裝 phpMyAdmin 後,啟用 Apache 模組並重新啟動服務:
sudo phpenmod mbstring
sudo systemctl restart apache2
※設定 Apache 訪問phpMyAdmin 權限
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
※重啟 Apache 使更改生效
sudo systemctl restart apache2
※完成以上步驟了,就可以測試訪問 phpMyAdmin,路徑如下
https://www.Your_website.com/phpmyadmin
會顯示phpmyadmin登入畫面
如無意外,輸入密碼因該也是登不進去,需要另外設定config.inc.php及建立密碼
※輸入以下指令先登入mysql
sudo mysql -u root -p
※會看到auth_socket屬性
SELECT user,plugin,host FROM mysql.user WHERE user = 'root';
※改成你要登入phpmyadmin root 的密碼 (修改your pass)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your pass';
說明:使用 ALTER USER 修改 MySQL root 用戶的認證方法,將 auth_socket 改為 mysql_native_password,這樣可以使用密碼登入而非通過 socket 登入。
刷新權限 (FLUSH PRIVILEGES;) 以確保更改生效。
接下來修改config.inc.php
※找到以下檔案,/usr/share/phpmyadmin/config.sample.inc.php,變更檔名為config.inc.php
用筆記本打開編輯,覆蓋或修改原本資料
設定 config.inc.php
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'your pas'; //輸入MySQL密碼
/* Server parameters */
//$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;
//以下取消註解
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
之後再輸入roor及密碼就能登入phpmyadmin,要建資料表新增編及刪除都可以操作
到這裡為止就完成分拆安裝(Apache / PHP / MySQL/ phpMyAdmin)的工作,伺服器未來在更新維護上也更便利,雖然工作流程繁瑣,但至少不用煩惱~惱人的資安通報問題,以上工作心得分享,有需要的朋友參考看看!!
備註:如需要申請 Let's Encrypt的 SSL 與安裝可參考下篇文章說明
留言
張貼留言