七牛資料庫
『壹』 七牛雲存儲怎麼布署到伺服器
"在網路覆蓋的范圍內手機、平板、電腦可以隨時的實現文件同步
"部門之間可以安全的文件分享
"所有人對文件的操作行為均可以被記錄
"登錄身份認證機制與企業現有管理機制相結合
"存放於數據中心的文件具備高強度的加密
正是從這種需求出發,推動了廠商對企業私有雲存儲的技術研發,目前市場上已經有部分成熟的產品方案得到應用,筆者剛剛拿到VEsystem 推出的VECloud 2.0最新版,目前正在測試中;在此謹以VECloud 2.0(和信雲存儲)為例,向大家講解企業私有雲存儲的快捷部署方法,供企業信息管理人員在方案選擇時參考所有。
抽象來看與網路雲網盤一樣,部署好的私有雲存儲是一個可以通過瀏覽器輸入網址或IP地址直接訪問的網站。那麼除伺服器基礎平台的建設之後,我們需要就是搭建一套Web Server 的發布平台,最常見的WEB發布平台應該是IIS(微軟伺服器版系統中自身提供) 、以及Apache ,根據不同網站開發語言的需要還需要配置腳本解釋與資料庫支持;比如大家經常提到的ASP + mssql 、php + mySQL 等;
2
VECloud 2.0 對WEB平台要求是:PHP 5.10 / mySQL 5.5
以往在Windows平台手工搭建AMP環境(Apache MySQL PHP)是比較復雜的,幸好現在已經有相應的一鍵式集成包,可以幫助我們快速完成這項工作。筆者比較習慣使用的是EasyPHP,本次部署所採用的版本是12.0 ;EasyPHP 安裝非常簡單幾乎你只用點下一步即可以完成(對AMP 環境的搭建比較熟的朋友可以越過章節)。
安裝結束後會自動打開默認瀏覽器呈現當前AMP配置運行信息,如上圖我們可以看到APACHE 2.42 / MYSQL 5.5.2 / PHP 5.4.4 即已經有運行中,有關EasyPHP 12.0 的詳細調試使用可以參考官方教程或相關文章,作為服務運行的支撐平台,其不屬於雲存儲的技術討論范圍後面的章節中不再重復提及。
接下來我將VECloud2.0 的WEB站點的發布包,解壓到WWW 目錄中,然後通過瀏覽器訪問本機IP 如127.0.0.1??即可以打開這個站點;站點首次被打開時會有一個安裝向導完成初始的部署工作。如下圖:
點擊"現在就開始"…
接下來的頁面中會顯示出當前WEB伺服器的環境配置信息,以及和信雲存儲對環境基本要求自檢結果,為了保障功能的全面正常執行,建議按照提示信息的要求,調整伺服器的配置信息以達到推薦標准,如下圖:
在默認情況下 PHP 擴展中的PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 並未消開啟,最大文件限制默認為2M ,這里會建議我們開啟上述擴展並調大文件限制。
這都可以通過修改PHP.INI 配置文件來實現,PHP.INI 文件默認存放在apache 目錄中,可以用記事本打開
可以通過查找方式找到PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 這幾項PHPExt 所在位置,注意行前一個" ; "(分號),分號表示此行被注釋,只需要將分號去掉即可,(如上圖)如果是手工搭建的AMP 環境需要確定對應DLL 文件已經安裝注冊。
同時找到upload_max_filesize = 項,將最大上傳文件的大小設定到一個合適的值。如上圖
重新啟動Apache 服務,刷新頁面後我們可以看到自檢測結果已經發生變化,目前我們WEB服務端的配置已經完全符合推薦要求。
點擊"下一步"繼續…
接下來的配置是關於MYSQL資料庫的參數,我們需要創建一個資料庫管理員以及對應的資料庫、表名前綴;
可以通過PHPMYADMIN(MYSQL的在線管理工具,如果是通過EASYPHP安裝則已經自帶)來方便的創建用戶並同時創建與用戶名同名的資料庫;如下圖:
添加 [ 用戶 ] / [ 添加用戶 ], 輸入用戶名VECLOUD 、主機:127.0.0.1(如無分布部署或有額外的名稱解析,應採用本機IP), 勾選"創建與用戶同名的資料庫並授予所有許可權"
通過上述操作我們就為雲存儲服務端創建了專用的資料庫管理用戶及同名的資料庫。
返回到雲存儲的安裝界面,注意最後一項是關於"文件存儲路徑"的設置,在此處可以設定一個目標路徑,當雲存儲服務上線之後,用戶上傳分享的文件都將保存在這個路徑之下,因為目標路徑建議採用專業存儲陣列或設備,確保並發速度與數據安全。
接下來的頁面中可對雲存儲的管理用戶與密碼進行設置,提示:管理員將可以在後台管理所有用戶的信息以及系統的相關參數設置,一定要管理好該用戶並設置高強度的密碼,防止被猜測破解後登錄。
點擊"下一步"繼續
至此,"和信雲存儲"的安裝已經完成,可以試一下在瀏覽器中再次打開127.0.0.1 訪問
這一次打開的不再是安裝向導,一個真正架設在內網中的私有雲存儲用戶登錄界面呈現在眼前,VECloud 同時提供了Windows / Android / IPhone 、IPAD 的客戶端,對此私有雲存儲的訪問方式不限於網頁登錄,也可以隨時用移動設備登錄分享、同步自己的文件。
天互數據 為您解答,希望能幫到你
『貳』 嘉實投資都投過什麼項目
嘉實投資投得項目一般都是科技類,或者是金融類的,比較有名的項目像京東金融,還有地平線機器人、首汽租車、七牛雲、雲丁、巨山資料庫、生鮮傳奇這些。
『叄』 怎麼在七牛雲伺服器上安裝mysql
需要安裝,一般雲伺服器來的時候就是個帶操作系統的裸機,除非是定製的機型,而且資料庫還是自己安裝比較好,環境比較了解。mysql安裝還是很簡單的。不要嫌麻煩了。
『肆』 服務在阿里雲上 對象存儲在七牛上行嗎
開放雲存儲是存儲服務,提供存儲能力RDS是資料庫服務,可以看成是阿里提供的一個優化後的資料庫伺服器
『伍』 請問儲存在阿里雲的數據如何下載到本地電腦
、阿里雲RDS資料庫恢復備份怎麼處理?
建議您通過創建臨時實例或克隆實例來恢復數據,驗證臨時實例或克隆實例的數據後,再把需要的數據遷移到生產實例,詳情請參見通過克隆實例恢復到主實例和通過臨時實例恢復到主實例。
2、阿里雲rds主從配置和切換是怎樣的?
(1)單個RDS無需設置:目前RDS本身就是高可用的主從架構,購買一個RDS,其實你得了兩個伺服器(一個主伺服器,一個備份用的從伺服器)。如果主伺服器出故障了,自動切換到從伺服器。所以,不需要做我們自己來做主從配置、備份、切換等。
(2)多個RDS不能做設置:rds許可權限制2個RDS之間不能再做主從備份。
3、如何將RDS上的資料庫備份到雲伺服器中?
您可以通過導出SQL語句的方式將資料庫備份到雲伺服器上,也可以通過控制台的備份下載功能將RDS備份文件下載到雲伺服器上面。
4、通常,從新購實例到可以開始使用實例,您需要完成如下操作:
5、什麼是阿里雲rds資料庫的透明切換?
(1)當RDS實例發生主備切換、規格升級時,不在事務中的連接會自動橋接,避免中斷,對應用無感知。
(2)該功能免費使用
(3)主備切換時對應用透明
(4)操作步驟:登錄RDS管理控制台選擇目標實例所在地域單擊目標實例的ID,進入基本信息頁面。選擇左側菜單欄中的資料庫代理,進入資料庫代理頁面。選擇透明切換標簽頁默認開通,需要時可以手動關閉
6、阿里雲rds資料庫的使用操作需要注意些什麼:
(1)無需基礎運維:
購買RDS實例後,您不需要做資料庫的基礎運維(例如高可用、打安全補丁等)
(2)預防實例升級閃斷:
RDS實例升級的過程中會出現一次最長30秒左右的連接閃斷,需要您提前做好准備,並設置好程序的自動重連,避免因為升級導致服務不可用。(對於RDS for MySQL實例,開啟透明切換可以減少95%的連接閃斷。)
(3)預防故障切換:
對於高可用版和金融版實例,當主節點出現故障時,RDS會在30秒內切換到備節點。切換過程中有30秒左右的連接閃斷,需要您設置好程序的自動重連,避免因為切換導致服務不可用。
(4)切換內外網需要更新鏈接地址:
切換內外網的過程中,伺服器與RDS實例之間的連接會斷開,IP地址也會改變。切換完成以後請及時更新程序中的連接地址。
(5)數據恢復前備份好重要數據:
建議您在數據恢復前備份好重要數據,以免導致數據丟失。
(6)定期檢查實例存儲空間:
如果實例的存儲空間已滿,該實例會被自動鎖定,變成只讀狀態。建議您定期檢查存儲空間的使用情況。如果存儲空間使用率過高,請參考解決方法進行處理。
(7)請檢查性能優化和連接數:
請檢查RDS實例的CPU核數、內存、IOPS、存儲空間和連接數是否足夠,如果不夠需要優化或者升級。請檢查RDS實例是否存在性能問題,例如是否有大量的慢SQL、SQL語句是否需要優化、是否有多餘的索引或者缺失的索引等。
7、阿里雲的rds怎麼連接?
完成創建實例、設置白名單和創建賬號等操作後,您可以使用數據管理服務DMS(Data Management Service)或通用資料庫客戶端連接到RDS實例。(提示:連接操作前需要先在RDS實例設置賬號和密碼)
(1)使用DMS連接實例:DMS是阿里雲提供的圖形化的數據管理工具,可用於管理關系型資料庫和NoSQL資料庫,支持數據管理、結構管理、用戶授權、安全審計、數據趨勢、數據追蹤、BI圖表、性能與優化等功能。(具體操作請參見通過DMS登錄RDS資料庫)
(2)使用客戶端連接實例:由於RDS與原生的資料庫服務完全兼容,所以您可以使用任何通用的資料庫客戶端連接到RDS實例,且連接方法類似。
『陸』 php表單上傳圖片到七牛雲存儲並返回地址……求具體流程~有代碼更好
有的,我最近研究了一下,寫了一篇記錄,如下
原文地址:http://cuiqingcai.com/?p=157
網上關於七牛雲存儲的教程除了官網上的API文檔,其他的資料太少了。研究了下API之後,現在已經能實現圖片的上傳和下載及上傳之後的重定向。
首先本篇文章實現的功能如下:
1.利用表單上傳功能,用戶可以點擊選擇文件按鈕,選擇本地的一個文件,同時設定上傳的圖片的名稱,點擊上傳按鈕可以上傳並存儲到七牛雲存儲。
2.在點擊上傳時會檢測文件的後綴名,限制為jpg和png格式存儲。
3.上傳成功後跳轉到自己設定的一個URL,並傳迴文件信息,如文件名。而不是顯示七牛白花花的json顯示頁面。
好啦,那我們開始吧,首先我們要有一個七牛雲存儲賬號,如果沒有的就自己去申請吧。
七牛雲存儲傳送門:http://www.qiniu.com/
一.SDK下載
https://github.com/qiniu/php-sdk/tags
戳這個網址下載一下SDK吧,裡面封裝了文件上傳下載等等的方法,我們引入之後可以直接調用。
SDK之中有一個qiniu的文件夾,這是所有的SDK實貨,這個是最重要的。我們首先要把這個文件夾及裡面的文件放到項目文件夾中,比如我放到這里。
大家可以看到有一個qiniu文件夾。好啦,資源支持就是這樣。接下來我們要實現代碼咯。
二.文件的上傳。
1.首先把你七牛雲存儲的密鑰照出來,點擊賬號設置可以看到有一個AccessKey和SecretKey,留著備用。
2.上傳憑證生成。
在這里我們首先要引入rs.php文件,自己找一對應路徑,代碼如下:
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
dirname()是指的絕對路徑,有時相對路徑會出現問題,建議在前面加上dirname方法獲取絕對路徑。
require_once是引入文件,表示該文件只引入一次。
然後,傳入你的AccessKey和SecretKey
代碼如下:
$accessKey='';//換成你自己的密鑰
$secretKey='';//換成你自己的密鑰
Qiniu_SetKeys($accessKey, $secretKey);
然後建一個上傳策略對象,將你的bucket傳入,bucket 就是你的空間名。
$bucket = 'designpartners';
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
然後調用此方法來生成上傳憑證。
$upToken = $putPolicy->Token(null);
接下來就寫一個html表單
<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>
action就填寫up.qiniu.com,表單提供了一個輸入框key,用來輸入你想保存的圖片名稱,上傳到七牛之後就是這個名字。
然後一個文件選擇,一個提交按鈕。運行結果如下:
輸入key值和選擇照片即可實現照片的上傳。哈哈哈有沒有很簡單。
三、文件下載
原理和文件上傳功能相仿。
引入文件
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
聲明你的七牛雲存儲域名和兩個密鑰以及向下載的文件名稱
$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';
注意:1.key值即為文件名,不要加後綴
2.domain即為bucket加上qiniudn.com,例子中的designpartners就是我在上傳圖片時用的bucket名。
3.accessKey和secretKey換成你自己的,直接用我的不行的..因為我修改了.
Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo$privateUrl." ";
傳入這四個值即可生成一樣url,直接訪問url即可實現圖片的下載。
在引入圖片時直接
<img src = "<?php echo $privateUrl; ?>"/>
即可引入圖片咯,很簡單的吧。
四、303重定向
在上面的方法中,我們上傳圖片成功後跳轉到up.qiniu.com下,會顯示白白的網頁,顯示一個json字元串,但是在實際網站開發中我們肯定 不能讓用戶看到這種網頁,所以我們用到了303跳轉。SDK中也為我們封裝了這個方法。使用其實非常簡單。在上傳文件的代碼中添加兩行代碼即可
$putPolicy=newQiniu_RS_PutPolicy($bucket);
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';
注意:1.ReturnUrl和ReturnBody必須指定,並且首字母要大寫,很多人都小寫開頭,這樣會跳轉不成功。
2.ReturnUrl必須是一個公網可以訪問的網址,在本地測試是不可能通過的。比如你寫成localhost,七牛伺服器是定位不到的。
3.這個ReturnUrl的鏈接後會跟著一個?upload_ret=XXX,可以用get方法獲取這個upload_ret。upload_ret的內容是base64安全編碼的json形式的key值。
值的解析:比如我上傳的文件名是555
upload/receiveInfo?upload_ret=eyJrZXkiOiAiNTU1In0=
網址後綴如上所示,把那個upload_ret復制下來,用base64解碼可以出現如下結果:
{"key": "555"}
所以,我們要獲取555這個值的代碼如下,即解析代碼如下:
$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;
好啦,獲取到這個key值之後,你可以選擇存到資料庫或者進行其他的操作咯。
五、上傳前文件類型的驗證
我們可以用js來驗證文件的後綴名,
在form的屬性里加上
onsubmit="return isValidateFile('file');"
加上一個js方法
<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("請選擇頭像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("請上傳後綴名為jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>
即可驗證它的類型是否合法。
附:CI代碼實現:
獲取Uptoken:
functiongetUptoken(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
//遠程存儲空間名稱
$bucket='designpartners';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$putPolicy=newQiniu_RS_PutPolicy($bucket);
echosite_url();
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';
$upToken=$putPolicy->Token(null);
return$upToken;
}
文件上傳:
publicfunctionuploadPic(){
$upToken=$this->getUptoken();
$data['upToken']=$upToken;
$this->load->view('upload',$data);
}
303重定向解析:
publicfunctionreceiveInfo(){
$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;
}
文件下載:
publicfunctiondownloadPic(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo"====>getPolicyresult: ";
echo$privateUrl." ";
}
表單:
<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("請選擇頭像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("請上傳後綴名為jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>
<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data"onsubmit="returnisValidateFile('file');">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>
『柒』 關於七牛雲存儲自定義URL的問題
近段時間將使用七牛雲存儲來存放用戶上傳的數據,客戶端通過七牛的js-sdk與七牛交互,服務端C#實現了七牛相關的介面。在這過程中多多少少遇到點問題,在這里總結一下。原文: 使用七牛雲存儲的一些經驗總結
599錯誤處理
如果在與七牛的交互中出現http狀態碼為599的錯誤,一句話,不要猶豫,直接聯系七牛技術支持 。七牛的文檔也在很多地方提到這個錯誤,都是指導大家去聯系技術支持的。筆者是在分塊上傳後的 mkfile 調用時出現的,聯系技術支持後,說是調整了一下,讓我重試。後來就好了...
分塊上傳無法從回調中獲得文件的原始名
簡單上傳採用的是multipart/form-data方式上傳,七牛服務端能夠從請求中獲得文件的原始名,並支持使用魔法變數 $(fname) 回調業務伺服器。不過當使用分片上傳的時候情況有所不同。分片上傳需要在最後調用 mkfile ,來將分片拼接起來。但是, mkfile 介面支持普通的請求,並沒有附帶文件名,所以七牛也就無法獲得文件名,此時從 $(fname) 中是取不到文件名的。這個問題我也向七牛技術支持提交了問題,得到的結果是使用自定義變數 mkfile 支持將自定義變數放在url中,回調的時候自定義變數可以傳遞給業務伺服器。
慎用圖片預處理
七牛雲支持很多對文件的預處理,其中最常用的應該就是圖片預處理了,可以對圖片的大小做變換等。七牛推薦使用GET的方式直接指定圖片處理結果的url,像這樣:
http://qiniuphotos.qiniudn.com/gogopher.jpg?imageView2/1/w/200/h/200
處理後的圖片會自動緩存,用戶不用關心,只要每次訪問都用這個url就行了。然而,筆者在開始的時候,為了保持與其他文件形式統一的處理方法,對圖片使用了預處理(因為視頻什麼的只能預處理),即在token中指定了預處理。此時問題出現了,從後台的日誌看到,圖片的預處理通知回調竟然比正常的上傳成功回調還要快!這就導致預處理結果到來之前,我的業務伺服器的資料庫中還沒有這個圖片,無法保存預處理結果了。所以 推薦還是使用url直接處理,對圖片要慎用預處理
視頻文件無法快進播放
通常用戶在觀看視頻的時候都會根據自己的喜好,快速將視頻定位到指定的時間播放。實現這個功能,需要視頻本身有關鍵幀信息、服務端需要支持關鍵幀播放請求,在 這篇文章 中有詳細討論。
但是筆者發現,在使用七牛雲轉化後的視頻,這樣做是無效的。於是咨詢技術支持,得到的答案是:轉化的文件是具有關鍵幀的,但七牛使用CDN加速,所以關鍵幀請求需要CDN的支持,如果想要用這個功能的話,需要單獨聯系銷售或技術支持在CDN上配置,而且時間比較長。筆者聯系了銷售和技術支持,說是幫我配置,但到現在還沒有搞定,因為最近這個也不是特別重要,所以也沒有跟下去。
Callback校驗
這是可選的一個步驟。由於七牛雲會在上傳完成之後回調業務伺服器,所以理論上說業務伺服器需要校驗這個回調的合理性。原理在七牛的 文檔 中有,需要用到 HMAC-SHA1 簽名函數。但是七牛的sdk中沒有提供直接的方式來做校驗,在研讀文檔、多次失敗和查看sdk源碼後,筆者終於校驗成功了。關鍵的分歧在於,文檔中的這句話:
獲取明文:data = Request.URL.Path +」\n」 +Request.Body
這里的 Request.URL.Path 是否包含Querystring?答案是包含的!下面是筆者C#服務端的校驗代碼,使用的是ASP.NET Web Api:
```C#
byte[] key = System.Text.Encoding.UTF8.GetBytes(Qiniu.Conf.Config.SECRET_KEY);
using (HMACSHA1 hmac = new HMACSHA1(key))
{
var t = filterContext.Request.Content.ReadAsStringAsync();
t.Wait();
string rawbody = t.Result;
log.DebugFormat("request's rawbody : {0}", rawbody);
string text = filterContext.Request.RequestUri.PathAndQuery + "\n" + rawbody;
log.DebugFormat("PathAndQuery + \n + rawbody : {0}", text);
byte[] digest = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
string computed = Qiniu.Util.Base64URLSafe.Encode(digest);
log.DebugFormat("Computed hash after base64 : {0}", computed);
IEnumerable<string> auths;
if (filterContext.Request.Headers.TryGetValues("Authorization", out auths) && auths.Count() == 1)
{
string auth = auths.First();
log.DebugFormat("Authorization in header : {0}", auth);
if (auth.StartsWith("QBox "))
{
var arr = auth.Substring(5).Split(':');
if (arr.Length == 2)
{
if (arr[1] != computed)
{
log.ErrorFormat("Authorization failed. Since auth from header {0} not equals computed {1}", arr[1], computed);
}
else
{
log.Debug("Authorization success.");
//only pass can be return
return;
}
}
else
{
log.Error("Callback Authorization's format is invalid, can not find two part after split by ':'.");
}
}
else
{
log.Error("Callback Authorization's format is invalid, missing leading 'QBox '.");
}
}
else
{
log.Error("The request from qiniu callback is missing 'Authorization'");
}
filterContext.Response = filterContext.Request.CreateResponse(System.Net.HttpStatusCode.Forbidden);
}
如下幾個注意點:
- 明文應當是請求的path+querystring部分和rawbody
- 對於.NET而言,明文和key都需要用UTF-8編碼變換成位元組才能進行簽名。而php中的hash_hmac函數完全不用這么復雜...
- 簽名的結果再用base64的url安全的方式編碼,再與請求的http頭部的Authorization比較
建議官方在文檔中加入一些相對底層一些的編程語言的實現,php太高端了...
## js-sdk實現略顯粗糙 ##
在使用過程中,我發現[官方的js-sdk](https://github.com/qiniupd/qiniu-js-sdk/)有幾個我覺得不好的地方:
**不能為每個文件獲取UpToken**
試想,在文件上傳過程中有獲取UpToken是必須的,而且UpToken又需要包含預處理指令,不同的文件顯然需要不同的UpToken,而在js-sdk的實現中,只在初始化這個上傳組件對象的時候請求一次上傳憑證,後面所有的上傳都需要使用這個預先得到的UpToken:
```javascript
uploader.bind('Init', function(up, params) {
getUpToken();
});
於是我修改了這部分,在 BeforeUpload 事件中請求UpToken。建議官方考慮更改這個地方
只能實現分片上傳,無法斷點續傳
js-sdk的實現在分片上傳的實現上,是很簡單的,不僅沒有使用分片,而是分塊(一塊4m,調用mkblk),而且沒有實現持久化ctx,或者類似的回調或介面。4m分塊這個問題還可以不追究,沒有實現持久化ctx就說不過去了,不持久化怎麼實現斷點續傳撒?!就算不實現,也應該給出回調的入口,讓調用者來實現持久化,而我實在無法找到這個'空子'可鑽,只能直接在源碼上改動了。
沒有復用流行類庫的東西
這個其實算不上問題,因為作為一個不依賴jquery的sdk,當然不能使用jquery現成的東西,比如ajax。不依賴jquery就算了,依賴plupload是幾個意思嘛,還依賴全局對象...於是最後,我乾脆自己將sdk改成了Backbone的類,將不要的東西統統去掉,使用jquery和underscore簡化代碼了...
『捌』 如何用七牛來配置一個php網站
下載PHP5: http://cn2.php.net/distributions/php-5.2.6-Win32.zip
下載apache: http://down.chinaz.com/soft/18000.htm
一.php的安裝與調試
由於php是一個zip文件(非install版),安裝較為簡單,解壓就行。把解壓的 php5.2.1-Win32重命名為 php5。並復制到C盤目錄下。即安裝路徑為 c:\php5
1 找到php目錄下的 php.ini-dist或 php.ini.recommended文件,重命名為 php.ini
並復制到系統盤的windows目錄下(以c:\windows為例).
2 再把php目錄下的php5ts.dll,libmysql.dll復制到目錄 c:\windows\system32下。
3 把php5\ext目錄下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件復制到c:\windows\system32下
如果沒有載入 php_gd2.dll php將不能處理圖像。沒有載入php_mysql.dll php將不支持mysql函數庫
php_mbstring.dll在後面使用phpmyadmin時支持寬字元。
4 打開c:\windows\php.ini文件(關聯到mysql)
設置擴展路徑
查找 extension_dir 有這么一行extension_dir = "./"
將此行改成
extension_dir = "C:\php5\ext"
其中C:\php5是你安裝php的路徑。路徑不正確將無法載入dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分號去掉)
查找 extension
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dl
把上面3項前面的分號去掉,這樣apache啟動時就可以載入這些dll了
當然前面我們也把這些dll復制到system32下了l
php5時差問題
<?php echo date("Y-m-d H:i:s");?>時間相差八小時
為什麼呢?PHP5系列版本新增了時區設置,默認為格林威治時間,與中國所在的東8區正好相差8個小時
查找date.timezone有這么一行
;date.timezone =
將;去掉,改成
date.timezone = PRC
二.apache的調試和整合
1.修改網站根目錄
查找 DocumentRoot有這么一行
DocumentRoot"C:/Program Files/Apache Group/Apache2/htdocs"
這就是你網站的根目錄,你可以修改,也可以用默認的.如果改,還要修改下面這項,否則可能會出現 403 錯誤
查找 This should be changed to whatever you set DocumentRoot to
在它下面兩行有
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
把上面兩項的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目錄
2.讓apache支持*.php(網頁)
查找 DirectoryIndex index.html index.html.var
修改成
DirectoryIndex index.html index.html.var index.php
這樣index.php 可以充當默認頁面了
3.Apache中模塊化安裝php
查找 # LoadMole foo_mole moles/mod_foo.so
在此行後加入一行
LoadMole php5_mole C:/php5/php5apache2.dll //注意:其中C:/php5/php5apache2.dll是你安裝php的相應路徑.不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只適用於apache 版本1的.PHP5壓縮包里的php5apache2.dll只適用於apache2.0.*版本,如果是2.2.*以上版本,就可能會出現"Cannot load C:/php/php5apache2.dll into server: The specified mole could not be found."或者:"The requested operation has failed"
4.查找 AddType application/x-gzip .gz .tgz
在此行後加入一行
AddType application/x-httpd-php .php (記住:前邊有一個空格哦!!!)
這樣apache就可以解釋php文件了
5.測試
在網站根目錄下創建一個 phpinfo.php 文件
<?php
phpinfo();
?>
在瀏覽器打開
http://localhost/phpinfo.php
5.測試php和mysql資料庫的關聯
在網站根目錄下創建一個test.php 文件
<?php
$link=mysql_connect("localhost","root","12345"); //12345改成你的mysql密碼
if(!$link) echo "失敗!";
else echo "成功!";
mysql_close();
?>
在瀏覽器打開 http://localhost/test.php
如果輸出成功,則說明大功告成了
『玖』 七牛雲存儲中的資料庫處理功能支持擴展么
你好,你說的是資料庫處理還是數據處理?資料庫處理這個我不是很清楚,不過我知道七牛數據處理是支持擴展的。