最新

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day10 – 轉換EC2第一個面對的問題與AWS中最基本的『網路與資安』

AWS 主機中最棒的工具Security group AWS Security group 功能 Security group的功能很簡單,他只是限定某個特定的IP、Port或是某範圍的IP、Port,限定這些東西能不能進出,可以把它視為一道非常簡單的防火牆, 設定完Security group後,再套用到某些機器上,來限制跟這台機器有關的網路進出,這就是Security group的功能。 AWS Security group的費用 Security group完全是免費的,所以大家可以不用擔心設定錯誤造成費用的產生,不過網路本身是必須收費的,所以一個好的Security group設定,可以幫助我們降低不當的網路流量所產成的費用。 設定AWS Security group 瞭解了Security group的設定後,我們可以來看一下Security group的設定介面: 首先我們來看一下 上方四個頁籤,最左邊的Description與最右邊的Tags,都是針對這一個Security group的設定,用來輔助使用者認出這個Security group而已,

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day09 – Amazon Lightsail 轉 AWS EC2

為何要轉換? AWS 官方說明 <-連結-> 其實就主機資源這件事情是最容易理解的 但就真實應用情境上來說 如果你希望有真實的網路環境使用 可以建立真正的私有網段或者是控制路由等等的功能 Lightsail是無法協助的 因為他的VPC是簡約版的 如果需要完整的周邊功能比如控制路由或與AWS其他幾百項的服務完整結合都還是要轉換到EC2的 轉換方式 轉換方式是由主機產生Snapshot再將這個轉換成AWS EC2 AMI 所以主機一定是需要一段時間停機的 製作方式只要進到主機的控制介面中切換至Snapshots就可以看到『Create snapshot』的按鈕了 這時候點選『Create snapshot』後輸入名稱及點選Create即可產生snapshot 要注意點選Create後會有一瞬間主機會是暫停的狀況來產生快照 會發生SSH斷線或者服務連不到的狀況幾秒 如果你的環境不能當下不能停機要注意這狀況喔 建立過程需要數分鐘(等待) 建立完成 點選右邊的點點就可以看到 點選『Export to Ec2』 確認轉換 告警頁面 這邊資訊很重要因為

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day08 – SSL 並不是不能用 let’s encrypt 只是要換個方式

cloudfront的原站不能用 let's encrypt? 整站套用CDN的時候最怕的是如果我使用了 let's encrypt 結果更新失敗了! 這時候整個網站就都會顯示502 gateway time out 這時候該要怎樣避免這個問題 let's encrypt 的驗證方式 let's encrypt的驗證方式官方參考連結 <--連結--> 傳統上很多教學都是希望用HTTP-01來進行驗證 但是在CDN的環境之下很容易出錯 目前都是建議使用DNS-01 目前很多國際DNS服務都有支持這個方式了 如果還是用台灣傳統IDC代管的可能就無法使用該方式 建議還是用一些國際雲端服務比較安全  使用acme.sh配合Route 53進行證書的申請作業與驗證的方式 因為文章及方法很多 就列出幾篇文章提供大家做為參考 Route 53 Let’s Encrypt wildcard certificate with acme.

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day07 – 讓AWS Cloudfront將主機的附載降低到10%以下, Cloudfront 快取行為設計

快取行為該如何設計 在 Day 05 Amazon Lightsail 也可以套用 CDN (AWS Cloudfront) 的時候建議預設是全部forword不做快取 這樣其實就會失去快取的效果但是最少是網站都是可以瀏覽的狀況 那要如何做快取才是最好的方式? 其實快取的標的基本上是靜態資源 這個靜態資源不一定是指實際有存在的檔案 如果是以php模擬出來的html也是可以接受的存在 快取的作法 在設定完之後如果點到Behaviors因該只有預設的一行 Default (*) 在這邊的意思是指預設或者是說如果沒有其他的條件就可以套用他 在預設都沒有快取之下我們就可以開始針對各種靜態資源進行快取拉 這也是在幾年的經驗之下最保險也是最不會出現意外故障的作法 假設我們的圖片都是png類型的圖片那該怎樣做快取呢? 先點選 Create Behaviors 現在新版的設定不多所以可以比較輕鬆的設定 設定重點 * Path Pattern 是指哪種檔案,如果要將所有png結尾的圖片作快取就可以在這邊填入『*.png』 * Cache Policy 選擇 Mana

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day06 – WordPress 上 Cloudfront 的最大貧頸 SSL

