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

2023/06/21閱讀時間約 12 分鐘
先說,我並非專業人士~ 只是分享建立的過程與經驗,不要問我問題~ 我可能、應該無法解答,哈哈哈。
另,這只是一份 草稿? 操作簡述~ 容我不很詳細的抓畫面了! 我之後 "應該" 會拍影片說明整個過程,真的有拍的話,再補上影片網址。

建立主機

登入 Azure 後 【建立資源】,我選擇 Ubuntu Server 22.04 LTS。LTS 是 長期支援 的意思,通常有五年的支援期,五年後就...不知道..了。
選擇 Ubuntu Server 22.04 LTS
選擇 Ubuntu Server 22.04 LTS,點選 【建立】
在 基本 這個畫面中,就照您的需求設定囉,大致設定狀況如下:
提醒: 在下方 "驗證類型" 的地方,我個人習慣使用密碼(您自己決定),如果您也使用 密碼,那麼,帳號和密碼要記錄好喔! 不然建好主機後無法登入就慘了。
啊! 大小 那個欄位也要注意一下,如果只是裝好玩,並沒有近期立刻要上線,可以選選便宜或免費的主機來裝。
磁碟設定的畫面,直接往下看到 【建立並連結新的磁碟】
在 建立新磁碟 畫面中,選【變更大小】選擇適合的大小(選擇的畫面就不抓圖了)。
接下來就是 下一步 網路,特別提一下,如果您這台主機不是獨立的主機(比如說它的 MySQL 在另一台主機,或需要與其他主機做內部的資訊交換),那麼就要特別選取之前已經存在的,可以和其他主機連線的現存 "虛擬網路",不然就直接建新的就好。
後面步驟的 管理、監視、進階、標籤 這幾個步驟都可以直接略過,我個人不懂那些部分請原諒,直接執行畫面下方的【檢閱 + 建立】就好。
後面的畫面會讓您整個再看一次,您對這主機之前設定。這裡就不引用畫面了,您確認設定後,按下方的【建立】後,Azure 便會開始建立主機的工作。喝口水,休息一下,等它佈署完吧!

記下主機必要資訊

在機器佈署完成後,有件重要的事要進行,就是記下主機必要的資訊。直接點畫面中的【前往資源】
我們要記下的是 主機 的 公用 IP 位址,以便之後連線使用。
我建議您建立一個小小的紀錄文件,把帳號、密碼、公用 IP 位址~ 藏好上鎖之類的(放雲端...),不要相信頭腦一定會記得住喔!

進行 SSH 連線

抱歉,我向來只用 Windows 系統,所以用 Windows 示範喔,若您是使用其他作業系統﹑請自行尋找使用 SSH 連線的方法。
執行 Windows 內的 "命令提示字元"(如果不知道在哪裡,您可以從 開始 -> 打入 cmd 進行搜尋。)
執行出來後,鍵入如下指令: ssh 帳號@主機公用 IP ( 自己做相對應修改喔,我示範用帳號是 jasonadmin ),然後按 [Enter]
ssh [email protected]
接下來請看畫面示範~
當您在 指令視窗 打入正確的連線指令 ssh [email protected] 後,由於是第一次連線,會讓您在確認一次是否要連線,於是打入 yes。然後它會問您主機的密碼。在打密碼時,您輸入的字元是看不見的,所以,我建議您,直接把密碼直接打在 記事本 中,然後 Ctrl + C 複製到剪貼簿,切換回 "命令提示字元" 視窗,然後滑鼠直接在視窗上,點選滑鼠右鍵,此時密碼會被貼近 "命令提示字元" 視窗中,但是畫面上看不出來喔! 直接再按 [Enter] 鍵,便可以登入了。
如果有登入成功,就會看到類似下面的指令等待模式畫面,這樣就登入成功囉。
接下來第一組指令就是更新主機。直接複製指令貼到 "命令提示字元" 視窗中,按下 [Enter] 執行就好。它可能會跑一堆字出來,別怕,英文簡單看一下... 通常回答 y 或 yes 就好。
sudo apt-get update
一個一個指令來
sudo apt-get upgrade

安裝 Apache2 網頁伺服器

以下指令若有多行放在一起,請一行一行來執行喔,比較能清楚安裝的狀況,不要一次給它貼上去。另外,開頭為 # 字元的,那是備註,不用 Copy 去執行。
sudo apt-get install apache2
執行完上述指令,過程中需要按 Y,然後等待一下,Apache 應該就安裝好囉,我們來檢查一下。
# 檢查 Apache 版本
apachectl -v
# 或者使用下列指令檢查執行狀態
sudo systemctl status apache2
這兩個指令執行結果略有不同,如下參考:
網頁伺服器裝好了,您會想連線看看嗎? 等下就來試試吧!

主機 SSH 通訊安全 與 網站 Port 開放設定

