<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Apache + Resin的java虛擬主機(jī)設(shè)置

    關(guān)鍵字:resin,虛擬主機(jī),work-dir,temp-dir,stderr-log,stdout-log

    最近研究了一下apache+resin做虛擬主機(jī),其中經(jīng)過很多曲折,在網(wǎng)上搜索很多文章,最終搞定,總結(jié)一下.

    概述

     本文主要是為了做虛擬主機(jī)的人準(zhǔn)備的,做resin的虛擬主機(jī)有幾種方式:
     1.缺省情況下,root用戶運(yùn)行resin,最不安全
       強(qiáng)烈不建議這種方式,不過這種方式基本不需要配置
      
     2.以另外一個(gè)用戶,例如resin用戶來運(yùn)行resin
       安全一些,類似缺省apache的方式,不過需要配置一些目錄設(shè)置,否則無法運(yùn)行
      
     3.每個(gè)虛擬主機(jī)一個(gè)用戶,虛擬主機(jī)用戶多的時(shí)候太麻煩,不過最安全.
       用戶之間互不影響.配置相對麻煩一些.

    安裝


     resin默認(rèn)僅提供了源碼方式,所以需要編譯安裝.(有第三方提供了rpm,但還是自己編譯好控制和升級).
     
     resin和apache的連接模塊也需要編譯,所以還需要apache有apxs程序,一般apache編譯的版本才有這個(gè)程序,所以我們只好編譯安裝apache.
     一般用戶還需要安裝php等等,不在贅述,下面開始安裝.
     
     下載apache 2.0.54,php5.0.5 or php 4.4,resin rpo 3.0.14,放在/temp目錄下,并用tar zxvf命令展開.
     
     編譯安裝apache,類似命令如下

     ./configure --prefix=/web/apache --with-mpm=worker  --enable-so --enable-rewrite 
     make
     make install 

     
     注意允許了apache的so模塊和rewrite模塊,開啟apache的worker工作方式,具體請參考apache的文檔.如果用戶需要其他設(shè)置,請瀏覽configure的幫助. (./configure --help)
     
     
     編譯php4:
     ./configure --prefix=/web/php --with-apxs2=/web/apache/bin/apxs  --with-config-file-path=/web/php  --with-mysql
     make
     make install 


     
     指定php安裝目錄,設(shè)定apache的目錄和php.ini的目錄,并配置mysql.開啟其他選項(xiàng)也請看幫助.
     安裝后把php.ini-recommend 復(fù)制到/web/php/php.ini,然后按照自己的需要修改.
     (主要修改Safe_mode為on等等安全措施)
     
     
     php5提示:如果同時(shí)安裝mysql和mysqli,生成的Makefile會(huì)有一個(gè)小錯(cuò)誤,多了一個(gè)-lmysqlclient  ,去掉即可. ( http://cn.php.net/mysqli )
     
     
     安裝jdk:
      下載rpm包安裝
      
      設(shè)置JAVA_HOME變量,把jdk/bin目錄加入到path里
      并把tools.jar設(shè)置到classpath中.classpath里面還要包括當(dāng)前路徑,也就是一個(gè)點(diǎn).
      
      一般是通過修改/etc/profile設(shè)置,可搜索相關(guān)文檔. 
     
     
     編譯resin:
     
     ./configure --prefix=/web/resin  --with-apxs=/web/apache/bin/apxs
     make
     make install 



     
     resin默認(rèn)提供了啟動(dòng)腳本,位于contrib目錄下,我一般把init.resin.in復(fù)制到/etc/init.d/resin,然后使用checkconfig 設(shè)置,可以打開這個(gè)文件看看如何設(shè)置.
     
     然后打開這個(gè)文件,修改JAVA_HOME,RESIN_HOME為實(shí)際目錄:
     
     JAVA_HOME=/usr/java/jdk1.5
     RESIN_HOME=/web/resin 

     
     
     至此,apache,php,resin的默認(rèn)設(shè)置就可以運(yùn)行了.
     
     :resin安裝的時(shí)候,已經(jīng)把和apache連接的模塊和配置都設(shè)置好了,可以打開apache的httpd.conf看看:
     
     LoadModule caucho_module modules/mod_caucho.so
     
     ResinConfigServer localhost 6802
     CauchoStatus yes 



     
     其中php 的設(shè)置也自動(dòng)設(shè)置好了,如下:
     
     LoadModule php5_module        modules/libphp5.so
     
     #
     # Cause the PHP interpreter to handle files with a .php extension.
     #
     AddType application/x-httpd-php .php
     # AddType application/x-httpd-php-source .phps 


    設(shè)置apache


     首先是設(shè)置apache的基本屬性:
      調(diào)整cgi設(shè)置,如果你要運(yùn)行cgi程序: AddHandler cgi-script .cgi .pl
      
      設(shè)置默認(rèn)編碼  AddDefaultCharset GB2312
      
      DirectoryIndex  DirectoryIndex index.htm index.html index.php index.jsp
      
      連接數(shù):參考文檔吧,這個(gè)要根據(jù)實(shí)際情況調(diào)整了,注意如果是worker模塊,設(shè)置worker部分的連接數(shù)即可
      
      郵件地址ServerAdmin
      
      Group nobody
      
      
     為了java web程序的安全,我們在httpd.conf里加入
     
     <LocationMatch "/WEB-INF/">
      AllowOverride None
      deny from all
     </LocationMatch>
     
     <LocationMatch "/META-INF/">
      AllowOverride None
      deny from all
     </LocationMatch> 


     我們在apache里新增一個(gè)虛擬主機(jī):

     <VirtualHost *:80>
         ServerAdmin testuser@testuser.com
         DocumentRoot /home/testuser/html
         ServerName www.testuser.com
         ServerAlias testuser.com ftp.testuser.com
        
      ScriptAlias /cgi-bin/ "/home/testuser/cgi-bin/"
        <Directory /home/testuser/cgi-bin/>
         ##本用戶可以運(yùn)行cgi,其他用戶要看httpd.conf的設(shè)置了,我是沒有默認(rèn)開啟的,只允許特定用戶運(yùn)行cgi
       AddHandler cgi-script .pl .cgi
        </Directory>   
        
         ##把日志放到自己的目錄下,這樣用戶可以看自己的日志了,出了錯(cuò)誤好跟蹤
         ErrorLog /home/testuser/tmp/log/testuser-error_log
         CustomLog /home/testuser/tmp/log/testuser-access_log common
     </VirtualHost> 

     
     :如果/home/testuser/tmp/log目錄權(quán)限可以設(shè)置為合適的用戶權(quán)限,方便用戶管理日志,例如刪除
     
     為了防止日志過大,還可以瀏覽logratate,cronolog等程序來設(shè)置.例如,安裝了cronolog的情況下設(shè)置為:
     
     CustomLog "|/usr/local/sbin/cronolog /home/testuser/tmp/log/access_%m_%d.log" common
     
     警告:為了用戶能刪除日志,你可能需要對目錄做額外設(shè)置(例如777),否則用戶是不能刪除目錄下的文件的. 或者采用定期刪除日志的方法也可以.
     
     


    設(shè)置resin


     
     新增一個(gè)resin用戶,為了運(yùn)行resin,這個(gè)用戶要求有shell,不能是true或者nologin.假設(shè)我們增加了一個(gè)用戶resin,組也是resin.
     
     修改/etc/init.d/resin,修改一行:
     USER=resin 
     
     這樣默認(rèn)resin程序就以resin用戶的身份運(yùn)行了,為了運(yùn)行缺省的程序,需要把resin安裝目錄的所有owner,group修改為resin.resin,遞歸修改.
     
     負(fù)載均衡:resin支持設(shè)置多個(gè)端口啟動(dòng),來做負(fù)載均衡,可以參考相關(guān)文檔.

        <cluster>
          <srun server-id="" host="127.0.0.1" port="6802"/>
          <srun server-id="" host="127.0.0.1" port="6803"/>
          <srun server-id="" host="127.0.0.1" port="6804"/>
        </cluster> 

        
        對應(yīng)apache的httpd.conf也要修改:

        ResinConfigServer localhost 6802
        ResinConfigServer localhost 6803
        ResinConfigServer localhost 6804 

     
     因?yàn)閍pache默認(rèn)已經(jīng)有access日志了,還可以關(guān)閉resin的access日志.
     

        <access-log path="logs/resinlog/access.log"
                format=’%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"’
                rollover-period="1D"/> 

                
     注釋掉這段即可關(guān)閉. 
     
     
     現(xiàn)在我們來配置對應(yīng)apache的虛擬主機(jī):

       <host id=’’>
          <web-app id=’/’ document-directory="/home/testuser/html">
            <work-dir>/home/testuser/tmp/work</work-dir>
            <temp-dir>/home/testuser/tmp/tmp</temp-dir>
            <stdout-log path=’/home/testuser/tmp/resinlog/stdout.log’ rollover-period=’1D’ archive-format="stdout_%m%d.log" />
            <stderr-log path=’/home/testuser/tmp/resinlog/stderr.log’ rollover-period=’1D’ archive-format="stderr_%m%d.log" />
          </web-app>
       </host> 


       
       注意如果有多個(gè)虛擬主機(jī),id需要寫上域名,因?yàn)槟壳爸挥幸粋€(gè)虛擬主機(jī),所以id為空就是默認(rèn)的都訪問這個(gè).
       
       <host id=’www.testuser.com’>
       
       我們可以看到,這個(gè)虛擬主機(jī)設(shè)置了resin的work-dir和resin-dir,并設(shè)置了stdout和stderr日志,都放在用戶的目錄下.
      
       如果不設(shè)置work-dir的話,resin默認(rèn)是在WEB-INF下建立一個(gè)work目錄.
       如果不設(shè)置temp-dir的話,resin默認(rèn)是在WEB-INF下建立一個(gè)tmp目錄.
      
       但是用戶的目錄對resin來說是沒權(quán)限的,所以要首先建立這些目錄,并且設(shè)置目錄的owner是resin,這樣resin程序才能操作.
       (root用戶運(yùn)行情況下不存在此問題)
      
       兩種日志也放到用戶的目錄下,方便用戶調(diào)試,除錯(cuò),日志目錄的owner也要設(shè)置為resin,否則也無法正常運(yùn)作.日志設(shè)置為一天產(chǎn)生一個(gè),可以根據(jù)需要修改.
      
       警告:為了用戶能刪除日志,你可能需要對目錄做額外設(shè)置(例如777),否則用戶是不能刪除目錄下的文件的. 或者采用定期刪除日志的方法也可以.  

       警告:work,tmp,resinlog目錄都是必須要管理員建立的,并設(shè)置為resin用戶擁有,否則resin無法運(yùn)行,而且注意目錄不應(yīng)該被web頁面訪問到.
     


    友情提示


     本文寫的非常籠統(tǒng),因?yàn)橐粋€(gè)管理員必須親自熟悉每個(gè)細(xì)節(jié)才好,否則出了問題不好定位,很多事情還是親歷親為才好.
     本文很多內(nèi)容都是在網(wǎng)上沒有找到答案自己看文檔試驗(yàn)出來的,所以僅僅希望給讀者帶來一些提示,并不能代替程序本身的文檔.


     作為一個(gè)系統(tǒng)管理員,應(yīng)該好好閱讀文檔.
     
     雖然,我也很懶 :P
     
     有問題,請留言或者評論,肯定會(huì)有問題的! 


      
    安全沙箱  


     為了java虛擬主機(jī)對本地文件不造成危害,我們還需要設(shè)置resin的安全沙箱,請?jiān)L問后續(xù)文章.
     介紹:沒有開啟安全沙箱的話,任何一個(gè)虛擬主機(jī)的用戶都可以讀取/etc/passwd等重要文件...
     


     
    創(chuàng)造共用協(xié)議:署名,非商業(yè),保持一致   除經(jīng)特別注明外,本文章版權(quán)歸JScud Develop團(tuán)隊(duì)或其作者所有.
    署名,非商業(yè)用途,保持一致.   scud(飛云小俠)   JScud Develop

    posted on 2005-10-27 20:19 Scud(飛云小俠) 閱讀(1810) 評論(1)  編輯  收藏 所屬分類: 其他

    評論

    # re: Apache + Resin的java虛擬主機(jī)設(shè)置 2005-11-04 11:33 scud(飛云小俠)

    httpd.conf在虛擬主機(jī)定義前 應(yīng)該有一句話:

    NameVirtualHost *:80

      回復(fù)  更多評論   

    <2005年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    文章發(fā)布許可
    創(chuàng)造共用協(xié)議:署名,非商業(yè),保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術(shù)網(wǎng)站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久亚洲AV无码专区网站| 国产亚洲人成无码网在线观看| 免费鲁丝片一级观看| 亚洲人成人网站在线观看| 久久久久久亚洲精品无码| 99爱在线精品免费观看| 亚洲AV无码专区日韩| 亚州**色毛片免费观看| 可以免费观看一级毛片黄a| 亚洲欧美乱色情图片| 免费高清在线爱做视频| 欧美色欧美亚洲另类二区| 亚洲精品国产电影| 精品无码国产污污污免费网站国产| 亚洲乱码日产精品a级毛片久久| 亚洲精品视频免费| 久久久亚洲精品国产| av免费不卡国产观看| 日韩亚洲人成在线| 亚洲成人国产精品| 国产精品无码免费专区午夜| 亚洲成亚洲乱码一二三四区软件| 一级毛片免费观看不卡的| 亚洲乱码一二三四区国产| 色妞WWW精品免费视频| WWW亚洲色大成网络.COM | 黄页网站在线观看免费高清| 亚洲高清中文字幕| 性xxxxx大片免费视频| 亚洲日韩乱码久久久久久| 无码永久免费AV网站| 亚洲国产欧美国产综合一区| 国产最新凸凹视频免费| 亚洲人成人77777在线播放| 午夜毛片不卡免费观看视频| 亚洲日本香蕉视频| 久久免费精品视频| 亚洲精品天天影视综合网| 午夜免费1000部| 在线观看亚洲专区| 亚洲中文字幕在线第六区|