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

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

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

    posts - 37,  comments - 53,  trackbacks - 0
      2009年4月8日
    grails應用以war包的方式發布到weblogic本來應該是沒有什么問題的,也不需要像網上說的那樣進行weblogic的配置,但是有兩個小問題在實際的使用中需要注意:
    1.我的應用中,使用了spring-security-cas的插件來實現cas client,但是不知道為什么在生產war包是,在web.xml中,有兩個CAS Single Sign Out Filter的mapping,結果導致發布失敗,需要手工刪除一個(目前的解決辦法)
    2.grails的urlmapping插件,如果映射“/”到某個action,目前好像是不成功的,但是只要不是“/”,則沒有這個問題。如果默認的根目錄不是index.gsp,這個可能需要在訪問“/”時進行跳轉的處理。

    posted @ 2011-02-09 16:21 雪地孤鴻 閱讀(515) | 評論 (0)編輯 收藏
    1.weblogic必須是10.3.4.0或以上版本,由于cas server采用了spring 2.5的版本,使用JPA2.0的原因,weblogic10.3.4之前的版本不支持jpa2.0
    2.cas server webapp 如果以war的方式發布,會因為log4j.xml的問題而不能正常發布,具體原因還沒有完全弄清楚,但是如果以解開后的文件夾目錄的方式發布則沒有問題。

    posted @ 2011-02-09 16:16 雪地孤鴻 閱讀(3249) | 評論 (2)編輯 收藏
    測試環境下使用的是mysql數據庫,切換到正式的oralce數據庫中去發現cas server是無效的,主要的原因是由于數據庫的差異導致的
    認證用戶的sql語句在mysql下為
    select password from user_login where username=? and enabled=true
    而在oracle下應該為
    select password from user_login where username=? and enabled=1
    主要由于oralce和mysql對boolean字段的處理不一致導致的。

    posted @ 2011-01-26 09:05 雪地孤鴻 閱讀(710) | 評論 (0)編輯 收藏

    cas server logout后,默認是停留在cas的退出頁面,一般我們需要重新轉向到客戶端網站的登錄或是相關的頁面,一般需要進行一下配置

    1.cas-server端,配置文件為/WEB-INFO/cas-servlet.xml中的logoutController

     <bean id="logoutController" class="org.jasig.cas.web.LogoutController" 
         p:centralAuthenticationService-ref="centralAuthenticationService" 
         p:logoutView="casLogoutView" 
         p:warnCookieGenerator-ref="warnCookieGenerator" 
         p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"   
          p:followServiceRedirects="true"/>

    posted @ 2011-01-21 13:38 雪地孤鴻 閱讀(1051) | 評論 (1)編輯 收藏

    經過將近兩天的測試,參考眾多網友的貢獻,終于完成了對cas的主要配置和測試,現記錄如下

    基本需求:

    1.cas server-3.4.5,casclient-3.2(官方版本),均可在cas官方網站下載,http://www.jasig.org

    2.使用低成本的http協議進行傳輸,俺買不起ssl證書

    3.通過jdbc進行用戶驗證

    4.需要通過casserver提供除登錄用戶名以外的附加信息

    參考資料:

    1.cas官方網站的用戶幫助手冊和wiki

    2.網友“城市獵人”的blog,http://yuzhwe.javaeye.com/blog/830143

    3.網友“悟空悟道”的blog,http://llhdf.javaeye.com/blog/764385

    4.其他網友貢獻的相關的blog,都是通過google出來,就不一一列出了,一并致謝?。?!

    好了,下面進入正題,如果您不想測試中出現異常情況,或是獲取不到相關數據,請關注文中的紅色字體部分。

    (1)使用http協議的設置,如果您也像我一樣,買不起ssl數字證書,對安全的要求也不是特別的搞,下面的配置就可以幫助解決這個問題:

    在cas-server-webapp中的/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml文件中有如下配置

    <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
      p:cookieSecure="true"     //默認為true,使用https,如果只需要http,修改為false即可
      p:cookieMaxAge="-1"
      p:cookieName="CASTGC"
      p:cookiePath="/cas" />

     (2)使用jdbc數據源進行用戶認證,需要修改cas的authenticationHandlers方式,在文件/WEB-INF/deployerConfigContext.xml有如下配置:

    <property name="authenticationHandlers">
       <list>
        <!--
         | This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
         | a server side SSL certificate.
         +-->
        <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
         p:httpClient-ref="httpClient" />
        <!--
         | This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS
         | into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
         | where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
         | local authentication strategy.  You might accomplish this by coding a new such handler and declaring
         | edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
         +-->
        <!--<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />-->
         <bean  class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
             <property name="dataSource" ref="dataSource" />
            
    <property name="sql" value="select password from userInfo where username=? and enabled=true" />
             //用戶密碼編碼方式

             <property name="passwordEncoder"
               ref="passwordEncoderBean"/>
             </bean>  
       </list>
      </property>

    該屬性中的list只要用一個認證通過即可,建議將紅色部分放在第一位,如果確認只用jdbc一種方式,其他認證方式均可刪除。另外需要在在文件中添加datasoure和passordEncoder兩個bean,如下

    <!-- Data source definition -->
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
      </property>
      <property name="url">
        <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8</value>    //如果使用mysql數據庫,應該加上后面的編碼參數,否則可能導致客戶端對TGT票據無法識別的問題
      </property>
      <property name="username"><value>root</value></property>
      <property name="password"><value>password</value></property>
     </bean>
     <bean id="passwordEncoderBean" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
            <constructor-arg value="SHA1" />  //cas
    server默認支持MD5和SHA1兩種編碼方式,如果需要其他的編碼方式例如SHA256,512等,可自行實現org.jasig.cas.authentication.handler.PasswordEncoder接口
        </bean>

    附加備注:如果您是使用cas server的源碼自行編譯的話,需要在cas-server-web模塊的pom.xml中添加如下模塊的依賴:

    <dependency>
           <groupId>${project.groupId}</groupId>
           <artifactId>cas-server-support-jdbc</artifactId>
           <version>${project.version}</version>
      </dependency>  

    并添加對應數據庫的jdbc的jar包。

    (3)讓cas server提供更多的用戶數據共客戶端使用

    通過測試,由于cas的代碼更新過程中的變化較大,所以包兼容的問題好像一直存在,在測試中我就碰到過,花費時間比較多,建議同學們在使用過程中使用官方的最新的發布版本。在我使用的這個版本中,請參考前面的關于server和client端的版本說明,應該沒有包沖突的問題,測試通過。下面進行配置,配置文件:/WEB-INF/deployerConfigContext.xml
    <property name="credentialsToPrincipalResolvers">
       <list>
           <!--<bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" />-->
        <!-- modify on 2011-01-18,add user info -->
        <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" >
          <property name="attributeRepository" >   //為認證過的用戶的Principal添加屬性
          <ref local="attributeRepository"/>
         </property> 
        </bean>
          <bean
         class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
       </list>
      </property>
     修改該文件中默認的 attributeRepositorybean配置
    <!-- 在這里配置獲取更多用戶的信息 -->
     <bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
      <constructor-arg index="0" ref="dataSource" />
      <constructor-arg index="1" value="select id as UId, password_hint as ph from userInfo where username=? and enabled=true" />
      <property name="queryAttributeMapping">
       <map>
       <entry key="username" value="uid"/><!-- 這里必須這么寫,系統會自己匹配,貌似和where語句后面的用戶名字段的拼寫沒有什么關系 -->
       </map>
      </property>
       <!-- 要獲取的屬性在這里配置 -->
      <property name="resultAttributeMapping">
       <map>
       <entry key="UId" value="userId" /> //key為對應的數據庫字段名稱,value為提供給客戶端獲取的屬性名字,系統會自動填充值
       <entry key="ph" value="passwordHint" />   
       </map>
      </property>
    </bean> 
    備注:網上有很多的關于這個的配置,但是如果您使用的是我提供的版本或是高于這個版本,就應該象上面這樣配置,無用質疑,網上大部分的配置都是基于
    person-directory-impl,person-directory-api
    1.1左右的版本,而最新的cas使用的是1.5的版本,經過查看源代碼和api docs確定最新版本的屬性參數如上配置。

    修改該xml文件中最后一個默認的serviceRegistryDao bean中的屬性全部注釋掉,或者刪除,
    這個bean中的RegisteredServiceImpl的ignoreAttributes屬性將決定是否添加attributes屬性內容,默認為false:不添加,只有去掉這個配置,
    cas server才會將獲取的用戶的附加屬性添加到認證用的Principal的attributes中去,我在這里犯過這樣的錯誤,最后還是通過跟蹤源碼才發現的。
    <bean
      id="serviceRegistryDao"
            class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
            <!--
                <property name="registeredServices">
                    <list>
                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="0" />
                            <property name="name" value="HTTP" />
                            <property name="description" value="Only Allows HTTP Urls" />
                            <property name="serviceId" value="http://**" />
                        </bean>

                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="1" />
                            <property name="name" value="HTTPS" />
                            <property name="description" value="Only Allows HTTPS Urls" />
                            <property name="serviceId" value="https://**" />
                        </bean>

                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="2" />
                            <property name="name" value="IMAPS" />
                            <property name="description" value="Only Allows HTTPS Urls" />
                            <property name="serviceId" value="imaps://**" />
                        </bean>

                        <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                            <property name="id" value="3" />
                            <property name="name" value="IMAP" />
                            <property name="description" value="Only Allows IMAP Urls" />
                            <property name="serviceId" value="imap://**" />
                        </bean>
                    </list>
                </property>-->
               </bean>

     修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,如下:

    <%@ page session="false"%>
    <%@ taglib prefix="c" uri=">
    <%@ taglib uri="
    <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
     <cas:authenticationSuccess>
      <cas:user>${fn:escapeXml(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.id)}</cas:user>
      <c:if test="${not empty pgtIou}">
       <cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
      </c:if>
      <c:if test="${fn:length(assertion.chainedAuthentications) > 1}">
       <cas:proxies>
        <c:forEach var="proxy" items="${assertion.chainedAuthentications}"
         varStatus="loopStatus" begin="0"
         end="${fn:length(assertion.chainedAuthentications)-2}" step="1">
         <cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
        </c:forEach>
       </cas:proxies>
      </c:if>
       <c:if
       test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)

    >
    0}">
       <cas:attributes>
        <c:forEach
    var="attr"
         items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}"
         varStatus="loopStatus"
    begin="0"
         end="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)-1}"
         step="1">
         <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
        </c:forEach>
       </cas:attributes>
      </c:if>
     </cas:authenticationSuccess>
    </cas:serviceResponse>
    客戶端配置:
    1.過濾器CAS Validation Filter:
    <filter>
      <filter-name>CAS Validation Filter</filter-name>
      <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
      <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://domainserver:8081/cas</param-value>
      </init-param>
    </filter>
    在客戶端獲取信息
    AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
    String loginName = principal.getName();//獲取用戶名
    Map<String, Object> attributes = principal.getAttributes();
    if(attributes != null) {
     System.out.println(attributes.get("userId"));
     System.out.println(attributes.get("passwordHint"));
    }

     


     

    posted @ 2011-01-21 10:06 雪地孤鴻 閱讀(15883) | 評論 (9)編輯 收藏
    最近在使用G2G做項目,開發環境的數據庫為Mysql,在使用grails的分頁組件時沒有任何問題,但是將數據庫切換到ORACLE上就出現了問題,在分頁的時候,記錄總數是對了的,但在進行翻頁的時候,總會有前一頁的數據存在,而當前的數據總是顯示不對,經過將近一天的仔細排查才找到問題的關鍵,主要是由于數據庫的差異引起的,由于的我的查詢不需要進行排序,所以在原來的查詢結果中沒有就排序語句,這就導致在mysql中完全正常的功能,到了oralce中每次查詢的排序不一致,結果就導致在翻頁的時候總有前一頁的數據存在,可能是由于數據庫的引擎規則的不一致導致的。
    再次記下!

    posted @ 2010-12-13 11:15 雪地孤鴻 閱讀(715) | 評論 (0)編輯 收藏
       今天早上出來給老婆大人買早點,騎著老婆大人的小車,在路上奔馳,突然一種思緒飛入腦中,想想自己也是三十多歲的人了,卻是一事無成。我本IT出生,參加工作以來,卻一直徘徊在IT技術的和行業解決方案之間搖擺,最后終于下定決心朝著行業解決方案的方向發展,卻選擇了一個旅游行業,雖說春秋在國內也算的上不錯的旅游公司,但這個行業確實亂象叢生。該公司在信息化方面更是不知所謂,早三暮四。雖然我不應該對公司說三道四,但還是忍不住要說兩句。算了,這個都是我個人的抉擇,我現在是IT技術方面沒有什么看家的本事,行業知識也沒有什么,長此以往,很是危險,隨著年齡的增長,抗風險能力會越來月差,我必須要重新的思考和抉擇,不然真的要落的老婆大人預見的場景了,我自己不甘心這樣,也 不能讓老婆看扁啊。行業的解決方案肯定是我的房展方向,是繼續在這個行業發展,還是重新挑選行業,這是個比較重要的決定,但是不管怎么樣,我的老本行--IT技術也支撐不了幾年了,我必須要反省,深思我過去的規劃和執行,重新規劃和執行,努力的保障家庭幸福的經濟基礎,開拓新的事業。
    今天在這里寫下如此的只言片語,就是為了鞭策自己,不能讓自己在被短期的利益而動搖長期的規劃和執行,年紀也不小了,還沒有一個像樣的事業,以后的風險會越來越大。
    posted @ 2010-05-03 10:35 雪地孤鴻| 編輯 收藏
    最近在試用Grails進行開發一個小項目,需要使用oracle數據庫,我使用的是Oracle 11g,簡單的配置如下:
    1.添加jdbc lib到Grails項目的lib中,我使用的是ojdcb6_g.jar
    2.修改grails生成項目的DataSource.groovy文件中關于DataSource的相關配置:關鍵點是關于hibernate方言的配置,由于grails默認使用的是HSQL內存數據庫,推薦使用的是mysql數據庫;但是在使用oracle數據庫時,需要配置hiernate的方言;其他的如URL,drive,username,password等配置和一般的配置沒有什么區別,詳細配置如下:
    dataSource {
        pooled = true
        driverClassName = "oracle.jdbc.OracleDriver"
        username = "paygateway"
        password = "paygateway"
        dialect = "org.hibernate.dialect.OracleDialect"
           
        logSql = true
    }


    posted @ 2010-03-19 13:38 雪地孤鴻 閱讀(2002) | 評論 (1)編輯 收藏
    公司剛剛買了一臺Thinkpad R400(7445-A63),預裝的vista home basic版本,由于第一次使用thinkpad系列,只是制作了一個start Recovery Disk盤,忘了制作系統恢復光盤,暈倒,不知道聯想能否免費提供哦,那可是俺花銀子買的阿。當時急著想試用一下win7(當然是盜版的),所以就把硬盤格掉了,后來想恢復的時候已經晚了,因為我沒有win7的序列號,沒有辦法,只能重回xp時代了。
       由于硬盤是sata的,安裝過程很是郁悶,開始都引導不了,后來狠狠的google一把,終于搞定了:
      1.進入BIOS-》CONIF,將硬盤的模式修改為compatibility,原來為ACHI
      2.到聯想的官方網站,現在相關xp的驅動(http://think.lenovo.com.cn),網友提供列表如下;我是全部打包下載了:)
         安裝主板芯片組驅動(Intel Chipset Drivers)
    安裝硬盤SATA驅動(Intel Matrix Storage Manager)
    安裝ACPI電源驅動,即Power Manager Driver
    安裝Lenovo System Interface Driver
    啟動系統,系統安裝顯卡驅動
    安裝網卡驅動
    安裝無線驅動
    如果此系統安裝為XP2的系統,那么要安裝MODOM和聲卡的前提是安裝讀卡器(也有人叫HD總線)補丁: KB888111XPSP2.EXE;
    安裝聲卡驅動和補丁
    安裝貓驅動
    安裝藍牙驅動
    安裝讀卡器驅動
    安裝智能讀卡器驅動
    安裝指紋驅動        
    安裝PCI簡易通訊控制器,也就是AMT(INTEL的主動管理技術
    安裝TPM安全芯片的驅動程序
    安裝攝像頭驅動和補丁:7yca02ww.exe,Q909667.rar。
    安裝微軟雙核補丁和其他補?。篕B896256.exe, KB936357.exe, schedulerupdater.exe。
    安裝UltraNav driver
    安裝UltraNav Utility

    3.驅動安裝完成后,重啟機器,進入BIOS,將硬盤模式修改回原來的ACHI模式

    4.不知到何時能用上正中的win7盜版,感覺還是不錯,雖然我平時已經不太用win系統了。:)


    posted @ 2009-12-20 11:25 雪地孤鴻 閱讀(1561) | 評論 (2)編輯 收藏
    ofbiz默認的數據庫為derby,這個當然不能在生產環境中使用,而且也不方便調試和管理。雖然ofbiz也支持很多的開源數據庫,例如mysql等,但是我們這里還是使用主流的數據庫系統oracle 11g.詳細的操作如下
    1.更新JDBC驅動,將oracle最新的jdbc驅動copy到${ofbiz install dir}/framework/entity/lib/jdbc 目錄下。
    2.設置實體引擎( Entity Engine)的缺省數據庫為oracle.在修改 ${ofbiz install dir}/framework/entity/config/entityengine.xml文件中修改配置:
       a.修改數據庫連接參數:
         <datasource name="localoracle"
                helper-class="org.ofbiz.entity.datasource.GenericHelperDAO"
                schema-name="ofbiz" 你的數據庫schema名稱
                field-type-name="oracle"
                check-on-start="true"
                add-missing-on-start="true"
                alias-view-columns="false"
                join-style="ansi">
            <read-data reader-name="seed"/>
            <read-data reader-name="seed-initial"/>
            <read-data reader-name="demo"/>
            <read-data reader-name="ext"/>
            <inline-jdbc
                    jdbc-driver="oracle.jdbc.driver.OracleDriver"
                    jdbc-uri="jdbc:oracle:thin:@192.168.1.154:1521:ofbiz"  ofbiz為你的數據庫SID
                    jdbc-username="ofbiz"  用戶名
                    jdbc-password="ofbiz"  密碼
                    pool-minsize="2"
                    pool-maxsize="250"/>
        </datasource>
      b. 修改實體引擎的數據庫缺省配置如下:(將datasource-name的值設置為“localoracle”)
          <delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
            <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
        </delegator>
        <delegator name="default-no-eca" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" entity-eca-enabled="false" distributed-cache-clear-enabled="false">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
            <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
        </delegator>

        <!-- be sure that your default delegator (or the one you use) uses the same datasource for test. You must run "ant run-install" before running "ant run-tests" -->
        <delegator name="test" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
            <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
        </delegator>
        <delegator name="other" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main">
            <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
        </delegator>
    3.補充:在進行以上配置時,請確保你已經存在ofbiz的數據庫,實例,用戶等都已創建好。
    4. 初始化數據和導入:   
         ofbiz$ java -jar ofbiz.jar -install
    通過以上命令即可進行數據庫的初始化和初始數據的導入,這里包括了ofbiz自帶的例子,應用的所有的數據表和初始化數據

    5.問題:
    在使用oracle數據庫時,當前的版本可能會碰到ORA-01843:無效的月份的問題      

        以sys用戶登陸并創建Trigger:

        create or replace TRIGGER ON_CONNECT AFTER LOGON ON DATABASE
         DECLARE
         guser varchar2(30);
         begin
          SELECT sys_context('USERENV','SESSION_USER') into guser FROM dual;
             if (guser='ofbiz' or guser='OFBIZ') THEN
                EXECUTE IMMEDIATE 'alter session set nls_timestamp_format = ''YYYY-MM-DD HH24:MI:SS.FF''';
             end if;
         end;

    注意對登陸用戶名的判斷必須大小寫都要考慮.

    另:ofbiz用戶不能擁有dba的權限,同時ofbiz用戶比需要有UNLIMITED TABLESPACE的權限,否則在創建數據表的時候會報“數據庫空間不足”的錯誤,導致無法創建表。

    6.參考:
    http://blog.csdn.net/blieveme/archive/2007/10/16/1826604.aspx
    http://docs.ofbiz.org/display/~jacopoc/OFBiz+and+Oracle

    今天就到這里吧,明天繼續:) 
    posted @ 2009-09-03 20:27 雪地孤鴻 閱讀(2614) | 評論 (3)編輯 收藏
    apache版本2.2
    自帶mod_deflate.so和mod_headers.so
    如果沒有這兩個模塊,那么你就需要手工編譯并load這兩個模塊。
    我是在虛擬主機下加入一下配置即可
    <Location "/">
    SetOutputFilter DEFLATE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    Header append Vary User-Agent env=!dont-vary
    </Location>

    記住,以上配置,需要放到<Directory></Directory>之后,apache官方網站這么說的:)

    posted @ 2009-08-26 09:17 雪地孤鴻 閱讀(191) | 評論 (0)編輯 收藏
    今天發現linux服務器的/目錄磁盤使用率為100%,操作如下
    主要通過du -sh查找占用磁盤較多的目錄
    1.清除/var/log下的日志文件
    2.清除/var/spool/mail下占用磁盤較多的郵件目錄(我的服務上主要是root用戶的郵件比較多導致的)

    posted @ 2009-07-02 17:25 雪地孤鴻 閱讀(4367) | 評論 (0)編輯 收藏

    但是scim中文輸入不了, 上網找解決方案,最后成功的方法:

    sudo apt-get install scim-qtimm 安裝scim的qt模塊

    • sudo gedit /usr/bin/opera 在文件中加入export QT_IM_MODULE="scim"

    啟動opera,問題解決。


    環境:

    ubuntu9.0.4

    opera9.6

    測試成功

    posted @ 2009-05-08 08:59 雪地孤鴻 閱讀(276) | 評論 (0)編輯 收藏

    鳴謝:http://www.phpma.com/linux/20070908/392.html

    Apache日志分析工具--AWStats6.9安裝使用
    1、事先安裝好Apache

    2、安裝awstats的命令(將awstats安裝在/opt/awstats目錄)
    mkdir -p /var/lib/awstats
    cd /opt
    wget http://www.awstats.cn/files/awstats-6.6.tar.gz
    tar zxvf awstats-6.6.tar.gz
    mv awstats-6.6 awstats
    cd awstats/tools/
    perl awstats_configure.pl

    3、Perl腳本awstats_configure.pl安裝過程(以下內容引用AWStats英文使用說明)

    (1)
    -----> Running OS detected: Linux, BSD or Unix
    Warning: AWStats standard directory on Linux OS is '/usr/local/awstats'.
    If you want to use standard directory, you should first move all content
    of AWStats distribution from current directory:
    /opt/awstats
    to standard directory:
    /usr/local/awstats
    And then, run configure.pl from this location.
    Do you want to continue setup from this NON standard directory [yN] ?

    這時選擇y回車。

    (2)
    -----> Check for web server install

    Enter full config file path of your Web server.
    Example: /etc/httpd/httpd.conf
    Example: /usr/local/apache2/conf/httpd.conf
    Example: c:\Program files\apache group\apache\conf\httpd.conf
    Config file path ('none' to skip web server setup):

    第一次使用請輸入Apache的httpd.conf路徑,例如/opt/sina/apache/conf/httpd.conf
    以后如果再使用perl awstats_configure.pl生成配置文件,則可以輸入none跳過。

    (3)
    -----> Check and complete web server config file '/opt/sina/apache/conf/httpd.conf'
    Warning: You Apache config file contains directives to write 'common' log files
    This means that some features can't work (os, browsers and keywords detection).
    Do you want me to setup Apache to write 'combined' log files [y/N] ?

    選擇y,將日志記錄方式由CustomLog /yourlogpath/yourlogfile common改為更詳細的CustomLog /yourlogpath/yourlogfile combined

    (4)
    -----> Update model config file '/opt/awstats/wwwroot/cgi-bin/awstats.model.conf'
     File awstats.model.conf updated.

    -----> Need to create a new config file ?
    Do you want me to build a new AWStats config/profile
    file (required if first install) [y/N] ?

    創建一個新的配置文件,選擇y

    (5)
    -----> Define config file name to create
    What is the name of your web site or profile analysis ?
    Example: www.mysite.com
    Example: demo
    Your web site, virtual server or profile name:
    >

    輸入站點名稱,例如sina

    (6)
    -----> Define config file path
    In which directory do you plan to store your config file(s) ?
    Default: /etc/awstats
    Directory path to store config file(s) (Enter for default):
    >

    輸入AWStats配置文件存放路徑,一般直接回車則使用默認路徑/etc/awstats

    (7)
    -----> Add update process inside a scheduler
    Sorry, configure.pl does not support automatic add to cron yet.
    You can do it manually by adding the following command to your cron:
    /opt/awstats/wwwroot/cgi-bin/awstats.pl -update -config=sina
    Or if you have several config files and prefer having only one command:
    /opt/awstats/tools/awstats_updateall.pl now
    Press ENTER to continue...

    按回車鍵繼續

    (8)
    A SIMPLE config file has been created: /opt/awstats/etc/awstats.sina.conf
    You should have a look inside to check and change manually main parameters.
    You can then manually update your statistics for 'sina' with command:
    > perl awstats.pl -update -config=sina
    You can also read your statistics for 'sina' with URL:
    > http://localhost/awstats/

    Press ENTER to finish...

    按回車鍵結束


    4、修改awstats.sina.conf配置
    vi /etc/awstats/awstats.sina.conf

    按?,在之后輸入要搜索的內容LogFile="
    然后按Ins鍵,找到LogFile="/var/log/httpd/access_log"
    改為要分析的Apache日志路徑與文件名。

    (1)多日志合并分析(例:新浪播客其中兩臺服務器2月6日的日志30.0206.vblog.log與31.0206.vblog.log)
    LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/30.0206.vblog.log /var/apachelogs/31.0206.vblog.log|"

    LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/*.0206.vblog.log|"

    (2)分析使用gzip壓縮過的日志文件
    LogFile="gzip -d </var/log/apache/access.log.gz|"


    5、更新分析報告
    perl /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=sina -update


    在實踐過程中,確實有該問題,只要刪除掉歷史日志記錄即可
    如果出現以下錯誤提示,很大可能是Apache的Log文件中存在以前CustomLog /yourlogpath/yourlogfile common生成的日志,刪除掉這些行的日志即可:
    This means each line in your web server log file need to have "combined log format" like this:
    111.22.33.44 - - [10/Jan/2001:02:14:14 +0200] "GET / HTTP/1.1" 200 1234 "http://www.fromserver.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"

    6、查看分析報告
    http://localhost/awstats/awstats.pl?config=sina

    這里的sina對應/etc/awstats/awstats.sina.conf中的sina

    7.awstats自動生成日志分析報告

    需要root用戶權限,或者可以操作crontab -e命令的用戶權限:

    (1)鍵入:crontab -e

    (2)輸入以下系統定時任務:

    0 5 * * *  /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=www.google.com -update

    每天凌晨5點執行日志分析報告,opt/awstats/wwwroot/cgi-bin/awstats.pl為awstats安裝目錄下的perl命令,www.goolge.com為你安裝awstats時指定的網站域名。關于crontab命令的用法,可以google一下。

    8.awstats基礎安全設置

    (1)linux系統中必須存在用戶,如果不存在可以按以下方式操作

    groupadd awsuser     #增加awstats用戶組

    useradd -g awsuser awstats #增加awstats用戶,并歸屬awsuser用戶組

    (2)在apache安裝目錄下新建文件夾

    mkdir passwd

    (3)運行如下代碼產生用戶名為awstats用戶及其密碼

    opt/apache/bin/htpasswd -c /opt/apache/passwd/passwords awstats

    鍵入密碼和驗證密碼即可

    (4)配置httpd.conf

    <Directory "/opt/awstats-6.9/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/local/apache2/password/passwords Require user awsspring </Directory>




    附:
    (2)測試環境:在DELL PowerEdge 1950/2950 服務器+red hat as 4.6/5.0 as Linux操作系統+Apache 2.2.11下測試通過。

    posted @ 2009-04-08 16:54 雪地孤鴻 閱讀(1145) | 評論 (0)編輯 收藏
    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(17)

    隨筆分類

    隨筆檔案

    文章檔案

    blog

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲精品无码av| 黄视频在线观看免费| 韩国二级毛片免费播放| 免费一级毛片在线播放放视频| 亚洲男人的天堂www| 24小时日本电影免费看| 亚洲码欧美码一区二区三区| 亚洲欧洲一区二区三区| 久久99精品国产免费观看| 亚洲熟女乱色一区二区三区| 国产成人亚洲精品91专区手机| 久久久久高潮毛片免费全部播放| 精品亚洲国产成人| 国产亚洲精品激情都市| 国产92成人精品视频免费| 猫咪www免费人成网站| 亚洲精品在线播放| 亚洲人成色7777在线观看不卡| 18观看免费永久视频| 青青久久精品国产免费看| 亚洲伦理一二三四| 亚洲无码在线播放| 永久黄网站色视频免费| 久久午夜羞羞影院免费观看| 高潮内射免费看片| 国产成人精品亚洲日本在线| 国产精品亚洲综合一区| 最近中文字幕mv免费高清视频7| 亚洲一区二区女搞男| 成人无遮挡毛片免费看| 免费A级毛片无码A∨中文字幕下载| 午夜亚洲国产精品福利| 久久精品亚洲中文字幕无码麻豆| 亚洲精品国产高清不卡在线| 国内免费高清在线观看| 99久9在线|免费| 国产免费一区二区三区不卡| 亚洲成在人线在线播放无码 | 国产美女a做受大片免费| 30岁的女人韩剧免费观看| 18禁在线无遮挡免费观看网站|