跳到主要內容

Ubuntu22.04分拆安裝(Apache / PHP / MySQL/ phpMyAdmin)的方法

為了應對越來越頻繁的資安通報,解決方案就是用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 是否可用:
apt-cache policy php8.3

※如果仍然只顯示 PHP 8.1,請手動清理快取:
sudo apt clean
sudo apt update

※然後再試一次:
apt-cache search php8.3

※再次確認 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到底即可


步驟3.安裝和啟用 phpMyAdmin

※執行以下命令來安裝 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'; 


FLUSH PRIVILEGES;
exit;

說明:使用 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 與安裝可參考下篇文章說明

工作心得撰寫:徐嘉裕 Neil hsu

留言

這個網誌中的熱門文章

好用的windows備份檔案dos指令XCOPY-教學撰寫:徐嘉裕Neil hsu

要快速的備份某個硬碟全部資料到備份硬碟中,雖然是可以用windows內建的備份與還原,但如果重灌windows可會有key不同而無法還原的問題,還要改一堆設定煩死了,直接用dos指令XCOPY來做檔案的複製就很快了,資料也不會丟失,好朋友可以參考看看!! 首先開啟windows所有程式->附屬應用程式->開啟命令提示字元! 然後輸入以下指令 XCOPY C:\xxx   F:\xxx /s 藍字的 C:\xxx  為複製檔案來源位置例如要複製整個C槽就輸入 C:\ 綠色的   F:\xxx 為複製目的位置,例如要放到F槽的備份資料夾,就輸入  F:\ 備份 紅字的 S 為複製類型參數,可以自行修改為以下的參數設定: ================================================================= /A    只複製設定成保存屬性的檔案,不要改變屬性的設定。 /M    只複製設定成保存屬性的檔案,並清除保存屬性。 /D:m-d-y  複製指定日期當天或之後變更的檔案。如果沒給日期,只複製那些來源檔案日期比目的檔案日期為新的檔案。 /EXCLUDE:file1[+file2][+file3]...         指定檔案清單字串。每個字串應在不同行。如果有字串對應到要進行複製的檔案絕         對路徑的任何部分,這個檔案會被排除複製。例如,指定字串         \obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是.obj 的檔案複製。 /P    在建立每個目的檔案時顯示提示。 /S    複製每個目錄及其包含的子目錄,不複製空目錄。 /E    複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E相同,能夠用來修改 /T。 /V   ...

jQuery取得下拉選單selected中數值與內容的方法

假設選單狀態為: <select id='selectname '> <option value='v1' data-id="d1">選單A</option> <option value='v2' data-id="d2">選單B</option> <option value='v3' data-id="d3">選單C</option> </select> 以jQuery取得選單數值與內容方法如下: 1、取得下拉選單 value 數值的方法 $selectname=$('#selectname').val(); alert($selectname); //顯示選單中 selected 狀態的value數值v1 or  v2  or  v3。 2、取得下拉選單中 data-id 數值的方法 $data-id= $(this).find(':selected').attr('data-id'); alert($data-id); //顯示選單中 selected 狀態的data-id數值d1 or  d2 or  d3。 3、取得下拉選單中 文字 的方法 $selecttext=$(this).find(':selected').text(); alert($selecttext); //顯示選單中 selected 狀態的文字內容,如選單A or  選單B or 選單C。 教學撰寫:徐嘉裕 Neil hsu

CentOS7啟用ssh的設定方法-教學撰寫:徐嘉裕Neil hsu

安裝好CentOS7後可以在圖形化介面中點選右鍵->開啟服務器修改設定後啟用SSH設定,方法如下: 1、先安裝openssh套件 sudo yum install openssh* 2、用 gedit 開啟sshd_config編輯 (不要用vi很難編輯的) sudo gedit /etc/ssh/sshd_config 3、增加可連線SSH帳號 AllowUsers admin (此欄位需要自行新增) 4、修改PORT吧 # 註解拿掉 (可以改成8022PORT或其他PORT都可以) Port 22 搜尋PermitRootLogin吧 # 註解拿掉 PermitRootLogin no 再來把這兩行的 # 註解拿掉 PermitEmptyPasswords no PasswordAuthentication yes 搜尋Protocol設定使用SSHv2連線 Protocol 2 sudo systemctl restart sshd.service    重新啟動service sudo systemctl enable sshd.service    設定開機啟動SSH sudo semanage port -a -t ssh_port_t -p tcp 22      防火牆允許22 PORT 或 sudo firewall-cmd --permanent --zone=public --add-port=22/tcp 重新載入防火牆設定 sudo firewall-cmd --reload sudo  netstat -ant | grep :22 查看 22PORT 查詢現在SELinux設定清單中的SSH服務有哪些Port sudo semanage port -l | grep ssh ssh_port_t tcp 8022, 22 怎麼測試? 格式:登入帳號@IP或主機名稱 指令:-p SSH服務Port號 sudo ssh -p 22 admin@192.168.1.100 如設定的Port在清單中 ,那就表示SSH設定完成防火牆也開啟列外了,之後再用遠端的PuTTY輸入 ...