在安裝的後續步驟進行前,我們先回到 Azure 來進行一些設定。請進入到 Azure,該主機的 網路 設定項目。
我們先把 SSH Port 22 保護起來,不過,以下的設定要配合您所在位置有 固定 IP 才能設定,如果您所在位置使用的網路非固定 IP,請跳過此 Port 22 的設定。
設定方式為,找到 "網路" 內的 "輸入連接埠規則" 找到 SSH,直接在該行資料上點兩下,會出現一個設定視窗。改一下 "來源","來源 IP ..."寫入允許的 IP (如果有合作廠商要連線,廠商的 IP 要記得寫喔),然後儲存即可!
如果您沒有固定 IP 又想要讓 SSH 連線能夠安全,應該是有其他辦法的(如 Azure VPN 之類的),可能要網路上搜尋一下喔。這裡我暫時幫不上忙,我目前只會這種方法。
接著,開放 Port 80 和 443 以便 使用者 可以連線網站。操作方法先按【新增輸入連接埠規則】
在設定畫面,原則上只要設定 目的地連接埠範圍(80一個,443一個),通訊協定(TCP),優先順序(畫面沒抓到,在下面一點,注意不要與其他重複就好,也不要設太大呀! 不要大於 65000)
然後~然後這一段是額外補充,如果您的網站會使用 gmail 寄信的話,"輸出連接埠規則" 那邊,要允許 TCP 的 587 可以通喔!

●測試網站是否有通

來試一下網站是否有通吧! 現在用瀏覽器直接打主機的 IP http://xxx.xxx.xxx.xxx,如能看到類似如下畫面,便是成功了。

安裝PHP 8.1(如果需要其他版本也可以)

這...先再執行一次主機的更新看看。
sudo apt-get update
sudo apt-get upgrade
接下來這兩個指令功能不明,應該有其特定功能,只是...我不記得了
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
上面是一條指令喔,畫面上可能不是很完整。整個是 sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
執行好後執行下面這個
sudo add-apt-repository ppa:ondrej/php
執行上一行的過程,會需要按 [Enter]
然後再執行一次主機的更新~這是必要的,會再安裝一些東西。
sudo apt-get update
sudo apt-get upgrade
出現神奇畫面了! 它提示您有些 Service 需要重新啟動,您看到的畫面可能不盡相同,使用 [Tab] 鍵可以切換選項,把選項切到下方的 [OK] 鍵後,按[Enter] 即可。
接下來~ 認真要裝 PHP 8.1 囉,如果您要裝其它的版本,把 8.1 換成其他的版本號碼便可(我裝過 7.4 版的)。
sudo apt install php8.1
回答 Y,然後等待完成~這次一樣把游標用 [Tab] 跳到 OK 處按 [Enter]。
那麼,現在來看一下安裝後 PHP 的版本
php -v
恩! 裝的是 8.1.20~ OK!
安裝 PHP 程式開發者常用套件
我直接列出指令,這指令中就能看出安裝那些套件了。注意,若您 PHP 不是安裝 8.1 的,要把指令中的 8.1 換成別的版本號碼喔。
# sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl
sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl
回答 Y,然後等待完成~一樣把游標用 [Tab] 跳到 OK 處按 [Enter] (您看到的畫面或許會不同喔)。

●FTP 連線主機設定

接下來~我們想放個程式去測試一下網站的情況,該如何處理呢? 當然是用 FTP 軟體把程式放上去看看囉!
我用的 FTP 軟體是 filezilla client,以下分享設定畫面(其它自己來喔)。
第一次連接會有詢問是否信任該主機,把下方的總是信任打勾就好。
然後,您連線進去主機後,就可以看到主機上的資料夾了,這時,資料夾應該是您預設的帳號名稱,為了方便之後的說明,我就把帳號取名成 jasonadmin 好了。
有了 FTP 以後,我們就可以把檔案傳上主機,看看執行的成果如何囉!

●建立 phpinfo.php 上傳測試

熟 Linux 的人可以直接用指令視窗執行建立啦,但我們不懂 Linux 那麼,在 Windows 建立好 FTP 上去就好了,建立的方式就是用記事本囉。
在這之前,如果您真的是新手小白,記得把 Windows 副檔名打開,phpinfo 的副檔名必須是 .php 否則主機上無法執行喔。
檔案的內容只有三行,打好,存檔,備用。
<?php
phpinfo();
?>
我個人習慣~ 每建立一台主機,我就會在電腦上建一個資料夾來放那台主機的東西,最好,那個資料夾還能同步到雲端備份。因此我那個 phpinfo.php 就會放在我自己電腦上那個主機名稱的資料夾內,稍後來上傳到主機上。
建好 phpinfo.php 後,準備上傳,此時,我們會遇到一個資料夾權限問題。

●調整 /var/www/html 的權限

我們的程式目前必須要放在主機上的 /var/www/html 資料夾下,才執行得到,如果您直接試著把phpinfo.php 上傳到該資料夾,您會發現,它程式閃一下,然後就不見了,那是因為我們登入的帳號 jasonadmin 並沒有 /var/www/html 寫入的權限~ 所以... 注意! 以下的解決方式並非是最洽當的解決方式(可能會有安全問題,如果大家有更好的方式可以回應給我。),只是我目前能處理的方式而已。
我的解決方式如下,記得下列指令中 jasonadmin 要改成您的帳號 :
# 先給予群組寫入 /var/www/html 權限
sudo chmod g+w -R /var/www/html
# 把 syinluadmin 加入 root 群組(可能有風險?)
sudo usermod --gid root jasonadmin
這樣一來,檔案就能複製進去囉!
這時候,各位觀眾,使用主機的 IP Address 加斜線 phpinfo.php 應該~就能連線到程式囉,如: http://xxx.xxx.xxx.xx/phpinfo.php
會出現如下畫面:
【啊! 注意! 若這個主機會正式使用, phpinfo.php 要在開站前殺掉,以免洩漏主機的一些訊息。】
嗯! 第一篇就先寫到這邊吧!
24會員
79內容數
然而,這個世界是多元性的,人生也是。
留言0
查看全部
發表第一個留言支持創作者!