如何在Azure上部署一個Azure MySQL Database

前言

最近在公司裡,有在使用Azure雲端服務來架設各式各樣的服務,供測試與部署。

那隨著Azure金錢消耗量很大,負責管理Azure的人慢慢意識到Azure怎麼會這麼燒錢?

後來我慢慢的發現,最後得到下面這張結論圖:

原來是一開始大家就對於Azure的使用上弄錯了方向。其主要原因如下:

  • 不懂雲端運算平台的架構,導致大家都在IaaS層建立資源機器
  • 當然我前二個計畫也是在IaaS上開機器做服務出來,當然我開始了一些改變
    • 去年的時候,第一台機器所對應的計畫,就跟其他人一樣,都是開一台運算資源機器出來,上面架設需要的環境與安裝服務。
    • 第二台機器,一樣也是開資源機器起來,但是跟前一個不同的是,我把所有的服務做容器化,讓服務更好掌控與管理,不過還是一樣,還是需要在機器上建置Docker所需要的必要環境
    • 未來計畫,以Azure來說,會朝向使用PaaS,如「Azure Web App」等
      • 將每個需要的服務分開,並使用Azure MySQL/PgSQL/SQL 等DB的PaaS建立資料庫instance實例,以達到共用資料庫的目的

本文章,主要是要探討的內容如下:

  • 使用Azure上屬於PaaS種類包含
    • 「Azure Web App」與「Azure DB」
    • 以「Azure MySQL DB」服務建立MySQL資料庫

Azure Database介紹

在Azure雲端運算平台上,有現成的資料庫的服務可以使用與建立,那這些也算是PaaS期中的應用之一,其最主要的目的就是可以讓開發者省略設定與安裝資料庫的動作,透過Azure針對資料庫配置好的設定來建立資料庫,這樣的好處如下:

  • 開發者可以專心開發並不需要花費額外的心力在建置與設定資料庫上
  • 對於小型團隊,計畫有很大的幫助

Azure MySQL Database建立步驟

首先,我們可以先登入Azure portal,網址:https://portal.azure.com

登入之後,我們可以看到下面的截圖所示:

接著,點擊右邊的「新增資源」並會看到右邊有可以建置的資料庫種類清單,詳細如下面截圖

我們從上面的截圖可以找到我們要的「MySQL」資料庫,因此我們選擇「適用於 MySQL 的 Azure 資料庫」這個來建立本篇文章所要展示的資料庫

點擊下去之後,會有一些相關的設定需要填寫,如下截圖

因為我已經有建立一個名稱叫做「electric-data」的資料庫了,所以上面的截圖在資料庫名稱有紅色驚嘆號是很正常的。

其他的欄位如資料庫名稱,使用者帳號,密碼以及主機座落的位置以及MySQL版本等都可以自行填寫,這邊只是一個範例。

接著,都填寫完成之後,按下「建立」按鈕就可以開始把需要的資料庫建置起來了。

回到首頁,我們在搜尋欄位地方輸入「MySQL」就可以找到「適用於 MySQL 伺服器的 Azure 資料庫」這個名字,點選下去之後,就會看到所有MySQL資料庫的清單列表。

從上面截圖可以得知,我們有一個叫做「electric-data-store」的資料庫可以選擇,那點擊下去之後,就會有此MySQL資料庫相關設定頁面可以選擇。

下面截圖可以得知,裡面會有Azure MySQL資料庫相關的所有設定

從上面截圖,我們可以知道相關設定如下

  • 資料庫系統管理員帳號與密碼設定
  • 資料庫SSL連線啟動與設定
  • 連線設定「Connection security」

資料庫連線設定

點選左邊列表的「Connection security」,我們可以發現有防火牆規則與SSL連線設定可以設置,那這邊就是加入可以允許連線的IP位址範圍。

結論

本文章中,利用Azure portal管理介面去示範新增一個「Azure MySQL Database」並可以透過上面的資料庫設定頁面可以設定相關與MySQL資料庫有關的設定。

