Linux執行環境大雜配

技術小甜發表於2017-11-16
—在redhat 9 下整合apache+jsp+php+mysql 
作者:田逸(sery@163.com) 發表於《開放系統世界》2005年第9期48頁 

幾天前接到一個任務,要求搭建一個既能跑jsp,又能跑php指令碼的一個伺服器執行環境,而且要求是在同一個目錄下面,就是說在一個目錄裡面有的檔案是*.jsp,有的是*.php,有的是*.html。鑑於這樣的需求,其解決方法就是要把jsp和php整合到apache裡,另外加上mysql資料庫。為了配置這樣一個環境,我花了不少時間,在這個過程中出了不少問題,幸好得到張煒宇的大力幫助,問題才得以順利解決。現在此把這些過程記錄下來,希望能對大家的工作有所幫助。 

一、 安裝linux 
我在這裡介紹ftp的安裝方式,以這種方式安裝,要比從 cdrom安裝要快一些,也不會出現在安裝過程出現不能讀光碟而無法繼續安裝。①先在一臺windows系統上安裝serv_u類似的ftp伺服器軟體,然後指定使用者目錄,並且允許匿名訪問;然後把redhat 9的三張光碟按光碟的根目錄拷貝檔案和資料夾到這個使用者目錄,在拷貝第二和第三張光碟是會提示目錄裡有相同的資料夾或檔案,問是否覆蓋,回答yes即可。拷貝完成後啟用這個ftp伺服器,在瀏覽器裡輸入 ftp://ftp 的ip地址,例如: ftp://192.168.100.100,來驗證ftp伺服器配置的正確性。②把光碟放在要安裝系統的伺服器的光碟機中,讓系統從光碟引導,片刻進入linux安裝嚮導介面。這時輸入命令列 linux askmethod然後回車,下一步….指定本伺服器的ip地址(要與ftp伺服器在同一個網段)和預設閘道器,到系統提示選擇安裝方式的時候,選中ftp方式,然後需要指定ftp伺服器的ip地址和redhat 9的存放目錄,正確無誤後,安裝往下進行,後面的步驟跟用光碟安裝差不多。建議在安裝時少安裝一些套件(但建議把mysql安裝好),比如httpd不要安裝,安裝完後從網上下載新的版本來使用。花一段時間以後,系統安裝完成。 

二、 下載所需的軟體,把下面這些軟體下載到某臺windows系統的機器裡 
1、 httpd-2.0.54.tar.gz //apache伺服器 
2、 php4.3.11.tar.gz //php直譯器 
3、 j2sdk-1.4.2-01-linux-i586-rpm.bin //java執行環境 
4、 jakarta-tomcat-5.0.28.tar.gz //jsp直譯器 
5、 fedora-core-1-i386.tar.gz //apache與tomcat的連線程式,一般的方法是用jakarta-tomcat-connectors-jk2-src-current.tar.gz,但是這個過程十分麻煩,還需依賴另外好幾個包,所以建議使用這個檔案. 

三、 上傳下載軟體到伺服器 
在上面的windows 機器上安裝ssh客戶端軟體,我用的是securecrt4.1.5註冊版。用這個軟體來遠端控制linux伺服器,非常方便。啟動軟體securecrt,建立一個會話,輸入要連線控制的linux伺服器的ip地址,填寫使用者名稱為root,輸入linux 伺服器的root密碼,片刻就可以連線到linux伺服器,然後就像在linux 本機上操作一樣。在linux上建立目錄/tmp/upload用來接收從 windows機器上傳來的檔案。用命令 #mkdir /tmp/upload 來建立目錄,然後轉到這個目錄 #cd /tmp/upload ,再使用securecrt自帶的上傳工具傳輸檔案到linux伺服器的/tmp/upload.上傳檔案:點選securecrt的選單項“transfer” “zmodem upload list…”,而後出現選擇要傳送檔案的對話方塊,按”ctrl”鍵可以選擇多個檔案,這一步完成後,點選securecrt的選單項“transfer””start zmodem upload”,花幾分鐘就可以把選定的檔案 

securecrt 遠端控制linux伺服器建立目錄 /tmp/upload 示意圖 
傳送到linux的目錄/tmp/upload.在/tmp/upload 用命令 #ls ╟al 驗證檔案是否被正確地上傳.我上傳了httpd-2.0.54.tar.gz ,php4.3.11.tar.gz,j2sdk-1.4.2-01-linux-i586-rpm.bin,jakarta-tomcat-5.0.28.tar.gz ,fedora-core-1-i386.tar.gz這五個檔案。 

