在 Azure 上建立一台 Ubuntu 主機,安裝 apache 和 PHP 8.1 順便 啟用 SSL 第二篇

閱讀時間約 11 分鐘
承上篇,繼續往下走吧!
來說明一下 PHP 兩個會用到的套件安裝,一個是 ionCube,另一個為 memcached

●PHP 套件 ionCube 安裝

先以下列指令,在帳戶內建立一個 tmp 資料夾備用,執行時留意是在帳號剛登入主機的位置喔!
# 建立 tmp
mkdir tmp
# 切換到 tmp
cd tmp
從上圖有看出位置不同了嗎?
接下來執行程式的下載。
# 程式元件下載
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
執行檔案解壓縮!
# 解壓縮下載到的檔案~
tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
畫面類似如下:
程式元件會解壓縮到 tmp/ioncube 的資料夾中~您可以用 FTP看到!重點是要有您 PHP 版本的檔案,像我們用 8.1 的。

●取得 PHP 安裝元件的資料夾與 php.ini 位置

先取得 PHP 預設程式元件安裝位置,好把前面解壓縮出來的元件放進去,然後要找到 php.ini 的執行位置,因為接下來的動作要去修改 php.ini (PHP 設定檔)。
執行如下指令:
# 取得 PHP .so 元件安裝的資料夾
php -i | grep extension_dir
# 取得 php.ini 位置
php -i | grep php.ini
以上圖為例,您可以看到有兩個目錄位置,
extension_dir => /usr/lib/php/20210902 => /usr/lib/php/20210902
Configuration File (php.ini) Path => /etc/php/8.1/cli
Loaded Configuration File => /etc/php/8.1/cli/php.ini
知道以上路徑之後,我們先把 ioncube 的 .so 檔案 copy 到 /usr/lib/php/20210902 中,我們直接下指令( jasonadmin 要改成您的帳號):
# copy ioncube_loader_lin_8.1.so
sudo cp /home/jasonadmin/tmp/ioncube/ioncube_loader_lin_8.1.so /usr/lib/php/20210902
# copy ioncube_loader_lin_8.1_ts.so
sudo cp /home/jasonadmin/tmp/ioncube/ioncube_loader_lin_8.1_ts.so /usr/lib/php/20210902
複製完後,可以從 FTP 確認是否有複製成功。
接著我們修改 php.ini 檔案,檔案位置在 /etc/php/8.1/cli,我們用 FTP 去下載下來,進行修改,修改前建議先備份一份,建議加上日期。
修改 php.ini 的軟體可以用記事本來修改,我個人是習慣用 Notepad++
修改的內容如下:
1.先搜尋 zend_extension,在其下面(其實有家就好)新增
zend_extension = /usr/lib/php/20210902/ioncube_loader_lin_8.1.so
如圖:
以下是順便改,如果您(或 廠商)程式開發上有需要。
2.記憶體限制,視您主機狀況加大一點(印象中以前會寫 128M)。搜尋 memory_limit,改成恰當的值。如下:
memory_limit = 2048M
在寫這篇文章時,我有看見值是 -1 的,查了一下! 可能要問一下專業的程式開發人員,才知道如何設定比較好喔。
memory_limit int
設置了允許腳本分配的最大內存量,以字節為單位。這有助於防止寫得不好的腳本吃掉服務器上所有可用的內存。請注意,如果不需要內存限制,請將此指令設置為 -1。
改好這兩部分就存檔吧!
然後把 php.ini 上傳,不過因為權限的關係,我們無法直接傳回原來的路徑,我們把它傳回帳戶的路徑 /home/jasonadmin 就好。
然後再用指令 Copy 回原來的地方。
sudo cp /home/jasonadmin/php.ini /etc/php/8.1/cli/php.ini
注意! 在幾次實作之後,其實 php.ini 不只一個位置有,您如果去查看 phpinfo.php,會發現在另外一個位置也有 php.ini,如下圖:
e
這個 php.ini 也要進行如上相應的修改,並放回原目錄喔。
完成以上的修改,並保檔案複製回原目錄後,請 重新啟動 主機,下面是使用指令啦! 從 Azure 內重新啟動也可以。
# 重新啟動主機
sudo systemctl reboot
此時 "命令列提示字元" 的連線會中斷,稍等個 30 秒以後再連線吧! 稍微去喝口水,上上廁所,然後連線 phpinfo.php 檢查一下 ioncube 是否有啟用。利用網頁的搜尋功能,有搜尋到 ioncube 這個畫面,便是安裝成功了。

安裝 memcached