當然,Azure雲端運算平台上面還有其他得資料庫可以新增與使用,這就要留到後面有用到再說吧,不過我覺得其他新增資料庫的方式應該也是大同小異,與新建「MySQL」資料庫的方式不會差太多才對。

淺談雲端服務與市面上的各式雲端運算平台服務

前言

其實這個概念已經是老掉牙了,這個技術大概是在2008年開始有相關研究一直到現在,還是有很多人不知道這個最基礎的概念與雲端運算架構。

為什麼要知道這個概念?不知道不是也可以使用部署相關的服務也可以用的好好的嘛?

這個原因,其實主要如下:

  • 若是知道概念的話,才會知道在雲端運算平台上,每一種價格會是不一樣,需要依照目前自己需要的服務做選擇,而不是每次都在開VM,虛擬機器解決一切的問題,那個花費是很高昂的。
  • 另外一個原因,是因為,我目前服務公司所使用的Azure平台很花錢。
    • 從大家行為模式來看,其實可以發現,大家不會善用Azure平台上的服務
    • 而最終大家都去選擇最花錢的服務:開啟運算VM (IaaS)。

本文章,是要淺談何謂「雲端運算」,雲端運算中分成哪幾層,以及對應到目前市面上的雲端服務有哪幾層。

什麼是雲端運算?

簡單來說就是,把服務,運算等功能都部署到網路上,而網路上主機通常都是有好幾個機房所組織而成的,那整個各地機房組起來就稱為「雲」,那上去的服務你不知道放在哪個地方,只知道你的服務座落在某一個城市或是地點而已,確切的地方不知道。

服務與運算上雲端,有幾個好處:

  • 不需要自行管理伺服器server等相關工作,把那些時間節省並專心在開發服務上
  • 雲端平台上把所有服務與資源都切開,也就是把服務最小化,因此我們要部署一個服務,或是網頁應用程式,並不需要像以前一樣租一台server並從頭到尾建設自己要的環境。
  • 切成一個個服務就對應到一個容器(Container),這樣一來在管理與部署上會顯的更方便
  • 在價錢方面來說,開啟一個運算資源的虛擬機器,毋庸置疑在雲端運算平台上是一個奢侈的行為,而這樣的行為是最貴的,以一個容器化的概念去對應到一個實例(instance),這樣價錢是最便宜且實用

我認為的缺點如下:

  • 每個雲端運算平台服務所提供的功能不盡相同,需要多花額外的時間學習與設定,導致學習曲線較長。
  • 要達到善用雲端運算平台服務,需要有一些前置條件
    • 了解何謂容器化(Docker container)與虛擬機器(VM)的差別
    • 了解部署的整個流程
    • 了解與熟悉Linux作業系統上的指令操作

一般主機租用與雲端運算平台差異

在雲端運算平台這個概念還沒有出來以前,可能聽過,像是VPS,shared hosting以及dedicated hosting等服務。那這個跟雲端運算平台有什麼差別?其實差別蠻大的。

首先,先以傳統主機的介紹如下:

  • shared hosting,共享主機,他的架構很簡單,就是在一台機器上面,切出一個空間,讓你放置需要執行的程式,那這個空間對於整體主機來說所有的資源都是共享的,所以當資源很大的鄰居的時候,就會有很明顯的影響,比如說網頁速度載入會變慢等。慢慢的這種主機效率不佳之後,就逐漸式微了。
  • VPS,Virtual Private Server,全名叫做「虛擬私人主機」,這個指的是,會利用虛擬化的技術將一台實體主機區分成好幾個虛擬機器,這些虛擬機器並不會互相共用自己的資源,所以會比一般的共享主機要來的好。那主要的虛擬化技術有
    • KVM,這個會模擬Kernel出來,所以內部虛擬機器可以自行升級Kernel,也可以在此虛擬機器底下建置多個所需要的Docker container
    • OpenVZ,這個會與實體主機上的Kernel共用,所以無法自行更改Kernel,而也無法模擬出Docker container在此虛擬化出來的機器上
  • Dedicated hosting,實體主機,這其實就是一台或多台主機,完全可以按照自己的需求來建置與部署多個虛擬機器,自由度最高。