四、安裝和配置 
在配置過程中,可能要對某些配置檔案多次進行修改,如apache的配置檔案 httpd.c 
(一)安裝 
①安裝jdk:在當前目錄(/tmp/upload)執行命令 
#./ j2sdk-1.4.2-01-linux-i586-rpm.bin ,輸入yes 後在當前目錄生成檔案j2sdk-1.4.2-01-linux-i586-rpm。執行命令 #rpm ╟ivh j2sdk-1.4.2-01-linux-i586-rpm,完成後jdk就會被安裝在目錄 /usr/java/j2sdk1.4.2. 
②安裝tomcat:在當前目錄對檔案解壓,用命令 #tar ╟zxvf jakarta-tomcat-5.0.28.tar.gz,解壓完成後生成目錄 jakarta-tomcat-5.0.28,然後把這個目錄移動到目錄 /usr/local ,用命令 
#mv /tmp/upload/jakarta-tomcat-5.0.28 /usr/local ,安裝 tomcat就算完成了。 
③安裝apache:在當前目錄(/tmp/upload)解壓httpd-2.0.54.tar.gz,使用命令 
#tar ╟zxvf httpd-2.0.54.tar.gz ,解壓完後轉到目錄 /tmp/upload/httpd-2.0.54,使用命令 #cd httpd-2.0.54 來進行;執行命令 #./c ╟prefix=/usr/local/apache ╟enable-module=most ╟enable-shared=max (注意prefix、enable前是兩“-”),一段時間後,如果沒有抱錯資訊出現,那麼可以繼續執行命令 #make ;和 #make install來完成apache的安裝。 
④安裝php:回到目錄 /tmp/upload , #cd ..(因為剛才轉到目錄 httpd-2.0.54),解壓檔案php-4.3.11.tar.gz, #tar ╟zxvf php-4.3.11.tar.gz,解壓完成後轉到目錄php-4.3.11, #cd php-4.3.11,執行命令 #./c ╟prefix=/usr/local/php ╟with-apxs2=/usr/local/apache/bin/apxs,完成後執行命令 #make 和 #make install 完成php的安裝。這些過程完成後,會在目錄php-4.3.11生成檔案php.ini-dist檔案,需要把這個檔案複製到 #cp php.ini-dist /usr/local/lib/php.ini 。 
⑤解壓fedora-core-1-i386.tar.gz:需要用解壓後這個目錄裡的兩個檔案。 #tar ╟zxvf fedora-core-1-i386.tar.gz. 
安裝所用命令彙總(假定當前目錄為 /tmp/upload) 
#./ j2sdk-1.4.2-01-linux-i586-rpm.bin 
#rpm ╟ivh j2sdk-1.4.2-01-linux-i586-rpm 

#tar ╟zxvf jakarta-tomcat-5.0.28.tar.gz //解壓檔案 
#cd jakarta-tomcat-5.0.28 
# mv /tmp/upload/jakarta-tomcat-5.0.28 /usr/local 

#cd .. 
#tar ╟zxvf httpd-2.0.54.tar.gz //解壓檔案 
#cd httpd-2.0.54 
#./c -╟prefix=/usr/local/apache -╟enable-module=most ╟-enable-shared=max 
#make //編譯 
#make install //安裝 
#cp php.ini-dist /usr/local/lib/php.ini //拷貝檔案 
#cd .. 
#tar ╟zxvf fedora-core-1-i386.tar.gz 
#cp fedora-core-1-i386/usr/lib/httpd/modules/*.so /usr/local/apache/modules //把模組加入到apache裡 
#cp fedora-core-1-i386/etc/httpd/conf/workers. properties /usr/local/apache/c //這個檔案是tomcat與apache協同工作的指令碼,稍後需要對它進行修改 

# tar ╟zxvf php-4.3.11.tar.gz //解壓檔案 
#./c -╟prefix=/usr/local/php -╟with-apxs2=/usr/local/apache/bin/apxs //正常//完成後會在/usr/local/apache/modules 裡生成檔案 libphp4.so,並且會在//apache的配置檔案httpd.c loadmodule php4_module //modules/libphp4.so 
#make //編譯 
#make install //安裝 

五、配置 
①配置 jdk : 修改環境變數檔案 /etc/profile ,只需在原檔案的後面加上以下幾行即可。 
export java_home=/usr/java/j2sdk1.4.2 
export classpath=/usr/java/j2sdk1.4.2/lib 
用命令 #vi /etc/profile. 
修改環境變數示意圖 

