ubuntu手動編譯lamp

snowdream86發表於2009-12-28

文章來源:http://blog.csdn.net/turkeyzhou/archive/2009/10/06/4635079.aspx

 

此文基於自己手動編譯apache-2.2.11,mysql-5.1.36和php-5.3.0, 環境是在ubuntu 9.04

一、安裝apache-2.1.11

1、下載

   http://httpd.apache.org/download.cgi    
2、解壓
    tar zxvf httpd-2.2.11.tar.gz
3、建立目標資料夾
    mkdir /usr/local/apache
    也就是說等下安裝的apache要安裝到這個資料夾裡面
4、配置
    回到原來解壓之後產生的資料夾
    ./configure –prefix=/usr/local/apache –enable-module=shared
    要加上後面的引數,否則無法使用php
5、編譯
    make
    
6、安裝
    sudo make install
   
7、啟動,重啟和停止

    /usr/local/apache/bin/apachectl -k start
    /usr/local/apache/bin/apachectl -k restart
    /usr/local/apache/bin/apachectl -k stop
   
8、配置檔案
    gedit /usr/local/apache/conf/httpd.conf
    修改以下配置(當然這些修改是最基本的修改,如果要更高階的,參照其他apache配置手冊)
   
    8.1、
    找到:
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    在後面新增:
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    8.2、
    找到:
    <IfModule dir_module>
    DirectoryIndex index.html
    </IfModule>
    新增:
    <IfModule dir_module>
    DirectoryIndex index.html index.php
    </IfModule>
    8.3、
    找到:
    #ServerName www.example.com:80
    修改為:
    ServerName 127.0.0.1:80或者ServerName localhost:80
    記得要去掉前面的“#”
    否則會出現以下錯誤提示:
    httpd: Could not reliably determine the server`s fully qualified domain name, using 127.0.1.1 for ServerName   
9、測試
    在瀏覽器裡輸入http://127.0.0.1
    如果出現It Works!說明成功。
   
二、安裝mysql-5.1.36

1、下載
    http://dev.mysql.com/downloads/
2、解壓
    unzip mysql-5.1.36.zip
3、建立目標資料夾
    mkdir /usr/local/mysql
    也就是說等下安裝的mysql要安裝到這個資料夾裡面
4、配置
    ./configure –prefix=/usr/local/mysql/ –with-extra-charsets=all
    第2個引數是說明ubuntu可以使用所有的字符集
5、編譯
    make
6、安裝
    make install
7、啟動
    MySQL服務並不會自動啟動,還需要先初始化MySQL資料庫,操作如下:
    cd /usr/local/mysql/bin
    sudo ./mysql_install_db –user=<username>
    注意,這裡最後的username是指可以運算元據庫的使用者,可以是當前使用者,也可以新建使用者

    ./mysqld_safe –user=<username>
    這裡的username就是剛才的那個
8、為根使用者建立密碼
    8.1、用SET PASSWORD命令
        ./mysql -u root
        mysql> SET PASSWORD FOR `root`@`localhost` = PASSWORD(`newpass`);
    8.2、用mysqladmin
        ./mysqladmin -u root password “newpass”
        如果root已經設定過密碼,採用如下方法
        ./mysqladmin -u root password oldpass “newpass”
    8.3、用UPDATE直接編輯user表
        ./mysql -u root
        mysql> use mysql;
        mysql> UPDATE user SET Password = PASSWORD(`newpass`) WHERE user = `root`;
        mysql> FLUSH PRIVILEGES;
        在丟失root密碼的時候,可以這樣
        ./mysqld_safe –skip-grant-tables&
        ./mysql -u root mysql
        mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=`root`;
        mysql> FLUSH PRIVILEGES;
       
    我只測試了前2種,第三種不知道怎麼樣
9、測試
    mysql -u root
    會提示輸入密碼,就用剛才設定的密碼
    123456
    如果出現mysql>,說明成功了
   
10、建立資料庫
    CREATE DATABASE MYTEST;
    USE MYTEST;
    CREATE TABLE TEST (TEST VARCHAR(10));
    INSERT INTO TEST VALUES (`TEST`);
    SELECT * FROM TEST;
    如果能出結果,說明一且都正常了。
11、問題
    11.1、
    描述:
    configure: error: No curses/termcap library found
    解決:
    apt-get install ncurses-dev   
    11.2、
    描述:
    缺少g++
    解決:
    apt-get install g++
    11.3、
    描述:
    -fno-rtti -c -o my_new.o my_new.cc
    ../include/my_global.h:988: error: redeclaration of C++ built-in type ‘bool’
    make[2]: *** [my_new.o] Error 1
    make[2]: Leaving directory `/root/mysql-5.0.67/mysys`
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/root/mysql-5.0.67`
    make: *** [all] Error 2
    解決:
    重新configure 然後再make 和make install
    11.4、
    描述:
    初始化資料庫的時候(步驟6)
    FATAL ERROR: Could not find mysqld(或者其他什麼找不到)
    解決:
    /etc/mysql/my.cnf刪掉或者改個名字
   
三、安裝php-5.3.0

1、 下載
    http://www.php.net/downloads.php
2、解壓
    tar xvf php-5.3.0.tar.bz2
3、建立目標資料夾
    mkdir /usr/local/php
    也就是說等下安裝的php要安裝到這個資料夾裡面
4、配置
    回到原來解壓後的資料夾
   
./configure –prefix=/usr/local/php/ –with-mysql=/usr/local/mysql/
–with-apxs2=/usr/local/apache/bin/apxs
–with-config-file-path=/usr/local/php/etc
5、編譯
    make
   
6、測試編譯
    make test
   
7、安裝
    make install