所以我們可以從上面得到一個表格:

比較的項目共享主機
Shared Hosting
虛擬私人主機
Virtual Private Server
實體主機
Dedicated Server
自由度?較高最高
資源共享?高,且資源會隨著鄰居而有影響較低,資源都是在一個既定空間上,自己使用無此問題
費用?較低較高
虛擬化技術?無,完全是一個放置網頁專案空間中,可以自行使用配置的資源與空間
效能?較低較高

雲端運算平台

在講雲端運算平台前,需要先知道雲端運算架構圖

首先,我們先從上述的架構圖中的最底層開始。

  • IaaS,指的是「基礎設施即服務」,由Wiki介紹可以知道:
    • 是提供消費者處理、儲存、網路以及各種基礎運算資源,以部署與執行作業系統或應用程式等各種軟體。
    • 可以控制作業系統、儲存裝置、已部署的應用程式,有時也可以有限度地控制特定的網路元件。
    • 與 PaaS 的區別是,用戶需要自己控制底層,實現基礎設施的使用邏輯。
    • 有提供IaaS的服務有:
      1. Amazon EC2
      2. Linode
      3. DigitalOcean
      4. OpenStack
      5. Azure Computing machine
      6. IBM Cloud resource computing machine
  • PaaS,指的是「平台即時服務」,由Wiki可以知道有幾個特點:
    • 提供使用者將雲端基礎設施部署與建立至用戶端
    • 藉此獲得使用程式語言、程式庫與服務
    • 使用者不需要管理與控制雲端基礎設施(包含網路、伺服器、作業系統或儲存)
    • 但是需要控制上層的應用程式部署與應用代管的環境
    • 將軟體研發的平台做為一種服務,以軟體即服務(SaaS)模式交付給用戶
    • PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度
    • PaaS 提供軟體部署平台(runtime),抽象掉了硬體和作業系統細節,可以無縫地擴充(scaling)。
    • 開發者只需要關注自己的業務邏輯與開發,不需要關注底層。
    • 下面這些都屬於 PaaS。
      1. Heroku
      2. RedHat OpenShift
      3. Google App engine
      4. Amazon Elastic Beanstalk
      5. Azure Web App
  • SaaS,「軟體即時服務」,其特性如下:
    1. 在交付模式中雲端集中式代管軟體及其相關的資料,軟體僅需透過網際網路,而不須透過安裝即可使用。
    2. 用戶通常使用精簡用戶端經由一個網頁瀏覽器來存取軟體即服務。
    3. 建立與部署在PaaS上的服務。

雲端運算平台與傳統主機供應商比較

比較項目傳統主機供應商雲端運算平台服務
種類?有共享主機(Shared hosting)
有VPS(Virtual private server)
實體主機(dedicated server)
IaaS
PaaS
SaaS
價格?共享主機最便宜
VPS適中
實體主機較貴
IaaS較貴
PaaS適中
SaaS看提供服務廠商,通常比上述兩者便宜
開發者專注?除了共享主機,其他都需要再花額外的力氣做建置系統建置IaaS需要花額外力氣
利用PaaS部署可以花較多時間在SaaS做開發
服務效率?VPS與實體主機較好IaaS運算較高,但是需要自行調整
PaaS運算度隨著方案選擇做變動
SaaS取決於PaaS方案而變動表現

結論

有此可見,下列要點有:

  • 雲端運算會比一般傳統主機供應商要來的有優勢
    • 主要是把服務與運算資源機器切離,讓開發者可以專心在服務的開發與部署
    • 相關機器的設定與係數的優化就交給雲端運算平台的服務廠商或是專職的DevOps建置的IaaS就好
    • 盡量讓開發者少碰基礎設施運算中的設定越好,以便增加開發上的效率

