使用SAE和GitCafe搭建網(wǎng)站的過程講解

在PaaS領(lǐng)域目前看來新浪云走的比較早,也比較成熟。相比IaaS,PaaS更能為企業(yè)或個(gè)人帶來成本上的節(jié)約。本文以php為例,記錄了如何在新浪云上注冊(cè)創(chuàng)建自己的web項(xiàng)目,如何在本地構(gòu)建模擬環(huán)境,并使用Gitcafe的自動(dòng)部署功能,使得只需要進(jìn)行一次git push即可將代碼發(fā)布到新浪云上。不了解的朋友可以參考。
創(chuàng)建應(yīng)用
先是各種注冊(cè)。新浪云需要使用新浪微博的帳號(hào)才能登錄和使用。
由于新浪云屬于PaaS(即提供軟件運(yùn)行環(huán)境,而不是虛擬主機(jī)或者空間),收費(fèi)模式是根據(jù)訪問量,按量收費(fèi)的,所以我們無需關(guān)注服務(wù)器的任何指標(biāo),我們要做的只是創(chuàng)建一個(gè)應(yīng)用。目前,新浪云需要進(jìn)行實(shí)名認(rèn)證才能創(chuàng)建2個(gè)以上的應(yīng)用,所以推薦進(jìn)行實(shí)名認(rèn)證。
創(chuàng)建應(yīng)用的界面如下:
可以看到,我們的應(yīng)用將被host在sinaapp.com這個(gè)域名下,我們能夠設(shè)置的子域名(App name)顯然是全局唯一的,先到先得。除了應(yīng)用的基本信息外,還需要選擇應(yīng)用使用的編程語言、框架、模板等。PHP語言的框架和模板十分豐富,而Python和Java則沒有什么可用的框架或者模板。我們這里使用PHP空應(yīng)用,創(chuàng)建的的應(yīng)用名假設(shè)為testapp,下面會(huì)用到。
創(chuàng)建好應(yīng)用之后,需要配置應(yīng)用所使用的各種軟件或平臺(tái)服務(wù),幾個(gè)比較基本的配置如下:
在應(yīng)用管理-代碼管理中,創(chuàng)建一個(gè)版本,這個(gè)版本號(hào)建議填1
在服務(wù)管理-MySQL中,開啟MySQL的功能。除非你的應(yīng)用不需要數(shù)據(jù)庫(kù)支持,一般MySQL是肯定要開的。管理MySQL使用的是phpmyadmin。
默認(rèn)情況下,在代碼管理中,可以將代碼打包上傳到應(yīng)用,或者使用SVN提交,關(guān)于SVN參見代碼管理中的說明。我們的重點(diǎn)是使用Git進(jìn)行提交。
Gitcafe上創(chuàng)建代碼倉(cāng)庫(kù)
注冊(cè)
為了使用Git提交代碼,我們注冊(cè)使用Gitcafe。因?yàn)镚itcafe可以設(shè)置自動(dòng)將代碼推送到新浪云上。
GitCafe是一個(gè)跟Github十分相似的代碼托管平臺(tái),本人體驗(yàn)下來感覺還可以,除了界面綠的我扎眼外…
注冊(cè)好之后,為了方便進(jìn)行g(shù)it提交可以配置一下公鑰。找到你個(gè)人電腦如下路徑的文件:
cd ~/.ssh/id_rsa.pub
將其中的內(nèi)容復(fù)制粘貼到Gitcafe網(wǎng)站的SSH公鑰管理處,這樣以后在提交代碼的時(shí)候就不需要輸入用戶名和密碼了。
創(chuàng)建倉(cāng)庫(kù)
我們需要?jiǎng)?chuàng)建一個(gè)倉(cāng)庫(kù),這更github沒有什么區(qū)別,唯一的重點(diǎn)在于設(shè)置自動(dòng)部署到SAE
第一次使用這個(gè)功能可能需要你OAuth驗(yàn)證一下,這很簡(jiǎn)單。然后Gitcafe就可以fetch到你在新浪上的創(chuàng)建的應(yīng)用和相應(yīng)的版本了。選好保存即可。
目前Gitcafe對(duì)新浪的授權(quán)沒有做自動(dòng)刷新,這也許是新浪的Policy,這樣會(huì)導(dǎo)致幾天以后,這個(gè)授權(quán)會(huì)過期,屆時(shí)可能需要重新綁定一下。希望Gitcafe能夠改善一下。
創(chuàng)建好應(yīng)用后,可以根據(jù)提示在本地初始化應(yīng)用并提交初始化到Gitcafe。不過這里,為了給后面本地模擬SAE環(huán)境埋下伏筆,我對(duì)命令稍作改變:
首先在你本地合適的地方創(chuàng)建一個(gè)文件夾專門用來存放SAE的應(yīng)用代碼,比如sae:
mkdir sae
然后使用如下命令:
cd sae
mkdir testapp
cd testapp
mkdir 1
cd 1
git init
touch README.md
git add README.md
git commit -m 'first commit'
git remote add origin ...
git push -u origin master
上面的命令在遠(yuǎn)程倉(cāng)庫(kù)地址的地方留了...,你需要自己填寫,這取決于你的遠(yuǎn)程倉(cāng)庫(kù)地址。另外值得注意的是,需要?jiǎng)?chuàng)建一個(gè)以app名命名的文件夾,而且這個(gè)文件夾下需要有一個(gè)1的文件夾,這里的1代表app的版本號(hào),代碼部分是放在1這個(gè)文件夾下的。
如果上面的步驟沒有問題的話,此時(shí)由于我們創(chuàng)建了README.md,所以這個(gè)文件會(huì)被自動(dòng)同步到新浪云上。
配置本地環(huán)境
接下來我們需要配置一個(gè)本地執(zhí)行環(huán)境,以模擬SAE的運(yùn)行環(huán)境,從而調(diào)試代碼。從這里下載最新的模擬環(huán)境,這里以PHP環(huán)境為例
下載解壓后,可以發(fā)現(xiàn),模擬環(huán)境自帶apache、php、redis等軟件,我們需要配置sae.conf文件,下面是這個(gè)文件重要配置項(xiàng)的說明:
DocumentRoot sae應(yīng)用的根路徑,相當(dāng)于我們上面創(chuàng)建的sae文件夾,模擬環(huán)境每次都是從這個(gè)文件夾下的文件夾來判斷有哪些應(yīng)用
http_port 模擬環(huán)境啟動(dòng)后apache所使用的http端口
mysql_* 模擬環(huán)境并沒有自帶mysql,需要使用你本地或者遠(yuǎn)程的mysql,所以需要在這里配置這些參數(shù)
配置好這些后,用管理員身份啟動(dòng)init.cmd
如果需要修改php的配置的話,可能需要修改php.sae這個(gè)文件。這個(gè)文件實(shí)際上就是一個(gè)php的配置文件,模擬器每次啟動(dòng)的時(shí)候,都會(huì)把php.sae的內(nèi)容復(fù)制到php.ini中。不過這里可能有一個(gè)bug,對(duì)于php.sae中的配置項(xiàng)disable_functions不能正確的復(fù)制到php.ini中,導(dǎo)致無法正常使用模擬環(huán)境,不知道目前修復(fù)了沒有。我的解決辦法是在php.sae中把disable_functions的值留空。
模擬環(huán)境啟動(dòng)后,可以在本地通過http://應(yīng)用名.sinaapp.com:端口的形式來訪問應(yīng)用,比如:http://testapp.sinaapp.com:8081
模擬環(huán)境會(huì)在代碼目錄下創(chuàng)建config.yaml或者.appconfig,這兩個(gè)文件是不能通過代碼包的方式上傳到SAE的,否則會(huì)出錯(cuò)。所以,我們需要在.gitignore中忽略這兩個(gè)文件,讓它們不被提交到Gitcafe,于是就不會(huì)被傳到SAE。
如果將來有第二個(gè)應(yīng)用的話,只需要在sae目錄下創(chuàng)建相應(yīng)的app名字命名的文件夾和版本文件夾即可,模擬器會(huì)自動(dòng)識(shí)別它們。當(dāng)然你也可以使用模擬器的相關(guān)命令完整對(duì)應(yīng)用的管理操作。
使用mysql
為了在模擬環(huán)境中使用mysql,除了上面提到的基本配置外,還有兩點(diǎn)需要注意:
mysql數(shù)據(jù)庫(kù)名需要是app_+應(yīng)用名的形式,比如應(yīng)用名為testapp,那么對(duì)應(yīng)的mysql數(shù)據(jù)庫(kù)名必須是app_testapp
在php中訪問數(shù)據(jù)庫(kù)需要使用SAE定義好的常量,在實(shí)際的環(huán)境中也是這樣的。
下面是一個(gè)使用pdo連接數(shù)據(jù)庫(kù)的代碼:
$dbh = 'mysql:host=' . SAE_MYSQL_HOST_M . ';port=' . SAE_MYSQL_PORT . ';dbname=' . SAE_MYSQL_DB;
$ops = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
$ops = array();
return new PDO($dbh, SAE_MYSQL_USER, SAE_MYSQL_PASS, $ops);
相關(guān)文章
醫(yī)療行業(yè)怎么做好網(wǎng)站建設(shè)?建站注意事項(xiàng)及經(jīng)驗(yàn)
踏足互聯(lián)網(wǎng),醫(yī)療行業(yè)可以將自身優(yōu)勢(shì)資源整合到網(wǎng)站中去,為大家提供病理知識(shí)、在線咨詢或者預(yù)約就診服務(wù)等。那么如何做好醫(yī)療行業(yè)的網(wǎng)站建設(shè)呢?本期為大家分享一些在建站2016-05-24不懂編程能建站嗎?一個(gè)自助建站高手養(yǎng)成記
不懂編程能建站嗎?對(duì)于這些非技術(shù)型站長(zhǎng)來說,使用自助建站工具建設(shè)網(wǎng)站不失為一種好的途徑。作為建站模式的后起之秀,自助建站其歷史雖短,但因其建站的“快、準(zhǔn)、省”而2016-05-16建站的時(shí)候怎么判斷產(chǎn)品設(shè)計(jì)的抄襲/借鑒與創(chuàng)新?
建站的時(shí)候怎么判斷產(chǎn)品設(shè)計(jì)的抄襲、借鑒與創(chuàng)新?很多時(shí)候,我們建站都有雷同之處,怎么去判斷網(wǎng)站是否是抄襲,借鑒還是創(chuàng)新呢?下面我們就來看看詳細(xì)的內(nèi)容分析2016-05-12- 如何搭一個(gè)網(wǎng)站,我估計(jì)很多人都有這個(gè)沖動(dòng)想去搭建一個(gè)屬于自己的網(wǎng)絡(luò)空間,但是苦于不知道從何下手,或者因?yàn)椴恢浪卸嗌?,而望而卻步,其實(shí)搭建網(wǎng)站沒有你想的那么復(fù)2016-05-09
微企點(diǎn)如何在一片紅海的建站市場(chǎng)里突圍?
微企點(diǎn)是H5自助建站和網(wǎng)頁制作平臺(tái),從個(gè)人到企業(yè)、機(jī)構(gòu)都可以免費(fèi)用微企點(diǎn)建站做網(wǎng)頁。目前建站模板、主機(jī)空間、流量、域名捆綁等均可以免費(fèi)使用,那么微企點(diǎn)如何在一片紅2016-04-28建站新手應(yīng)如何選擇建站系統(tǒng)?建站三個(gè)重要要素
建站新手應(yīng)如何選擇建站系統(tǒng)?相信對(duì)于新手來說并不是很清楚吧,市場(chǎng)上建站系統(tǒng)大多都是魚目亂珠,各位新手朋友們?cè)谶x擇建站系統(tǒng)時(shí)要擦亮眼睛啦!下面就為大家介紹建站三個(gè)重2016-04-14谷歌手機(jī)站優(yōu)化指南之移動(dòng)建站十大原則
谷歌官方在Google AdSense十周年講座上發(fā)布了移動(dòng)建站十大原則,由于是PPT形式,所以小生把它整理成文字版的移動(dòng)網(wǎng)站建站原則,希望對(duì)大家有所幫助和啟發(fā)2016-03-31- 使用模板前需要注意什么?很多朋友都不是很清楚,所以下面小編就為大家分享模板建站不可不防的三大陷阱,希望能對(duì)大家有所幫助2016-03-20
- 如何使用免費(fèi)版建站并綁定自己的頂級(jí)域名?今天小編就為大家介紹如何不花一分錢用免費(fèi)版建站綁定自己的域名方法,對(duì)于站長(zhǎng)來說是個(gè)非常不錯(cuò)的文章,一起來看看吧2016-03-17
網(wǎng)站的用戶體驗(yàn)有哪些呢? 建站從多方面做起進(jìn)步用戶體會(huì)的技巧
網(wǎng)站的用戶體驗(yàn)有哪些呢?在建站初期我們要去了解用戶體驗(yàn)好的網(wǎng)站是怎么做的,用戶體驗(yàn)又有哪些呢?今天我們從七個(gè)方面來介紹做好網(wǎng)站用戶體會(huì)的技巧,需要的朋友可以參考2016-03-16