在Centos5.2下編譯安裝LAMP

大江小浪發表於2009-12-28

首先使用Virtualbox安裝一臺CentOS 5.2的虛擬機器,網路連線採用 Host-only Adapter,這樣主客機之間可以互相訪問,但是客機不能夠上廣域網。

0、系統初步配置

原始檔位置    /root/software
編譯安裝位置    /usr/local/{software_name}
資料存放        /data1/

Apache執行賬戶    www:www
mysql執行賬戶    mysql:mysql

關閉 Selinux

    Selinux 經常會對系統的執行產生一些奇怪的影響,如果不是特別熟悉的話,建議關掉 Selinux。
    Selinux 的配置檔案位於 /etc/selinux/config,我們需要修改的部分在:
        SELINUX=enforcing
    修改為    SELINUX=disabled,然後重啟伺服器,SELINUX 的配置救生效了。

配置 iptables

安裝必要的軟體

    如果能夠連上網路,可以通過 yum 來安裝這些必要的工具;如果不能連上網路,則需要使用本地的安裝源或者安裝檔案。

    下面列出一些必須的工具:
        gcc        
        wget
        make
        ntp
        patch
        autoconf
        automake
        bzip2-devel       

    通過本地的源來進行安裝,首先在 Virtualbox 的 Devices -> Mount CD/DVD-Rom -> CD/DVD-Rom image,載入安裝的映象檔案。        
    計劃安裝的軟體及其版本:
    apache 1.3.41        
    cronolog 1.6.2       
    gd 2.0.35        
    libiconv 1.13.1        
    libmcrypt 2.5.8        
    mcrypt 2.6.7        
    openssl 0.9.8k        
    openssh    5.2p1        
    pecre 7.9        
    nginx 0.7.62        
    mysql 5.0.51        
    php 5.2.9/4.4.9        
    memcached 1.4.1        
    memcache 2.2.5        
    xcache 1.2.2        
    zend optimizer 3.3.9 
    imap             
    bind 9.4.2       

1、安裝其他軟體

    安裝 OpenSSL:
        ./config –prefix=/usr/local/openssl/
        make
        make test
        make install
    安裝GD2
        ar jxvf gd-2.0.35.tar.bz2
        cd gd-2.0.35
        ./configure –prefix=/usr/local/gd2
        make &&make install
        cd ..

    安裝libiconv
        tar zxvf libiconv-1.12.tar.gz
        cd libiconv-1.12
        ./configure –prefix=/usr &&make &&make install
        cd ..

    安裝libmcrypt
        tar jxvf libmcrypt-2.5.8.tar.bz2
        cd libmcrypt-2.5.8
        ./configure –prefix=/usr/local/libmcrypt &&make &&make install
        cd ..

    安裝 cronolog
        ./configure –prefix=/usr/local/cronolog
        make && make install