參考資料

  • https://zh.wikipedia.org/wiki/%E5%9F%BA%E7%A4%8E%E8%A8%AD%E6%96%BD%E5%8D%B3%E6%9C%8D%E5%8B%99
  • https://zh.wikipedia.org/wiki/%E5%B9%B3%E5%8F%B0%E5%8D%B3%E6%9C%8D%E5%8A%A1
  • https://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E5%8D%B3%E6%9C%8D%E5%8A%A1

AWS Workshop(2017/11/17)

前言

在參加MOPCON的時候,因為在Unconf中有舉辦這場演講,所以在因緣際會下,也接到了這場免費的工作坊邀請。(相關連結

這場工作坊Workshop最主要是基礎入門AWS的雲端運算平台,對於我這個沒有使用過AWS來說,是在最適合不過的課程,再加上是免費的,所以二話不說也就報名了。

課程筆記

上課的課程筆記我把它記在Gist上,若有需要可以參考。

最主要的操作課程如下:

  • 建立EC2 and MySQL Database
  • Launch Your Amazon Simple Storage Service(S3)

前置作業

在開始後面的兩個Lab操作之前,務必先要註冊一個AWS的帳號,註冊帳號方式,不在此教學文章裡面,不過網路上很多。還有重要的一點就是,需要有一張信用卡,因為信用卡需要用來預先知道你是否有能力可以付款服務,因此需要信用卡資訊,在註冊成功後,還需要讓AWS象徵性的扣一美元。本次兩個WorkShop是有附教學文件檔的,但礙於是訓練的課程,所以就不會在此公開,需要的人可以寄信向我索取。

那下面的是我濃縮文件上的教學,以及自己改過的版本,讓整體的教學更簡單易懂。因為在課程中,台上帶頭做的講師除帶的較緊湊之外,加上文件並沒有寫的很清楚。在這樣的情況下,我當時與朋友都沒有跟上,我是自己事後看文章的教學成功的。

客戶端需要的環境

這裡指的是你自己的電腦環境,作業系統我建議是Unix-based的。像是Linux發行版本中的Ubuntu, Fedora等都可,不拘,不要Windows就好。雖然在教學文件中是以Windows為主,但是在SSH連線時我覺得異常的難用,因為需要下載Putty與使用PuttyGen來進行連上機器的動作,這兩個東西在我學會Linux相關的作業系統之後,就很少在用了。

建立EC2 and MySQL Database

從本章節開始,會紀錄該如何從無到有建立一台Amazon EC2和MySQL資料庫

因為AWS上所有的服務都是切開的,所以要建立一台機器需要花很多的設定包含內部的子網路,允許Port number的安全規則等都需要一一的設定,因此整個教學步驟會很多。廢話不多說,從下面開始吧!

步驟一

登入AWS並進到開始的畫面。在登入成功之後,會跳轉到下面的頁面。

在左上角的選單中,可以發現到有一個US West…等的字樣,當按下去之後,就可以選擇希望建立要使用的主機地點,地點是可以隨意選擇的。

步驟二

建立一個自己的VPC,首先先從首頁頁面中進入。

接著會看到有一個預設的VPC,我們在這裡自己建立一個,不使用預設的VPC。

接著按下『Create VPC』按鈕會跳出畫面,如下圖所示。

接著在表單裡面依照對應填入

Name tag: My Lab VPC
IPv4 CIDR block: 10.0.0.0/16

如下圖中所示。填入之後按下『Yes, Create』就把VPC建立起來了。

步驟三

在同一個頁面中,點選『Internet Gateways』(如下圖所示)並按下『Yes, Create』按鈕

接著選擇新建立好的『』並點選『Attach to VPC』按鈕把VPC建立(Attach)起來,如下圖所示。建立之後,就會看到剛剛建立的Internet Gateway已經是Attached的狀態了。

接著同一個頁面左邊,選擇『Subnets』並依照下圖建立一個名為: 『Public Subnet 1』的子網路。VPC記得選擇我們剛剛所建立的『My Lab VPC」Availability Zone選擇『us-west-1b』,IPv4 CIDR block選擇『10.0.1.0/24』。接著按下圖中的『Yes, Create』。

接著重複上面的步驟,在建立一個名為『Public Subnet 2』的子網路。Name tag改成『Public Subnet 2』,VPC選擇『My Lab VPC』,Availability Zone選擇『us-west-1c』,IPv4 CIDR block選擇『10.0.2.0/24』,如下圖所示。

接著選擇『Public Subnet 1』,下方Tab切換到『Route Table』並點選連結『』,如下圖。連結的文字不一樣沒有關係,因為每個產生出都是隨機的。

進到Route Table的連結頁面之後,按照下圖所示步驟,把Table設定好,接著按下圖中的『Save』按鈕。Target在點下去之後會有提示填入的值,選擇剛剛所建立的『My Lab IGW』。

『Public Subnet 2』也是像上面的步驟重複一遍。這個時候我們可能不需要在重複做一遍,因為AWS會幫我們把『Public Subnet 2』設計好。不過保險起見,還是重複步驟去確認是否有設定完成。

步驟四

這步驟中,建立我們要的『Instance』。回到AWS console並點選『EC2』。

點選『Launch Instance』按鈕。

從圖中可以看到,有很多映像檔可以選擇。在我參加的Lab中,是選擇第一個『Amazon Linux』作為要啟動的Instance,那這一次在本次教學中,我選擇下方的『Ubuntu 16.04』作為這次要啟動的映像檔,當然這邊我們也可以自行選擇所需要的映像檔。

接著會來到方案的部份,選擇預設的『t2.micro』就好。接著選擇:Next: Configure Instance Details。

接下來在設定部份,需要注意下圖圈起來得部份。選擇剛剛所建立的Subnet Network和VPC。

  • Network: My Lab VPC
  • Subnet: Public Subnet 1
  • Auto-assign Public IP: click Enable

沒問題就按下『Next: Add Storage』,這裡就用預設的設定就好,不需要更動。按下下一步『Next: Add Tags』按鈕。

在設定Add Tags頁面中,按下『Add Tags』接著就按照下圖所示,把需要的Key跟Value填入。並按下『Next: Configure Security Group』。

在『Configure Security Group』設定頁面中,主要是要設定允許可以通過的Port Number並設定清單。按照下圖中的2~3步驟去產生三個協定可以允許通過的Port Number。裡面的步驟1需要注意的是,需要自己填入我們自己取的Security Group名稱和敘述。在最後按下『Review and Launch』按鈕。

在Review步驟中,基本上就是看前面的設定的東西有沒有錯誤,沒問題後按下『Launch』。

這時候需要選擇或是建立自己的Key Pair,選擇新增一個Key Pair(Create New Key Pair),如下圖所示。在按下『Download Key Pair』之後,才可以按下『Launch Instance』。這個Key Pair 的目的是要用來使用SSH連線到主機所使用。

接著顯示出下圖這個畫面,代表Instance就開始啟動中了。

同一頁面中拉下來有『View Instances』的按鈕,點下去就可以回到Instance的清單。

等到Instance的狀態變成如下圖所示,即代表Instance已經建置完成可以開使用了。

接著打開我們的Terminal,依照圖中圈選起來的位置可以找到連線的IP address

接著輸入下面的command把剛剛下載的Key Pair file 權限改成400


chmod 400 peter2ubuntu.pem

接著輸入下面command開始連線


ssh -i "your-key-pair-file.pem" user-name@your-ip-address

連線過去的user name會隨著使用的Image映像檔不一樣。若要確定是哪一種可以點選下圖中的『Connect』按鈕,接著會出現連線的相關資訊。

接著就連線成功了!

Create a VPC security group for the RDS DB Instance—-建立RDS關聯式資料庫Instance

如果有用VPS(Virtual Private Server)相關的服務就會知道,這個EC2機器建立起來只會有memory和CPU,並沒有storage的儲存空間,所以要有儲存空間的話,需要再去使用RDS(Relational Database Instance)建立Relational Database關聯式資料庫。

在建立Database Instance之前,需要先設定一些與建立EC2類似的設定,Subnets子網路和Security Group的規則等。

步驟一

回到AWS console management並點選VPC進入到VPC的頁面(如下圖所示)接著左邊有一個可以捲動的選單,往下拉找到『Security Groups』連結並選擇下去。

接著如下圖裡的步驟標示所示,建立一個給Database的Security Group

記得要選擇VPC為之前所建立的,不要使用預設的VPC。填完之後就按下『Yes, Create』按鈕。

建立之後,會看到清單多了『DBSecurityGroup』可以選擇。依照下圖的數字步驟,來設定Inbound Rules。

按下『Edit』按鈕之後,如下圖所示,可以知道要填入的值,唯一要注意的是,source是要選擇『LabSecurityGroup』的Group ID。

在上圖的同一個頁面中,左邊的捲動菜單選擇『Subnets』子網路的設定。

選擇『Public Subnet 1』注意下面的Availability Zone: 『us-west-1b』。

選擇『Public Subnet 2』注意下面的Availability Zone: 『us-west-1c』,每個人的都不盡相同。

注意自己當初選擇的Zone,在之後建立新的『Private Subnet』給DB Instance時會需要用到。

看過之後,我們可以來建立新的『Private Subnet』了。首先依照下圖方式,建立一個新的Subnet名為『Private Subnet 3』,注意框起來的部份。

接著再去用上面同樣的方法去建立『Private Subnet 4』。

Availability Zone的選擇在這個區域下只有兩個可以選,所以我們選擇的時候,就直接分別選擇:『us-west-1b』與『us-west-1c』(如上兩張圖所示)

接著要建立『DB Subnet Group』,先回到AWS Management Console,並點選RDS。進到RDS的畫面之後,再點選左邊選單的『 Subnet Groups』。

接著按照下圖所示,把剛剛建立的『Private Subnet3』和『Private Subnet4』串成一個Subnet Group。

 

之後重複兩次上圖中的動作,就會變成下圖的樣子。

按下『Create』之後,會回到原來Sunet Group的清單,這時候會沒有顯示剛剛建立的清單,這時候只要按下右上角的圖案,就會顯示剛剛我們所建立的Subnet Group了。

步驟二

上面把Subnet 與Subnet Group設定好之後,回到AWS console management並選擇:RDS(圖中有標示)

進入之後如下圖點選『Get Started Now』。

接著會進到可以選擇要使用的資料庫的畫面,在當天Work Shop的時候,有些人的畫面是新版的,那我還是使用舊版的,下圖也是舊版的,我沒有看過新版介面長怎樣,等真的我也被改版的時候再來更新吧XD。接著點選『MySQL』。

接著點選『Select』按鈕。

MySQL DB server 選擇『Production』

接著下一步之後,可以看到下圖中的DB Instance,預設是比較大的DB Instance Class,我們在這裡調整成最小的DB Instance Class以及其他的設定如下圖一樣一併的調整。

往下拉選單之後,下面有需要填寫相關DB的部份,像是:DB Instance 名稱,使用者名稱,密碼等。如下圖,填完成之後,接著下一步(Next Step)。

接著下圖所示,需要選擇對應的VPC以及Security Group還有設定Database Name。其他的設定預設就好,唯一需要注意的是『Publicly Accessible』的這個選項,預設是『No』,當選擇No的時候,EC2以外的裝置或是機器是無法連近來這台DB server的,當選擇『YES』時,才可以在EC2機器外部連線到這台DB server。

接著設定好之後,捲軸往下拉即可看到『Launch DB Instance』

當按下去之後,就會出現下圖的訊息,代表DB Instance已經完成建立,目前正在建置中,要看最新的DB Instance 的狀態,可以按下下圖中的按鈕。

當圖中的狀態(Status)已經是『Available』的時候,代表DB Instance已經建置完成了。

在下圖中有兩個需要注意的地方,一個是DB的狀態,還有End Point,End Point指的是連線DB的主機位址,這個在EC2內部裡面是需要的。這樣才可以知道DB要連線到哪一台主機。

步驟三

完成建置DB Instance之後,我們就要來使用先前建置好的EC2機器來進行連線到我們建置好的DB Instance把這兩個連接起來。

從這裡開始會跟Lab上面的會有出入,因為如果是以這篇的EC2主機的話,用的是Ubuntu的主機,所以這篇下面也是以Ubuntu的主機作為基礎。

而Lab上面的則是以:yum等指令為主。

首先先用SSH連線到主機。


ssh -i "your-key-pair-file.pem" user-name@ip-address

更新mirror連結與位址


sudo apt-get update

安裝 Nginx以及PHP


sudo apt-get install nginx

在瀏覽器輸入IP Address得到下面的頁面。

安裝MySQL server


sudo apt-get install mysql-server

會要求設定root password

連線到剛剛我們設定好的MySQL DB Instance


mysql -h db.choi5coyenv6.us-west-2.rds.amazonaws.com -u your-user-name -p

登入成功之後,如下圖所示。

執行查找Database name


select database();

接著會如下圖所示。

安裝:php-cli, php-fpm, php-mysql等套件。


sudo apt-get install php-cli php-fpm php-mysql

安裝(可選/參考)php-curl, php-mcrypt等套件。


sudo apt-get install php-curl php-mcrypt

編輯php.ini檔案並找到下面的設定值改成0


sudo vim /etc/php/7.0/fpm/php.ini

# In php.ini 檔案中找到下面的值改成0

cgi.fix_pathinfo=0

重新啟動php-fpm的服務


sudo systemctl restart php7.0-fpm

# 等價下列的command,兩者皆可,上面印出的訊息較多。

sudo service restart php7.0-fpm

設定Nginx config file設定檔


sudo vim /etc/nginx/sites-available/default

#  把檔案改成下列的形式

# 要改的地方為:index.php, server_domain_or_IP

# location ~ \.php$ 以及 location ~ /\.ht的部份

 

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;

server_name server_domain_or_IP;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}

