登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
技術專欄

技術專欄

前言

DotCloud 是個很新的 PaaS 供應商,與之前的 PaaS 系統相比,這一家所提供的平台其資料庫以及程式語言十分豐富,目前的支援列表包括了 Java、Perl、Python、Ruby、PHP、Node.JS、MySQL、PostgreSQL、Redis、MongoDB,目前的主流組合都可以滿足。

在 DotCloud 系統中,使用者需替 App 定義所需的服務節點(在 DotCloud 網站中,稱為 "Stack" 或 "Service",因 Stack 意義為「堆疊」,容易造成混淆,在本中以一般分散式計算所用的名詞「節點」或「服務節點」代稱之)。例如,一個需要 Perl 與 MySQL 組合的 App,就需要建立兩個服務節點,其一負責執行 Perl 程式,其二則運行 MySQL。爾後如需擴增規模,可視實際負載情況選擇增加 Perl 節點或是 MySQL 節點。若需要替 App 增加頁面快取,可選擇增加 Static 節點(只存靜態檔案),並配合 Perl Worker 節點在背景產生靜態頁面。

作為替 Web App 特別打造的服務平台,DotCloud 獨特的彈性可見一斑。

簡介

講到 PaaS (platform as a service),我們很難忽略 Google 的 GAE (Google App Engine),這個由近 10 年來的網路巨人在 2008 年推出的雲端平台,雖然在技術的定位與根本上和 Amazon 的 AWS 有著本質上的不同,在坊間卻常常被拿來討論比較。雖然對 GAE 的評價毀譽參半(請參考下列的「優缺點」部分),但 GAE 在雲端平台中的重要性可見一斑。

01. 前言

隨著雲端服務的興起,許多 PaaS 平台 (Platform as a service) 相繼問世,PHP 最近也出現了一些選擇,最早公開的應該是 PHPFog 以及在歐洲的 cloudControl;再來是從 Ruby 起家,與 Facebook 合作後公告提供 PHP 的 Heroku,以及 Zend 尚未推出正式版的 PHPCloud

由於筆者最嫻熟 PHP,而且在痞客邦擔任技術研發部產品組組長,所以想接觸 PHP 相關的 PaaS,於公一來是希望能上傳痞客邦的一些小功能,減少痞客邦的維運成本,二來痞客邦已有公開的 API,可以開放外部功能的 open source,讓更多人了解痞客邦的 API;於私則是平常心血來潮寫些小東西,總算有個不需要花錢的地方可以嘗試了,於是先開始著手研究 Heroku。

簡介

上次我們介紹了如何使用 KVM 與 libvirt 架設虛擬化叢集,其儲存方式是採用 NFS。但NFS 並非唯一的網路存取方案,本篇將會介紹另一種 iSCSI 的網路儲存方式。此外,也會針對 QEMU 特有的 qcow2 儲存格式進行介紹,希望協助讀者在實作時能更快上手。

簡介

NPM Logo

npm (Node Package Manager) 是 Node.js 下的主流套件管理程式。因為 javascript 易開發的特性,Node.js 的套件數量龐大,目前有 4,468 個套件發佈登記在 npm 的資料庫中。透過 npm 可以協助開發者安裝與移除 Node.js 套件,並發佈自己開發的套件。

前言

對任何作業系統以及程式語言而言,管理「擴充套件」是非常重要的一環。有了擴充套件,可以更容易地操作電腦,程式設計師寫程式也變得更輕鬆。

