關鍵詞:
1.新建aws ec2實例
2.使用putty連接到aws ec2 實例(SSH協議)
3.使用filezilla連接到aws ec2實例(SFTP協議)
4.在aws ec2上部署apache服務器(lamp)
5.配置安全組使aws ec2實例能被外網訪問
6.彈性IP(EIP)
朋友想搭一個境外網站,找我幫忙,希望服務器、域名都在境外。我沒有在境外建站的經歷,只能先嘗試。於是上網搜索了一下境外服務器,大家比較常用的是Digital Ocean和AWS,我索性打開這兩家的官網,打算自己比較一下,后來選擇AWS,是因為他的官網打開的比Digital Ocean快,就這一點,我義無反顧地選擇了AWS。
簡單介紹一下,AWS即Amazon Web Services,是Amazon提供的建站平台,在上面可以購買空間、數據庫、雲計算等服務,官網地址https://aws.amazon.com/。要使用它的服務首先要注冊一個賬號,注冊的過程中會需要用到信用卡,還會接到一個電話要求輸入網站上提供的PIN碼用於驗證你填的手機號,跟隨指引,基本上很簡單就能完成。
第一部分 新建EC2例
注冊完成后登錄管理控制台,控制台首頁可以看到幾個選項卡:
很好理解,第一個就是構建虛擬機,以我的經驗,建站的空間就在這里申請。點一下啟動虛擬機,進入如下界面
這是我首次接觸EC2這個概念,搜索了一下,它是指Elastic Compute Cloud,即彈性雲計算,和國內的雲虛擬主機的概念差不多,一個EC2實例就是一個雲虛擬主機。接下來的步驟就是為這個實例命個名:
然后選擇操作系統,點擊每個操作系統會有簡介,可以根據自己的技術方向選擇,由於我一個都不熟,於是我打算選Amazon的親兒子Amazon Linux AMI,這也是經驗之談,既然是Amazon的主機,用Amazon定制的Linux肯定沒毛病。
然后選擇實例類型,這是一個很人性化的界面,直接放了一個免費的類型,絕不會利用你看不懂就訛你錢,如果你是土豪並且有點文化可以選擇更多選項,像我這種掙扎在溫飽線的直接很HAPPY的選了免費型然后下一步
然后就是創建秘鑰,給這個秘鑰命個名,然后下載秘鑰文件后保存,這個秘鑰文件(*.pem)很重要
下載之后,點擊創建實例,就OK了。
然后返回控制台首頁,可以看到最近訪問的服務下面有個EC2,直接點擊EC2,就進入到EC2控制面板,然后點擊正在運行的實例
可以看到我們剛才創建的實例MyFirstInstance。
第二部分 使用PuTTY連接到實例(使用SSH協議)
接下來的工作就是要想辦法連接上這台主機,方便我們在上面部署網站。右鍵點擊實例,在菜單中選擇連接,會顯示連接方式
這上面介紹了兩種方式,一種是使用SSH客戶端,一種是直接從瀏覽器連接,選擇直接從瀏覽器連接時會提示使用Chrome是不行的,請使用Firefox或者IE9+,並且還要安裝Java。
java我已經很熟悉了實在懶得重復這個工作,而且僅僅為了連一下虛擬主機在我電腦上裝java我覺得不划算(雖然我還是默默安裝了個firefox),而且SSH客戶端對我而言還是個新事物我比較有好奇心,我毫不猶豫決定選擇SSH客戶端,並且選擇了上面提到的PuTTY客戶端。下面介紹下如何用PuTTY客戶端連接到EC2實例。
首先下載安裝PuTTY的過程就不說了,和一般軟件安裝過程一樣並且這個超級簡單。然后我們要做一些准備工作,在正在運行的實例列表中,選擇剛才新建的實例,頁面底部可以看到實例的詳細信息,我們要記住的是實例的Public DNS(IPv4)
然后我們要對剛才創建實例時下載的密鑰文件進行格式轉換,從PEM格式轉成PPK格式才能在PuTTY上使用,PuTTY自帶轉換工具PuTTYgen,安裝PuTTY后在開始菜單很容易找到PuTTYgen工具,啟動它
然后點擊Load,加載剛才下載的私鑰pem文件,默認情況下選擇文件的界面那里文件類型是*。ppk,我們要改成ALL FILES才能看到PEM文件
然后Type of key to generate那里選擇SSH-2 RSA,
然后點擊Save private key,就可保存為PPK文件了,這個PPK文件就是PuTTY可以用的密鑰文件,在一會兒的連接過程中會用到。
准備工作做完了,接下來啟動PuTTY,在左邊的目錄中選擇Session,一般情況下啟動時默認就是Session界面,在HostName中輸入user_name@public_dns_name
username按之前選的操作系統有幾種不同的值:
-
對於 Amazon Linux AMI,用戶名為
ec2-user
。 -
對於 RHEL AMI,用戶名稱是
ec2-user
或root
。 -
對於 Ubuntu AMI,用戶名稱是
ubuntu
或root
。 -
對於 Centos AMI,用戶名稱是
centos
。 -
對於 Fedora AMI,用戶名稱是
ec2-user
。 -
對於 SUSE,用戶名稱是
ec2-user
或root
。
public_dns_name就是前面提到的必須要記住的Public DNS
然后Connection type選擇SSH
然后通過左邊的目錄切換到Conncetion——SSH——Auth,在右邊點擊Browse,選擇前面生成的PPK文件,然后切換回Session頁面,點擊Save,可以保存這些配置以供下次直接使用,點擊Open可以連接到EC2
下面是連接成功后的界面,就是Linux系統的命令窗口,在這個窗口通過命令可以執行一切我們希望的操作,部署網站就靠它完成。
第三部分 使用FileZilla連接到實例(使用SFTP協議)
這是一個題外話,但它介紹的內容也在后面的工作中承擔了很重要的作用:從Windows上傳文件到EC2實例中的Linux系統。使用PuTTY自帶的工具PSCP(基於命令的工具),或者WinSCP(基於windows GUI的工具)也可以從windows上傳文件到遠程Linux,為什么我選擇了FileZilla?理由很簡單,一是我恰好裝了FileZilla並且用的比較熟練,二是我想試試FileZilla行不行,因為我以前一直用FTP協議連接遠程服務器,今天突然接觸到SSH協議,然后我就專門查了一下FTP和SSH區別,查的過程中別的沒記住,倒是記住了SFTP這樣一個由二者結合的協議,然后以前用FileZilla的時候有印象在選擇傳輸協議時有SFTP這個選項,所以想試試可不可以通過SFTP協議連接到EC2。
我啟動FileZilla,下面的一切都憑經驗進行
新建站點AWS,主機欄輸入Public DNS,端口輸22,協議選擇SFTP,登錄類型選擇密鑰文件,用戶前面解釋過了填ec2-user,密鑰文件選擇之前轉換成的PPK文件,其它的不管,點擊連接,由於是境外服務器網絡不穩定,經過多次嘗試后終於還是連接成功了,然后我還上傳了一個httpd-2.2.32.tar.gz文件,用於部署apache服務器的。
第四部分 部署Apache服務器
在Linux部署Apache服務器的步驟,常見於LAMP環境搭建的教程里面。LAMP,即Linux + Apache + MySQL + PHP,有時候M也指MariaDB。搜索amazon ec2、lamp關鍵詞,很容易就能找到在ec2上部署apache的教程,然而我一開始並不知道lamp這個概念,於是一直搜索在linux上部署apache的教程,查出來的教程相當復雜,而且我還各種沒成功。后來總算讓我找到了一篇,原來在ec2上部署apache是一件非常輕松的事情,只需要如下幾行代碼:
sudo yum update sudo yum install gcc gcc-c++ make sudo yum install apache mysql php php-mysql mysql-server
上面第一行是更新系統環境,第2行是安裝C++編譯環境,第3行是安裝apache、mysql、php等組件。上述代碼運行完成后apache就成功安裝了。
測試apache是否成功安裝的方法:
apachectl -v
httpd -v
回顯版本號表示已經安裝成功
安裝完apache后,接下來啟動apache web服務:
sudo service httpd start
加sudo是為了以管理員權限運行該命令,一般情況下這條命令需要有sudo才會運行成功。
在官方的API文檔里面看的更清楚:
第五部分 測試Apache服務器
在安裝apache服務器並啟動httpd服務后,接下來需要測試該服務器能否被正常訪問。在瀏覽器中輸入前面提到的Public DNS,應該就可以看到Apache測試頁面了。但一般情況下,只做到這一步的話,還看不到測試頁面,因為還需設置下安全組規則。在EC2控制面板切到安全組頁面
然后在右邊選中MyFirstInstance實例后,右鍵單擊它,在菜單中選擇“編輯入站規則”:
在“編輯入站規則”中添加下面這樣一條規則:
它的含義是允許任何地方通過HTTP協議80端口訪問本實例,也就是通過網頁方式訪問本實例。這個時候基本上就大功告成了,在瀏覽器輸入Public DNS或者公有IP就能看到Apache測試頁了。
第六部分 關於彈性IP(EIP,Elastic IP)
通常情況下,我們申請的EC2實例在每次重啟之后,Public DNS和公有IP都會改變,如果是要做一個網站,服務器IP經常改變,那域名解析也要跟着變,這是個很麻煩的事情。這時候就需要申請EIP,並將EIP與EC2實例關聯,這個EIP就可以作為這個實例的永久IP,除非我們手動取消關聯。關聯之后,我們可以在瀏覽器地址欄輸入EIP來訪問EC2實例。
申請EIP的方法:在EC2控制面板找到“彈性IP”頁面
然后在右邊選擇“分配新地址”
按照指引分配好新地址后,回到彈性IP頁面,右鍵點擊我們剛才申請的EIP,選擇關聯地址,將前面的EC2實例關聯上去
然后就大功告成。
以上是這兩天的學習成果,很少,但學習過程也是十分繁瑣復雜,查了不少資料走了不少彎路浪費了不少時間,所以才想寫一篇筆記記下來,讓以后少走彎路。后續將繼續學習在ec2上運行php的過程,在amazon申請域名並綁定到ec2實例的過程,逐步將網站建起來,學習過程中的經驗也會拿出來分享。