儲存檔案,用命令 #source /etc/profile 使修改馬上生效。用命令 #java ╟version 檢驗配置的正確性。 
②配置tomcat:這個過程比較複雜,要分幾步進行。 
a 修改檔案 web.xml. #vi /usr/local/jakarta-tomcat/conf/web.xml ,把web.xml檔案中的如下部分: 
<!– 
<servlet> 
<servlet-name>invoker</servlet-name> 
<servlet-class> 
org.apache.catalina.servlets.invokerservlet 
</servlet-class> 
<init-param> 
<param-name>debug</param-name> 
<param-value>0</param-value> 
</init-param> 
<load- 
</servlet> 
–> 
和 
<!– 
<servlet-mapping> 
<servlet-name>invoker</servlet-name> 
<url-pattern>/servlet/*</url-pattern> 
</servlet-mapping> 
–> 
兩部分的註釋去掉即可(就是把<!– –> 去掉)。做這一步的原因是,tomcat 4.1.12以後的版本的 servlet 呼叫器開關在預設狀態下是關閉的。 
b 修改檔案 jk2.properties。#vi /usr/local/tomcat/conf/jk2.properties 
## this file may be overriden at runtime. make sure tomcat is stoped 
## when you edit the file. 

## comments will be _lost_ 

## documentation of the format in jkmain javadoc. 

# set the desired handler list 
handler.list=apr,request //去掉了前面的註釋符號# 
# override the default port for the socketchannel 
channelsocket.port=8009 //去掉了前面的註釋符號# 
# default: 
# channelunix.file=${jkhome}/work/jk2.socket 
# just to check if the the c is working 
shm.file=/usr/local/apache/logs/jk2.shm //手動新增的 
# in order to enable jni use any channeljni directive 
# channeljni.disabled = 0 
# and of the following directives: 

# apr.jnimodeso=/opt/apache2/modules/mod_jk2.so 
# if set to inprocess the mod_jk2 will register natives itself 
# this will enable the starting of the tomcat from mod_jk2 
# apr.jnimodeso=inprocess 

在這裡可以先驗證一下tomcat是否可以正常工作。啟動tomcat #sh /usr/local/jakarta-tomcat-5.0.28/bin/startup.sh , 正常情況會輸出tomcat 和jdk的目錄。 
tomcat 啟動輸出示意圖 

然後再在windows的計算機的瀏覽器裡輸入linux伺服器的ip地址和埠號,形如:http://192.168.0.100:8080 ,如果沒有意外,則可出現那隻可愛的小貓。 
③配置apache:因為php和jsp都要整合在apache裡(可以把apache想象成一個容器),這一步的配置過程也是很複雜的。配置前可以先驗證一下apache,看它是否可以正常工作。與tomcat相試,只是不用輸埠號而已,形如 http://192.168.0.100 ,如果出現apache 的測試web頁面,表明一切正常。 
a 對檔案workers2.properties的修改。其目的是讓tomcat與apache系統工作。使用命令 #vi /usr/local/apache/conf/workers2.properties 編輯檔案如下所示 
[shm] 
info=scoreboard. requried for rec and status with multiprocess servers. 
file=/usr/local/apache/logs/shm.file //這行是改動過的 
size=1048576 //手動新增的 

# defines a load balancer named lb. use even if you have machine. 
[lb:lb] 

# example socket channel, override port and host. 
[channel.socket:localhost:8009] 
port=8009 
host=127.0.0.1 
# define the worker 
[ajp13:localhost:8009] 
channel=channel.socket:localhost:8009 
group=lb 

# map the tomcat examples webapp to the web server uri space 
[uri:/*.jsp] //jsp指令碼交給tomcat 直譯器完成,其它的由apache處理, 如果不是這//樣,就會出現/usr/local/jakarta-tomcat/webapps/root裡的php指令碼//不能被正確解析。感謝張煒宇在這個問題上的大力幫助。 
[uri:/servlet/*] 
[uri:/*.do] 
worker=ajp13:localhost:8009 //手動新增的 
group=lb 
[status:] 
info=status worker, displays runtime information 

[uri:/jkstatus/*] 
worker=ajp13:localhost:8009 //手動新增的 
info=the tomcat /jkstatus handler 
group=status: 
b 修改apache 的配置檔案 /etc/httpd/conf/httpd.conf. #vi /usr/local/apache/conf/httpd.c , 
loadmodule jk2_module modules/mod_jk2.so //jk2以apache 的模組方式執行 
directoryroot “/usr/local/jakarta-tomcat-5.0.28/webapps/root” //預設的 
//為”/var/www/html” 
typeadd application /x-httpd-php .php3 //讓apache 能解釋php腳 
//本,注意.php3 前面有空格 
六、測試 
自己搞幾個*.php和*.jsp檔案拷貝到目錄,然後分別啟動apache和tomcat . 
#/usr/local/apache/bin/apachectl start //啟動apache (可惜不是直升機) 
#sh /usr/local/jakarta-tomcat/bin/startup.sh //啟動tomcat 

在任意計算機的瀏覽器位址列輸入linux的ip地址,形如 http://192.168.0.100/index.jsp , http://192.168.0.100/index.php ,如果能正常的在瀏覽器裡顯示,恭喜了!!! 



再次感謝張煒宇的大力支援。




















本文轉自sery51CTO部落格,原文連結:http://blog.51cto.com/sery/5551 ,如需轉載請自行聯絡原作者




相關文章