隨著互聯網和數碼產品的普及,許多用戶希望自己制作的數碼相片以Web方式和朋友分享。使用Gallery(http://gallery.sourceforge.net/)可以輕松實現。目前LAMP (Linux + Apache + mysql + PHP) 近幾年來發展迅速,已經成為Web 服務器的事實標准。PHP是一種跨平台的服務器端的嵌入式腳本語言,它大量的借鑒C、Java和Perl語言的語法,並加入了PHP自己的特性,使Web開發者能夠快速地寫出動態頁面。PHP支持所有主流數據庫。它是完全免費的,使用時不需要支付任何費用。本文將要搭建Web 電子相冊基於Linux的完全免費的PHP技術的實現方法。本文使用操作系統:Fedora Core 3.0 Linux。
一、准備工作
首先配置一個LAMP服務器和ImageMagicK軟件,後者主要用於對圖像進行轉換、編輯、組合、特殊處理等,是一款非常好用的圖像處理工具。它支持對多種格式的圖像進行處理,最多支持的圖像格式有157種格式,包括目前流行的TIFF、JPEG、PNG、PDF、PhotoCD及GIF等。Image MagicK還支持動態圖像創建,這一點非常適合在Web頁面上使用。除了要搭建一個基於LAMP的網絡構架、運行Gallery的軟件必需的netpbm 、libjpeg-progs 、jhead、unzip。系統其他要求:軟件:它要求內核(Kenerl)至少在2.2以上。KDE 2.0,桌面顏色至少16位增強色。硬件:中央處理器:奔騰II 450 以上 ,內存 128 兆 ,硬盤空間 600兆 。
為了避免軟件相互沖突,這裡筆者使用基於的Debian發行版本APT方法添加軟件,Debian GNU/Linux 是APT(Advanced Package Tool)的締造者。初衷是利用工具來解決軟件安裝時候的依賴性問題。其工作原理大致為:用戶安裝APT客戶端工具,查尋APT服務器端的資料庫(repositories)上的RPM軟件包信息,並分析軟件包之間的依賴性然後下載並進行安裝。APT 除了可以讓你很方便且快速地安裝 RPM 軟件外,你也可以用它來更新系統。雖然APT是基於Debian的軟件包管理工具,但是已經被一個巴西公司Conectiva移植到基於RPM的系統上。因此對於基於RPM軟件包管理的平台,如Red Hat、TurboLinux、SuSe、Mandrake等Linux發行版本,APT是一個非常優秀的軟件管理工具。
1. 為Fedora Core 3.0 Linux配置APT
運行APT之前需要確認服務器上Apache 已經可以提供WWW服務,並且 /var 分區有足夠的空間。
#wget http://FTP.freshrpms.net/pub/freshrpms/fedora/linux/3/apt/apt-0.5.15cnc6-1.1.fc3.fr.i386.rpm
#wget http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/3/apt/apt-devel-0.5.15cnc6-1.1.fc3.fr.i386.rpm
#rpm -ivh apt-devel-0.5.15cnc6-1.1.fc3.fr.i386.rpm
#rpm -ivh apt-0.5.15cnc6-1.1.fc3.fr.i386.rpm
接著需要加入freshrpms.net的公共鑰匙GPG-KEY, 然後在/etc/apt下建立一個/gpg文件夾,將GPG-KEY保存在那裡,以便日後管理。
# rpm --import http://ftp.freshrpms.net/pub/freshrpms/RPM-GPG-KEY
安裝圖形前端 ,freshrpms.net站點提供了一個圖形界面的apt-rpm接口Synaptic,使用圖形界面的apt更加方便,可以直接利用apt安裝Synaptic:
# apt-get install synaptic
在幾行提示之後Synaptic就安裝好了,進入Xwindow後,Synaptic會出現在“系統設置”菜單裡面。界面見圖1。
圖1 APT圖形化前端Synaptic
APT系統主要包括:
命令
描述
apt-get update
更新本地apt-get的本地數據庫,使其與服務器的pkglist文件同步。在升級以前一般都要執行本命令實現與服務器的一致。
apt-get check
驗證本地系統的完整性。
apt-get dist-upgrade
安裝所有的基礎軟件包,並升級一切軟件包,並在需要時安裝新軟件包。
apt-get remove package_name
刪除該軟件包,同時會刪除依賴於它的軟件包。
apt-get install package_name
安裝某個軟件包及其相關軟件包。
apt-get source package_name
下載軟件包的source rpm。
apt-get clean
刪除保存在緩存目錄下(/var/cache/apt/archives)的被下載的軟件包。
apt-get upgrade package_name
升級指定的軟件包,並升級其依賴的軟件包。
apt-cdrom add
自動mount安裝光盤並建立列表。
apt-cache depends package_name
顯示軟件包的依賴性關系。
apt-cache package_name
在網絡上搜索指定的軟件包
apt-config dump
顯示目前的配置信息。
其中常用:apt-cache、apt-cdrom、apt-config和apt-get四個命令,用戶使用最多的就是apt-get命令。
#apt-get install netpbm libjpeg-progs jhead unzip
其中netpbm是一個圖象的格式轉換和簡單編輯軟件。通過交互式的界面,能幫助你方便的使用,就像Linux上的Adobe Photoshop。它支持超過100種圖象格式,包括JPEG、MPEG、PNG、GIF、TIFF、BMP、XWD、XBM、G3 fax以及其他特殊格式,像數字相機和掌上電腦。它還擁有超過40種的編輯修改工具,可以基本上滿足編輯的需求。libjpeg-progs和jhead是相關函數庫。Unzip是解壓縮工具。另外還要修改Apache服務的配置文件:添加以下內容:
<Directory /home/username/public_Html>
AllowOverride Limit Options FileInfo
</Directory>
軟件安裝將下載的軟件拷貝到目錄下後執行:
#cd /var/www/html
#mkdir#建立Web電子相冊存儲目錄#
#wget http://umn.dl.sourceforge.net/sourceforge/gallery/gallery-1.4.4-pl2.tar.gz
#tar vxf gallery-1.4.4-pl2.tar.gz
#cd gallery
#toUCh .htAccess;touch config.php #建立空白文件#
#chmod 0777 albums #賦予相應權限## chmod 777 .htaccess# chmod 777 config.php
二、開始安裝
重新啟動Apache後,使用Firefox浏覽器在URL輸入:
http://localhost/gallery/setup/index.php,進行設定。一共四個步驟其中第二部分(Step 2)最為關鍵,這裡要需要設定管理員密碼和Web服務器設定選項,見圖2.其中紅色表示必須設定:
圖2 Web服務器設定選項
Admin passWord: xxxxx #管理員密碼# Album directory: /var/www/albums/ #Web電子相冊存儲目錄# Temporary directory: /tmp/#臨時目錄# Gallery URL: http://localhost/gallery Albums URL: http://localhost/albums
填寫結束後按“Next Tap ”繼續,所有配置結束後系統如果出現圖3表示安裝成功,如果有錯誤會自動退回到開始的對話框讓你從新設定。
圖3系統設定成功
安全設定:測試成功後系統提醒你出於安全考慮,要修改一些文件的權限:
# chmod 644 .htaccess # chmod 644 config.php # chmod 400 setup # chown -R nobody:nogroup albums
# chmod 755 albums
重新登錄
再次登錄系統,由於修改一些文件權限,所以只能以系統管理員的身份登錄,見圖4.
圖4 Web 電子相冊的管理員控制面板
管理員控制面板,一共七個大版面:每個版面裡有各項功能的使用詳解。另外在安裝頁的“FAQ”中有200頁的常見問題回答。這樣你也可以自己輕松管理Web電子相冊了。下面要做的是建立一個子相冊然後上傳圖片,見圖5。
圖5 上傳圖片到服務器
三、管理技巧1.Web電子相冊備份和恢復
Web電子相冊自己不能備份數據,需要手工完成,備份命令:
# tar -czvf albums.tar.gz albums
恢復數據使用命令:# tar -xvzf albums.tar.gz
2.一次上傳整個文件目錄
Gallery一次允許最多上傳十個圖片,不過可以使用GalleryRemote.1.4.1這個工具軟件實現上傳整個文件目錄。
#wegt http://umn.dl.sourceforge.net/sourceforge/gallery/GalleryRemote.1.4.1.Linux.VM.bin
#chmod +x GalleryRemote.1.4.1.Linux.VM.bin
#./GalleryRemote.1.4.1.Linux.VM.bin #安裝過程非常簡單,依照安裝先導即可完成。#
使用GalleryRemote可以一次上傳整個目錄的圖片到Web服務器。見圖6。
圖6 使用GalleryRemote將這個目錄上傳
3. 設定 Gallery 使其可以通過動態IP訪問?
首先備份原來的配置文件:
#cp /etc/gallery/config.php /etc/gallery/config.php_backup#
然後使用編輯器將文件:/etc/gallery/config.php中的兩行:
$gallery->app->photoAlbumURL = "http://localhost/gallery";$gallery->app->albumDirURL = "http://localhost/albums";
替換為以下內容即可。
$gallery->app->photoAlbumURL = "/gallery";$gallery->app->albumDirURL = "/albums";
Gallery是一個用php腳本語言編寫的、基於Web的電子相冊軟件,它安裝很簡單,有完善的安裝向導,並且提供給使用者非常直觀方便的創建和管理工具。圖片管理工具包括自動創建預覽小圖、改變圖片尺寸、旋轉圖片、圖片分類、添加圖片標題和說明等。符合W3C標准的帶縮略圖和幻燈的靜態XHTML 映射圖,支持的圖像格式:PNG、GIF、JPEG。圖7是Garllery通過浏覽器訪問時的界面。
圖7 通過浏覽器訪問的工作界面
四、有效保護電子相冊的圖像版權每個網站所有者都在盡力美化自己的網站,使它看上去更酷、更具有吸引力,其中最常見的方法就是使用圖片、標志等。但是,這也會帶來一個問題,因為越漂亮、越吸引人的網站漂亮的圖片等就容易被別的網站悄悄的盜用。下面我們就一起討論如何保護自己的勞動成果。目前存在的常見問題:
使用HTML標記IMG在自己的網站中引用網站的圖片。
從網站上復制或者下載圖片,然後放在自己的網站上使用。 完全杜絕這兩種盜用行為是不現實的,但是通過技術手段可以使得這種盜用非常困難。在Linux Apache環境下,通過配置可以限制網站圖片被盜用。 1.標識需要保護的文件 作為保護的第一步,首先需要標識出需要保護的文件,然後才能進一步對被標識的文件進行保護。在Apache配置文件中添加如下內容:
<FilesMatch "\.(gifjpg)"> [這裡添加保護限制命令]
</FilesMatch>
將容器命令包含在 或 等容器中,或者單獨列出,不處於任何保護容器中,這樣就會對網站所有文件進行保護,甚至可以存放在.htaccess文件。將該容器放在不同的位置,保護的范圍機會有所不同。 2.Referer HTTP頭字段 當用戶訪問Web服務器請求一個頁面時,用戶浏覽器發送的HTTP請求中會有一個被稱為HTTP請求頭(HTTP Request Header)的信息,這個頭信息中包含客戶請求的一些信息,例如發出請求客戶主機的浏覽器版本、用戶語言、用戶操作系統平台、用戶請求的文檔名等,這些信息以變量名/變量值的方式被傳輸。 在這些信息中,Referer字段對於實現防止圖片盜用非常重要。Referer字段指定客戶端最後一個頁面的URL地址。例如,如果用戶訪問頁面A,然後點擊在頁面A上到頁面B的鏈接,訪問頁面B的HTTP請求會包括一個Referer字段,該字段會包括這樣的信息“這個請求是來自於頁面A”。如果一個請求不是來自於某個頁面,而是用戶通過直接在浏覽器地址欄輸入頁面A的URL地址的方式來訪問頁面A,那麼在HTTP請求中則不會包括Referer字段。這樣對於我們防止盜鏈有什麼幫助呢?Referer字段是幫助判斷對圖像的請求是來自自己的頁面,還是來自其它網站。 3.使用SetEnvIf對圖像進行標記 作為一個簡單的例子,假設需要保護的網站的主頁面為http://my.apache.org,這時候希望限制所有不是源於本網站的網絡訪問請求(例如只允許訪問包含在本網站頁面內的圖片)。這裡可以使用一個環境變量作為一個標記,如果條件滿足時就設置該變量,如下所示: SetEnvIfNoCase Referer "^http://my\.apache\.org/" local_ref=1 當Apache處理一個請求時,它會檢查HTTP請求頭中的Referer字段,如果該請求來源於本網站(也就是請求頁面的URL為本網站域名),則設置環境變量local_ref為1。 4.在訪問控制中使用環境變量 Apache配置文件中的Order、Allow和Deny命令可以實現對文檔的基於環境變量的訪問控制,使用Order、Allow和Deny命令首先要考慮的是Allow和Deny命令的順序對於Apache處理結果的影響,應該以下面的方式使用: Order Allow,Deny 這裡表示Apache首先處理該HTTP請求相關的Allow命令,然後處理相關的Deny命令。這種處理方式的默認策略是Deny,所以除非有明確的允許的設置,否則該請求就會被拒絕,任何非法訪問將無法成功。 因此,在Apache的配置文件httpd.conf中添加如下命令,來實現本地引用發揮作用:
Order Allow,Deny
Allow from env=local_ref
這樣只有在local_ref變量被定義的情況下,該請求才會被允許;否則其它所有請求和訪問將會被拒絕,因為這些請求不滿足Allow條件。 注意,請不要在.htaccess和httpd.conf中使用 容器命令,這裡不需要該容器命令,除非有特殊的需求,例如希望Get請求和Post請求進行不同的處理。 把這些相關設置放在一起,在Apache的配置文件中就會有如下內容:
SetEnvIfNoCase Referer "^http://my\.apache\.org/" local_ref=1
<FilesMatch "\.(gifjpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
配置可以存放在服務器配置文件httpd.conf中,或者存放在.htaccess文件中,最後的效果是一樣的:在這些命令作用的范圍內,只有從本網站引用的圖片才可以被訪問。 5.對圖片進行水印處理
當一位作者耗費心血創造了一件數碼作品,並將其運用於信息網絡中,而非法使用者可以很方便地得到與原作一模一樣的拷貝,並可任意進行偽造和篡改,而合法用戶卻很難證明自己對作品的所有權,更無法確認偽造和篡改的程度,也就無法通過法律武器 保護自己的權益。浏覽者在非法網站直接訪問非法的圖片,而合法網站的版權受到侵害,卻得不到賠償,甚至無法發現這種盜用。因為Web的工作方式對這種類型的盜用實際上無法被阻止,但是可以使得這種盜用更加困難。完全杜絕這種盜用行為是不現實的,但是通過技術手段可以使得這種盜用非常困難。一個數字圖片進行水印處理是指在圖片中加入一個特殊的簽名編碼,並且可以進行驗證和檢測,數字水印並不會降低圖片的質量,甚至可以實現圖像被切割以後的剩余部分仍然會包括水印信息。圖片被再次編輯、打印,並再次掃描以後,水印仍然可以被檢測到。因此,水印技術是一個非常好的保護圖片不被盜用的技術。這是將特制的不可見的數字標記隱藏在數字產品中,用以證明原創作者對作品的所有權,並作為起訴非法侵權者的證據,從而保護作者的合法權益。數字產品包括圖像、聲音、文檔、視頻信息等等。下面介紹一個加上數字水印的過程。假設有一幅數碼攝影圖像,
使用GIMP打開欲添加水印的圖片,選好添加水印的位置。如果添加水印是為防止圖片被盜用,那麼水印最好與圖片主要內容部分相混合,這樣可以增大防盜用的難度。如果只是作為自己的簽名,那麼通常放在圖片的邊緣,只要簽名清晰即可。選擇GIMP工具箱中的文字工具,這時光標就會變為文字編輯樣式。單擊欲添加水印的位置就會出現文字對話框,該對話框上部可以設置添加文本的字體、樣式和大小,最後在預覽文本框中加入水印文字,這時圖片上就會出現預覽中鍵入的文字,並且為選區文字,此時可以自由移動該文字的位置,文字位置確定後就不可以移動了。接下來打開GIMP圖像窗口選單,選擇“對話框/圖層、通道和路徑”選項,在打開的圖層、通道和路徑對話框中選中文本圖層,單擊新建圖層按鈕將文本作為一個單獨的圖層。選中文本圖層,並調節該層的Alpha(不透明)值為6~50之間,這時該圖片的水印效果就出來了。另外為自己的傑作加上水印,就像畫家要為自己的作品加上簽名一樣。見圖8。
圖8 添加水印的電子相冊
目前基於Gallery Web服務器的電子相冊已經應用於在香港、澳門、台灣以及國外許多博客網站。它是一個用php編寫的、基於Web的電子相冊軟件,它安裝很簡單,有完善的安裝向導,並且提供給使用者非常直觀方便的創建和管理工具。圖片管理工具包括自動創建預覽小圖、改變圖片尺寸、旋轉圖片、圖片分類、添加圖片標題和說明等等。