測試Nginx 的語法是否正確,語法正確後,接著重新啟動Nginx服務


sudo nginx -t

sudo service nginx restart

接下來建造一個PHP 測試檔案,如下指令。


sudo vim /var/www/html/info.php

info.php內容


<?php

phpinfo();

接著就會看到類似下面的圖phpinfo的圖了。

測驗完成之後,記得把測試檔案刪除。


sudo rm /var/www/html/info.php

參考資料
相關文章
  • Create an alarm in CloudWatch and SNS service (Lab 1 continuation)
  • Launch Your Amazon Simple Storage Service(S3)(Lab 2)

Azure 雲端服務起步走—-架設 Linux 虛擬機及 LAMP 服務

在因緣之下,接觸了 Azure 雲端服務,我想說建立一個自己熟悉的 server ,應該不會很難吧,覺得跟我在使用 VPS(Virtual Private Server) 一樣簡易,實際上發現還是有差別的,有些步驟還有元件分開的,我猜是因為雲端運算架構的關係吧,下面就開始介紹怎麼建置一個 Linux 虛擬機器。

第一步:當然要先取得試用帳號,這步當然很重要,不然連一個資源建立,M$ 都不會讓你建立的….

第二步:登入 Azure 來到下圖的一開始資源首頁。

azure