8、配置檔案
    把原來位於原始碼裡面的php.ini-production拷貝到/usr/local/php/etc/下,並且重新命名為php.ini
9.重啟apache
10、測試
    在apache的htdocs下建立一個php檔案test.php,裡面的內容如下:
    <?php
    phpinfo();
    ?>
    然後在瀏覽器裡輸入http://127.0.0.1/test.php
    如果出現php的相關配置,成功,如果什麼都沒有輸入,說明失敗,重新以上步驟或者查詢原因

11、問題
    11.1
    描述:
    /usr/bin/ld: cannot find -lltdl
    collect2: ld returned 1 exit status
    make: *** [libphp5.la] Error 1
    解決:   
    這是因為找不到libltdl庫檔案
    /software/libmcrypt-2.5.8/libltdl
    ./configure  –enable-ltdl-install
    make
    make install
    11.2、
    描述:
    reference to `res_nclose`
    gmake: *** [sapi/cli/php] Îøèáêà 1
    解決:
    我換了一個版本就通過了,不知大如何解決。
    11.3、
    配置時出現:
    configure: error: xml2-config not found. Please check your libxml2        installation.
    解決:
    可以通過apt-get install libxml2-dev來解決

    實際安裝   
   
11.4:最後採用了PHP原始碼夾中的INSTALL中的方式,開始一直設定–with-mysql中指定的apt-get
install安裝的資料夾/usr/loca/mysql5.0但通不過,現實無法找到mysql header
file的時候,將mysql的include資料夾內容複製至/usr/include資料夾中,但是仍然顯示mysql配置錯誤和無法找到庫檔案,所
幸去掉了–with-mysql引數:

   ./configure –with-apxs2=/usr/local/httpd/bin/apxs –with-zlib-dir=/usr/include

四、安裝phpMyAdmin

1、下載
    http://www.phpmyadmin.net/home_page/index.php
2、解壓
    tar xvf phpMyAdmin-3.2.0.1-all-languages.tar.bz2
3、移動位置
    把解壓後得到的資料夾移動到/usr/local/apache/htdocs/下,名稱改為phpMyAdmin
4、配置檔案
    cp config.simple.inc.php config.inc.php
    gedit config.inc.php
    找到:
    $cfg[`blowfish_secret`] = “
    改為:
    $cfg[`blowfish_secret`] = `123456`
    其中`123456`這些數字隨便寫
5、測試
    http://127.0.0.1/phpMyAdmin
     如果能出現登入框,並且能登入到資料庫,說明以上安裝全部正確
6、問題
    6.1、無法載入 mcrypt 擴充套件,請檢查您的 PHP 配置。
    解決:
    安裝 libmcrypt
    下載libmcrypt-2.5.8.tar.gz
    解壓tar zxvf libmcrypt-2.5.8.tar.gz
    配置./configure
    編譯 make
    安裝 make install
    注意,這裡配置的時候不需要指定安裝位置,否則在以後步驟中可能出錯
    進入php的安裝原始檔,進入php-5.3.0/ext/mcrypt
    執行/usr/local/php/bin/phpize
    這時可能說沒有autoconf這個軟體,就裝一下apt-get install autoconf,當然自己編譯也可以
    再次執行/usr/local/php/bin/phpize
    會產生configure等檔案
    然後配置./configure –with-php-config=/usr/local/php/bin/php-config
    編譯make
    安裝 make install
    會出現提示說在某個資料夾裡面產生了一個檔案mcrypt.so,這時要把這個檔案移動到extension_dir裡面,具體extension_dir是那個,可以參照剛安裝完php之後測試時顯示的資訊
    然後重新編譯php,回到php安裝的(4)這時的配置引數要加一個–with-mcrypt
    重新編譯安裝php,然後成功後,重啟apache進行測試
    6.2、找不到mbstring
    解決:
    進入php的安裝原始檔,進入php-5.3.0/ext/mbstring
    執行/usr/local/php/bin/phpize
    這時可能說沒有autoconf這個軟體,就裝一下apt-get install autoconf,當然自己編譯也可以
    再次執行/usr/local/php/bin/phpize
    會產生configure等檔案
    然後配置./configure –with-php-config=/usr/local/php/bin/php-config
    編譯make
    安裝 make install
    會出現提示說在某個資料夾裡面產生了一個檔案mbstring.so,這時要把這個檔案移動到extension_dir裡面,具體extension_dir是那個,可以參照剛安裝完php之後測試時顯示的資訊
    這次不用編譯了,到php的配置檔案,在extension裡面新增extension=mbstring.so,然後儲存後重新啟動apache,如果沒有達到效果,那麼在後面新增絕對路徑
   
6.3如果自己用libmcrypt、mhash、mcrypt編譯mcrypt,那麼記得前面個兩個配置時要用預設配置,不要加引數,配置mcrypt
時安裝到指定位置,這樣方便重新編譯php,如果在編譯前面2個時用了指定位置,可能在編譯mcrypt時出現以下問題
        6.3.1
        描述:
        libmcrypt cannot be found
         解決:
        cp /usr/local/lamp_other/libmcrypt/lib/libmcrypt.* /usr/lib/
        ln -s /usr/local/lamp_other/mhash/lib/libmhash.so.2 /usr/lib/libmhash.so.2
        這裡/usr/local/lamp_other/libmcrypt/就是安裝libmcrypt的指定路徑
        6.3.2
        描述:
        “You need at least libmhash 0.8.15 to compile this program.
        這個問題不知道怎麼解決,有的說在編譯mcrypt時用LD_LIBRARY_DIR=<mhash安裝路徑> ./configure –prefix=/usr/local/mcrypt,不過我沒有成功過
        最直接的解決辦法就是得前面個兩個配置時要用預設配置,不要加引數


相關文章