host與https 其實不只是wordpress,任何的框架都有相同的問題 我們都會在程式碼中判斷URL是否正確 如果不符合就就進行301或302跳轉 但是通常的判斷條件只會有URL而不含http或https判定 而wordpress是屬於兩者都會判斷的一套軟體 這時候程式判斷的處理就格外重要 再導入Cloudftont的時這時候我都會建議一定要fotword Hosts參數以避免問題 同時間原站點也是要上SSL證書以避免轉換上的問題 最好的方式一定是 https://URL 進行訪問 Cloudfront 也適用同一個URL是最不容易出狀況的 但是如果預算不允許就要注意這個問題『如何告知您的web server產生的連結均要變更為https』 如果連結都寫好在資料庫還好改但是如果是程式產生的URL就要注意如果沒有處理好 會發生網站以經是https了但是裡面程式產生的URL都還是http造成無法顯示的狀況 發生這種情境最常出現的狀況就是網站破了 因為http的資源被瀏覽器禁止了 這點是相對不容易克服的 如真的在源站無法放SSL證書再來嘗試下面連結 H

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day05 – Amazon Lightsail 也可以套用 CDN (AWS Cloudfront)

何謂CDN 內容傳遞網路(英語:Content Delivery Network或Content Distribution Network,縮寫:CDN)是指一種透過網際網路互相連接的電腦網路系統,利用最靠近每位使用者的伺服器,更快、更可靠地將音樂、圖片、影片、應用程式及其他檔案傳送給使用者,來提供高效能、可擴展性及低成本的網路內容傳遞給使用者。出自維基百科 為何要用CDN CDN其實有很多的好處 1. 讓USER離你的端點進一點,速度快點 2. 快取靜態資源,減低伺服器的負載 3. 降低被攻擊的風險,本土的陽春CDN除外,國際廠商的CDN基本上都幫你抵禦L3、L4的攻擊 4. 隱藏主機,很多人的主機還是低分散的狀態,知道的網站就可以猜說你的其他服務是不是在同一台 其實好處還有很多,只要是走http的服務基本上都一定可以套用到CDN上除非特殊需求不然很少沒辦法做到套用的。 AWS CDN (AWS Cloudfront) 使用說明前文 在列表跟事前準備文章的時候其實已經是一段時間之前了 在這段時間中AWS Lightsail 現在已經整合了Cloudfront 與

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day04 – Amazon Lightsail LAMP 建置方案

OS選擇 基本上如果是php + mysql 基本上OS都是以免費的centos與ubuntu為主 當然其他OS也沒不好只是現有資源都是以這兩個OS為大宗 如果是新專案能選新OS就選新OS避免太快就被淘汰 Linux通常我們做完幾年內除了安全性更新都不大會去大量修改架構 LAMP還是LNMP的選擇 基本上 php跟mysql版本的選擇上都不太會有爭議 都是選擇較新的穩定版本比如現在最新的php是7.4 開發商的選擇我看大部分都是7.2 但是對於apache跟nginx就有很大的爭議了 不過基本上如果是新手我建議是apache配和php是比較簡單的作法 nginx雖說也不難但是相對應的文件上少了許多 常用的 .htaccess 支援程度也是較低的 建置文件 新手一定要看鳥哥這已經是必修課了 但是如果有時間壓力可以參考 linode 或 digitalocean 相應的內容都比一堆blog寫的完整 linode、digitalocean 當然如果是用Lightsail還可以直接選用現成的執行環境 或許有人眼尖看到cPanel 想說很方便! 但是要

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day03 – 傳統感受 虛擬主機 Amazon Lightsail

特色 他就只是個有AWS招牌的VPS 如果您不瞭解啥是VPS 簡配的網路、簡配的負載平衡、檢配的防火強、檢配的規格 除了OS可能會給多一點東西之外一律都是檢配 這邊的簡配是相對的,他相對於linode、godaddy的VPS來說功能性上一點都不差 但是相對於AWS EC2擁有完整功能的VM來說的確少了些方便於擴展性 但是如果需要是可以隨時將Lightsail轉換至AWS EC2的 附帶一題現在Lightsail已經有提供快速的CDN整合服務不用再額外整合免費但是沒有台灣節點的cloudflxxx了 參考連結 使用Lightsail Content Delivery Network改善網站性能 建立方式 先擁有一個AWS帳號 然後登入 廢話 找到Lightsail就點進去準備開主機了 點選Create instance就可以開始建立了 建立主機只有三個重點 1. 選離自己進的主機或者是選客戶近的主機 2. 選自己要的OS 選好之後往下拉有其他選項 3. 建立並下載一把key,這邊需要講到AWS中的一個特點AWS的主機不喜歡用密碼登入,所有人都是用ke

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day02 – php+Mysql 開發可以怎樣進化