2、安裝mysql
    本文采用的是二進位制安裝的方式進行的,基本的順序和 mysql 官方的順序差不多,只不過有些地方做一些說明。
    shell> groupadd mysql
    shell> useradd -g mysql mysql
    shell> cd /usr/local
    shell> tar -xvzf /path/to/mysql-VERSION-OS.tar.gz
    shell> mkdir /usr/local/mysql
    shell> cp -rf /path/to/mysql-VERSION-OS /usr/local/mysql
    shell> cd /usr/local/mysql
    shell> chown -R mysql .
    shell> chgrp -R mysql .
    shell> scripts/mysql_install_db –user=mysql
    shell> chown -R root .
    shell> chown -R mysql data
    shell> bin/mysqld_safe –user=mysql &
    前面幾步一般不會有問題,只是最後一步執行 bin/mysqld_safe –user=mysql & 的時候,系統出錯了:
    Starting mysqld daemon with databases from /var/lib/mysql
    STOPPING server from pid file /var/run/mysqld/mysqld.pid
    090930 12:19:32  mysqld ended
    然後就結束了,這個問題的原因,我們可以在日誌檔案 /var/log/mysqld.log 中看到
    090930 12:19:31  mysqld started
    090930 12:19:31 [Warning] option `thread_stack`: unsigned value 126976 adjusted to 131072
        090930 12:19:32  InnoDB: Started; log sequence number 0 43655
        090930 12:19:32 [ERROR] /usr/local/mysql/bin/mysqld: Can`t create/write to file `/var/run/mysqld/mysqld.pid` (Errcode: 2)
        090930 12:19:32 [ERROR] Can`t start server: can`t create PID file: No such file or directory
        090930 12:19:32  mysqld ended

    也就是許可權不夠,解決的辦法有兩個,一個是建立一個 mysql 有許可權讀寫的 /var/run/mysqld/ 資料夾;另一個方法,我們可以使用 /usr/local/mysql/support-files/mysql.server 來進行服務的啟動。

    這樣 mysql 安裝完成以後,檔案的存放結構都是按照預設的設定來的,比如一些常見的:
        配置檔案    /etc/my.cnf
        basedir    /usr/local/mysql
    最後需要配置一下mysql隨系統啟動服務,拷貝 /usr/local/mysql/support-files/mysql.server -> /etc/rc.d/init.d/mysql 中,然後新增 chkconfig –add mysql
    這樣就可以通過 service mysql start 來啟動 mysql 服務了           

3、安裝Apache

    這篇裡 apache 選擇經典的 1.3.41 版本。

    apache 的安裝方法不止一種,無論哪一種,首先我們必須確認當前系統中沒有 httpd 服務正在執行:ps -aux | grep httpd,如果我們發現結果中有的話,應該將他殺掉。
    然後到 apache 的安裝目錄下,這裡是 /root/software/source_lamp/apache_1.3.41,整個目錄內的結構和檔案介紹如下:
        cgi-bin/ ――用於測試CGI的指令碼。隨後,安裝過程將把這些檔案複製到伺服器的/cgi-bin目錄中。如果啟動了Apache的CGI功能,這些指令碼可以用於測試那些功能。
        conf/ ――配置檔案。這些釋出時的配置不應該進行編輯。安裝過程把這些檔案複製到伺服器的配置目錄中,對這些複製檔案將進行擴充套件編輯。
        htdocs/ ――第一個Web站點。安裝過程把這些檔案複製到伺服器的文件根目錄中。瀏覽器第一次測試伺服器時將顯示這些網頁。
        icons/ ――目錄索引圖示。這些影像檔案將成為由Web伺服器用來提供特別路徑索引功能的圖示。   
        logs/ ――日誌工具。這個目錄是空的,安裝過程將為安裝好的伺服器建立一個日誌目錄。
        src/ ――原始碼。這個目錄(和它的子目錄)包含了C語言原始碼檔案,你編譯它們以建立出Apache Web伺服器。

    首先執行 configure,這裡將 bin/data/log,三個目錄進行了自定義:
    ./configure –prefix=/usr/local/lampsrv/apache/ –datadir=/data1/www/data/htdocs/ –logfiledir=/data1/www/applogs/ –enable-shared=max –enable-module=most
    make
    make install
4、安裝PHP
    解壓下載的安裝包,然後執行配置。
    ./configure –prefix=/usr/local/lampsrv/php –with-apxs=/usr/local/lampsrv/apache/bin/apxs  –with-config-file-path=/usr/local/lampsrv/etc/php/ –enable-track-vars –with-xml –with-mysql
    make && make install

    安裝完成後,在 apache 的配置檔案中新增對於 php 字尾的解析。
    AddType application/x-httpd-php .php .php3 .inc
    AddType application/x-httpd-php-source .phps

    然後重啟 apache 服務:/usr/local/lampsrv/apache/bin/apachectl restart
    啟動的時候,有可能會遇到這樣的錯誤:Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so : cannot restore segment prot after reloc: Permission Denied

    這種情況一般是由於 selinux 的安全設定引起的,可以考慮關閉掉 selinux,在 /etc/selinux/config 中進行設定。   

5、安裝總結

    至此,我們已經配置了基本的 Linux + Apache + Mysql + PHP 的執行環境,但是仍有很多的配置檔案散落在各處,比如 mysql 的配置檔案和資料檔案。如何將這些配置檔案和資料檔案歸攏在一個統一的位置,比如 /data1/www/etc ,還是一個需要不斷總結積累的問題,另外還有一個就是如何形成一個快速安裝配置的模式,是通過編寫指令碼還是通過搭建 yum 源來實現多臺機器的快速配置是一個很需要經驗的問題,在這兩個方面,今後要不斷的總結。

參考資料:
1、CentOS 5.2 編譯安裝           
2、Apache httpd project           
3、Cronolog               
4、GD Library               
5、GNU libiconv               
6、OPEN SSL               
7、OPEN SSH               
8、PCRE                   
9、nginx               
10、mysql               
11、php                   
12、Memcached               
13、XCache               
14、IMAP               
15、Mysql Install           
16、Linux自啟動詳細設定           
17、Apache 1.3.x 安裝配置筆記       
18、Apache 安裝指南


相關文章