從0到1教你在AWS中部署動態網站Typecho系統

沈唁發表於2022-03-24

Typecho 是使用 PHP 語言開發的一套部落格程式,同時也支援多種資料庫(Mysql, PostgreSQL, SQLite),本篇文章將演示部署Typecho到aws上的過程。

在部署之前需要了解所需要的依賴

  • EC2(亞馬遜彈性雲端計算,Elastic Cloud Compute,簡稱 EC2)
  • RDS(亞馬遜關係型資料庫服務,Relational Database Service,簡稱 RDS)
  • LNMP(Linux、Nginx、MySQL、PHP。此處不需要單獨安裝MySQL)

開通EC2

在AWS的控制檯中,啟動一個Linux系統的EC2例項,我選擇了Ubuntu的映象。

符合條件的免費套餐是 AWS 海外區域賬戶免費套餐,可以通過此連結 進行註冊,探索 100 餘種產品,並使用免費套餐在 AWS 上開始構建。

image-20220316091325573.png

安全組預設只開啟了22埠,測試時可以選擇預設開啟所有安全組,或者新增常用的埠到安全組中。

稽核後如果沒有問題,點選啟動

image-20220316091642961.png

接著需要選擇選擇現有金鑰對或者建立新的金鑰對來使用ssh進行連線,否則只能通過AMI內建的密碼或者 EC2 Instance Connect 進行連線訪問。

可以使用現有的金鑰對,我這裡建立了一個新的,填入金鑰對名稱,點選下載金鑰對,就可以得到一個金鑰名稱.pem檔案。

再次點選啟動,至此,我們所建立的例項正在啟動中。

點選檢視例項詳情,獲取公有 IPv4 DNS進行連線:

image-20220316092739737.png

例如例項的公有 DNS 名稱是ec2-a-b-c-d.us-west-2.compute.amazonaws.com,金鑰對是my_ec2_private_key.pem,請使用以下命令通過 SSH 連線到例項:

ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
更多具體的實操過程可以參考《手把手教你在雲上部署動態網站》

安裝LNMP

我選擇了直接使用LNMP一鍵安裝包

wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && ./install.sh lnmp

指令碼需要使用root使用者執行,所以我們需要先設定下root使用者的密碼

sudo passwd root

使用su root切換到root使用者,再次執行./install.sh lnmp

在安裝時跳過了安裝MySQL,因為我們需要使用RDS,所以不需要安裝。

image-20220316102435535.png

等待安裝完成即可...

安裝完成後可以訪問http://IP/phpinfo.php 來檢視PHP的資訊。

安裝Typecho

Typecho的正式穩定版已經很久沒有釋出了,我最近也在為Typecho貢獻一些程式碼,所以這裡我們優先安裝開發版的程式碼。

先使用lnmp vhost add命令來建立一個站點:

image-20220316111346410.png

建立完成後,預設有一個禁止跨目錄訪問的.user.ini,可以通過lnmp1.8目錄下的tools/remove_open_basedir_restriction.sh指令碼進行移除

./remove_open_basedir_restriction.sh

image-20220316112619289.png

進入到/home/wwwroot/ty.qq52o.cn目錄中下載開發版的原始碼:

cd /home/wwwroot/ty.qq52o.cn
wget https://github.com/typecho/typecho/releases/download/ci/typecho.zip
unzip typecho.zip
chown -R www:www ./*

為了能正常訪問到安裝程式,需要將域名解析到EC2的IP上,所以前往域名所在的服務商新增解析,將對應的域名新增一個cname解析,記錄值為公有 IPv4 DNS

解析成功後訪問就可以看到Typecho所提供的安裝介面

image-20220316112132926.png

點選開始下一步,我們就需要配置資料庫資訊了,但是由於目前沒有安裝,所以我們可以先使用SQLite進行建立,會預設生成一個SQLite的資料庫檔案地址,點選進行安裝即可。

下一步則需要新增管理員的賬號密碼了

image-20220316112956033.png

點選繼續安裝後,就完成了安裝步驟。

image-20220316113046579.png

預設首頁

image-20220316113115173.png

控制檯

image-20220316113157364.png

看到這裡,還沒有結束,因為我們使用的是SQLite儲存,我們需要替換為MySQL儲存,繼續往下看吧

開通RDS

前往aws的控制檯的RDS服務,建立一個MySQL引擎的資料庫

image-20220316113507866.png

在下面的配置中選擇例項配置,設定賬戶密碼,點選建立資料庫,等待資料庫建立成功獲取終端節點和埠。

需要注意資料庫需要和EC2在同一VPC 安全組中。

由於我們剛才使用的是SQLite,選擇需要使用MySQL,所以需要將檔案刪除來重新安裝:

cd /home/wwwroot/ty.qq52o.cn
#filename為剛才建立時自動生成的SQLite檔案
rm usr/filename.db config.inc.php

重新訪問域名,又會出現剛才看見的安裝介面了,輸入剛才獲取的終端節點和埠,以及所配置的賬號密碼:

image-20220316130456401.png

當我們點選開始安裝後卻報錯了:對不起, 無法連線資料庫, 請先檢查資料庫配置再繼續進行安裝

這個表示不存在這個資料庫名為typecho的 database,所以我們需要手動建立一下

#安裝mysql client
apt install mysql-client-core-5.7 

#連線資料庫 將終端節點替換為實際的 回車後輸入密碼再次回車進入資料庫
mysql -uadmin -h終端節點 -p

#執行
create database typecho;

執行成功後,再次點選開始安裝就又見到了建立您的管理員帳號頁面,按照之前的步驟填寫即可。

安裝成功後就可以盡情享用 Typecho 帶來的樂趣~

Typecho 不但輕量高效,僅僅 7 張資料表,加上不足 400KB 的程式碼,就實現了完整的外掛與模板機制。而且原生支援 Markdown 排版語法,易讀更易寫。

加上使用 EC2 + RDS,即使面對突如其來的高訪問量,也能輕鬆應對,提供所需的快速效能、高可用性、安全性。

獲取更多教程:AWS 入門基礎課程

相關文章