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

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

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

    逝者如斯夫

    靜而思之
    數據加載中……

    Building CouchDB 1.0.2 from source (CentOS/RHEL 5)

    Dependencies

    CouchDB

    Runtime

    Build

    Spidermonkey

    Erlang

    ICU

    cURL

    Automake

    Autoconf

    0.9.x

    ==1.7

    >=5.6.0

    >=?3.0

    >=?7.15.5

    >=?1.6.3

    >=?2.59

    0.10.x

    >=1.7?&&?<=1.8.0

    >=5.6.5

    >=?3.0

    >=?7.18.0

    >=?1.6.3

    >=?2.59

    0.11.x

    >=1.7

    >=5.6.5

    >=?3.0

    >=?7.18.0

    >=?1.6.3

    >=?2.59

    1.0.2

    >=1.7

    >=5.6.5

    >=?3.0

    >=?7.18.0

    >=?1.6.3

    >=?2.59



    wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/libicu-3.6-5.16.x86_64.rpm
    wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/libicu-devel-3.6-5.16.x86_64.rpm
    wget http://download.fedora.redhat.com/pub/epel/5/x86_64/js-1.70-8.el5.x86_64.rpm
    wget http://download.fedora.redhat.com/pub/epel/5/SRPMS/js-1.70-8.el5.src.rpm
    wget http://download.fedora.redhat.com/pub/epel/5/x86_64/js-devel-1.70-8.el5.x86_64.rpm

    wget http://curl.haxx.se/download/curl-7.21.6.tar.gz
    wget http://labs.renren.com/apache-mirror/couchdb/1.0.2/apache-couchdb-1.0.2.tar.gz

    tar -xzf curl-7.21.6.tar.gz
    cd curl-7.21.6
    ./configure --prefix=/usr/local
    make
    make install
    cd ..

    rpm -ivh *.rpm

    tar -xzf apache-couchdb-1.0.2.tar.gz
    cd apache-couchdb-1.0.2
    ./configure --prefix=/usr/local/couchdb --with-erlang=/usr/lib64/erlang/usr/include
    make
    make install
    cd ..


    rm -rf apache-couchdb-1.0.2 curl-7.21.6

    /usr/sbin/useradd -r --home /usr/local/couchdb/var/lib/couchdb -M --shell /bin/bash --comment "CouchDB Administrator" couchdb

    mkdir -p /var/www/apps/couchdb/data
    mkdir -p /var/www/apps/couchdb/view
    mkdir -p /usr/local/var/lib/couchdb
    mkdir -p /usr/local/var/log

    chown -R couchdb: /usr/local/couchdb/var/lib/couchdb /usr/local/couchdb/var/log/couchdb /var/www/apps/couchdb


    # [httpd]
    # port = 5984
    # bind_address = 127.0.0.1 (your binding ip address here)
    vi /usr/local/couchdb/etc/couchdb/default.ini

    # -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5984 -j ACCEPT
    vi /etc/sysconfig/iptables
    /sbin/service iptables restart

    ln -s /usr/local/couchdb/etc/rc.d/couchdb /etc/init.d/couchdb

    /sbin/chkconfig --add couchdb
    /sbin/service couchdb start

    curl http://localhost{IP}:5984{PORT}/ ?
    {"couchdb":"Welcome","version":"1.0.2"}


    posted @ 2011-05-10 14:05 ideame 閱讀(452) | 評論 (0)編輯 收藏

    yum install mercurial (CentOS-5.4_x64)

    wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
    rpm -Uvh
    rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

    yum install mercurial

    posted @ 2010-04-04 14:01 ideame 閱讀(706) | 評論 (0)編輯 收藏

    軟件開發者面試百問


    軟件開發者面試百問

    作者 Jurgen Appelo譯者 李劍 發布于 2009年1月20日 上午2時2分


    1月13日,著名博客作者Jurgen Appelo寫了一篇博文:“軟件開發者面試百問”。該文甚受讀者歡迎,15日便登上了delicious,Popurls.com,Reddit的首頁。InfoQ中文站在得到作者許可之后,將其全文翻譯為中文,希望可以對國內讀者有所助益。

    以下為文章全文:

    想雇到搞軟件開發的聰明人可不容易。萬一一不小心,就會搞到一堆低能大狒狒。我去年就碰到這種事了。你肯定不想這樣吧。聽我的,沒錯。在樹上開站立會議門都沒有。

    問點有難度的問題能幫你把聰明人跟狒狒們分開。我決定把我自己整理出來的軟件開發者面試百問發出來,希望能幫到你們的忙。

    這個列表涵蓋了軟件開發知識體系中定義的大多數知識域。當然,如果你只想找出類拔萃的程序員,便只需涉及結構、算法、數據結構、測試這幾個話題。如果想雇架構師,也可以只考慮需求、功能設計、技術設計這些地方。

    不過不管你怎么做,都要牢記一點:

    這里大多數問題的答案都沒有對錯之分!

    你可以把我的這些問題作為引子,展開討論。例如下面有個問題是使用靜態方法或是單例的緣由。如果那個面試的就此展開長篇大論,那他很有可能是個聰明能干的家伙!如果他一臉茫然的看著你,發出這種聲音,很明顯這就是只狒狒了。同樣,想知道一個數是不是2的乘方也有很多方法,不過要是面試的人想用mod運算符,嗯……你知道我的意思吧。(你不知道也沒關系,來根香蕉?)

    需求

    1. 你能給出一些非功能性(或者質量)需求的例子么?
    2. 如果客戶需要高性能、使用極其方便而又高度安全,你會給他什么建議?
    3. 你能給出一些用來描述需求的不同技術么?它們各自適用于什么場景?
    4. 需求跟蹤是什么意思?什么是向前追溯,什么是向后追溯?
    5. 你喜歡用什么工具跟蹤需求?
    6. 你怎么看待需求變化?它是好是壞?給出你的理由。
    7. 你怎樣研究需求,發現需求?有哪些資源可以用到?
    8. 你怎么給需求制定優先級?有哪些技術?
    9. 在需求過程中,用戶、客戶、開發人員各自的職責是什么?
    10. 你怎么對待不完整或是令人費解的需求?

    功能設計


    1. 在功能設計中有哪些隱喻?給出幾個成功的例子。
    2. 如果有些功能的執行時間很長,怎么能讓用戶感覺不到太長的等待?
    3. 如果用戶必須要在一個很小的區域內,從一個常常的列表中選擇多個條目,你會用什么控件?
    4. 有哪些方法可以保證數據項的完整?
    5. 建立系統原型有哪些技術?
    6. 應用程序怎樣建立對用戶行為的預期?給出一些例子。
    7. 如何入手設計一組數量龐大而又復雜的特性,你能舉出一些設計思路嗎?
    8. 有一個列表,其中有10個元素,每個元素都有20個字段可以編輯,你怎樣設計這種情況?如果是1000個元素,每個元素有3個字段呢?
    9. 用不同的顏色對一段文本中的文字標記高亮,這種做法有什么問題?
    10. Web環境和Windows環境各有些什么限制?

    技術設計

    1. 什么是低耦合和高聚合?封裝原則又是什么意思?
    2. 在Web應用中,你怎樣避免幾個人編輯同一段數據所造成的沖突?
    3. 你知道設計模式嗎?你用過哪些設計模式?在什么場合下用的?
    4. 是否了解什么是無狀態的業務層?長事務如何與之相適應?
    5. 在搭建一個架構,或是技術設計時,你用過幾種圖?
    6. 在N層架構中都有哪些層?它們各自的職責是什么?
    7. 有哪些方法可以確保架構中數據的正確和健壯?
    8. 面向對象設計和面向組件設計有哪些不同之處?
    9. 怎樣在數據庫中對用戶授權、用戶配置、權限管理這幾項功能建模?
    10. 怎樣按照等級制度給動物王國(包括各種物種和各自的行為)建模?

    結構

    1. 你怎樣保證你的代碼可以處理各種錯誤事件?
    2. 解釋一下什么是測試驅動開發,舉出極限編程中的一些原則。
    3. 看別人代碼的時候,你最關心什么地方?
    4. 什么時候使用抽象類,什么時候使用接口?
    5. 除了IDE以外,你還喜歡哪些必不可少的工具?
    6. 你怎么保證代碼執行速度快,而又不出問題?
    7. 什么時候用多態,什么時候用委派?
    8. 什么時候使用帶有靜態成員的類,什么時候使用單例?
    9. 你在代碼里面怎么提前處理需求的變化?給一些例子。
    10. 描述一下實現一段代碼的過程,從需求到最終交付。

    算法

    1. 怎樣知道一個數字是不是2的乘方?怎樣判斷一個數是不是奇數?
    2. 怎樣找出鏈表中間的元素?
    3. 怎樣改變10,000個靜態HTML頁面中所有電話號碼的格式?
    4. 舉出一個你所用過的遞歸的例子。
    5. 在哈希表和排序后的列表中找一個元素,哪個查找速度最快?
    6. 不管是書、雜志還是網絡,你從中所學到的最后一點算法知識是什么?
    7. 怎樣把字符串反轉?你能不用臨時的字符串么?
    8. 你愿意用什么類型的語言來編寫復雜的算法?
    9. 有一個數組,里面是從1到1,000,000的整數,其中有一個數字出現了兩次,你怎么找出那個重復的數字?
    10. 你知道“旅行商問題(Traveling Salesman Problem)”么?

    數據結構


    1. 怎樣在內存中實現倫敦地鐵的結構?
    2. 怎樣以最有效的方式在數據庫中存儲顏色值?
    3. 隊列和堆棧區別是什么?
    4. 用堆或者堆棧存儲數據的區別是什么?
    5. 怎樣在數據庫中存儲N維向量?
    6. 你傾向于用哪種類型的語言編寫復雜的數據結構?
    7. 21的二進制值是什么?十六制值呢?
    8. 不管是書、雜志還是網絡,你從中所學到的最后一點數據結構的知識是什么?
    9. 怎樣在XML文檔中存儲足球比賽結果(包括隊伍和比分)?
    10. 有哪些文本格式可以保存Unicode字符?

    測試

    1. 什么是回歸測試?怎樣知道新引入的變化沒有給現有的功能造成破壞?
    2. 如果業務層和數據層之間有依賴關系,你該怎么寫單元測試?
    3. 你用哪些工具測試代碼質量?
    4. 在產品部署之后,你最常碰到的是什么類型的問題?
    5. 什么是代碼覆蓋率?有多少種代碼覆蓋率?
    6. 功能測試和探索性測試的區別是什么?你怎么對網站進行測試?
    7. 測試棧、測試用例、測試計劃,這三者之間的區別是什么?你怎么組織測試?
    8. 要對電子商務網站做冒煙測試,你會做哪些類型的測試?
    9. 客戶在驗收測試中會發現不滿意的東西,怎樣減少這種情況的發生?
    10. 你去年在測試和質量保證方面學到了哪些東西?

    維護

    1. 你用哪些工具在維護階段對產品進行監控?
    2. 要想對一個正在產品環境中被使用的產品進行升級,該注意哪些重要事項?
    3. 如果在一個龐大的文件中有錯誤,而代碼又無法逐步跟蹤,你怎么找出錯誤?
    4. 你怎樣保證代碼中的變化不會影響產品的其他部分?
    5. 你怎樣為產品編寫技術文檔?
    6. 你用過哪些方式保證軟件產品容易維護?
    7. 怎樣在產品運行的環境中進行系統調試?
    8. 什么是負載均衡?負載均衡的方式有哪些種?
    9. 為什么在應用程序的生命周期中,軟件維護費用所占的份額最高?
    10. re-engineering和reverse engineering的區別是什么?

    配置管理

    1. 你知道配置管理中基線的含義么?怎樣把項目中某個重要的時刻凍結?
    2. 你一般會把哪些東西納入版本控制?
    3. 怎樣可以保證團隊中每個人都知道誰改變了哪些東西?
    4. Tag和Branch的區別是什么?在什么情況下該使用tag,什么時候用branch?
    5. 怎樣管理技術文檔——如產品架構文檔——的變化?
    6. 你用什么侗劇管理項目中所有數字信息的狀態?你最喜歡哪種工具?
    7. 如果客戶想要對一款已經發布的產品做出變動,你怎么處理?
    8. 版本管理和發布管理有什么差異?
    9. 對文本文件的變化和二進制文件的變化進行管理,這二者有什么不同?
    10. 同時處理多個變更請求,或是同時進行增量開發和維護,這種事情你怎么看待?

    項目管理

    1. 范圍、時間、成本,這三項中哪些是可以由客戶控制的?
    2. 誰該對項目中所要付出的一切做出估算?誰有權設置最后期限?
    3. 減少交付的次數,或是減少每個每個交付中的工作量,你喜歡哪種做法?
    4. 你喜歡用哪種圖來跟蹤項目進度?
    5. 迭代和增量的區別在哪里?
    6. 試著解釋一下風險管理中用到的實踐。風險該如何管理?
    7. 你喜歡任務分解還是滾動式計劃?
    8. 你需要哪些東西幫助你判斷項目是否符合時間要求,在預算范圍內運作?
    9. DSDM、Prince2、Scrum,這三者之間有哪些區別?
    10. 如果客戶想要的東西太多,你在范圍和時間上怎樣跟他達成一致呢?

    Powered by ScribeFire.

    posted @ 2010-03-19 10:07 ideame 閱讀(418) | 評論 (0)編輯 收藏

    No more 'unable to find valid certification path to requested target'

    From: http://blogs.sun.com/andreas/entry/no_more_unable_to_find

    Some of you may be familiar with the (not very user friendly) exception message
    javax.net.ssl.SSLHandshakeException:
    sun.security.validator.ValidatorException:
    PKIX path building failed:
    sun.security.provider.certpath.SunCertPathBuilderException:
    unable to find valid certification path to requested target

    when trying to open an SSL connection to a host using JSSE. What this usually means is that the server is using a test certificate (possibly generated using keytool) rather than a certificate from a well known commercial Certification Authority such as Verisign or GoDaddy. Web browsers display warning dialogs in this case, but since JSSE cannot assume an interactive user is present it just throws an exception by default.

    Certificate validation is a very important part of SSL security, but I am not writing this entry to explain the details. If you are interested, you can start by reading the Wikipedia blurb. I am writing this entry to show a simple way to talk to that host with the test certificate, if you really want to.

    Basically, you want to add the server's certificate to the KeyStore with your trusted certificates. There are any number of ways to achieve that, but a simple solution is to compile and run the attached program as java InstallCert hostname, for example

    %?java?InstallCert?ecc.fedora.redhat.com
    Loading?KeyStore?/usr/jdk/instances/jdk1
    .5.0 /jre/lib/security/cacerts
    Opening?connection?to?ecc.fedora.redhat.com:
    443
    Starting?SSL?handshake

    javax.net.ssl.SSLHandshakeException:?sun.security.validator.ValidatorException:?PKIX?path?building?failed:
    sun.security.provider.certpath.SunCertPathBuilderException:?unable?to?find?valid?certification?path?to?requested?target
    ????at?com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:
    150 )
    ????at?com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:
    1476 )
    ????at?com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:
    174 )
    ????at?com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:
    168 )
    ????at?com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:
    846 )
    ????at?com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:
    106 )
    ????at?com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:
    495 )
    ????at?com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:
    433 )
    ????at?com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:
    815 )
    ????at?com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:
    1025 )
    ????at?com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:
    1038 )
    ????at?InstallCert.main(InstallCert.java:
    63 )
    Caused?by:?sun.security.validator.ValidatorException:?PKIX?path?building?failed:?sun.security.provider.certpath.SunCertPathBuilderException:
    unable?to?find?valid?certification?path?to?requested?target
    ????at?sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:
    221 )
    ????at?sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:
    145 )
    ????at?sun.security.validator.Validator.validate(Validator.java:
    203 )
    ????at?com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:
    172 )
    ????at?InstallCert$SavingTrustManager.checkServerTrusted(InstallCert.java:
    158 )
    ????at?com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(SSLContextImpl.java:
    320 )
    ????at?com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:
    839 )
    ?????
    7 ?more
    Caused?by:?sun.security.provider.certpath.SunCertPathBuilderException:?unable?to?find?valid?certification?path?to?requested?target
    ????at?sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:
    236 )
    ????at?java.security.cert.CertPathBuilder.build(CertPathBuilder.java:
    194 )
    ????at?sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:
    216 )
    ?????
    13 ?more

    Server?sent?
    2 ?certificate(s):

    ?
    1 ?Subject?CN = ecc.fedora.redhat.com , ?O = example.com , ?C = US
    ???Issuer??CN
    = Certificate?Shack , ?O = example.com , ?C = US
    ???sha1????2e?7f?
    76 ?9b? 52 ? 91 ? 09 ?2e?5d?8f?6b? 61 ? 39 ?2d?5e? 06 ?e4?d8?e9?c7?
    ???md5?????dd?d1?a8?
    03 ?d7?6c?4b? 11 ?a7?3d? 74 ? 28 ? 89 ?d0? 67 ? 54 ?

    ?
    2 ?Subject?CN = Certificate?Shack , ?O = example.com , ?C = US
    ???Issuer??CN
    = Certificate?Shack , ?O = example.com , ?C = US
    ???sha1????fb?
    58 ?a7? 03 ?c4?4e?3b?0e?e3?2c? 40 ?2f? 87 ? 64 ? 13 ?4d?df?e1?a1?a6?
    ???md5?????
    72 ?a0? 95 ? 43 ?7e? 41 ? 88 ? 18 ?ae?2f?6d? 98 ? 01 ?2c? 89 ? 68 ?

    Enter?certificate?to?add?to?trusted?keystore?or?'q'?to?quit:?
    [ 1 ]

    What happened was that the program opened a connection to the specified host and started an SSL handshake. It printed the exception stack trace of the error that occured and shows you the certificates used by the server. Now it prompts you for the certificate you want to add to your trusted KeyStore. You should only do this if you are sure that this is the certificate of the trusted host you want to connect to. You may want to check the MD5 and SHA1 certificate fingerprints against a fingerprint generated on the server (e.g. using keytool) to make sure it is the correct certificate.

    If you've changed your mind, enter 'q'. If you really want to add the certificate, enter '1'. (You could also add a CA certificate by entering a different certificate, but you usually don't want to do that'). Once you have made your choice, the program will print the following:

    ...

    Added certificate to keystore 'jssecacerts' using alias 'ecc.fedora.redhat.com-1'

    It displayed the complete certificate and then added it to a Java KeyStore 'jssecacerts' in the current directory. To use it in your program, either configure JSSE to use it as its trust store (as explained in the documentation) or copy it into your $JAVA_HOME/jre/lib/security directory. If you want all Java applications to recognize the certificate as trusted and not just JSSE, you could also overwrite the cacerts file in that directory.

    After all that, JSSE will be able to complete a handshake with the host, which you can verify by running the program again:

    %?java?InstallCert?ecc.fedora.redhat.com?Loading?KeyStore?jssecacerts
    ?Opening?connection?to?ecc.fedora.redhat.com:
    443
    ?Starting?SSL?handshake
    ?No?errors,?certificate?is?already?trusted?Server?sent?
    2?certificate(s):?1?[]

    Enter?certificate?to?add?to?trusted?keystore?or?'q'?to?quit:?[
    1]?q?KeyStore?not?changed?

    posted @ 2010-02-09 14:55 ideame 閱讀(1524) | 評論 (1)編輯 收藏

    關于 Maven + Proguard

    ??? 以前試過在Ant下使用Proguard,感覺挺簡單的,使用Maven后,明顯復雜多了,復雜不在Proguard,而在proguard-maven-plugin。
    ??? 配置如下:

    <plugin>
    ????
    <groupId>com.pyx4me</groupId>
    ????
    <artifactId>proguard-maven-plugin</artifactId>
    ????
    <executions>
    ????????
    <execution>
    ????????????
    <phase>package</phase>
    ????????????
    <goals>
    ????????????????
    <goal>proguard</goal>
    ????????????
    </goals>
    ????????
    </execution>
    ????
    </executions>
    ????
    <configuration>
    ????????
    <obfuscate>true</obfuscate>
    ????????
    <proguardInclude>${basedir}/proguard.pro</proguardInclude>
    ????????
    <libs>
    ????????????
    <lib>${java.home}/lib/rt.jar</lib>
    ????????????
    <lib>${java.home}/lib/jsse.jar</lib>
    ????????????
    <lib>${java.home}/lib/jce.jar</lib>
    ????????
    </libs>
    ????
    </configuration>
    </plugin>

    出現異常:


    [proguard]?Obfuscating
    [proguard]?Printing?mapping?to?[D:\cces\linker\target\proguard_map.txt]
    [proguard]?Preverifying
    [proguard]?Unexpected?error?while?performing?partial?evaluation:
    [proguard]???Class?=?[net/sicross/tms/service/cces/SearchFlightOrderDetailService]
    [proguard]???Method?=?[getRouteDetail(Ljava/util/Map;)Ljava/util/List;]
    [proguard]???Exception?=?[java.lang.IllegalArgumentException]?(Can't?find?common?super?class?of?[java/util/List]?and?[java/lang/StringBuffer])
    [proguard]?Unexpected?error?while?preverifying:
    [proguard]???Class??=?[net/sicross/tms/service/cces/SearchFlightOrderDetailService]?[proguard]???Method?=?[getRouteDetail(Ljava/util/Map;)Ljava/util/List;]
    [proguard]???Exception?=?[java.lang.IllegalArgumentException]?(Can't?find?common?super?class?of?[java/util/List]?and?[java/lang/StringBuffer])
    [proguard]?java.lang.IllegalArgumentException:?Can't?find?common?super?class?of?[java/util/List]?and?[java/lang/StringBuffer]
    [proguard]?????at?proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:330)
    [proguard]?????at?proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:467)
    [proguard]?????at?proguard.evaluation.Variables.generalize(Variables.java:137)
    [proguard]?????at?proguard.evaluation.TracedVariables.generalize(TracedVariables.java:140)
    [proguard]?????at?proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:637)

    ??? 根據異常,先是懷疑有什么jre的包沒有導入,增加了另外幾個也不行。在懷疑是jdk編譯版本的問題,因為輸出目標jdk版本是1.6的,在proguard-maven-plugin的configuration中增加下面的配置也沒有。

    <options>
    ????
    <option>-target?1.6</option>
    </options>

    ??? 最后,將maven的target=1.6改為1.5后,異常消失。


    <plugin>
    ????
    <groupId>org.apache.maven.plugins</groupId>
    ????
    <version>2.0.2</version>
    ????
    <artifactId>maven-compiler-plugin</artifactId>
    ????
    <configuration>
    ????????
    <source>1.5</source>
    ????????
    <target>1.6</target>
    ????????
    <encoding>UTF-8</encoding>
    ????
    </configuration>
    </plugin>



    Powered by ScribeFire.

    posted @ 2010-02-01 11:53 ideame 閱讀(6973) | 評論 (1)編輯 收藏

    查看系統信息:Linux版本和內核對應

    Red Hat 9???????????????????? 2.4.20-8

    Fedora Core 4????????????? 2.6.11-1.1369_FC4
    Fedora Core 5????????????? 2.6.15-1.2054_FC5
    Fedora Core 6????????????? 2.6.18-1.2798.fc6
    Fedora 7????????????????????? 2.6.21-1.3194.fc7
    Fedora 8????????????????????? 2.6.23.1-42.fc8

    Ubuntu 7.10??????????????? 2.6.22-14-generic

    RedHat as4.0?????????????? 2.6.9-11.EL

    CentOS 5.1????????????????? 2.6.18
    CentOS 5.2????????????????? 2.6.18


    系統
    ??? # uname -a # 查看內核/操作系統/CPU信息
    ??? # head -n 1 /etc/issue # 查看操作系統版本
    ??? # cat /proc/cpuinfo # 查看CPU信息
    ??? # hostname # 查看計算機名
    ??? # lspci -tv # 列出所有PCI設備
    ??? # lsusb -tv # 列出所有USB設備
    ??? # lsmod # 列出加載的內核模塊
    ??? # env # 查看環境變量

    資源
    ??? # free -m # 查看內存使用量和交換區使用量
    ??? # df -h # 查看各分區使用情況
    ??? # du -sh # 查看指定目錄的大小
    ??? # grep MemTotal /proc/meminfo # 查看內存總量
    ??? # grep MemFree /proc/meminfo # 查看空閑內存量
    ??? # uptime # 查看系統運行時間、用戶數、負載
    ??? # cat /proc/loadavg # 查看系統負載

    磁盤和分區
    ??? # mount | column -t # 查看掛接的分區狀態
    ??? # fdisk -l # 查看所有分區
    ??? # swapon -s # 查看所有交換分區
    ??? # hdparm -i /dev/hda # 查看磁盤參數(僅適用于IDE設備)
    ??? # dmesg | grep IDE # 查看啟動時IDE設備檢測狀況

    網絡
    ??? # ifconfig # 查看所有網絡接口的屬性
    ??? # iptables -L # 查看防火墻設置
    ??? # route -n # 查看路由表
    ??? # netstat -lntp # 查看所有監聽端口
    ??? # netstat -antp # 查看所有已經建立的連接
    ??? # netstat -s # 查看網絡統計信息

    進程
    ??? # ps -ef # 查看所有進程
    ??? # top # 實時顯示進程狀態

    用戶
    ??? # w # 查看活動用戶
    ??? # id # 查看指定用戶信息
    ??? # last # 查看用戶登錄日志
    ??? # cut -d: -f1 /etc/passwd # 查看系統所有用戶
    ??? # cut -d: -f1 /etc/group # 查看系統所有組
    ??? # crontab -l # 查看當前用戶的計劃任務

    服務
    ??? # chkconfig --list # 列出所有系統服務
    ??? # chkconfig --list | grep on # 列出所有啟動的系統服務

    程序
    ??? # rpm -qa # 查看所有安裝的軟件包

    posted @ 2009-02-17 16:02 ideame 閱讀(381) | 評論 (0)編輯 收藏

    TCP連接的過程

    編寫:Leaf Zhou
    EMAIL:leaf_zhou_8@hotmail.com

    TCP是英文Transport Control Protocol的縮寫。從字面理解,就是傳輸控制協議。因此,TCP是一種控制協議,他本身不能用來傳輸數據,它需要通過網絡層的IP協議來進行實際數據的傳輸。這也就是我們常常看到,TCP/IP和TCP/UDP總是同時出現的原因。因此,也可以理解為TCP是很多的不同的協議組成,實際上是一個協議組。提供可靠的主機到主機層數據傳輸控制協議。這里要先強調一下,傳輸控制協議是OSI網絡的第四層的叫法,TCP傳輸控制協議是TCP/IP傳輸的6個基本協議的一種。TCP是一種可靠的面向連接的傳送服務。它在

    一、TCP概述
    TCP是英文Transport Control Protocol的縮寫。從字面理解,就是傳輸控制協議。因此,TCP是一種控制協議,他本身不能用來傳輸數據,它需要通過網絡層的IP協議來進行實際數據的傳輸。這也就是我們常常看到,TCP/IP和TCP/UDP總是同時出現的原因。因此,也可以理解為TCP是很多的不同的協議組成,實際上是一個協議組。提供可靠的主機到主機層數據傳輸控制協議。這里要先強調一下,傳輸控制協議是OSI網絡的第四層的叫法,TCP傳輸控制協議是TCP/IP傳輸的6個基本協議的一種。TCP是一種可靠的面向連接的傳送服務。它在傳送數據時是分段進行的,主機交換數據必須先建立一個會話。它用比特流通信,即數據被作為無結構的字節流進行傳輸,沒有數據邊界。通過每個TCP傳輸的字段指定順序號,以獲得可靠性。是在OSI參考模型中的第四層,TCP是使用IP的網間互聯功能而提供可靠的數據傳輸,IP不停的把報文放到網絡上,而TCP是負責確信報文到達。在協同IP的操作中TCP負責:握手過程、報文管理、流量控制、錯誤檢測和處理(控制),可以根據一定的編號順序對非正常順序的報文給予從新排列順序。關于TCP的RFC文檔有RFC793、RFC791、RFC1700。

    二、TCP連接的建立
    建立一個TCP連接,需要下面的步驟:
    (1)服務器端通過listen來準備接受外來的連接,稱為被動打開(passive open)。
    (2) 客戶端通過connect進行連接服務器,稱為主動打開(active open)。在這個操作中,客戶端需要發送一個同步數據報(SYN),用來通知服務器端開始發送數據的初始序列號。通常情況下,同步數據報不攜帶數據,它只包含一個IP頭部、一個TCP頭部和本次通信所使用的TCP的選項。
    (3)服務器端必須對客戶端發來的同步數據報SYN進行確認,同時自己也要發送一個同步數據報(SYN),它包含客戶端發送數據的初始序列號。服務器端對在同一連接中發送的數據初始序號和對客戶端發送的確認信息(ACK),都放在一個數據報中,一起發送給客戶端。
    (4)客戶端也必須發送確認服務器端的同步數據報(SYN)。
    由上面的步驟來看,建立一個TCP連接,至少需要服務器端和客戶端進行三個分組數據的交換,因此,稱之為TCP的三路握手(three-way handshake)。

    ????????????客戶端???????????????????????????服務器端
    ????????????connect()????????????????????????accept()
    ????????????????????? --->?SYN?S?----->???
    ??????????????????????<---?SYN?C
    , ACK?S+ 1 ?<---??????
    ??????????????????????--->?ACK?C+
    1 ?----->

    第一次進行分組數據交換的過程中,分組數據中可能包含著本次通信中可能的TCP選項。這些選項有:
    (1) 最大分組(MSS)選項。TCP發送的SYN中帶有這個選項,用來告訴對方它的最大分組數據的大小MSS(Maximum Segment Size),即它能接收的每個TCP分組數據中的最大數據量。這個選項可以通過TCP_MAXSEG套接口選項獲取與設置這個TCP選項。
    (2) 窗口大小選項。這是TCP能提供流量控制的主要手段。TCP連接的每一方都有固定大小的緩沖空間,TCP的接收端只允許另一端發送接收端緩沖區所能接納的數據。這將防止較快主機致使較慢主機的緩沖區溢出。TCP雙方能夠通知對方的最大窗口大小是64K(65535 bytes),因為TCP頭部相應的標識字段值只用了16位來表示。每個套接口都有一個發送緩沖區和一個接收緩沖區,接收緩沖區被TCP和UDP用來將接收到的數據一直保存到由應用進程來讀取。對于TCP,TCP通告另一端的窗口大小。 TCP套接口接收緩沖區不可能溢出,因為對方不允許發出超過所通告窗口大小的數據。這就是TCP的流量控制,如果對方無視窗口大小而發出了超過窗口大小的數據,則接收方TCP將丟棄它;而對于UDP,當套接口接收緩沖區放不下接收到的數據報時,此數據報就被丟棄。UDP是沒有流量控制的,快的發送者可以很容易地就淹沒慢的接收者,導致接收方的UDP丟棄數據報,使數據發生丟失。
    (3)時間戳選項。時間戳選項使發送方在每個報文段中放置一個時間戳值。接收方在確認中返回這個數值,從而允許發送方為每一個收到的ACK計算RTT。

    三、TCP連接的終止
    終止TCP連接
    TCP用三個分組數據建立一個連接,但要終止一個連接則通常需要需要四個分組數據。過程如下:
    (1)先調用close的進程,稱為主動關閉(active close)。這一端的TCP先發送一個FIN分組數據,告訴對方,數據發送完畢。
    (2)接收到FIN分組數據的一端執行被動關閉(passive close),同時,發送對這個FIN的確認ACK分組數據給對方。確認序號為收到的序號加1。FIN分組數據的接收意味著在當前的連接上,再也不會收到額外的數據。
    (3)接收到FIN分組數據的一端的應用進程,將調用close關閉自己的套接口,同時TCP 會發送一個FIN分組數據給另一端。
    (4)收到這個FIN的分組數據,即執行主動關閉的一端對這個FIN分組數據進行確認。發回確認ACK分組數據,并將確認序號設置為收到序號加1

    在這個過程中,執行被動關閉的一方可以把確認對方FIN分組數據的ACK分組數據和自己要發送的FIN分組數據可以放到一個分組數據中。TCP的連接終止的過程如下:

    ????????????客戶端???????????????????????????服務器端
    ????????????close()??????????????????????????close()
    ??????????????????????--->?FIN?S?----->???
    ??????????????????????<---?ACK?S+
    1 ?<---??????
    ??????????????????????<---?FIN?C???<---
    ??????????????????????--->?FIN?C+
    1 ?--->

    四、TCP連的狀態?????????????????
    TCP的連接的建立和終止,基本上已經清楚了,那么在這個過程中,是如何知道這個連接正處在什么狀態呢?方法當然是有的,我們先運行如下命令,看看返回的結果:

    [root@linux81?leaf]#?netstat?-an
    Active?Internet?connections?(servers?and?established)
    Proto?Recv-Q?Send-Q?Local?Address???????????Foreign?Address?????????State????
    tcp????????
    0??????0?0.0.0.0:3306????????????0.0.0.0:*???????????????LISTEN????
    tcp????????
    0??????0?0.0.0.0:139?????????????0.0.0.0:*???????????????LISTEN????
    tcp????????
    0??????0?0.0.0.0:21??????????????0.0.0.0:*???????????????LISTEN????
    tcp????????
    0??????0?0.0.0.0:22??????????????0.0.0.0:*???????????????LISTEN????
    tcp????????
    0??????0?0.0.0.0:23??????????????0.0.0.0:*???????????????LISTEN????
    tcp????????
    0??????0?192.168.253.81:139??????192.168.253.35:1201?????ESTABLISHED
    tcp????????
    0????272?192.168.253.81:22???????192.168.253.59:1776?????ESTABLISHED
    udp????????
    0??????0?192.168.253.81:137??????0.0.0.0:*?????????????????????????
    udp????????
    0??????0?0.0.0.0:137?????????????0.0.0.0:*?????????????????????????
    udp????????
    0??????0?192.168.253.81:138??????0.0.0.0:*?????????????????????????
    udp????????
    0??????0?0.0.0.0:138?????????????0.0.0.0:*?????????????????????????
    udp????????
    0??????0?127.0.0.1:36260?????????0.0.0.0:*??????????

    在上面的返回結果中,State一列,就是說明連接的當前狀態。
    TCP的連接狀態有:
    (01)CLOSED??
    (02)LISTEN??? 被動打開
    (03)SYN_RCVD??
    (04)SYN_SEND
    (05)ESTABLISHED?? 數據傳送狀態
    (06)CLOSE_WAIT
    (07)LAST_ACK?? 被動關閉
    (08)FIN_WAIT_1
    (09)FIN_WAIT_2
    (10)CLOSING
    (11)TIME_WAIT

    TCP連接狀態轉換示意圖如下所示:

    ??????????????????????????????+---------+?---------\??????active?OPEN
    ??????????????????????????????|??CLOSED?|????????????\????-----------
    ??????????????????????????????+---------+<---------\???\???create?TCB
    ????????????????????????????????|?????^??????????????\???\??snd?SYN??
    ???????????????????passive?OPEN?|?????|???CLOSE????????\???\?????????
    ???????????????????------------?|?????|?----------???????\???\???????
    ????????????????????create?TCB??|?????|?delete?TCB?????????\???\?????
    ????????????????????????????????V?????|??????????????????????\???\???
    ??????????????????????????????+---------+????????????CLOSE????|????\?
    ??????????????????????????????|??LISTEN?|??????????----------?|?????|
    ??????????????????????????????+---------+??????????delete?TCB?|?????|
    ???????????????????rcv?SYN??????|?????|?????SEND??????????????|?????|
    ??????????????????-----------???|?????|????-------????????????|?????V
    +---------+??????snd?SYN
    ,ACK??/???????\???snd?SYN??????????+---------+
    |?????????|<-----------------???????????------------------>|?????????|
    |???SYN???|????????????????????rcv?SYN?????????????????????|???SYN???|
    |???RCVD??|<-----------------------------------------------|???SENT??|
    |?????????|????????????????????snd?ACK?????????????????????|?????????|
    |?????????|------------------???????????-------------------|?????????|
    +---------+???rcv?ACK?of?SYN??\???????/??rcv?SYN
    ,ACK???????+---------+
    ???|???????????--------------???|?????|???-----------????????????????
    ???|??????????????????x?????????|?????|?????snd?ACK??????????????????
    ???|????????????????????????????V?????V??????????????????????????????
    ???|??CLOSE???????????????????+---------+????????????????????????????
    ???|?-------??????????????????|??ESTAB??|????????????????????????????
    ???|?snd?FIN??????????????????+---------+????????????????????????????
    ???|???????????????????CLOSE????|?????|????rcv?FIN???????????????????
    ???V??????????????????-------???|?????|????-------???????????????????
    +---------+??????????snd?FIN??/???????\???snd?ACK??????????+---------+
    |??FIN????|<-----------------???????????------------------>|??CLOSE??|
    |?WAIT-
    1??|------------------??????????????????????????????|???WAIT??|
    +---------+??????????rcv?FIN??\????????????????????????????+---------+
    ???|?rcv?ACK?of?FIN???-------???|????????????????????????????CLOSE??|
    ???|?--------------???snd?ACK???|???????????????????????????-------?|
    ???V????????x???????????????????V???????????????????????????snd?FIN?V
    +---------+??????????????????+---------+???????????????????+---------+
    |FINWAIT-
    2|??????????????????|?CLOSING?|???????????????????|?LAST-ACK|
    +---------+??????????????????+---------+???????????????????+---------+
    ???|????????????????rcv?ACK?of?FIN?|?????????????????rcv?ACK?of?FIN?|
    ???|??rcv?FIN???????--------------?|????Timeout
    =2MSL?--------------?|
    ???|??-------??????????????x???????V????------------????????x???????V
    ????\?snd?ACK?????????????????+---------+delete?TCB?????????+---------+
    ?????------------------------>|TIME?WAIT|------------------>|?CLOSED??|
    ??????????????????????????????+---------+???????????????????+---------+

    ????????????????????? TCP Connection State Diagram

    從上面的圖表中,可以做出如下總結:
    服務器端的正常狀態轉換過程如下:
    ? CLOSED --> LISTEN --> SYN_RCVD --> ESTABLISHED --> CLOSE_WAIT --> LAST_ACK --> CLOSED
    客戶端的正常狀態轉換過程如下:
    CLOSED --> SYN_SENT --> ESTABLISHED --> FIN_WAIT_1 --> FIN_WAIT_2 --> TIME_WAIT --> CLOSED
    從上面的連接狀態轉換中可以看出,從ESTABLISHED狀態的轉換有兩種,對于客戶端和服務器端來說,是一樣的,即當收到FIN數據報之前,主動關閉,則轉換成FIN_WAIT_1;如果因為收到FIN數據報,而引起的被動關閉,則轉換成CLOSE_WAIT狀態。

    posted @ 2009-02-09 18:11 ideame 閱讀(2459) | 評論 (1)編輯 收藏

    group install gnome

    Install:

    yum grouplist

    sudo yum groupinstall "X Window System" "GNOME Desktop Environment"

    or

    sudo mount /dev/cdrom /media/cdrom

    sudo yum --disablerepo=\* --enablerepo=c5-media groupinstall "X Window System" "GNOME Desktop Environment"


    Error:

    Missing Dependency: libgaim.so.0 is needed by package nautilus-sendto 

    more detail: https://bugzilla.redhat.com/show_bug.cgi?id=250403

    Resolved:

    wget http://mirror.centos.org/centos/5/os/i386/CentOS/nautilus-sendto-0.7-5.fc6.i386.rpm ~

    sudo rpm -Uvh --nodeps ~/nautilus-sendto-0.7-5.fc6.i386.rpm

     

    repeat install.

     

    posted @ 2009-02-09 15:38 ideame 閱讀(327) | 評論 (0)編輯 收藏

    Creating A Local Yum Repository (CentOS)


    Creating A Local Yum Repository (CentOS)
    摘自: www.howtoforge.com


    Author & Content of this howto, Tim Haselaars (http://www.trinix.be)

    Sometimes it can be handy to set up your own repository to prevent from downloading the remote repository over and over again. This tutorial shows how to create a CentOS mirror for your local network. If you have to install multiple systems in your local network then all needed packages can be downloaded over the fast LAN connection, thus saving your internet bandwidth.

    Create the Directories:

    mkdir -pv /var/www/html/centos/{base,updates}


    The Base Repository

    Copy the RPMs from the CDs/DVD to /var/www/html/centos/base.

    Create the base repository headers:

    createrepo /var/www/html/centos/base


    The Updates Repository

    Select an rsync mirror for updates: check out this list of aviable mirrors: Centos OS Mirror list and these are identified with rsync.

    For example: rsync://ftp.belnet.be/packages/centos/

    The mirrors share a common structure for updates. Simply append /updates//.

    Rsync to create the updates-released repository:

    rsync -avrt rsync://ftp.belnet.be/packages/centos/5.0/updates/i386 \ --exclude=debug/ /var/www/html/centos/updates

    This will create a complete update repository at /var/www/html/centos/updates/i386. The repodata directory will be created with all of the headers.

    Next I would advise to setup a cron job to run the rsync (above). In this manner your repository is kept updated and only new updates and headers will be downloaded to your repository.


    Yum Configuration

    Edit yum.conf:

    vi /etc/yum.repos.d/CentOS-Base.repo

    [base]
    name=CentOS-$releasever - Base
    baseurl=http://192.168.*.*/centos/$releasever/os/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
    #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

    #released updates
    [update]
    name=CentOS-$releasever - Updates
    baseurl=http://192.168.*.*/centos/$releasever/updates/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
    #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

    That's it.

    Powered by ScribeFire.

    posted @ 2009-01-14 15:59 ideame 閱讀(605) | 評論 (0)編輯 收藏

    Linux設置DNS和主機名

    Linux設置DNS和主機名

    操作過程

    配置文件位于:

    /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.0.3
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.1

    使IP地址生效:

    /sbin/ifdown eth0 /sbin/ifup eth0 

    配置dns解析

    echo "nameserver 211.98.1.28">> /etc/resolv.conf 

    通知網關更新信息:

    /etc/init.d/network restart 

    DNS 簡介

      DNS就是Domain Name System,它能夠把形如www.21php.com這樣的域名轉換為211.152.50.35這樣的IP地址;沒有DNS,瀏覽21php.com 這個網站時,就必須用211.152.50.35這么難記的數字來訪問。提供DNS服務的就是DNS服務器。DNS服務器可以分為三種,高速緩存服務器 (Cache-only server)、主服務器(Primary Name server)、輔助服務器(Second Name Server)。  DNS的詳細原理、工作流程、術語、概念,限于篇幅,這里就不說了。可以閱讀專門的文章,如DNS-HOWTO加以了解。

    配置主DNS服務器

    首先我們做以下假設:

    • A服務器為21php.com的主域名服務器,其IP地址為11.0.0.1
    • B服務器為21php.com的輔助域名服務器,其IP地址為11.0.0.2;

    下面我們配置服務器11.0.0.1為 21PHP.COM 的主 DNS 服務器。Linux下的dns功能是通過bind軟件實現的。bind軟件安裝后,會產生幾個固有文件,分為兩類,一類是配置文件在?/etc?目錄下,一類是dns記錄文件在?/var/named?目錄下。加上其他相關文件,共同設置dns服務器。下面是所有和dns設置相關文件的列表與說明。

    位于/etc目錄下的有:

    • hosts
    • host.conf
    • resolv.conf
    • named.boot
    • named.conf

    具體說明:

    1. hosts

      定義了主機名和ip地址的對應,其中也有將要運行dns這臺電腦的ip地址和主機名。內容:

      127.0.0.1 localhost.localdomain localhost 
    2. host.conf “order hosts bind”語句,指定了對主機名的解析順序是先到hosts中查找,然后到dns服務器的記錄里查找。 “multi on”則是允許一個主機名對應多個ip地址。內容:

      order hosts, bind 
      multi on
      nospoof on
    3. “resolv.conf”

      “nameserver 10.0.0.211”指定了dns服務器的地址。注意,這個文件對普通非dns服務器的電腦(非windows的系統;Windows系統是在“網絡屬性”中設置這項的)來說,是必不可少的。你如果沒有設置本機為dns服務器,你又要能夠解析域名,就必須指定一個dns服務器的地址。你可以最多寫上三個地址,作為前一個失敗時的候選dns服務器。“domain zrs.com”指定默認的域。內容:

      domain 21php.com
      nameserver 11.0.0.1
    4. named.boot

      文件是早期版本的bind軟件使用的配置文件,現在新版本中已經讓位于“named.conf”。named.conf是 dns 服務器配置的核心文件。

      下面我們一段一段的來解說。

      # named.conf - configuration for bind # 
      # Generated automatically by bindconf, alchemist et al.

      controls {
      inet 127.0.0.1 allow {
      localhost;
      } keys {
      rndckey;
      };
      };
      include "/etc/rndc.key";
      options {
      directory "/var/named/";
      };
      zone "." {
      type hint;
      file "named.ca";
      };
      zone "0.0.127.in-addr.arpa" {
      type master;
      file "0.0.127.in-addr.arpa.zone";
      };
      zone "localhost" {
      type master;
      file "localhost.zone";
      };
      zone "21php.com" {
      type master; notify yes; file "21php.com";
      };

      上文中#為注釋符號, 其他各行含義如下:

      diretory /var/named 

      指定named從 /var/named 目錄下讀取DNS數據文件,這個目錄用戶可自行指定并創建,指定后所有的DNS數據文件都存放在此目錄下;

      zone "." { type hint; file "named.ca"; }; 

      指定named從 named.ca 文件中獲得Internet的頂層“根”服務器地址 。

      zone "0.0.127.in-addr.arpa" {
      type master;
      file "0.0.127.in-addr.arpa.zone";
      };

      指定named作為127.0.0網段地址轉換主服務器,named.local文件中包含了127.0.0.*形式的地址到域名的轉換數據(127.0.0網段地址是局域網接口的內部 loopback地址);

      zone "localhost" { type master; file "localhost.zone"; }; 

      指定包含localhost的DNS文件數據存放在/var/named/localhost.zone中;

      zone "21php.com" { type master; notify yes; file "21php.com.zone"; }; 

      以上語句表明域21php.com的DNS數據存放在/var/named/目錄下的21php.com.zone中;用文本編輯器打開/var/named/21php.com.zone,其內容如下:

      $TTL 86400 
      @ IN SOA @ root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl )
      @ IN NS localhost
      www IN A 11.0.0.233
      www2 IN A 11.0.0.23
      forum IN A 11.0.0.10
      @ IN MX 5 mail.21php.com.

      該文件的前部分是相應的參數設置,此部分不需要改動,后面的部分就是具體的DNS數據;例如:

      www IN A 11.0.0.233 # 將www.21php.com 解析到地址11.0.0.233;
      www2 IN A 11.0.0.23 # 將www2.21php.com 解析到地址11.0.0.23;
      club IN A 11.0.0.10 # 將club.21php.com 解析到地址11.0.0.10;

    配置輔助DNS服務器

    輔助DNS服務器,可從主服務器中轉移一整套域信息。區文件是從主服務器中轉移出來的,并作為本地磁盤文件存儲在輔助服務器中。在輔助服務器中有域信息的完整拷貝,所以也可以可以回答對該域的查詢。這部分的配置內容如下:

    zone "21php.com" IN {
    type slave;
    file "21php.com.zone";
    masters {
    11.0.0.1;
    };
    };

    可以看到,和主DNS服務器不同地方就是:“type”改為了“slave”,然后指明了主DNS服務器的地址masters { 11.0.0.1; };。DNS服務啟動時,就會自動連接11.0.0.1,讀取21php.com域的信息,然后保存到本機的21php.com.zone文件里。

    測試DNS服務器

    改動過DNS的相應文件,用“ndc restart”命令重新啟動服務,在redhat 7.1以上版本中使用命令:

    /etc/rc.d/init.d/named restart 

    或者

    /etc/rc.d/init.d/named reload 

    使改動生效。

    要測試DNS,可以找一臺客戶機,把它的DNS地址設成新建立的DNS服務器地址,然后試試上網,收信,下載等。也可以使用nslookup命令:運行nslookup,輸入要查詢的主機名,看是否返回正確的ip地址,在redhat 7.1以上版本中推薦使用dig命令。

    posted @ 2009-01-14 15:59 ideame 閱讀(8734) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 下一頁 
    主站蜘蛛池模板: 国产精品亚洲专区无码WEB| 成av免费大片黄在线观看| www.亚洲色图.com| 久久精品乱子伦免费| 激情内射亚洲一区二区三区爱妻| 国产小视频在线观看免费| 一个人免费视频观看在线www| 亚洲精彩视频在线观看| 无码专区一va亚洲v专区在线| 99re在线视频免费观看| 免费人成再在线观看网站| 色婷婷亚洲十月十月色天| 国产真人无遮挡作爱免费视频| 在线观看肉片AV网站免费| 亚洲国产精品无码久久| 亚洲一区二区在线免费观看| 又爽又高潮的BB视频免费看| 精品四虎免费观看国产高清午夜| 亚洲乱妇老熟女爽到高潮的片| 亚洲精品无码久久一线| 国产精品深夜福利免费观看| 95老司机免费福利| caoporm碰最新免费公开视频| 亚洲综合丁香婷婷六月香| 久久精品国产亚洲一区二区| 国产高清在线精品免费软件 | 亚洲国产成人久久精品软件| 内射少妇36P亚洲区| 亚洲自偷自偷在线制服| 色吊丝永久在线观看最新免费| 99在线观看精品免费99| sihu国产精品永久免费| 色欲色欲天天天www亚洲伊| 亚洲中文久久精品无码1| 亚洲人成在线观看| 美腿丝袜亚洲综合| 亚洲日韩精品无码专区网站| 精品国产免费观看| 午夜成人免费视频| 最新欧洲大片免费在线| 久久不见久久见免费视频7 |