您的位置:首页 > 运维架构 > Apache

ubuntu 手动编译lamp

2009-12-28 18:28 211 查看
文章来源: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,不过我没有成功过

        最直接的解决办法就是得前面个两个配置时要用默认配置,不要加参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息