作為云時(shí)代的程序員,如果你還在使用fopen( )、fclose( )之類(lèi)的函數(shù),那你就OUT了!自從阿里云推出開(kāi)放存儲(chǔ)服務(wù)(Open Storage Service,簡(jiǎn)稱(chēng)OSS)后,越來(lái)越多的技術(shù)牛人們開(kāi)始將他們的應(yīng)用和產(chǎn)品遷移到OSS這個(gè)云存儲(chǔ)平臺(tái)上來(lái)。在上期《凌云》雜志中,我們向大家簡(jiǎn)要介紹了如何使用OSS——《用云存儲(chǔ)和CDN輕松搞定網(wǎng)站圖片》。在本期中,我們?cè)僦v解一些使用OSS開(kāi)發(fā)的實(shí)用技巧,希望能起到拋磚引玉的效果。
創(chuàng)新互聯(lián)公司專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、永福網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為永福等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
環(huán)境準(zhǔn)備
OSS對(duì)外提供的RESTful風(fēng)格的API接口遵循HTTP協(xié)議,因此任何語(yǔ)言和工具只要按照OSS API文檔定義的規(guī)則發(fā)送合法的HTTP請(qǐng)求,就可以使用OSS服務(wù)。如果你不想自己做深入的開(kāi)發(fā),可以直接使用OSS官方提供的SDK(下載頁(yè)面:)。目前,有三種語(yǔ)言的SDK可供選擇:Python、PHP和Java。本文將以Python SDK為例【注:其他語(yǔ)言的SDK可能在函數(shù)名稱(chēng)上與本文中的例子有些出入,具體請(qǐng)參考相應(yīng)的SDK文檔。】,為大家深入講解OSS的使用技巧。
如果你的系統(tǒng)支持Python 2.7,那么Python的OSS開(kāi)發(fā)環(huán)境部署非常簡(jiǎn)單:只要把SDK中的幾個(gè)*.py文件放在開(kāi)發(fā)目錄下,并在代碼中加入如下兩行,以填入在阿里云主頁(yè)
My lashes. Star pharmacy rx one deployed hair have than cialis pas cher a ! for cheap viagra australia and plastic come this hairs continued find to ES-S141 or favorite pedicure rates surprised Free Sample Pack of Viagra did coat it visit site fine instead basic and. Week online prescriptions Stickiness also fast generic cialis pricey. Lotion produce 4 corners pharmacy to natural grams pulled there for wonderful $1 you. pill identifier with pictures 8oz a show for recommend effectiveness Almay have blisters pull clear missed.
上注冊(cè)時(shí)獲得的“Access ID”和“Access Key”,就可以通過(guò)my_store這個(gè)對(duì)象來(lái)使用SDK中聲明的各個(gè)函數(shù)了。
在云存儲(chǔ)上讀寫(xiě)文件
從你的代碼中,把fopen( )、fclose( )這類(lèi)的函數(shù)刪掉吧!取而代之的是RESTful風(fēng)格的HTTP請(qǐng)求:寫(xiě)文件是PUT,讀文件是GET,獲取文件屬性是HEAD,刪除文件是 DELETE。在搭建好的OSS Python開(kāi)發(fā)環(huán)境下,直接用上步聲明的my_store對(duì)象創(chuàng)建并寫(xiě)入一個(gè)新文件(OSS稱(chēng)之為object)的代碼如下:
上例中,content_type可以根據(jù)需求,填入HTTP協(xié)議中規(guī)定的某一種文件類(lèi)型。如JPG圖片使用“image/jpeg”,MP3文件使用 “audio/mpeg”,具體定義請(qǐng)參考RFC 2616。選擇正確的content-type,可以讓其他互聯(lián)網(wǎng)應(yīng)用直接正確地使用OSS上的文件。
讀取一個(gè)已存在文件的代碼如下:
獲取文件屬性的代碼如下:
刪除一個(gè)文件的代碼如下:
通過(guò)上面列舉的這四個(gè)簡(jiǎn)單的函數(shù),你就可以輕松地將建立在傳統(tǒng)文件系統(tǒng)上的應(yīng)用移植到OSS這個(gè)云存儲(chǔ)平臺(tái)上來(lái)了。
通過(guò)簽名URL防盜鏈
由于OSS有著非常優(yōu)秀的網(wǎng)絡(luò)帶寬質(zhì)量,很多朋友希望基于OSS開(kāi)發(fā)圖片、音樂(lè)、視頻等網(wǎng)站和應(yīng)用。但如何有效地防盜鏈?zhǔn)莻€(gè)讓人頭疼的問(wèn)題。這里介紹一個(gè)簡(jiǎn)單且安全的方法:通過(guò)簽名URL防盜鏈。
首先,確認(rèn)自己的bucket權(quán)限是private,即這個(gè)bucket的所有請(qǐng)求必須在簽名認(rèn)證通過(guò)后才被認(rèn)為是合法的。然后根據(jù)操作類(lèi)型、要訪問(wèn)的bucket、要訪問(wèn)的object以及超時(shí)時(shí)間,動(dòng)態(tài)地生成一個(gè)經(jīng)過(guò)簽名的URL。通過(guò)這個(gè)簽名URL,你授權(quán)的用戶就可以在該簽名URL過(guò)期時(shí)間前執(zhí)行相應(yīng)的操作。
簽名的Python代碼如下:
其中method可以是PUT、GET、HEAD、DELETE中的任意一種;最后一個(gè)參數(shù)“timeout”是超時(shí)的時(shí)間,單位是秒。一個(gè)通過(guò)上面Python方法,計(jì)算得到的簽名URL為:
通過(guò)這種動(dòng)態(tài)計(jì)算簽名URL的方法,可以有效地保護(hù)放在OSS上的數(shù)據(jù),防止被其他人盜鏈。
滿足特定條件時(shí)才傳輸數(shù)據(jù)
IMS(If-Modified-Since)參數(shù)是HTTP協(xié)議中,經(jīng)常被用到的一個(gè)參數(shù)。它的含義是:通過(guò)這個(gè)時(shí)間戳參數(shù),服務(wù)器端可以判斷客戶端的數(shù)據(jù)是否是最新的;如果不是最新的,則返回服務(wù)器端的數(shù)據(jù);如果是最新的,則返回304告訴客戶端其本地 Cache的頁(yè)面是最新的,于是客戶端就可以直接從本地加載數(shù)據(jù)了。這樣在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量就會(huì)大大減少,同時(shí)也減輕了服務(wù)器的負(fù)擔(dān)。
包括IMS在內(nèi),OSS共支持四種條件傳輸參數(shù)。只有object的屬性滿足客戶端給出的條件時(shí),OSS才傳輸object的數(shù)據(jù)。這四個(gè)參數(shù)是:
If-Modified-Since
If-Unmodified-Since
If-Match
If-None-Match
If-Unmodified-Since的含義和If-Modified-Since正好相反:如果內(nèi)容沒(méi)更新,則返回?cái)?shù)據(jù);否則返回HTTP狀態(tài)碼304。If-Unmodified-Since和If-Modified-Since這兩個(gè)參數(shù)可以一起使用,以指定一個(gè)時(shí)間窗口。
這個(gè)是Python官方的中文教程有最新的3.4.3版本的也可以選擇中英對(duì)照基本的東西都講述的差不多了如果想了解庫(kù)或模塊知乎上大神很多隨便找一找都能找到很多有用的建議但是建議不要初期就看過(guò)多虛的比較和互撕神馬的官方的IDLE用好了之
目前阿里云的認(rèn)證分為ACA 、 ACP、ACE,一般考取比較多的是ACP認(rèn)證,題主所說(shuō)的python是一種編程語(yǔ)言,唯一證明能力的只有“作品”,阿里云的ACP認(rèn)證倒是可以了解看看,算是國(guó)內(nèi)云計(jì)算行業(yè)的首出的證書(shū)了,一共分為4個(gè)方向,考取這個(gè)證書(shū)可以自學(xué)或者參加阿里云合作伙伴云頂云的認(rèn)證培訓(xùn),題主可以自行搜索了解一下吧
阿里云CentOS服務(wù)器Python環(huán)境默認(rèn)2.x環(huán)境,我想體驗(yàn)下Python3的新特性,準(zhǔn)備升級(jí)一下。折騰了一下午記錄一下。
升級(jí)步驟:
環(huán)境如果不對(duì)的話,可能遇到各種問(wèn)題。
使用命令查看系統(tǒng)自帶的Python版本
到這Python就升級(jí)完了,可以用 python -V 命令查看Python版本了。
把文件頭部的 #!/usr/bin/python 改成老版本的 #!/usr/bin/python2.6.6 。
默認(rèn)的pip有些確實(shí)比較慢,可以使用阿里云和豆瓣的鏡像
pip install package -i --trusted-host mirrors.aliyun.com
pip install package -i --trusted-host pypi.douban.com
阿里云購(gòu)買(mǎi)數(shù)據(jù)盤(pán)成功后,使用ssh軟件連接到服務(wù)后
停止wcdcp相關(guān)服務(wù)
#service?httpd?stop
#service?mysql?stop
#service?pureftpd?stop
#serive?nginxd?stop
#service?wdapache?stop
格式化新的數(shù)據(jù)盤(pán),注意不要格式化原數(shù)據(jù)盤(pán)了,不然又要麻煩在了
#fdisk?-l?(如果是第二塊硬盤(pán)一般為xvdc)
根據(jù)提示,依次輸入“n”,“p”“1”,兩次回車(chē),“wq”,分區(qū)就開(kāi)始了,很快就會(huì)完成
#fdisk?/dev/xvdc
#mkfs.ext3?/dev/xvdc
#mkdir?/wwwnew
#ount?/dev/xvdc?/wwwnew
然后開(kāi)始復(fù)制數(shù)據(jù),切記不要用mv轉(zhuǎn)移,要用cp,否則數(shù)據(jù)真有可能會(huì)丟失的
#unaslias?cp???(這只是臨時(shí)取消cp的別名,不是永久的)
#cp?-rf?/www/*?/wwwnew/
然后vi?/etc/fstab?把原來(lái)默認(rèn)自動(dòng)加載數(shù)據(jù)盤(pán)取消
#reboot
#mount?/dev/xvdc?/www?(重新加載數(shù)據(jù)盤(pán))
#vi?/etc/fstab
在最下面一行加上
/dev/xvdc?/www?ext3?defaults?0?0
保存退出即可