第三步:左邊的選單欄,黑色部份選擇虛擬機器傳統,我選擇傳統,其實我頁不知道跟非傳統差別在哪裡,因為我看起來設定都是差不多的,我猜可能差在後面在部署上的架構會不太一樣吧。

第四步:接著會彈出一個框,列出目前在運行虛擬主機(傳統)的清單,因為我已經事先建立好一個,所以在圖上會顯示有一個名字叫做 open-data 的虛擬機器。

第五步:按下新增,接著會跳出很多個圖示,這邊可以自由選擇建置作業系統虛擬主機,或是一個 Databse server 我們在這邊選擇的是 Ubuntu Server,因為我們要建置的是一個 Linux 環境,我看過整個作業系統,目前只提供 Ubuntu 和 Windows server 其他的 Linux 發行套件沒有提供,像是 Fedora,FreeBSD 等。

azure

第六步:我們選擇好之後,Ubuntu Server 會有兩種長期支援發行版本供我們選擇,一個是 12.04 另一個是 14.04 ,兩者都是 LTS (Long Term Support) 這個版本指的是內部套件與核心會維護五年,因此叫做長期支援,如果沒有特殊偏好或需求就選14.04 LTS 吧。

第七步:選擇好之後,下面會要我們選擇部署的資源類型,我選擇傳統,接著按下建立。

