安装 XAMPP 进行方便集成开发
原文轉自:http://www.ibm.com/developerworks/cn/linux/l-xampp/
Nils-Erik Frantzell (nfrantze@ucsc.edu)計算機科學系,UC Santa Cruz
2004 年 11 月 30 日
諸如 Apache Friends 中的 XAMPP 之類的開放源碼軟件簡化了開源項目的開發,方式是通過簡化在穩定和標準化環境中應用程序的編寫和分發。傳統情況下,AMPP -- Apache、MySQL、PHP 和 Perl -- 都是以單獨產品的形式進行安裝和配置。將它們集成到中間件軟件中的承諾使得開源項目的開發相對于 J2EE? 應用程序的開發來說更具競爭力,至少對于底層的應用程序來說是如此。在本文中,您將學習如何在 Mandrake Linux? 10.0 上安裝、配置和備份 XAMPP,以及如何配置和管理 XAMPP,以及如何在 XAMPP 環境中安裝自己的應用程序。J2EE(Java 2 Enterprise Edition?)的出現極大地改變了軟件領域,它提供了一個集成的中間件軟件,可以極大地簡化編寫和部署 Java? 應用程序的任務。一時之間,開源社區因為缺少類似的集成架構而被遠遠地拋到了后面。
最近以來,隨著在 Apache Friends 中出現 XAMPP 這種集成的開放源碼軟件,這種情況開始逐漸地發生變化。雖然這些工具與 J2EE 相比還非常簡單,甚至是微不足道,但是不管怎樣,這對于通往全面的系統集成之路來說,都邁出了重要一步。 PHP 5.0 (它使得 PHP 成為完全面向對象的)是這種趨勢正在加速發展的一個良好的風向標。
本文的重點是介紹集成的開放源碼軟件之一:Apache Friends 中的 XAMPP。
XAMPP 簡介
XAMPP 是一個功能全面的 AMPP (Apache、MySQL、PHP、Perl)軟件包,這是 Linux 平臺上可以使用的幾種非商業 AMPP 中間件之一。采用這種緊密的集成,XAMPP 可以運行任何程序:從個人主頁到功能全面的產品站點(雖然這僅僅用于開發目的;出于安全考慮,XAMPP 還不適于用在產品服務器上)。
XAMPP 實際上在以下幾個方面大放光彩:
- 易于安裝和設置。
- 包含很多有用的軟件包,可以簡化諸如生成流量報告和加速 PHP 內容之類的任務。
- 已經在 SUSE、Red Hat、Mandrake、Debian Linux 發行版以及 Windows? 和 Solaris 上進行了完整的測試。
對于本文來說,我們將在 Mandrake Linux 10.0 上安裝 XAMPP。現在我們首先看看 XAMPP 中提供的缺省軟件包。
基本的軟件包
基本的軟件包包括系統、編程和服務器軟件:
- Apache,著名的 Web 服務器
- MySQL,一種杰出、免費的開源數據庫
- PHP,一種編程語言(在撰寫本文時版本為 4.3.8 和 5.0.1)
- Perl,一種編程語言
- ProFTPD,一個 FTP 服務器
- OpenSSL,可以支持安全套接字層
圖形軟件包
XAMPP 包括以下與圖形有關的軟件包:
- GD,“Graphics Draw”庫
- libpng,官方的 PNG 參考實現庫
- libjpeg,官方的 JPEG 參考實現庫
- ncurses,字符圖形庫
數據庫軟件包
如果沒有以下的數據庫軟件包,怎么還能叫集成軟件呢?
- gdbm,標準的 UNIX? dbm 庫的 GNU 實現
- SQLite,一個相當小的、無需任何配置的 SQL 數據庫引擎
- FreeTDS,一個數據庫,讓 UNIX 和 Linux 程序可以訪問 Microsoft? SQL 和 Sybase 數據庫
XML 軟件包
為了開發 XML 程序,XAMPP 應該包含以下軟件包:
- expat,一個 XML 解析器庫
- Salbotron,一個 XML 工具包
- libxml,一個 XML C 解析器和 GNOME 工具包
PHP 軟件包
為了開發 PHP 程序,XAMPP 應該包括以下軟件包:
- PEAR,PHP 庫
- 一個 pdf 類,可以使用 PHP 生成動態的 PDF 文檔
- TURCK MMCache,一個 PHP 性能增強器
其他軟件包
最后,XAMPP 中包含了以下軟件包來展示自己的強大功能:
- zlib,一個壓縮庫
- mod_perl,在 Apache 中嵌入了一個永久的 Perl 解釋器
- gettext,一個工具集,可以幫助 GNU 軟件包生成多語言的消息
- mcrypt,一個加密程序
- Ming,一個 Flash (SWF) 輸出庫
- Freetype2,一個軟件前端引擎
- IMAP C-Client,一個郵件編程 API
現在讓我們討論一下安裝 XAMPP 的問題。
?
|
安裝并作為守護進程運行
要安裝 XAMPP,請從 Apache Friends Web 站點上下載最新的二進制文件(請參閱 參考資料 中的鏈接)。使用下面的命令將其解開到 /opt 目錄中:
tar xvfz xampp-linux-1.4.7.tar.gz -C /opt
就是這樣!XAMPP 現在已經被安裝到 /opt/lampp 目錄中了。之前安裝在 /opt 目錄中的內容都已經被覆蓋了。如果您正在運行一個舊版本的 XAMPP,并且不想再次下載整個軟件包,Apache Friends 中還提供了一個升級包來下載需要的軟件包。
現在所有的軟件都已經安裝好了,讓我們啟動新的守護進程。將當前的工作目錄切換到 /opt/lampp ( cd /opt/lampp)并輸入下面的命令:
./lampp start
您應該會看到下面的結果:
Starting XAMPP for Linux 1.4.7...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
XAMPP 現在就啟動并運行了。最好的驗證方法是打開一個瀏覽器并在地址欄中輸入 localhost,并按回車鍵。此時瀏覽器會被重定向到 XAMPP 的 welcome 頁面。
圖 1. XAMPP welcome 頁面
點擊左邊導航欄中的 Status 鏈接,就可以看到必需的服務已經正確啟動了。如果所有的服務都運行正常,您就會看到下面的頁面:
圖 2. Service status 頁面
恭喜!您現在已經安裝和設置好了一個完整的 AMPP 開發環境了。現在讓我們安裝一個簡單的應用程序來展示一下如何使用這種環境。
?
|
安裝一個簡單的應用程序
要利用 XAMPP 的基本特性,您需要一個簡單的應用程序。最好的應用程序是一個在后端使用數據庫的程序;并使用一個相當簡單的數據庫,其中包含了一個精心設計的表。
測試數據庫包含一個只有一列的表。讓我們按照測試程序的(計算機)傳統,設計在我們的表中存放一條記錄 “Hello World!”。我們將使用一個 Perl 和 一個 PHP 腳本來訪問這個數據庫。這兩個腳本都可以訪問這個數據庫,從中檢索這行記錄,并將其輸出到屏幕上。
工具
我們的數據庫將使用 phpMyAdmin 來創建和管理,這是使用 PHP 編寫的一個杰出的基于 Web 的 MySQL 管理工具。它有一個非常友好的用戶界面,可以允許您處理各種復雜的任務,包括創建/刪除/修改數據庫和表,以及導出數據、管理關鍵字和處理 SQL 文件。phpMyAdmin 是一個杰出的工具,因為:
- 它可以幫助初學者熟悉 MySQL,而不用使用命令行接口來處理這些任務。
- 它允許高級用戶更快更容易地執行簡單的任務和例行的任務。
- 當您希望為某些用戶授權訪問數據庫而不想讓他們完全訪問 shell 時,對于這種情況非常有用。
創建數據庫
要在 phpMyAdmin 中創建一個數據庫,請遵循下面的步驟:
現在您必須在數據庫中創建一個表,并指定該表中應該包含哪些字段(字段與列類似)。讓我們將自己的表稱為“hello_table”,并讓它只包含一個字段,其中保存記錄“Hello world!”。在 Name 文本域中輸入 hello_table,并在 Fields 文本域中輸入 1。輸入完之后,點擊 Go。
現在應該執行創建數據庫的最后一個步驟了:為列選擇一個名字和一個數據類型定義。讓我們選中“hello”并將其命名為“hello_column”;并在 Field 文本域中輸入 hello_column。
由于我們要在列中存儲字符串“Hello World!”,因此其類型必須是 char,長度為 12 (字符串 "Hello World!" 的長度)。缺省類型 varchar 就足夠了。在 Type 后面的 Length/Values 文本域中,輸入 12,表示最大長度是 12 個字符。不用關心該頁面中其他域的設置,繼續點擊 Save。
如果一切正常,您應該會看到下面的界面:
圖 3. Hello World 數據庫摘要
現在讓我們插入記錄 "Hello World!"。點擊 Insert 標簽,并在 Value 文本域中輸入 "Hello World!"。 Function 下拉列表在這個例子中可以保留不變。點擊 Go,將 "Hello World!" 記錄插入數據庫中。
要確認記錄已經成功插入數據庫,請點擊 Browse 標簽。現在會顯示 "hello world"。
腳本
現在后端軟件已經啟動并運行了,應該處理腳本部分了。我們將使用兩個腳本,一個使用 Perl 編寫,另外一個使用 PHP 編寫。對于每個腳本來說,惟一的要求就是一個數據庫連接、數據庫訪問權限以及在屏幕上輸出檢索到的行。
清單 1. 簡單的數據庫連接,以及在 PHP 中使用 PEAR::DB 進行檢索
| require_once 'DB.php'; // must be included in any script that uses PEAR::DB // it is a huge security risk to store your database connection information // in the same file as your code. We have done it here solely for the purpose // of this example. Please store your database connection information in another // file that is not in your document root directory and adequately protected. // database connection information $db_host = "localhost"; // hostname of the database server $db_user = "root"; // database user's username $db_pass = ""; // database user's password, nothing by default $db_name = "hello_world"; // the name of the database to connect to $db_type = "mysql"; // the type of database server. // your data source name string. This contains the connection // information for your database. $dsn = "$db_type://$db_user:$db_pass@$db_host/$db_name"; // creates a database connection object or a database error // object based on the success of the database connection. $db = DB::connect($dsn, TRUE); // if an error was encountered, the script exits with an error message if (DB::isError($db)) { die($db->getMessage()); } // SQL query that you wish to use to query the database $sql = "SELECT * FROM hello_table"; // query the database, store result in $result $result = $db->query($sql); // exits with an error message if the query was unsuccessful if(DB::isError($result)){ die($result->getMessage()); } // fetch rows from the database until no more rows exist. // output the "hello_column" field of each row to the screen. // once no more rows exist, exit with an error message. while($row = $result->fetchRow(DB_FETCHMODE_OBJECT)){ if(DB::isError($row)){ die($row->getMessage()); } print("<H1>$row->hello_column</H1>"); $result->free(); } $db->disconnect(); //disconnect from the database |
?
這兩個腳本都會連接到數據庫上,并檢索一行數據,并將該行輸出到屏幕上。PHP 的數據庫訪問是使用 PEAR::DB 完成的,這是一個方便的數據庫抽象層,不管數據庫是如何實現的,它都可以使用相同的數據庫訪問代碼。不幸的是,XAMPP 中并沒有包含一個用于 Perl 的數據庫抽象層。
存放腳本
因此,現在我們已經做好了所需的一切。數據庫已經啟動并運行了,并且已經有了兩個測試用的腳本。現在需要做的工作是將這些腳本放到正確的地方。讓我們快速了解一下 XAMPP 是如何存放在硬盤上的,如 清單 2 所示。
我們現在感興趣的目錄是 /opt/lampp/htdocs/,也就是 Apache 的 Documents 目錄。在 Web 站點的根目錄中顯示的任何 Web 頁面和相關文件都位于這個目錄中。由于我們現在能夠看到 XAMPP 的 welcome 頁面,因此這個目錄中已經存在一些文件了。現在讓我們快速了解一下這個目錄的內容:(輸入 ls /opt/lampp/htdocs):
drwxr-xr-x 2 root root 4096 Jan 24 2003 apache
-rwxr-xr-x 1 nobody root 163 Oct 31 2003 index.html
drwxr-xr-x 2 nobody root 4096 Sep 12 21:54 webalizer
drwxr-xr-x 5 root root 4096 Jun 15 06:24 xampp
正如您可以看到的一樣,這個目錄中早已存在一些文件了。讓我們在這個目錄中建立一個自己的目錄 hello_world ( mkdir hello_world)來存放腳本。從現在開始,您就可以輸入 localhost/hello_world 來訪問 hello_world 目錄中的所有文件了。現在,將這兩個腳本保存到這個目錄中。到此為止,所有一切都已經完成了!
測試應用程序
要測試這個應用程序,首先切換到瀏覽器中,輸入 localhost/hello_world。您應該會看到下面的界面:
圖 4. Hello World!
恭喜!您已經設置好 XAMPP 上的一個應用程序了。
?
|
增強安全性
XAMPP 的目標是一個開發環境。這種配置為程序員提供了一種對工具集沒有任何限制的自由控制能力。作為自由的結果,缺省的 XAMPP 安裝是非常不安全的。例如,有些操作幾乎無需登錄。
對于 0.9.5 以及更新版本的 XAMPP 來說,您可以運行下面的命令來增強安全性:
/opt/lampp/lampp security
此時會給出一些提示說明現有的不安全的地方,您可以選擇是否修復這個問題。雖然這樣可以使 XAMPP 安裝更加安全,但是您仍然不應當在產品服務器中使用 XAMPP。清單 3 列出了安全性提示:
清單 3. XAMPP 中的安全性提示
| XAMPP: Quick security check... XAMPP: Your XAMPP pages are NOT secured by a password. XAMPP: Do you want to set a password? [yes] yes XAMPP: Password: XAMPP: Password (again): XAMPP: Password protection active. Please use 'lampp' as user name! XAMPP: MySQL is accessable via network. XAMPP: Normaly that's not recommended. Do you want me to turn it off? [yes] yes XAMPP: Turned off. XAMPP: Stopping MySQL... XAMPP: Starting MySQL... XAMPP: The MySQL/phpMyAdmin user pma has no password set!!! XAMPP: Do you want to set a password? [yes] yes XAMPP: Password: XAMPP: Password (again): XAMPP: Setting new MySQL pma password. XAMPP: Setting phpMyAdmin's pma password to the new one. XAMPP: MySQL has no root passwort set!!! XAMPP: Do you want to set a password? [yes] yes XAMPP: Write the password somewhere down to make sure you won't forget it!!! XAMPP: Password: XAMPP: Password (again): XAMPP: Setting new MySQL root password. XAMPP: Setting phpMyAdmin's root password to the new one. XAMPP: The FTP password is still set to 'lampp'. XAMPP: Do you want to change the password? [yes] yes XAMPP: Password: XAMPP: Password (again): XAMPP: Reload ProFTPD... XAMPP: Done. |
|
執行備份
因此,假設您的 XAMPP 安裝已經啟動并運行了幾周了,并向其中輸入了很多數據,那么您就應該防范出現硬盤崩潰的風險。您需要做哪些備份工作呢?
使用 XAMPP 非常簡單。將工作目錄切換到 /opt/lampp ( cd /opt/lampp) 中,并輸入下面的命令:
./lampp backup
如果您已經設置了 MySQL 的 root 密碼,那么在這個命令后面就要添加上 root 用戶的密碼。您應該會看到下面的內容:
Backing up databases...
Backing up configuration, log and htdocs files...
Calculating checksums...
Building final backup file...
Backup finished.
Take care of /opt/lampp/backup/xampp-backup-15-09-04.sh
要恢復以前的備份,請以 root 用戶的身份運行下面的命令:
sh backupfilename
如果一切正常,您將看到下面的結果:
Checking integrity of files...
Restoring configuration, log and htdocs files...
Checking versions...
Installed: XAMPP 1.4.7
Backup from: XAMPP 1.4.7
Restoring MySQL databases...
Restoring MySQL user databases...
Backup complete. Have fun!
You may need to restart XAMPP to complete the restore.
重新啟動 XAMPP ( cd /opt/lampp, ./lampp restart),恢復的數據應該可用了。
?
|
結束語
雖然這種集成解決方案軟件是否可以完全與 J2EE 競爭,尚需時日來進行驗證,但是最近的發行版 PHP 5.0 (主要改進包括完全的面向對象的支持)與 MySQL 數據庫的共同快速增長已經證明了它在開發人員之間越來越流行。這意味著像 XAMPP 這種開放源碼中間件在低端軟件市場上還是有一定的存活空間的。
參考資料
- 您可以參閱本文在 developerWorks 全球站點上的 英文原文。
- 從 Apache Friends 上下載 XAMPP,這是一個非盈利組織,目標是增強 Apache Web 服務器。該網站上有最新的 XAMPP 信息和發行版本。
- PHP 簡介 (developerWorks,2000 年 12 月) 可以引導您入門 PHP 腳本語言。當您閱讀這篇文章時,只需在搜索域中輸入“PHP”,即可查找 IBM 提供的許多豐富的 PHP 資源。
- 更佳編程之路 系列文章 (developerWorks) 是一組優秀的系列文章,可讓您更加深入地了解 Perl 語言。要想了解有關 Perl 的更多內容,請搜索 developerWorks 站點。
- 將 PHP 應用程序連接到 Apache Derby (developerWorks,2004 年 9 月)和 使用 Apache Derby 開發 Perl 應用程序 (developerWorks,2004 年 10 月)這兩篇文章是 PHP 和 Perl 開發人員必讀的文章。
- phpMyAdmin 項目 包含了很多有用的信息,并可以下載這個杰出的基于 Web 的 MySQL 管理工具。
- Practical Unix & Internet Security (O'Reilly & Associates,1996) 是一本有關系統安全性各個方面的優秀參考書,內容涉及從用戶管理到起草安全策略。
- PHP.net 提供了一個在線的可搜索函數庫,它對于查找有關 PHP 方法的詳細信息和學習語言構造有很大的幫助。
- The PHP Extension and Application Repository (PEAR) 提供了一些可以簡化 PHP 編程的組件,包括非常流行的 PEAR::DB。
- 有關 MySQL 的幫助, MySQL reference manual 中包含了有關這個流行數據庫各個方面的詳細信息。
- 請訪問 Apache HTTP Server Project,可以找到有關 Web 的最流行 http 服務器的最新版本和信息。
- 在 developerWorks Linux 專區 中可以找到更多為 Linux 開發者準備的資源。
- 從 developerWorks 的 Speed-start your Linux app 專區下載運行于 Linux 之上的 IBM 中間件產品的免費測試版本,其中包括 WebSphere? Studio Application Developer、WebSphere Application Server、DB2? Universal Database、Tivoli? Access Manager 和 Tivoli Directory Server,并可學習 how-to 文章和獲得技術支持。
- 通過參與 developerWorks blogs 來參與 developerWorks 社區的工作。
- 在 Developer Bookstore 的 Linux 區域中購買有關 Linux 的打折書籍。
關于作者
| Nils-Erik Frantzell 目前在位于圣克魯斯的加州大學學習計算機科學。他的興趣包括 Linux、Web 編程(尤其是 PHP)、網絡、開源技術以及一些計算機硬件。他的業余時間用于飼養一些食肉性的魚和欣賞電子音樂。您可以通過 nfrantze@ucsc.edu 與 Nils-Erik 聯系。 | ||
總結
以上是生活随笔為你收集整理的安装 XAMPP 进行方便集成开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Linux系统的性能测试
- 下一篇: jmeter之jp@gc - Permo