歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Linux和Solaris建立Apache的虛擬根環境

  摘要:在Linux上安裝一個虛擬根環境化的Apache目錄樹是相當的簡單的。這個例子使用的是Red Hat 6.*和Apache 1.3.12。同時,它也包含PHP4(作為一個Apache模塊),以及在虛擬根環境化的目錄樹上的perl5的安裝。另外還安裝了mod-ssl和mod-perl    介紹    我曾經利用CERN httpd安裝和使用了已經虛擬根環境下的Web服務器。對Web服務器建立虛擬根環境有各種各樣的優點和缺點。在Web發展的早期階段,這種技術還提供了額外的有價值的安全機制。但是在這個apache的領域中,這種技術似乎沒有太大的用處,可它仍舊很有趣。    我提供對apache在linux和soloris環境下實現虛擬根環境的安裝的例子,它既可以做標准的編輯(在必要的時候被標記為non-DSO)或者做動態共享對象編輯(在必要時它將被標記為DSO)。選項為DSO的Solaris的例子還沒有進行文檔化,所以我沒有測試它(我打算在測試時使用Solaris 8)。    在Linux上安裝一個虛擬根環境化的Apache目錄樹是相當的簡單的。這個例子使用的是Red Hat 6.*和Apache 1.3.12。同時,它也包含PHP4(作為一個Apache模塊),以及在虛擬根環境化的目錄樹上的perl5的安裝。另外還安裝了mod-ssl和mod-perl。    該例也假定Red Hat 安裝比較完整 (即:有足夠的文件、庫和開發工具)。注意,如果你安裝Red Hat時用了custom(prefered)的配置,並且選擇了development選項;或者你就是使用了服務器(server)配置,你都會有一個完全的開發環境。    mysql3.22.27並沒有安裝在實現了虛擬根環境目錄樹中,但是為了完整性我們在此將它包含進去。    聲明    我並不是個專家:),尤其在加密方面(openssl、mod-ssl和company)我的水平更是有限。我也是個普通的人,也會犯錯誤,所以,如果你發現了什麼或是有什麼建設性的意見,請告訴我。    我寫這篇文章只是希望,你能從中學到一些東西,獲得一些幫助。我也可以經常提供一些RPM,但如果你知道你可以從草圖開始,獨立的建一個自己的現代Web網站,那恐怕會更有趣些。但是,在當前的Internet上,學習、理解關於運行一個Web網站各種問題以及所冒的風險,都要靠你自己了。    Solaris 例子   對Web目錄樹進行虛擬根環境化的solaris的例子與Linux的例子十分相似。當然,如果你沒有安裝GNU開發環境,solaris的例子就不可能像Linux例子那樣容易。    Solaris的例子文檔在另一個web頁中。    附加的注釋    使用工具ldd來發掘必要的共享庫。   在這個例子中,用戶有這樣的提示:  root user:  ROOT#  ordinary user:  $    我基本上都是作為普通用戶而不是root用戶來編譯和安裝各種軟件的。這有助於避免對文件系統(尤其是在使用不熟悉的軟件時)造成的不必要的破壞。這也有助於在進行危險操作前給以警示,例如在已經安裝的二進制文件上的“setuid"操作,以及在不尋常的地方安裝文件的操作等危險操作前的警示。   在這個例子中,我作為用戶soft:soft來進行編譯和安裝等操作。    其實,只要保證軟件的所有者的身份ID與Apache目錄樹用戶的ID(在本例中我們用的是888)不同就可以了。    Red Hat的缺省root環境中,有一個交互式的開關-I被加在命令cp、mv和rm上。如果你的root環境中沒有這些設置,建議你最好將它加上。你可以檢查下面的文件:    ROOT# alias grep '-i'  alias cp='cp -i'  alias mv='mv -i'  alias rm='rm -i'    你應當使你的配置盡量的簡單——不要安裝那些用不到或根本不必要的模塊。一般說來,一個標准的non-DSO(非動態共享對象)Apache,在安裝一個perl,對大多數人都是足夠的。   關於DSO和mod-ssl需要注意的地方:   如果你打算把任何東西都按照DSO模版進行編譯,那你首先要建立mod-ssl,然後你確實要按照下面的順序建立自己的Apache目錄樹。Mod-ssl會明顯的修改Apache 建立的目錄樹,據我的經驗,在使用我們剛才提到的軟件版本的前提下,下面的順序是做起來最簡單的順序:    建立Apache   在Apache中建立和增加mod-ssl   在Apache中建立和增加php 和mod-perl。   你應該在適當的地方記錄下來你是如何編譯你的目錄樹的,以便再做時參考。(你可以將其打印出來,並加上注釋)   安裝了各種軟件之後,最終的虛擬根環境化的目錄樹有23MB,其中包含了8MB的共享庫和perl。下面是基於DSO安裝的文件的總結(以KB表示):   ROOT# pwd   /www   ROOT# du -s .   22737 .   ROOT# du -s *   6832apache   0 bin   1 dev   7 etc   6679lib   1 tmp   9215usr   1 webhome   ROOT# du -s apache /*   600 apache /bin   3 apache /cgi-bin   125 apache /conf   1560apache /htdocs   133 apache /icons   392 apache /include   3925apache /libexec   64 apache /man   29 apache /var   ROOT# du -s usr/*   8410usr/Local   336 usr/bin   340 usr/lib   128 usr/share   1.獲得源代碼    如果你想將一個包加入到你的虛擬根環境化的目錄樹中,那你必須獲得這個包中任何一個文件的源代碼。多數源文件都可以從相應的Linux版本的被稱為SRPMs(RPM源代碼包)的原碼光盤中獲取;當然也可從tarball文件(.tar.gz)中獲取(這種方法很適合於你的帶寬有限的情況)。    在Red Hat 系統中你作為root用戶安裝Source:    ROOT# rpm -i /path/to/SRPMfile.src.rpm    然後,在/usr/src/redhat/SOURCES/目錄中提取出源代碼。    在我們的例子中我將指出,在Internet上你可從何處獲取這些源代碼:    軟件包版本號源代碼文檔信息  Apache 1.3.12www.apache.org/dist/www.apache.org/docs/  MySQL3.22.27 www.mysql.com/downloadswww.mysql.com/documentation/  PHP4.0.2www.php.net/downloads.phpwww.php.net/docs.php  Perl 5.00503 www.cpan.org/src/ www.cpan.org/doc/manual/Html/index.html  mod_perl1.24 perl.apache.org/dist/ perl.apache.org/#docs  Hello.pm perl.apache.org/dist/contrib/  mod_ssl 2.6.6-1.3.12 FTP://ftp.modssl.org/source/www.modssl.org/docs/2.6/  OpenSSL 0.9.5aftp://ftp.openssl.org/source/www.openssl.org/support/faq.html  RSAref2.0Google search google search    2.步驟細節    准備好一個虛擬根環境化後的文件系統    2.1 在任何一個地方安裝目錄樹    注意:最好是在另一個磁盤上,或是在非系統分區上安裝,這樣可以避免別人從Web目錄樹以外建立到文件的連接,但是你可以使用symlink(例如:/www)連接來找到這棵目錄樹。    ROOT# mkdir /eXPort/misc/www  ROOT# ln -s /export/misc/www /www    2.2 生成基本的目錄,bin將是usr/bin的連接    注意: 在這些例子中(除了我直接從一般文件系統中拷貝的代碼)我都省略了前導的“/”,所以,注意不要將你的虛擬根環境化的目錄樹與真正的“/”混淆。    在下面我將用紫紅色標記出虛擬根環境化的文件    ROOT# cd /www  ROOT# mkdir -p usr/bin usr/lib lib etc tmp dev webhome  ROOT# ln -s usr/bin bin    2.3 /tmp是假定的專用perms    ROOT# chmod 777 tmp  ROOT# chmod +t tmp    2.4 構造特殊的裝置 dev/null    ROOT# mknod -m 666 dev/null c 1 3    2.5 為你自己的時區設定時區信息(這裡使用的是MET)    ROOT# mkdir -p usr/share/zoneinfo  ROOT# cp -pi /usr/share/zoneinfo/MET usr/share/zoneinfo/  ROOT# cd etc  ROOT# ln -s ../usr/share/zoneinfo/MET localtime  ROOT# cd ..    2.6 你會發現由於缺乏本地設置,perl和mod-perl多有不便,但你可以通過在實現了虛擬根環境目錄樹中安裝本地文件來克服它:    ROOT# set grep LANG  LANG=en_US  ROOT# mkdir /www/usr/share/locale  ROOT# cp -a /usr/share/locale/en_US /www/usr/share/locale/    2.7 現在,在可以提供非常基礎的虛擬根環境化的文件系統的共享庫    ROOT# cp -pi /lib/liBTermcap.so.2 /lib/ld-linux.so.2 /lib/libc.so.6 lib/    2.8 測試你的目錄樹(Apachect1後面將要用到“cat”,但也不是必需的)    ROOT# cp -pi /bin/ls /bin/sh /bin/cat bin/  ROOT# chroot /www /bin/ls -l /    lrwxrwxrwx 1 00




Copyright © Linux教程網 All Rights Reserved