第八步:到了這裡就會出現要填寫 VM 相關的資訊,前面打星號的就是重要,必填的部分。

第九步:位置的部分,可以使用離台灣比較近的地方,這樣連線會比較快一點(? 不過錢的部分當然還是會差一點。至於訂價層的部分,就是可以選擇需你機器的大小,像是可以選擇比較大的 CPU 運算核心或是記憶體 RAM 可以選擇大一點,還有硬碟的大小,最低就是 30GB,這裡我想使用最低 DS1 標準就夠了,我自己租的 VPS 都比最低方案還要再低的規格了,如果沒有特別需求,架設 sever 跑服務的話,DS1 標準我覺得很夠用了。

SSH 部分,因為一開始 Linux 部署好之後是沒有安裝桌面環境的,所以會先預設使用 SSH來連線,這裡可以選擇公鑰金鑰交換方式連線與使用密碼,密碼是比較簡單的方式,因此這裡我選擇使用密碼。

第十步:選擇好與填答完之後,一個 server 相關資訊就完成了,接著就可以按下建立了。在建立過程狀態,可以畫面看到右上方有一個鈴鐺,會顯示目前建立虛擬機的狀況。

azure

第十一步:接著建立完成後,會顯示建立虛擬機器成功等字樣,這樣虛擬機就部署完成了。接著按下左邊虛擬機器(傳統)回到虛擬機器列表,按下剛建好的虛擬主機,這個時候會跳出機器的相關資訊,像是 CPU 的使用率,還有目前的狀態,右邊會有一個設定,包含重設密碼,監控資源,開機診斷等。

azure

第十二步:我們可以試著連線到主機,按照上一步,選擇剛剛建好的主機,按下管理下面的屬性,會出現 IP 位址相關,與 SSH 相關連線,把連線的資訊複製下來,接著使用 PUTTY 連線,就 OK 了。

第十三步:接著就會看到下面這個樣子。

azure

第十四步:接著輸入下面的指令,更新機器上的套件。


sudo apt-get update

第十五步:更新完之後,就可以按照這篇教學安裝 LAMP server 了。

第十六步:這邊補充一下,可以考慮不用安裝桌面環境,原因是因為桌面環境要耗掉一些記憶體 RAM,雖然最低方案記憶體有 3.5G,不過安裝了桌面環境運行還是要耗掉一些的。所以不用安裝就不用安裝。

第十七步:再來就是架設好 LAMP server 之後,需要設定讓外部能夠連網近來,因為預設連線都是關閉的。所以要開起來,因此點擊左邊列表,選擇雲端服務(傳統),上面這個網站URL 就是這個虛擬機所配發的網址。

azure

第十八步:因為要設定對外的 port,所以再回到虛擬機器(傳統),接著按照截圖方式選擇到端點,按下新增端點,設定對外的 port ,截圖中我已經設定了 port 80,不然裡面列表就只有 port 22 而已。設定後,等跑完就完成了。

azure

[後記]

如果有做重設密碼的話,就需要重新設定 SSH 組態,位置在下方的截圖。還有做一些相關設定的動作,建議是先離開連線之後再做,以確保設定可以正常執行,雖然設定相關的動作,機器會預先把連線關閉。

azure

[參考文章]

在 Azure 上架設 Linux VM 及 LAMP 服務