配置最新最I(lǐng)N的 Web Server??! 編譯 Apache 2.2 + PHP 5.1.2 + MYSQL 5.0.19 的詳細(xì)步驟.

  • 準(zhǔn)備,下載所需要的庫文件
  • 安裝 Ubuntu Server
  • 安裝編譯器和必須的運行庫
  • 編譯安裝 Apache 2.2、PHP 5.12、MySQL 5.01
  • 測試,配置Apache和MySQL自啟動.
  1. 準(zhǔn)備,下載所需要的文件
    *
    Name Size Last Version
    Ubuntu-Server 6.04 (Dapper Drake) i386 634M Discover
     
    bison-2.1.tar.gz 1285K Discover
    flex-2.5.4a.tar.gz 372K Discover
    bzip2-1.0.3.tar.gz 653K Discover
    zlib-1.2.3.tar.gz 484K Discover
    openssl-0.9.8.tar.gz 3183K Discover
    libiconv-1.10.tar.gz 3861K Discover
    freetype-2.1.10.tar.gz 1350K Discover
    jpegsrc.v6b.tar.gz 598K Discover
    libpng-1.2.9beta9.tar.gz 800K Discover
    gd-2.0.33.tar.gz 573K Discover
    libxml2-2.6.23.tar.gz 4407K Discover
    curl-7.15.2.tar.gz 1762K Discover
     
    httpd-2.2.0.tar.bz2 4725K Discover
    mysql-max-5.0.19-linux-i686.tar.gz 37650K Discover
    php-5.1.2.tar.bz2 6171K Discover
    ZendOptimizer-3.0.0Beta3-linux-glibc21-i386.tar.gz 6469K Discover
  2. 安裝 Ubuntu Server

    Ubuntu 的安裝過程相當(dāng)友好,根據(jù)向?qū)б徊讲较蛳伦鼍涂梢粤?,除了分區(qū)的時候要留意一點外,其它基本都是Next,Next,這里就不再累贅。因為只在本機隨便玩玩,為求方便,安裝完畢系統(tǒng)后我裝了一個ssh,并且修改了root的密碼.步驟如下:

    1) 安裝 ssh

    shell> apt-get install ssh

    2) 修改root的密碼

    shell> sudo passwd root (提示您輸入密碼)
  3. 安裝編譯器和必須的運行庫
    1. 安裝編譯器

      新裝好的ubuntu光禿禿的,連基本的c++編譯器和make工具都沒有,我們需要安裝以下基本的編譯工具.

      gcc
      make
      autoconf
      automake
      libtool

      考慮到系統(tǒng)的兼容性,并且上面的東東比較都大,不找最新版本了,直接用apt-get install XXX 來安裝.因為我們的Ubuntu是dailyBulid的,所以光盤的內(nèi)容基本上都是最新的了,無需重新下載.一定要最新版本的話,不妨先apt-get update 來更新一下軟件的倉庫,然后再 apt-get install.

    2. 安裝必須的運行庫和工具
      1. 配置c++編譯器選項,針對不同的CPU進行編譯優(yōu)化,如無特殊要求,可以跳過這一步.[更多CPU的編譯參數(shù)]
        # Intel PentiumIV,Celeon Family
        export CFLAGS=”-march=pentium4 -mfpmath=sse -msse2 -O2 -pipe -s -fomit-frame-pointer”

         

        # AMD Alton,Duron Family
        export CFLAGS=”-O3 -march=athlon-xp -pipe -fomit-frame-pointer -msse -mmmx -m3dnow -mfpmath=sse”

      2. 開始編譯并配置SSL證書 假設(shè)下載好的所有軟件都放在 /usr/src 目錄下,并且所有的軟件都安裝在 /usr/local 目錄下. 按表中的先后順序編譯lib和必須的工具 (如libpng需要bzip2,不同的包,有一定的依存關(guān)系).如無特殊說明,編譯的基本命令為:
        tar -xzvf PACKAGE-VERSION.tar.gz
        cd PACKAGE-VERSION
        ./configure --prefix=/usr/local
        make
        make install

        * 編譯 jpegsrc.v6b.tar.gz,make install 后 ,需要再 makeinstall-lib

        Good Luck & Congratulate!

        順利編譯上面的一大堆lib和tools后,接下來生成SSL的證書,生成的證書只能自己使用,真正的ca證書需要花錢購買的.

        * 在生成文件的時候,會有一些交互問答,其中有一點很重要 Enter pass phrase: 程序會通過您的輸入的內(nèi)容生成一個不可逆的hash,通過這個hash來保護的證書和數(shù)據(jù)加密傳輸,將其簡單理解為設(shè)置密碼就行了.

        # Create a private key and place it into directory/var/ssl

        mkdir /var/ssl
        cd /var/ssl
        /usr/local/bin/openssl genrsa -des3 -rand some_big_file_1:some_big_file_2 -out server.key 1024

        # Next, we will create a private key without a pass-phrase,this is less secure, but it allows us to bootup the serverwithout manually entering the pass-phrase every time

        /usr/local/bin/openssl rsa -in server.key -out server.key.unsecure

        # We will also create a request file that will be emailed toproper certification authority for getting a trusted SSLcertificate (if needed) under file localhost.key.csr:

        /usr/local/bin/openssl req -new -key server.key -out server.key.csr

        注意:當(dāng)提示輸入 Common Name (eg, YOUR name) []: ,請輸入你需要SSL支持的域名,如localhost,blog.yening.cn,否則瀏覽器會提示證書錯誤.

        # While waiting for the certification authority, we can createa temporary self-signed certificate, good for 2 year(730 day);

        /usr/local/bin/openssl x509 -req -days 730 -in server.key.csr -signkey server.key -out server.crt
        chmod 400 server.crt
        chmod 400 server.key
        chmod 400 server.key.unsecure
    3. 編譯安裝 Apache 2.2、PHP 5.12、MySQL 5.01
      • 編譯安裝 Apache 2
        cd /usr/src
        bzip2 -d httpd-2.2.0.tar.bz2
        tar -xvf httpd-2.2.0.tar
        cd httpd-2.2.0
        ./configure --prefix=/usr/local/apache2 \
        --enable-so \
        --enable-auth-digest \
        --enable-rewrite \
        --enable-setenvif \
        --enable-mime \
        --enable-ssl \
        --with-ssl=/usr/local \
        --enable-headers

        make
        make install
        ln -s /usr/local/apache2/bin/apachectl /usr/local/bin
        ln -s /usr/local/apache2/conf/httpd.conf /etc/httpd.conf
        mv /usr/local/apache2/htdocs /var/www

         

         

        ** 配置

        修改 /usr/local/apache2/conf/httpd.conf

        # 修改文檔根目錄到 /var/www

        DocumentRoot “/var/www”

        # 配置 /var/www 目錄的權(quán)限

        Options Indexes Includes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all

        # 默認(rèn)首頁添加 index.htm index.php

        DirectoryIndex index.html index.htm index.php

        # 監(jiān)聽443端口,支持https連接
        取消注釋 httpd.conf 中的 Include conf/extra/httpd-ssl.conf
        用編輯器編輯 httpd-ssl.conf 配置服務(wù)器私鑰,以下是我的配置文件內(nèi)容:

        Listen 443

         

        AddType application/x-x509-ca-cert .crt
        AddType application/x-pkcs7-crl .crl.
        # SSLPassPhraseDialog builtin
        SSLPassPhraseDialog exec:/usr/local/apache2/conf/sendsslpwd
        SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache(512000)
        SSLSessionCacheTimeout 300
        SSLMutex file:/usr/local/apache2/logs/ssl_mutex

        <VirtualHost _default_:443>
        DocumentRoot “/var/www”
        ServerName localhost:443

        ServerAdmin you@example.com
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /var/ssl/server.crt
        SSLCertificateKeyFile /var/ssl/server.key

        <FilesMatch “\.(cgi|shtml|phtml|php)$”>
        SSLOptions +StdEnvVars
        </FilesMatch>

        <Directory “/usr/local/apache2/cgi-bin”>
        SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch “.*MSIE.*” \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
        </VirtualHost>

        創(chuàng)建SSL密碼自動應(yīng)答文件,否則每次Apache啟動的時候,都會要求你輸入SSL的密碼.
        創(chuàng)建 /usr/local/apache2/conf/sendsslpwd ,內(nèi)容如下.

        #!/bin/bash
        SSLpasswd=”YOUR PASSPHRASE “
        echo $SSLpasswd
        chmod 755 /usr/local/apache2/conf/sendsslpwd
        ** 測試
        shell> apachectl start

        打開瀏覽器,輸入http(s)://SERVERIP/,都能看到 It works! 說明 Apache With SSL 安裝成功.

        正確生成的證書在IE的安全警報下,應(yīng)該會有兩個綠色小勾,如圖所示:


        生成的證書會在第二天起效(可以調(diào)整一下系統(tǒng)時間測試),但第三個小勾還是如果配置對的話還是會打上的.

      • 安裝 MySQL 5
        cd /usr/src tar -xzvf mysql-max-5.0.19-linux-i686.tar.gz
        mv mysql-max-5.0.19-linux-i686 /usr/local/mysql
        cd /usr/local/mysql
        groupadd mysql
        useradd -g mysql mysql
        scripts/mysql_install_db --user=mysql
        chown -R root .
        chown -R mysql data
        chgrp -R mysql .
        ln -s /usr/local/mysql/bin/mysqld_safe /usr/local/bin
        ln -s /usr/local/mysql/bin/mysql /usr/local/bin

         

        ** 測試:
        shell> mysqld_safe --user=mysql &
        shell>mysql

        屏幕出現(xiàn) mysql> 提示,說明MySQL安裝成功.

      • 編譯安裝 PHP 5
        cd /usr/src
        bzip2 -d php-5.1.2.tar.bz2
        tar -xvf php-5.1.2.tar
        cd php-5.1.2

        ./configure --prefix=/usr/local \
        --with-config-file-path=/usr/local/apache2/conf \
        --with-apxs2=/usr/local/apache2/bin/apxs \
        --with-bz2=/usr/local \
        --with-curl=/usr/local \
        --with-curlwrappers \
        --enable-ftp \
        --enable-sockets \
        --disable-ipv6 \
        --with-gd=/usr/local \
        --with-jpeg-dir=/usr/local \
        --with-png-dir=/usr/local \
        --with-freetype-dir=/usr/local \
        --enable-gd-native-ttf \
        --with-iconv-dir=/usr/local \
        --enable-mbstring \
        --with-gettext \
        --with-openssl-dir=/usr/local \
        --with-libxml-dir=/usr/local \
        --with-mysql=/usr/local/mysql \
        --with-mysqli=/usr/local/mysql/bin/mysql_config \
        --with-mysql-sock=/tmp/mysql.sock \
        --enable-sqlite-utf8 \
        --with-zlib=/usr/local \
        --with-zlib-dir=/usr/local \
        --enable-zend-multibyte

         

        make
        make install
        cp php.ini-dist /usr/local/apache2/conf/php.ini
        ln -s /usr/local/apache2/conf/php.ini /etc/php.ini

         

        ** 配置

        #在Apache中添加php關(guān)聯(lián),這步應(yīng)該是編譯php的時候自動完成的,但是我編譯的時候沒有自動添上,可能是Apache2.2的緣故。打開/usr/local/apache2/conf/httpd.conf,加入

        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps

        # 根據(jù)具體的您要求配置php,這步可以略過 vi/usr/local/apache2/conf/php.ini

      • 安裝 ZendOptimizer
        cd /usr/src tar -xzvf
        ZendOptimizer-3.0.0Beta3-linux-glibc21-i386.tar.gz
        cd ZendOptimizer-3.0.0Beta3-linux-glibc21-i386
        ./install.sh

        按照屏幕提示輸入 php.ini 的路徑即可,安裝程序會自動關(guān)閉WebServer,安裝完畢后會幫你再啟動(忙了一天,這步最爽,哈哈.)

    4. 測試,配置Apache和MySQL自動啟動.經(jīng)過漫長的等待,激動人心的一刻終于來了。

      # 創(chuàng)建一個php文件

      shell> echo ‘<?php phpinfo()?>’ > /var/www/index.php

      打開瀏覽器,輸入 http://SERVERIP/index.php,出現(xiàn)以下畫面:

      恭喜您,和我一樣,擁有目前最新,最I(lǐng)N的 WebServer和PHP了,再研究一下PHP的configure和PCEL,您可以獲得PHP更多的模塊和功能.

      最后,用vi編輯 /etc/rc.local 文件,讓Apache和MySQL在系統(tǒng)啟動的時候自動啟動.

      # 在exit 0前面加入

      /usr/local/apache2/bin/apachectl start
      /usr/local/mysql/bin/mysqld_safe --user=mysql &

      ■ 其它問題:
      一臺Apache Web服務(wù)只能創(chuàng)建一個SSL站點

      當(dāng)您有多個虛擬主機同時監(jiān)聽443端口時,Apache的error.log日志文件中會出現(xiàn)以下提示:

      [Tue Aug 01 15:37:05 2006] [warn] Init: SSL server IP/port conflict: ssl-1.verycd.com:443 (/usr/local/apache2/conf/extra/httpd-ssl.conf:236) vs. ssl-2.verycd.com:443 (/usr/local/apache2/conf/extra/httpd-ssl.conf:250)
      [Tue Aug 01 15:37:05 2006] [warn] Init: You should not use name-based virtual hosts in conjunction with SSL!!

      詳細(xì)的描述請參考 http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html