這部分比較簡單了,用 "命令列提示字元" SSH 連上主機,直接執行一些指令就好。
執行一次主機的更新和升級。
sudo apt-get update
sudo apt-get upgrade
可能會需要按 Y,然後
進行安裝
# 安裝 memcached
sudo apt install memcached libmemcached-tools
需要按 Y 等它跑完~ 又來~
# 檢查 memcached 版本
sudo memcached -V
# 檢查 memcached 主機上的運作狀態
sudo systemctl status memcached --no-pager -l
實際看到樣子如下圖: 注意劃紅線的地方。
安裝 PHP 8.1 的元件(注意您安裝的版本喔)
# 安裝 Php 元件(要指定版本)
sudo apt install php8.1-memcached
回答 Y,然後...
# 重新啟動 apache
sudo systemctl restart apache2
檢查 phpinfo.php,有找到以下區段便安裝成功了。

啟用 SSL

這邊分兩塊來說明,一、有購買正式憑證,只要把正式憑證上到網站上即可。二、沒有正式憑證,只是要先安裝個臨時憑證,要測試 https 能不能跑而已。
我們先做第二種,第一種等正式要上線再做。
決定一個測試用的 DNS 網域名稱,例如: testc.onweb.idv.tw(相信我,這是假的,只是舉例),然後把您網域新增一筆 A 紀錄,指到 這台主機的 IP。
安裝 Certbot 客戶端來安裝和管理 SSL,說真的,我和 Certbot 不熟,反正我們正式的網站都會購買正式憑證,這裡只是暫時用一下。
# 安裝 Certbot 客戶端
sudo apt-get install python3-certbot-apache -y
依樣畫葫蘆,選 OK
申請與設定您網域名稱的憑證,注意! 網域名稱要改成您的喔!
# 請注意使用的網域名稱
sudo certbot --apache -d testc.onweb.idv.tw
這過程會複雜一點,要輸入您的 EMail(真實,能收到信的。),同意(Y),要收到通知(Y)... 然後就設定好了!
然後用 https 連線您的網址看看吧! 例如我的測試網站 https://testc.onweb.idv.tw
可以看到有鎖頭的標誌出現了,然後看看憑證資訊!
要留意憑證到期日喔! 很抱歉,我這邊不太確定,到期後會發生什麼事,如何續期? 有需要的朋友~網路上再查一下。
因為,我目前建的網站,最後都是要正式上線的,我們有買正式的 SSL 憑證,以下順帶說明一下,網站正式憑證要怎麼上線。(以下所述方式可能只是多種方式的其中一種,我使用過兩次皆能正常運作。)
先找出 Apache 的 Config File 位置,通常位於 /etc/apache2/apache2.conf
我已經購買的憑證,要拿到 apache 上使用的檔案,大概如下圖所示:
在主機上建一個資料夾,直接放在帳號的目錄下的 ssl 資料夾吧! 如: /home/jasonadmin/ssl 把這三個檔案上傳。
把 apache2.conf 順便下載下來修改( 位於主機的 /etc/apache2/ ),修改前記得備份。修改內容如下:
找到 <VirtualHost> 位置依下列範例新增以下內容( 應該預設是不會有的 ),以下憑證名稱要進行相對應修改喔。就是帳號名稱 jasonadmin 和 正式網站名稱 123.onweb.idv.tw (也是憑證檔案名稱)的地方。
<VirtualHost _default_:443>
ServerName 123.onweb.idv.tw
DocumentRoot /var/www/html
SSLEngine on
SSLCACertificateFile /home/jasonadmin/ssl/SO3-Bundle.crt
SSLCertificateFile /home/jasonadmin/ssl/123.onweb.idv.tw.crt
SSLCertificateKeyFile /home/jasonadmin/ssl/123.onweb.idv.tw.key
</VirtualHost>
修改完畢後存檔,上傳主機,然後就是正式上線時,置換的動作了! 以下指令請注意修改成您的真實位置喔。
# 暫停 apache
sudo systemctl stop apache2
# 複製 apache2.conf 檔前先備份
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2_20230621.conf
# 複製
sudo cp /home/jasonadmin/ssl/apache2.conf /etc/apache2/apache2.conf
對 apache2.conf 進行語法檢查。
# apache2.conf 進行語法檢查
sudo apache2ctl configtest
要出現類似如下畫面的 Syntax OK
接下來,重新啟動 apache2 便完成囉。
這篇文章是我的一個經驗紀錄,謝謝您的觀看,因為我是 Linux 小白,為了把公司的主機轉移至 Azure 雲端,邊摸石頭邊過河,是前後裝了約五台主機左右的心得記錄,也與您分享。
24會員
79內容數
然而,這個世界是多元性的,人生也是。
留言0
查看全部
發表第一個留言支持創作者!