何謂進化 多樣性是進化的特徵之一 但在在台灣的IT市場存在著兩種聲音 1. IT環境就是要上雲,Kubernetes 就是帥、microservices才是未來的主流。 2. 簡單就好實體主機跟VM都在自己家或IDC,東西都不要出自己家最安全。 但是思考怎樣的服務才是最適合使用者才是最重要的 Nokia的「科技始終來自於人性」才是IT人始終該去遵循的目標,奧客除外!! 我看過某ISP的雲端部門招牌亂賣AWS lightsail給需要有網路架構的客戶 也看過同業為了業績賣 AWS Shield Advanced 給不適合的客戶 (點下去就是 三萬六美金阿~) 真正符合需要才是IT人要做的事情 為何php+Mysql進化 php+Mysql擁有絕佳的可能性 從單主機小網站到大型網站服務都有他的身影 但是處理好絕對是一件非常困難的事情 程式BUG到系統崩潰都是非常有可能的事 在處理的過程當中就算寫好了程式 環境可能難以配合 我認識的很多RD或IT對於上雲都有一定程度的排斥但是又不得不走 在現在這個想到就可以下下廣告衝衝流量的時代 一台主機不能走天下了

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day01 – 為什麼要寫這個主題以及進化路線

為什麼要寫這個主題 歸納出多套屬於自己的獨特的技術體系因該是每個工程師一直以來的必修功課 從七八年前以Wordpress作出大量的行銷用網頁與電商系統供公司同仁使用 到後幫客戶搬遷與優化各種服務到雲端上 由簡至繁、由繁至簡,一直是一個很大的課題 我們可以使用很複雜但是很棒的工具達成目的,但是絕大部分的人只會希望給我個解決方案直接使用就好 如果凡事都可以那麼簡單就好了 就如同PHP,入門很容易但是要做到專家需要非常大的努力 我在PHP領域中不是個專家,但是我對於PHP底層能怎樣拆分已經練就一身功夫 藉由這次活動整理出對於自身的一個技術體系,整理出到底還有哪邊是可以補足相關技術細節 PHP網站底層進化路線 傳統上大多數的PHP網站本著能用就用一台打天下的形式運行,但就這幾年網路行銷的興起與廣告難度降低,人人都可以對網站進行大幅度的導流,不進行服務進化勢必會造成障礙。就本系列粗估拆分的工作上就可以看出一個網站如果進行拆分可以分出多少服務項目。在整理技術體系的同時也進行自身的提升。 本次進化路線 * VPS(web+db)(Lightsail) * CDN(cl

By Albert Yu

MacOS

macOS 使用終端機修改系统 hosts 設定圖文教學

兩年多前寫的『Windows 10 修改系统 hosts 設定圖文教學』瀏覽數著實讓我非常驚訝,加上常教學同事如何處理macOS修改hosts的問題便把處理過程寫成圖文教學 要修改hosts基本上只需要用到本機中的內建程式『終端機』 當然市面上還有很多工具可以協助修改但是我們以每台MAC都有的工具來說明如何修改 『終端機』要找到終端機上有幾種方法 1.Launchpad內搜尋『終端機』 2.打開Finder -> 選擇左欄的應用程式 -> 打開工具程式資料夾 -> 找到內部的終端機 打開終端機之後輸入『sudo vi /private/etc/hosts』 sudo 目的是為了提升權限 vi 是macOS終端機內建的文字編輯器 輸入後點選return後出現 Password: 此時輸入您的macOS使用者密碼即可 輸入之後就開始編輯/private/etc/hosts 這個檔案 這個檔案是整個系統的預設 hosts檔案 優先權比網卡上的 DNS優先權來得高 只要是這個檔案內有設定的 URL 就不會再往該台macOS外的 DNS詢問

By Albert Yu

System

MacOS SecureCRT 亂碼排除

MacOS 的 SecureCRT 在中文環境當中連線本機會出現中文亂碼 排除這方式為在家目錄下新增一個 .zshrc  Z shell(Zsh)為10.14版本之後MAC預設的命令直譯器 我們可以新增.zshrc作為開啟後自動設定的設定黨 在原生設定當中沒有.zshrc 可以使用該指令新增該檔案 sudo vi ~/.zshrc 在其中新增語系設定 如果安裝系統的時候選擇了中文系統,則把LANG欄位改為: export LC_ALL=zh_TW.UTF-8 export LANG=zh_TW.UTF-8 如果安裝系統的時候選擇的英文系統,則把LANG欄位改為: export LC_ALL=zh_US.UTF-8 export LANG=zh_US.UTF-8

By Albert Yu