您也許聽過「不要重造輪子」這句話,或是 DRY (Don't Repeat Yourself),講得就是「別人已經寫好的東西,就拿去用吧,不用自己再重新寫一套」。

本次介紹的 easy_install 以及 pip,正是 Python 程式語言的套件管理程式,讓您可以直接使用前人的心血結晶。

以下敘述的指令,以 # 開頭的,請用 root 權限;以 $ 開頭的,使用一般使用者權限即可。

前言

RubyGems LogoRubyGems 是 Ruby 社群最常使用的套件管理系統,如同 Perl 的 CPAN 或 Python 的 EasyInstall / pip,使用者可以很簡易地安裝及管理套件。與其它的套件管理系統一樣,RubyGems 也有版本與相依性管理。

RubyGems 大致可以分為兩個部份。一個是 gem 命令,另一個則是在 runtime 中管理可用的 gems 與其版本。在這篇淺談中,將不會介紹所有的功能與選項,使用者請自行參閱 gem help

簡介

CPAN - Comprehensive Perl Archive Network 的中文名稱為「Perl 綜合典藏網」,是各種程式語言線上典藏網的始祖,在它之後許多語言也複製類似的模式,比如 R 語言的 CRAN、Tex 語言 CTAN、Python 語言的 PyPI 與 PHP 語言的 PEAR 等。

CPAN 網站自從 1995 年十月上線以來,已經累積了 101,232 個 Perl 模組,共 23,715 個套件,9330 個作者,在全世界有 269 個鏡像伺服器,而且這些數字還在迅速累加。幾乎開發者需要的所有功能在 CPAN 網站上都能找得到實作,而且因為 Perl 程式語言秉持 TMTOWTDI (There's More Than One Way To Do It) 的哲學,針對不同特性強化的實作往往不只一個,讓開發者與使用者可以選擇最適合自己的模組。

簡介

Pecl Logo Pear LogoPHP 從 1995 年發展至今已有十多年的歷史。因為學習門檻低,許多人在摸索一段時間後即可快速上手,PHP 就成為許多人第一次接觸 web base 程式設計時所使用的程式語言。隨著網路興起,越來越多程式語言加入 web base 的開發行列。其中,JAVA 程式語言因為擁有豐富的 API 可以直接套用在 JSP 及 Servlet 中,讓已經熟悉開發 JAVA 應用程式的程式設計師可以無痛轉移到 web base 的開發行列。而使用 Asp.Net 的開發者,也可以結合 C# 及 VB 等程式語言直接進行 web base 開發。

面對其他程式語言的競爭,PHP 陣營提供了許多套件供開發者直接使用,Pear (PHP Extension and Application Repository) 的作者 Stig S. Bakken 於 1999 年底推出 Pear,目的是讓 PHP 的開發者能重複利用相同功能的元件,有效減少開發過程中繁雜的工作內容,進而達到事半功倍的效果。從 Pear 問世至今,除了 Pear 這套函式庫外,也發展了許多其他的函式庫,例如 CodeIgniter 及 Zend Framework 等。這些工具除了讓 PHP 開發者擁有多元的選擇性外,每個套件也各有其愛好者。

除了 Pear 外,還有 Pecl 的 PHP 擴展模組方式。兩者的不同之處在於,Pear 是純粹用 PHP 程式語言撰寫的擴展模組,而 Pecl 則是用 C 或 C++ 程式語言撰寫的。

前言

相信讀者在前篇文章依照內容操作一遍後,對於 CRUD 的應用邏輯與設計,以及 RoR 的架構都有了些許認識。只要多加實做,將會覺得 Rails 開發的作業時間短得不可思議。

Ruby on Rails 是一套架構很完善的 MVC Framework,這樣的開發架構可有效分隔出程式模組之間共同的資料傳遞方式,以及階層的物件概念,讓開發專案能以共同的標準鑄造程式碼,未來也讓開發員在進行維護與修正程式時容易閱讀。

前言

本文將實作建立 lagg 虛擬網路介面,以達到 FreeNAS 主機網路發生故障時的轉移功能,並且分別解說由 Console 或由 GUI 圖形介面進行的修改方式,設定完成後會進行 Lagg 故障轉移機制測試。

Virtualenv 和 Pythonbrew 都是可以創造虛擬(獨立)Python 環境的工具,只是虛擬(獨立)標的不同。

Virtualenv 可以隔離函數庫需求不同的專案,讓它們不會互相影響。在建立並啟動虛擬環境後,透過 pip 安裝的套件會被放在虛擬環境中,專案就可以擁有一個獨立的環境。

簡而言之,Virtualenv 可以幫你做到:

  • 在沒有權限的情況下安裝新套件
  • 不同專案可以使用不同版本的相同套件
  • 套件版本升級時不會影響其他專案

Pythonbrew 則可以在家目錄中安裝多個 Python,並迅速地切換版本;也可以在指定的 Python 版本下批次測試你的 Python 程式;另外更整合了 Virtualenv。

這篇文章會詳細介紹這兩個工具,讓你在多人開發及多版本開發的環境中更得心應手。

前言

有時候在網路下載現成的 PHP 論壇或其他圖片管理軟體,例如 phpBBGallery,安裝後卻出現很多錯誤訊息。初學者面對這種情形一定非常困擾,心中猜想到底是該軟體的問題,還是自己安裝步驟不正確。

身為 PHP 軟體工程師,需要注意 PHP 各版本之間的差異,例如函式是否已經被官方移除等。這些改變都會造成開發者或使用者的困擾。因此,在每次釋出新版軟體前,應該進行 PHP 各版本的相容性測試,有以下兩種作法:

  1. 使用不同台機器測試不同 PHP 版本。
  2. 在同一台機器上安裝多個不同的 PHP 版本。

第 1 種方式需要很多硬體資源和安裝時間,除此之外,不同的機器應部署相同的測試環境。相對來說,第 2 種作法的好處顯而易見,除了可以一次解決軟體相依性的問題,執行跨版本的測試也比較容易。

本篇文章將以 phpfarm 介面解決上述遇到的問題。後續的指令及操作環境皆於 Ubuntu 發行套件下進行。

簡介

2010 年二月,台灣的 CPAN 模組開發者─劉康民 (gugod) 釋出了 App::perlbrew 模組,該模組以 Ruby 的 rvm 概念出發,意即使用者可以利用 Perlbrew 將不同版本的 Perl 安裝在 $HOME 路徑內,並且任意切換不同版本的 Perl。

使用 Perlbrew 有幾個優點:

  • 不需使用 sudo 來安裝 CPAN 模組
  • 可以使用每個月更新的 Perl
  • 可嘗試新的程式語言功能 可以不受 Vendor Perl 限制(平台內建的 Perl)
  • 可在不同版本的 Perl 下測試模組
  • 可整合至 bash、zsh、csh 環境變數

前言

RVM Logo相信很多人學習 Ruby 是因為 Ruby on Rails(以下簡稱 Rails)的緣故,但 Rails 改版的速度很快,除了主要版本經常大幅度更新外,小版號之間的變動也不小,例如 Rails 3.0.x 與 3.1.x 架構上差異頗大。Ruby 程式語言目前主流的有 1.8.x 跟 1.9.x 兩個分支,在功能上也都有些差異。

過去為了區分測試、開發環境,或檢查不同版本間的相容性,使用者需要使用不同的實體機器環境來操作;或是藉助虛擬化技術(如 VirtualBox)於相同的實體機器上模擬出不同的開發環境。無論是何種方式,都免不了安裝及管理上的麻煩。而本篇介紹的 RVM (Ruby enVironment/Version Manager) 就是針對此問題的解決方案。

系統管理師因應繁重的系統管理工作,會藉由自動化工具的協助,既不必隨時坐在主機前監控執行狀況,又可以立即了解系統目前的運作狀況,進而查出系統效能的瓶頸所在。

網路上有許多類似的軟體。先前自由軟體鑄造場電子報刊登過「以 Nagios 實作服務監控系統一文,所談的 Nagios 與本文主角 Monitorix 功能類似。因此本文除了介紹 Monitorix 外,也會比較 Monitorix 與 Nagios 的不同之處,供使用者參考。

Monitorix 官方網站:https://www.monitorix.org/

官方網站:https://sareport.darold.net/
下載網址:https://ncu.dl.sourceforge.net/project/sa-report/sa-report/8.0/sendmailanalyzer-8.0.tar.gz (118KB)


前言

許多電子郵件軟體都有內建管理功能,熱門的軟體更不乏網路熱心人士提供延伸套件。這些軟體中有的是全面性的管理工具,從調整設定檔到監控伺服器運作狀況一手包辦;有的則補強特定功能,例如分析記錄檔、統計流量程式等等。

本文推薦的 SendmailAnalyzer,是一套郵件伺服器記錄檔分析軟體,其功能主要著重於解析記錄與產生報表。

前言

本文主題為 FreeNAS 基礎網路設定。教學涵蓋主機名稱、IP 位址、網路遮罩、預設閘道、網域名稱解析伺服器等,並且分別以 Console 及 GUI 圖形介面進行說明。

實作環境:

  • 實體伺服器:IBM System x3250 (MT 4365)
    • 作業系統:FreeNAS-8.0.1-RC1 (64位元版本)
    • 網路卡:內建 Broadcom 5721/加裝 Intel Pro 1000 PT Dual Port Server Adapter
  • 區域網路 IP 網段:10.10.25.0 / 255.255.255.0
    • 預設閘道:10.10.25.254
    • DHCP 伺服器:10.10.25.198
    • 網域範圍:10.10.25.1 ~ 10.10.25.100

前言

網路儲存設備 (Network-attached storage, NAS) 的基本功能,不外乎資料儲存,以及利用權限來控管資料的存取,高階的型號更支援惡意程式掃描及 RAID(磁碟陣列)功能。在本篇文章中,筆者將簡介開放源碼社群中著名的 Samba 伺服器,並實作具有帳號控管及資料儲存功能的 NAS 系統。

下表為本篇教學的系統環境:

軟體名稱 官方網址
說明

Fedora 11

https://fedoraproject.org
Linux 作業系統。
Samba
https://www.samba.org
檔案伺服器,為了預留後續新增病毒掃描的功能,因此在此使用 Samba 3.0.23 版本,而不使用最新版本。

▲ 表1: 本篇教學的系統環境

前言

上篇我們介紹 Ruby on Rails 的快速上手方式,使用 scaffold 指令開發出完整的資料庫基礎操作的應用介面。但針對實際上的需求,仍需根據實務再作修正修正,為了使初學者能夠從中理解 Ruby on Rails 的運作過程,以打下 Ruby 的功夫底子,本篇特別示範真功夫教學。

前言

本文主題為 FreeNAS 嵌入式 USB 的安裝及製作方式。主要流程是從 FreeNAS 官方網站取得的最新映像檔,將之解壓縮後寫入 USB 儲存裝置,並且將主機 BIOS 開機順序設定為 USB 裝置開機即可開始使用 FreeNAS。

嵌入式 USB 安裝用於主機環境中無 CD/DVD ROM 光碟機的環境。

實作環境

  • 實體伺服器:IBM System x3250 (MT 4365)
  • 官方網站提供之最新映像檔:FreeNAS-8.0.1-RC1-amd64-Full_Install.xz
  • USB 隨身碟 :至少 2GB 以上的儲存空間

更多文章...

第 3 頁, 共 8 頁

3