Open ddylanlinn opened 3 years ago
此次部署主要分三階段 購買建置雲端虛擬主機(VM)、建置 Ubuntu 主機環境、MySQL 安裝及連線
LAMP 系統(Linux 作業系統、Apache 網頁伺服器、MySQL 資料庫,PHP 程式語言) 類似的執行環境包括 WAMP(Windows OS)、MAMP(Mac OS)等等 其中在相容及整合性上又以 Linux 作業系統最為穩定安全
而 Ubuntu 是基於 Debian 發展而來的 Linux 作業系統 也是這次選擇建置主機的環境系統
GCP(Google Cloud Platform) 提供眾多服務,類似的部署服務又包含 GCE(Google Compute Engine)、GAE(Google App Engine)、GKE(Google Kubernetes Engine 類似於 Docker 原理此不詳述)
GCE 是屬於 IAAS(Infrastructure as a Service),向 Google 買硬體,自己從頭到尾建置主機系統,有極大的調整彈性,但相對的就需要更清楚了解系統環境,AWS Elastic Compute 也屬於這類。 也是這次部署的方法
GAE 是屬於 PAAS(Platform as a Serivce),Google 幫你建置好環境,只管將專案丟上去執行即可。Heroku、AWS Elastic Beanstalk 也屬於這類。 使用 GAE 可以去連結 Cloud SQL(Google 提供的 MySQL 服務)、Cloud Storage 達成完整的動態網頁部署。 官方文件有手把手的測試部署教學
有綁定帳單的 Google 帳號即可使用 GCP 服務
左上 導覽選單 > Marketplace > 下滑至作業系統列 選擇 Ubuntu
導覽選單
Marketplace
Ubuntu
(若直接建置 Compute Engine VM 執行個體,系統設定的映象檔會是 Debian,一樣可以建置 LAMP,但會與以下的指令操作不同)
若是第一次使用 GCP,Google 有提供 300 美金的折抵金,足夠選用基礎專案折抵費用達一年。 而 Google 有另外提拱永久 免費專案,在一定的硬體規格及使用限制下 可以永久免費的使用 GCP。
可以選擇 asia-east1 台灣的機房,靠近機房傳輸速度較快。 若以永久免費方案的限制下,只可選擇 us-east1、us-west1 和 us-central1
asia-east1
us-east1
us-west1
us-central1
若選擇最基礎陽春的規格 系列 N1 類型 f1-micro 可以永久完全免費 但等等要設定 LAMP 環境及安裝 phpmyadmin 會跑太久,先選擇稍微多一點點核心跟記憶體的規格 多少 CPU 及記憶體可以完全客製化且可以隨時修改,右上有費用估算 (ex. 試用一個月 若覺得 CPU 記憶體實際使用的資源效能太高或太低 ,則可以考慮調整,需求多少選配多少)
系列 N1
類型 f1-micro
1.導覽選單 >VPC 網路 > 外部 IP 位置 > 將該 VM 的類型從暫時改為靜態
VPC 網路
外部 IP 位置
靜態
2.點選左側防火牆 > 上方建立防火牆規則
防火牆
建立防火牆規則
IP 來源設置 0.0.0.0/0(允許所有範圍),tcp 設定 3306 (MySQL連結埠)
0.0.0.0/0
3306
SSH連線至GCP VM 有三種方法,建議三種方法都實際操作使用
1.GCP 內建的 SSH 瀏覽器環境,功能優化齊全,還可以上傳下載檔案 使用體驗佳, 不用另外安裝且免用金鑰 出門在外任何電腦都可以馬上連線,缺點是在自己電腦內頻繁使用 需要再進入 GCP 且使用每次連線等待時間稍嫌麻煩
2.下載並安裝 Google Cloud SDK 執行 SSH 連線,優點:金鑰自動夾帶、桌面化程式連線速度快。
3.使用 CMD 或其他 terminal,ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP,要先設置金鑰檔案,優點:桌面化程式操作介面統一。
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
回到 Compute Engine 點選要執行的 VM 的 SSH
Compute Engine
SSH
進入 GCP 內建的 SSH 瀏覽器環境,可以看到 VM名稱、VM 的使用狀態、使用者等等資訊
sudo apt update && sudo apt upgrade
sudo 是以系統身分執行,apt 是套件管理工具,都是 linux 常見的指令
sudo apt install tasksel
Tasksel 是一款方便創建、刪除、修改執行各項任務的軟體工具
sudo tasksel install lamp-server
安裝設定完成後,就可以在瀏覽器網址列中輸入 Compute Engine 頁面中的該 VM 外部 IP ,靜態網頁部署成功
外部 IP
部署 AWS EC2 遠端主機 + Ubuntu LAMP 環境 + phpmyadmin 安裝 LAMP Server + phpMyAdmin 在 Linux 系統上輕鬆架設網站
phpmyadmin 安裝好後即可使用瀏覽器登入操作資料庫, 但若是要使用其他資料庫軟體連線,仍須設定主機防火牆,防火牆設定可以參考 一小時完成 VPS (Virtual Private Server) 部署 如何遠端連接虛擬主機上的 mySQL 資料庫
金鑰產生及連結GCP可參考 [GCP] Upload file via SFTP
進去後,網站前端顯示的檔案會放在根目錄的 /var/www/html ,所有部署就大功告成🎉🎉🎉
/var/www/html
此時若沒有權限編輯移動/var/www/html 中檔案,有幾種方式可以解決 更改資料夾或是檔案的權限 sudo stat -c %a /var/www/html 查看權限 sudo chmod 777 /var/www/html 將權限更改為最高 777 (會有資安疑慮)
sudo stat -c %a /var/www/html
sudo chmod 777 /var/www/html
下載 Google Cloud SDK 詳細操作可以參考 [GCloud] 使用 gcloud 連線到 Google Cloud Platform 上的 VM
使用 Google Cloud SDK SSH 連線時,會以本機端的使用者身分進入主機 本機端或其他連線、瀏覽器連線都是以各自的使用者身分進入主機、預設情形下使用者的權限互不相干擾
本機端的使用者身分
Google Cloud SDK 會自動連網到瀏覽器做身分確認 並且會在 ~/.ssh 目錄下自動生成公私鑰 google_compute_engine(且自動聯動主機)
~/.ssh
google_compute_engine
若有這個金鑰,使用 FileZilla SFTP 連線時 就不用另外下載使用 PuTTYgen 另外生成金鑰、手動設定 GCP 中繼資料,直接夾帶 ~/.ssh 目錄下自動生成的金鑰即可登入(使用者記得改成本地端的使用者名稱)
ssh -i PATH_TO_PRIVATE_KEY EXTERNAL_IP 輸入 ssh -i 金鑰檔案 外部IP 即可連線至主機
ssh -i PATH_TO_PRIVATE_KEY EXTERNAL_IP
ssh -i 金鑰檔案 外部IP
Google雲端平台 實戰架設LAMP網站主機 我的GCP學習日誌 LAMP 安裝方式 Google Cloud Platform 架站轉移教學
GCP-Rails與GCE、GAE、GKE Iaas、Pass、Saas
[GCP] Upload file via SFTP [GCloud] 使用 gcloud 連線到 Google Cloud Platform 上的 VM 【筆記】解決GCP VM無法SSH的問題 Google Cloud Platform雲端主機!SFTP金鑰產生與連線設定教學(FileZilla) Google Cloud Platform(GCP) MySQL Workbench 連線設定 Google Cloud CLI & SDK Setup 3 Ways to Solve Sftp or Ftp "Permission denied" on Google Cloud
Connecting from App Engine standard environment to Cloud SQL [Day-41] Google Cloud Platform(3)-建立SQL雲端資料庫 筆記-於GCP上建立Mysql-server
部署 AWS EC2 遠端主機 + Ubuntu LAMP 環境 + phpmyadmin 一小時完成 VPS (Virtual Private Server) 部署 如何遠端連接虛擬主機上的 mySQL 資料庫 紀錄 部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin
居然是用 GCP!講解好完整,小技巧實用推。 ssh 連線應該也可以用 PuTTY,設定連線時有 GUI 輔助我覺得蠻讚的。 順便想問小技巧那個摺疊是直接用 <details> 配合 <summary> tag 嗎,好像沒看到 markdown 有提供這個語法?
<details>
<summary>
@torai55 對,就是<details> <summary>,也是無意間看到其他人這樣用覺得好神奇 偷學起來~
此次部署主要分三階段 購買建置雲端虛擬主機(VM)、建置 Ubuntu 主機環境、MySQL 安裝及連線
開始之前可以先大致了解部署流程及簡單系統架構
LAMP 系統(Linux 作業系統、Apache 網頁伺服器、MySQL 資料庫,PHP 程式語言) 類似的執行環境包括 WAMP(Windows OS)、MAMP(Mac OS)等等 其中在相容及整合性上又以 Linux 作業系統最為穩定安全
而 Ubuntu 是基於 Debian 發展而來的 Linux 作業系統 也是這次選擇建置主機的環境系統
GCP(Google Cloud Platform) 提供眾多服務,類似的部署服務又包含 GCE(Google Compute Engine)、GAE(Google App Engine)、GKE(Google Kubernetes Engine 類似於 Docker 原理此不詳述)
GCE 是屬於 IAAS(Infrastructure as a Service),向 Google 買硬體,自己從頭到尾建置主機系統,有極大的調整彈性,但相對的就需要更清楚了解系統環境,AWS Elastic Compute 也屬於這類。 也是這次部署的方法
GAE 是屬於 PAAS(Platform as a Serivce),Google 幫你建置好環境,只管將專案丟上去執行即可。Heroku、AWS Elastic Beanstalk 也屬於這類。 使用 GAE 可以去連結 Cloud SQL(Google 提供的 MySQL 服務)、Cloud Storage 達成完整的動態網頁部署。 官方文件有手把手的測試部署教學
一、購買建置雲端虛擬主機(VM)
有綁定帳單的 Google 帳號即可使用 GCP 服務
1.建立新專案
2.選購虛擬主機及作業系統
左上
導覽選單
>Marketplace
> 下滑至作業系統列 選擇Ubuntu
(若直接建置 Compute Engine VM 執行個體,系統設定的映象檔會是 Debian,一樣可以建置 LAMP,但會與以下的指令操作不同)
若是第一次使用 GCP,Google 有提供 300 美金的折抵金,足夠選用基礎專案折抵費用達一年。 而 Google 有另外提拱永久 免費專案,在一定的硬體規格及使用限制下 可以永久免費的使用 GCP。
1.設定 VM 名稱
2.設定主機區域
可以選擇
asia-east1
台灣的機房,靠近機房傳輸速度較快。 若以永久免費方案的限制下,只可選擇us-east1
、us-west1
和us-central1
3.設定硬體規格
若選擇最基礎陽春的規格
系列 N1
類型 f1-micro
可以永久完全免費 但等等要設定 LAMP 環境及安裝 phpmyadmin 會跑太久,先選擇稍微多一點點核心跟記憶體的規格 多少 CPU 及記憶體可以完全客製化且可以隨時修改,右上有費用估算 (ex. 試用一個月 若覺得 CPU 記憶體實際使用的資源效能太高或太低 ,則可以考慮調整,需求多少選配多少)4.勾選HTTP/HTTPS
3.設置靜態 IP 及防火牆
1.
導覽選單
>VPC 網路
>外部 IP 位置
> 將該 VM 的類型從暫時改為靜態
2.點選左側
防火牆
> 上方建立防火牆規則
IP 來源設置
0.0.0.0/0
(允許所有範圍),tcp 設定3306
(MySQL連結埠)二、建置 Ubuntu 主機環境
藉由 SSH 連線至主機進行相關操作
SSH連線至GCP VM 有三種方法,建議三種方法都實際操作使用
1.GCP 內建的 SSH 瀏覽器環境,功能優化齊全,還可以上傳下載檔案 使用體驗佳, 不用另外安裝且免用金鑰 出門在外任何電腦都可以馬上連線,缺點是在自己電腦內頻繁使用 需要再進入 GCP 且使用每次連線等待時間稍嫌麻煩
2.下載並安裝 Google Cloud SDK 執行 SSH 連線,優點:金鑰自動夾帶、桌面化程式連線速度快。
3.使用 CMD 或其他 terminal,
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
,要先設置金鑰檔案,優點:桌面化程式操作介面統一。回到
Compute Engine
點選要執行的 VM 的SSH
進入 GCP 內建的 SSH 瀏覽器環境,可以看到 VM名稱、VM 的使用狀態、使用者等等資訊
1.檢查系統並更新
sudo apt update && sudo apt upgrade
sudo 是以系統身分執行,apt 是套件管理工具,都是 linux 常見的指令
2.安裝 Tasksel
sudo apt install tasksel
Tasksel 是一款方便創建、刪除、修改執行各項任務的軟體工具
3.用 Tasksel 下載 lamp-server
sudo tasksel install lamp-server
安裝設定完成後,就可以在瀏覽器網址列中輸入
Compute Engine
頁面中的該 VM外部 IP
,靜態網頁部署成功三、MySQL 安裝及連線設定
1.MySQL 安裝設定可以參考
部署 AWS EC2 遠端主機 + Ubuntu LAMP 環境 + phpmyadmin 安裝 LAMP Server + phpMyAdmin 在 Linux 系統上輕鬆架設網站
小技巧
若有碰到相同的檔案在本地端的伺服器能跑,但在虛擬主機上卻不能 可能關係到 PHP 設定檔的不同 或是其他未顯示的錯誤狀況 可以到此路徑的檔案去看錯誤訊息 debug `/var/log/mysql/error.log` 針對不同問題可以進到這路徑的檔案修改 `/etc/php/7.2/apache2/php.ini`2.設定防火牆及連接埠
phpmyadmin 安裝好後即可使用瀏覽器登入操作資料庫, 但若是要使用其他資料庫軟體連線,仍須設定主機防火牆,防火牆設定可以參考 一小時完成 VPS (Virtual Private Server) 部署 如何遠端連接虛擬主機上的 mySQL 資料庫
小技巧
#### 以最高權限 root 執行 `sudo su` 若要跳出 輸入 `exit` or `ctrl + D` #### 測試連接埠開通與否 `telnet 外部IP 測試連接埠` 如 `telnet 35.11.22.33 3306` 測試MySQL連接埠是否開通3.使用 FileZilla 上傳檔案
金鑰產生及連結GCP可參考 [GCP] Upload file via SFTP
進去後,網站前端顯示的檔案會放在根目錄的
/var/www/html
,所有部署就大功告成🎉🎉🎉此時若沒有權限編輯移動
/var/www/html
中檔案,有幾種方式可以解決 更改資料夾或是檔案的權限sudo stat -c %a /var/www/html
查看權限sudo chmod 777 /var/www/html
將權限更改為最高 777 (會有資安疑慮)另一種 SSH 連線方式: Google Cloud SDK
下載 Google Cloud SDK 詳細操作可以參考 [GCloud] 使用 gcloud 連線到 Google Cloud Platform 上的 VM
使用 Google Cloud SDK SSH 連線時,會以
本機端的使用者身分
進入主機 本機端或其他連線、瀏覽器連線都是以各自的使用者身分進入主機、預設情形下使用者的權限互不相干擾Google Cloud SDK 會自動連網到瀏覽器做身分確認 並且會在
~/.ssh
目錄下自動生成公私鑰google_compute_engine
(且自動聯動主機)若有這個金鑰,使用 FileZilla SFTP 連線時 就不用另外下載使用 PuTTYgen 另外生成金鑰、手動設定 GCP 中繼資料,直接夾帶
~/.ssh
目錄下自動生成的金鑰即可登入(使用者記得改成本地端的使用者名稱)也可以藉由這個自動生成的金鑰,使用其他 terminal SSH 連線至主機
ssh -i PATH_TO_PRIVATE_KEY EXTERNAL_IP
輸入ssh -i 金鑰檔案 外部IP
即可連線至主機參考資料
Google雲端平台 實戰架設LAMP網站主機 我的GCP學習日誌 LAMP 安裝方式 Google Cloud Platform 架站轉移教學
GCP-Rails與GCE、GAE、GKE Iaas、Pass、Saas
[GCP] Upload file via SFTP [GCloud] 使用 gcloud 連線到 Google Cloud Platform 上的 VM 【筆記】解決GCP VM無法SSH的問題 Google Cloud Platform雲端主機!SFTP金鑰產生與連線設定教學(FileZilla) Google Cloud Platform(GCP) MySQL Workbench 連線設定 Google Cloud CLI & SDK Setup 3 Ways to Solve Sftp or Ftp "Permission denied" on Google Cloud
Connecting from App Engine standard environment to Cloud SQL [Day-41] Google Cloud Platform(3)-建立SQL雲端資料庫 筆記-於GCP上建立Mysql-server
部署 AWS EC2 遠端主機 + Ubuntu LAMP 環境 + phpmyadmin 一小時完成 VPS (Virtual Private Server) 部署 如何遠端連接虛擬主機上的 mySQL 資料庫 紀錄 部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin