使用SAE和Gitcafe開發網站應用

原文:使用SAE和Gitcafe開發網站應用php

在PaaS領域目前看來新浪雲走的比較早,也比較成熟。相比IaaS,PaaS更能爲企業或我的帶來成本上的節約。本文以php爲例,記錄瞭如何在新浪雲上註冊建立本身的web項目,如何在本地構建模擬環境,並使用Gitcafe的自動部署功能,使得只須要進行一次git push便可將代碼發佈到新浪雲上。不瞭解的朋友能夠參考。html

建立應用

先是各類註冊。新浪雲鬚要使用新浪微博的賬號才能登陸和使用。mysql

因爲新浪雲屬於PaaS(即提供軟件運行環境,而不是虛擬主機或者空間),收費模式是根據訪問量,按量收費的,因此咱們無需關注服務器的任何指標,咱們要作的只是建立一個應用。目前,新浪雲鬚要進行實名認證才能建立2個以上的應用,因此推薦進行實名認證。git

建立應用的界面以下:github

能夠看到,咱們的應用將被host在sinaapp.com這個域名下,咱們可以設置的子域名(App name)顯然是全局惟一的,先到先得。除了應用的基本信息外,還須要選擇應用使用的編程語言、框架、模板等。PHP語言的框架和模板十分豐富,而Python和Java則沒有什麼可用的框架或者模板。咱們這裏使用PHP空應用,建立的的應用名假設爲testapp,下面會用到。web

建立好應用以後,須要配置應用所使用的各類軟件或平臺服務,幾個比較基本的配置以下:redis

  • 應用管理-代碼管理中,建立一個版本,這個版本號建議填1
  • 服務管理-MySQL中,開啓MySQL的功能。除非你的應用不須要數據庫支持,通常MySQL是確定要開的。管理MySQL使用的是phpmyadmin。

默認狀況下,在代碼管理中,能夠將代碼打包上傳到應用,或者使用SVN提交,關於SVN參見代碼管理中的說明。咱們的重點是使用Git進行提交。sql

Gitcafe上建立代碼倉庫

註冊

爲了使用Git提交代碼,咱們註冊使用Gitcafe。由於Gitcafe能夠設置自動將代碼推送到新浪雲上。數據庫

GitCafe是一個跟Github十分類似的代碼託管平臺,本人體驗下來感受還能夠,除了界面綠的我扎眼外...apache

註冊好以後,爲了方便進行git提交能夠配置一下公鑰。找到你我的電腦以下路徑的文件:

cd ~/.ssh/id_rsa.pub

將其中的內容複製粘貼到Gitcafe網站的SSH公鑰管理處,這樣之後在提交代碼的時候就不須要輸入用戶名和密碼了。

建立倉庫

咱們須要建立一個倉庫,這更github沒有什麼區別,惟一的重點在於設置自動部署到SAE

第一次使用這個功能可能須要你OAuth驗證一下,這很簡單。而後Gitcafe就能夠fetch到你在新浪上的建立的應用和相應的版本了。選好保存便可。

目前Gitcafe對新浪的受權沒有作自動刷新,這也許是新浪的Policy,這樣會致使幾天之後,這個受權會過時,屆時可能須要從新綁定一下。但願Gitcafe可以改善一下。

建立好應用後,能夠根據提示在本地初始化應用並提交初始化到Gitcafe。不過這裏,爲了給後面本地模擬SAE環境埋下伏筆,我對命令稍做改變:

首先在你本地合適的地方建立一個文件夾專門用來存放SAE的應用代碼,好比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

上面的命令在遠程倉庫地址的地方留了...,你須要本身填寫,這取決於你的遠程倉庫地址。另外值得注意的是,須要建立一個以app名命名的文件夾,並且這個文件夾下須要有一個1的文件夾,這裏的1表明app的版本號,代碼部分是放在1這個文件夾下的。

若是上面的步驟沒有問題的話,此時因爲咱們建立了README.md,因此這個文件會被自動同步到新浪雲上。

配置本地環境

接下來咱們須要配置一個本地執行環境,以模擬SAE的運行環境,從而調試代碼。從這裏下載最新的模擬環境,這裏以PHP環境爲例

下載解壓後,能夠發現,模擬環境自帶apache、php、redis等軟件,咱們須要配置sae.conf文件,下面是這個文件重要配置項的說明:

  • DocumentRoot sae應用的根路徑,至關於咱們上面建立的sae文件夾,模擬環境每次都是從這個文件夾下的文件夾來判斷有哪些應用
  • http_port 模擬環境啓動後apache所使用的http端口
  • mysql_* 模擬環境並無自帶mysql,須要使用你本地或者遠程的mysql,因此須要在這裏配置這些參數

配置好這些後,用管理員身份啓動init.cmd

若是須要修改php的配置的話,可能須要修改php.sae這個文件。這個文件實際上就是一個php的配置文件,模擬器每次啓動的時候,都會把php.sae的內容複製到php.ini中。不過這裏可能有一個bug,對於php.sae中的配置項disable_functions不能正確的複製到php.ini中,致使沒法正常使用模擬環境,不知道目前修復了沒有。個人解決辦法是在php.sae中把disable_functions的值留空。

模擬環境啓動後,能夠在本地經過http://應用名.sinaapp.com:端口的形式來訪問應用,好比:http://testapp.sinaapp.com:8081

模擬環境會在代碼目錄下建立config.yaml或者.appconfig,這兩個文件是不能經過代碼包的方式上傳到SAE的,不然會出錯。因此,咱們須要在.gitignore中忽略這兩個文件,讓它們不被提交到Gitcafe,因而就不會被傳到SAE。

若是未來有第二個應用的話,只須要在sae目錄下建立相應的app名字命名的文件夾和版本文件夾便可,模擬器會自動識別它們。固然你也可使用模擬器的相關命令完整對應用的管理操做。詳情請參考相關工具 - SAE文檔中心

使用mysql

爲了在模擬環境中使用mysql,除了上面提到的基本配置外,還有兩點須要注意:

  1. mysql數據庫名須要是app_+應用名的形式,好比應用名爲testapp,那麼對應的mysql數據庫名必須是app_testapp
  2. 在php中訪問數據庫須要使用SAE定義好的常量,在實際的環境中也是這樣的。

下面是一個使用pdo鏈接數據庫的代碼:

php$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);
相關文章
相關標籤/搜索