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

讓PHP支持大型項目

前言  本文介紹了融jsp、PHP和Java於一爐的開發環境的建立,為了適合大多數初學者的需求,很多步驟都是采用比較方便的辦法,力求簡單明了。一般來說,沒有特別需求的軟件,我都是采用RPM的方式安裝。如果你有優化配置、安全考慮等特殊需求,請參考相關的文章進行配置。  在本文中,Apache以DSO模式安裝,PHP實現了JAVA組件的支持,使得我們在進行大型項目開發的時候,可以選擇PHP作為前端腳本語言,調用JAVA組件實現底層和企業級的應用。    一.系統環境  1.初始安裝  防火牆開放接口:21,22,80,2401,8009,10000,eth0  Redhat Linux 9.0  Development Tools  Network Servers  VSFTP  CVS-1.11.2-10  mysql 3.23.54    2.包安裝  JDK 1.4.2_04  下載地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm  Tomcat 5.0.19  下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz    3.腳本安裝  Webmin 1.110  下載地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz  ZendOptimizer 2.5.1  下載地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz    4.手工編譯  Apache 2.0.49  下載地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz  PHP 4.3.5  下載地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz  JK 2-2.0.4  下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz    5.客戶機環境  Windows XP Professional  Absolute Telnet 3.0  Zend Encoder  Macromedia Dreamweaver MX 2004  Borland JBuilder 9 Enterprise  WinCVS 1.3  下載地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip    二.系統安裝  啟動Linux安裝光盤,安裝基本系統:FTP、開發工具和MySQL3.23.54。如果你是手工編譯安裝MySQL,要記得以後在編譯PHP等程序時要指明MySQL的具體路徑,否則會因找不到路徑而導致編譯出錯。    三.安裝webmin1.110  用Webmin來配置系統,傻瓜化,可以節省不少力氣,所以一般我都先安裝它。安裝過程很簡單,執行setup.sh腳本後照提示一步一步來就可以了。    # cd webmin*  # ./setup.sh    四.安裝JDK1.4.2  1.編輯如下三個文件,沒有指明全路徑的放在你自己的home目錄就可以。  /etc/profile  JAVA_HOME=/usr/java/j2sdk1.4.2_04  CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  CVSROOT=/usr/local/cvsroot  PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH  export JAVA_HOME CLASSPATH CVSROOT PATH    /etc/ld.so.conf  /usr/java/j2sdk1.4.2_04/jre/lib/i386  /usr/java/j2sdk1.4.2_04/jre/lib/i386/server    HelloWorld.java  class HelloWorld   {  public static void main(String[] args)  {  //本文件測試Java環境是否安裝成功。  System.out.println("Hello World!");  }  }    2.執行以下命令:    # rpm -ivh j2sdk*.rpm //安裝JDK包。  # source /etc/profile //重載profile環境。  # ldconfig //創建動態鏈接庫緩存文件。  # javac -d . HelloWorld.java //編譯測試文件。  # java HelloWorld //運行程序測試安裝是否成功。    五.安裝Apache  # tar xvzf httpd* //解壓源碼包。   # cd httpd* //進入安裝目錄。  # ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite  # make;make install //編譯並安裝。    說明:  --enable-so選項:讓Apache可以支持DSO模式,注意,我們在這裡采用的是Apache2.0的語法。如果你的Apache是1.3版本,應改為--enable-module=so。  --enable-mods-shared=most選項:告訴編譯器將所有標准模塊都編譯為DSO模塊。你要是用的是Apache1.3,改為--enable-shared=max就可以。  --enable-rewrite選項:支持地址重寫功能,使用1.3版本的朋友請將它改為--enable-module=rewrite。    六.編譯安裝PHP  1.執行命令     #tar xvzf php* //解壓源碼包  #cd php* //進入PHP安裝命令  #./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04  #make;make install //編譯並安裝  #cp php.ini-dist /usr/local/php/lib/php.ini //復制php配置文件  #cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目錄  #ln -s java.so libphp_java.so //建立連接,忘記了會出錯哦  #cd Zend* //進入ZendOptimizer目錄  #./install //安裝PHP加速器    說明:  --with-apxs2=/usr/local/apache/bin/apxs是Apache2的語法,1.3版本的用戶請使用--with-apxs=/usr/local/apache/bin/apxs。    2.編輯下面三個文件  /usr/local/apache/conf/httpd.conf  LoadModule php4_module modules/libphp4.so    AddType application/x-httpd-php .php  AddType application/x-httpd-php-source .phps    AddDefaultCharset gb2312    /usr/local/apache/htdocs/test.php   <?php  //本程序測試PHP的JAVA環境是否可用,代碼是從http://www.php.net/manual/en/ref.java.php摘錄下來的。    // get instance of Java class java.lang.System in PHP  $system = new Java('java.lang.System');    // demonstrate property Access  echo 'Java version=' . $system->getProperty('java.version') . '<br />';  echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';  echo 'OS=' . $system->getProperty('os.name') . ' ' .  $system->getProperty('os.version') . ' on ' .  $system->getProperty('os.arch') . ' <br />';    // java.util.Date example  $formatter = new Java('java.text.SimpleDateFormat',  "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");    echo $formatter->format(new Java('java.util.Date'));  ?>    /usr/local/php/lib/php.ini  register_globals=On  [Java]   java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass  java.home=/usr/java/j2sdk1.4.2_04  java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so  java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429  extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429  extension=libphp_java.so    注意:  (1).如果你剛剛從以前老版本的PHP轉換到新版本,可能會發現你的PHP程序很多都不能用了。別緊張!把register_globals打開就一切正常啦!這是因為老版本的PHP,它的register_globals默認是開著的,而新版本,卻把它關了的緣故。  (2)./home/jim/myclass是我存放JAVA組件的路徑,你可以根據實際情況修改,但是為了安全起見,可不要放在web目錄下哦。    七.安裝Tomcat  1.執行以下命令    #cd *jk2*/jk/native2 //進入連接器編譯目錄  #./buildconf.sh //運行配置腳本  #./configure --with-apxs2=/usr/local/apache/bin/apxs --enable-jni --enable-EAPI  #make //編譯模塊  #cd ~jim/src/*jk2*/jk/build/jk2/apache2 //進入編譯好模塊的目錄  #cp *.so /usr/local/apache/modules/ //將模塊拷貝到Apache目錄  #cp -R jakarta-tomcat-5.0.19 /usr/local/tomcat //安裝Tomcat  #toUCh /usr/local/apache/logs/shm.file //建立共享內存文件    我剛開始安裝Tomcat的時候,總是不成功,後來我跑到Apache的網站,看了一份只有兩頁的英文說明,很快就把它配好了。我發現國內的作者總是喜歡故弄玄虛,把本來很簡單的東西搞得很復雜,讓人家看不懂,以顯示自己高明。    2.編輯以下文件  /usr/local/apache/conf/httpd.conf  LoadModule jk2_module modules/mod_jk2.so  JkSet config.file /usr/local/apache/conf/workers2.properties  DocumentRoot "/usr/local/tomcat/webapps"  <Directory "/usr/local/tomcat/webapps">    /usr/local/tomcat/webapps/jsp-examples/for.jsp  <%  int i;   for(i=1;i<100;i++)  {   out.println("<h" + i + ">Hello World!</h" + i + ">");   }   %>    /usr/local/tomcat/conf/jk2.propertie  handler.list=request,container,channelSocket  channelSocket.port=8009  channelSocket.address=127.0.0.1  channelSocket.maxPort=port+10    /usr/local/apache/conf/workers2.properties  [shm]  file=/usr/local/apache/logs/shm.file  size=1048576  [workerEnv:]  info=Global server options  timing=1  debug=0  [channel.socket:localhost:8009]  port=8009  host=127.0.0.1  [ajp13:localhost:8009]  channel=channel.socket:localhost:8009  [uri:/*.jsp]  worker=ajp13:localhost:8009    /etc/rc.d/init.d/httpd  #!/bin/sh    # chkconfig:2345 92 12  # description:Starting Apache and Tomcat Server    LD_LIBRARY_PATH=/usr/java/j2sdk1.4.2_04/jre/lib/i386:/usr/java/j2sdk1.4.2_04/jre/lib/i386/server  export LD_LIBRARY_PATH    CATALINA_BASE=/usr/local/tomcat  export CATALINA_BASE    CATALINA_HOME=/usr/local/tomcat   export CATALINA_HOME     APACHE_HOME=/usr/local/apache   export APACHE_HOME     JAVA_HOME=/usr/java/j2sdk1.4.2_04  export JAVA_HOME     PROFILEDIR=/var/run    case "$1" in   start)     if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then   echo "Running Tomcat5_Apache2"   else   if [ -f $CATALINA_HOME/bin/startup.sh ]; then   if [ -f $APACHE_HOME/bin/apachectl ]; then   "$CATALINA_HOME/bin/startup.sh"   echo "Startting Tomcat5"   sleep 3   echo "Startting Apache2"   $APACHE_HOME/bin/apachectl start   echo "."   touch $PROFILEDIR/Tomcat5_Apache2   else   echo "Apache File Not Founds"   fi   else   echo "Tomcat File Not Founds"   fi   fi   ;;     stop)   if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then   if [ -f $CATALINA_HOME/bin/shutdown.sh ]; then   if [ -f $APACHE_HOME/bin/apachectl ]; then   "$CATALINA_HOME/bin/shutdown.sh"   echo "Stopping Tomcat5"   sleep 3   echo "Stopping Apache2"   $APACHE_HOME/bin/apachectl stop   rm $PROFILEDIR/Tomcat5_Apache2   else   echo "Apache File Not Founds"   fi   else   echo "Tomcat File Not Founds"   fi   else   echo "Not Running Tomcat5_Apache2"   fi   ;;   *)   echo "Usage; `basename $0` {startstop}" 1>&2   exit 1   ;;   esac     exit 0    3.設置自動啟動    #chmod u+x /etc/rc.d/init.d/httpd //修改文件執行權限  #/sbin/chkconfig --add httpd //將httpd加入系統啟動列表    八.安裝CVS  1.編輯以下文件  /etc/xinetd.d/cvspserver  service cvspserver  {  socket_type=stream  wait=no  user=root  server=/usr/bin/cvs  server_args=-f --allow-root=/usr/local/cvsroot pserver  log_on_failure += USERID   }    2.執行以下命令    # /usr/sbin/useradd -d /usr/local/cvsroot cvs //創建CVS管理用戶。  #passwd cvs //創建管理用戶密碼。  # chmod 771 /usr/local/cvsroot //修改CVS根目錄權限。  # su cvs //使用CVS用戶的身份。  $ cvs -d /usr/local/cvsroot init //初始化CVS倉庫。  $exit //退出CVS用戶身份。  #chmod 644 /etc/xinetd.d/cvspserver //修改CVS服務啟動文件權限。  # /etc/rc.d/init.d/xinetd restart //重啟動xinetd超級服務器。  # netstat -lnpgrep 2401 //查看CVS服務是否已經啟動。  # /usr/sbin/useradd cvspub //創建CVS等效系統用戶cvspub。  # /usr/sbin/usermod -G cvs cvspub //將cvspub用戶加入cvs組。  #cd /home/tets1 //進入測試用的項目目錄。  #cvs import -m 'this is a test only' test1 v_0_0_1 start //將當前項目的文件導入CVS倉庫。    說明:  CVS的密碼問題,以前眾說紛纭,有的是編一段程序來生成密碼,有的則用所謂的土方法去拷貝shadow密碼。其實我可以告訴初學者一個最簡單方便的方法,就是采用Webmin添加CVS用戶,它自己就會幫你生成密碼。    3.編輯以下文件  /usr/local/cvsroot/CVSROOT/passwd  test1:NXWxabrVe7z/w:cvspub  test2:FZTxeAWW.ySIA:cvspub  說明:  主要是在最後加上用戶名cvspub,讓系統用戶cvspub代替test1和test2去讀寫CVS倉庫。    /usr/local/cvsroot/CVSROOT/readers  test1    /usr/local/cvsroot/CVSROOT/writers  cvs  test2    結語  至此,整個系統配置完成。在本系統配置過程中,出現過很多錯誤,可惜都是通過英文站點找到解決的方法,真希望我們國內站點的技術水平可以盡快提高起來。本文雖然力求簡潔明了,但由於時間所限,好多地方未必都能盡如人意,如您有不明白的地方,請與我聯系,我會采納各位的意見,將晦澀難懂的地方修改過來。在配置過程中,參考了很多優秀的文章,在這裡謝謝各位作者!最後我想說明以下,這個系統本來是要建立在FreeBSD平台之上,但是,由於FreeBSD平台上的JAVA環境尚未完善,最後我不得不惋惜地放棄了這個INTEL平台上最優秀的操作系統,選擇了性能和穩定性都一般的RedHat Linux。




 



Copyright © Linux教程網 All Rights Reserved