zoukankan      html  css  js  c++  java
  • LAMP环境搭建教程 阿星小栈

    学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP、WAMP、MAMP等。这里我介绍一下LAMP环境的搭建,即Linux、Apache、MySQL、PHP环境。

    一、首先安装操作系统

    操作系统:centos6.3

    IP地址:192.168.146.129

    网关:

    DNS:

    操作系统安装步骤,此处不在给出截图。

    备注:服务器系统采用最小化安装,安装一下GCC编译工具和一个桌面即可。如下图所示:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052450812.jpg" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    二、LAMP安装前的准备

    1、获取软件包

    httpd-2.4.2.tar.gz    http://httpd.apache.org/download.cgi

    mysql-5.0.18.tar.gz  http://dev.mysql.com/downloads/

    php-5.4.3.tar.gz      http://www.php.net/downloads.php

    phpMyAdmin-3.5.1-all-languages.tar.gz http://www.phpmyadmin.net/home_page/downloads.php

    libxml2-2.7.2.tar.gz ftp://xmlsoft.org/libxml2/

    libmcrypt-5.5.8.tar.gz http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/

    gd-2.0.5.tar.gz      http://www.libgd.org

    zlib-1.2.5.tar.gz  http://www.zlib.net

    autoconf-2.69.tar.gz http://ftp.gnu.org/gnu/autoconf/

    freetype-2.4.9.tar.gz http://download.savannah.gnu.org/releases/freetype/

    libpng-1.5.10.tar.gz ftp://ftp.simplesystems.org/pub/libpng/png/src/

    jpegsrc.v8b.tar.gz http://www.ijg.org/files/

    ZendGuard-5_5_0.tar.gz  http://www.zend.com/en/products/guard/thank-you-zend-guard?package=415l

    【所有源码包打包下载:http://pan.baidu.com/share/link?shareid=386483&uk=3206814945

    把上面下载的13个源代码包放到linux系统下的/usr/local/src/目录中,如下图示:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052450509.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    2、检查安装时使用的编译工具是否存在

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052451742.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    如果安装系统的时候已经安装了GCC编译工具,则显示上图中的信息,如果没有安装,可以使用下面的方法进行安装:

    # From CentOS 5.8 - [DVD#1]

    mkdir -p /media/cdrom

    mount -r /dev/cdrom /media/cdrom

    cd /media/cdrom/CentOS

    rpm -Uvh glibc-devel-2.*

    rpm -Uvh gcc-4.*

    rpm -Uvh gcc-c++-4.*

    rpm -Uvh libaio-devel-0.*

    rpm -Uvh libstdc++-devel-4.*

    如果上面安装的一某个RPM包还需要另外一个包时,可继续在光盘中查找,这里不在赘述。

    3、检查并卸载默认的低版本环 境                                                                                         由 于安装系统的时候我是最小化安装,只安装了一个桌面,GCC编译工具也是系统装完之后安装的,所以没有默认的LAMP环境,如下图示:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052451925.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    如果安装的时候有选择默认全部安装,就已经安装了LAMP环境,但是相对版本较低,而且安装的路径等可能不是我们想要的结果。所以这里顺便介绍一 下,如果存在默认的LAMP环境,进行卸载的方法,以apache为 例:                                                  #rpm -qa | grep -i httd  // 查询系统中已安装的Apache相关软件 包                                         #service httpd stop      //如果 apache已开启,停止运行apache服务 器                                    #rpm -e httpd-xxx --nodeps //卸载 apache服务 器                                                                       php、 mysql卸载方法同上。

    【开始搭建LAMP环境】

    搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装。但是在安 装PHP之前,应先安装PHP5需要的最新版本库文件,例如libxml2、libmcrypt,以及GD2库等文件。安装GD2库是为了让PHP5支持 GIF、PNG和JPEG图片格式,所以在安装GD2库之前还要先安装最新的zlib、libpng、freetype和jpegsrc等库文件。而且中 间还会穿插安装一些软件。

    1、解压tar.gz为后缀的压缩包软件

    LAMP环境搭建所需要的每个软件的源代码文件,都是以.tar.gz提供给我们的打包压缩文件,所以我们必须将其解压再解包。可通过命令#tar zxvf tarfile.tar.gz达到目的。

    2、在linux系统中源代码包安装过程

    进行解压后的目录,LAMP环境搭建所需要的软件都使用C语言开发的,所以安装源代码文件最少需要配置(configure)、编译(make)、安装(make install)三个步骤。

    安装libxml2最新库文件

    step1:进入下载的软件源码包所在目录/usr/local/src/下,解压软件包libxml2-2.9.0.tar.gz到当前目录libxml2-2.9.0下,并进入libxml2-2.9.0目录。命令如下行所示:

    [root@localhost   ~]# cd /usr/local/src  //进入软件源码包所在目录

    [root@localhost   src]# tar zxvf libxml2-2.9.0.tar.gz //解包解压

    [root@localhost   src]# cd libxml2-2.9.0  //进入解包解压后的目录

    step2:使用configure命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下。

    [root@localhost   libxml2-2.9.0]# ./configure --prefix=/usr/local /libxml2 //选项--prefix=/usr/local/libxml2作用,是在安装时将软件安装到/usr/local/libxml2 目录下。

    step3:使用make命令编译源代码文件并生成安装文件。命令行如下示。

    [root@localhost   libxml2-2.9.0]# make  //对软件源代码文件进行编译

    step4:使用make install命令安装编译过的文件。命令行如下。

    [root@localhost   libxml2-2.9.0]# make install  //开始安装libxml2库文件

    如果安装成功以后,在/usr/local/libxml2/目录下将生成bin,include,lib,share四个目录。在后面安装 PHP5源代码的配置时,会通过在configure命令的选项中加上"--with-libxml-dir=/usr/local/libxml2"选 项,用于指定安装libxml2库文件的位置。

     

    安装libmcrypt最新库文件

    安装方法与上面安装libxml2方法相同,注意configure时的路径/usr/local/libmcrypt

    如果安装成功就会在/usr/local/libmcrypt/目录下生成bin,include,lib,man,share五个目录。然后在安 装PHP5源代码包的配置时,就可以通过configure命令加上“--with-mcrypt-dir=/usr/local/libmcrypt” 选项,指定这个libmcrypt库文件的位置。

    如./configure时报错:configure: error: C++ compiler cannot create executables 。

    解决方案:

    运行下面命令,然后重新configure(配置)

    yum install gcc gcc-c++ gcc-g77

    安装完成libmcrypt库以后,不同的linux系统版本有可能还要安装一下libltdl库。安装方法和前面的步骤相同,可以进入到解压缩的 目录/usr/local/src/libmcrypt-2.5.8下,找到libltdl库源代码所在的目录libltdl,进入这个目录按照下面几个 命令配置、编译、安装就可以了。

    [root@localhost   libltdl]# pwd

    /usr/local/src/libmcrypt-2.5.8/libltdl  //进入软件源代码目录

    [root@localhost   libltdl]# ./configure --enable-ltdl-install  //配置ltdl库的安装

    [root@localhost   libltdl]# make  //编译

    [root@localhost   libltdl]# make install  //安装

     

    安装zlib最新库文件

    安装方法与前面安装libxml2的方法相同,要注意的地方就是路径/usr/local/zlib/。如果安装成功将会在/usr/local /zlib目录下生成include,lib,share三个目录。在安装PHP5配置时,在configure命令的选项中加上“--with- zlib-dir=/usr/local/libmcrypt”选项,用于指定zlib库文件位置。

     

    安装libpng最新库文件

    安装方法与前面安装libxml2的方法相同,要注意路径/usr/local/libpng/

    在./configure --prefix=/usr/local/libpng这步最后会提示:configure: error: ZLib not installed

    解决方法如下:

    1.进入zlib的源文件目录,执行命令 make clean,清除zlib;

    2.重新配置 ./configure,后面不要接--prefix参数;

    3.make && make install;

    4.进入libpng目录,执行命令 ./configure --prefix=/usr/local/libpng;

    5.make && make install;

    6.安装成功.

    如果安装成功将会在/usr/local/libpng目录下生成bin,include,lib和share四个目录。在安装GD2库配置时,通 过在configure命令选项中加上“--with-png=/usr/local/libpng”选项,指定libpng库文件的位置。

     

    安装jpeg8最新库文件

    step1:安装GD2库前所需的jpeg8库文件,需要自己手动创建安装需要的目录,它们在安装时不能自动创建。命令行如下。

    [root@localhost   ~]# mkdir /usr/local/jpeg8  //建立jpeg8软件安装目录

    [root@localhost   ~]# mkdir /usr/local/jpeg8/bin //建立存放命令的目录

    [root@localhost   ~]# mkdir /usr/local/jpeg8/lib  //创建jpeg8库文件所在目录

    [root@localhost   ~]# mkdir /usr/local/jpeg8/include //建立存放头文件目录

    [root@localhost   ~]# mkdir -p /usr/local/jpeg8/man/man1 //建立存放手册的目录

    step2:configure有点不一样,如下命令行示:

    [root@localhost   jpeg-8b]# ./configure

    > --prefix=/usr/local/jpeg8/

    > --enable-share

    > --enable-static

    警告:configure: WARNING: unrecognized options: --enable-share

    在安装GD2库配置时,可以在configure命令的选项中加上“--with-jpeg=/usr/local/jpeg8”选项,指定jpeg8库文件的位置。安装PHP时也要指定该库文件的位置。

    安装freetype最新库文件

    step1:进入软件源码包所在目录/usr/local/src/中,解压软件包freetype-2.4.10.tar.gz到当前目录freetype-2.4.10下,并进入freetype-2.4.10目录。命令行如下:

    #cd /usr/local/src/   //进入软件源码包所在目录

    #tar zxvf freetype-2.4.10.tar.gz  //解压包到freetype-2.4.10目录

    #cd freetype-2.4.10 //进入目录freetype-2.4.10中

    step2:使用configure命令检查并配置安装需要的系统环境,并生成安装配置文件。命令行如下:

    #./configure --prefix=/usr/local/freetype //选项--prefix=/usr/local/freetype,是在安装时将软件安装到/usr/local/freetype目录下

    step3:使用make命令编译源代码文件并生成安装文件,命令行如下:

    #make  //对软件源代码文件进行编译

    step4:使用make install命令进行安装,命令行如下:

    #make install //开始安装freetype库文件

    如果安装成功将会在/usr/local/freetype目录下存在bin,include,lib和share四个目录。并在安装GD2库时, 通过configure命令选项中加上“--with-freetype=/usr/local/freetype/”选项,指定freetype库文件 位置。

    安装atuoconf最新的库文件

    其方法与上面安装freetype相同。唯一注意的地方是configure时,不用指定路径。

    安装最新的GD库文件

    安装方法大致与freetype相同。唯一注意的地方是configure时的路径,命令行如下:

    #./configure   //配置命令

    >--prefix=/usr/local/gd   //指定安装软件的位置

    >--with-jpeg=/usr/local/jpeg8/   //指定去哪找jpeg库文件

    >--with-png=/usr/local/libpng/   //指定去哪找png库文件

    >--with-freetype=/usr/local/freetype/   //指定去哪找freetype 2.x字体库的位置

    如果安装成功会在/usr/local/gd/目录下存在bin、include和lib这三个目录。在安装PHP5时,通过在configure命令选项中加上“--with-gd=/usr/local/gd”选项,指定GD库文件的位置。

    如果报错:

    make[2]: *** [gd_png.lo] Error 1

    make[2]: Leaving directory `/tmp/gd-2.0.35'

    make[1]: *** [all-recursive] Error 1

    make[1]: Leaving directory `/tmp/gd-2.0.35'

    make: *** [all] Error 2

    解决方案:

    vi gd_png.c

    找到#include "png.h"改成#include "/usr/local/libpng/include/png.h"

    安装新版本的apache服务器

    1、卸载apr、apr-util

    yum remove apr apr-util

    下载安装:

    http://apr.apache.org/download.cgi

    apr-1.4.6.tar.gz

    ./configure --prefix=/usr/local/apr-httpd/ && make && make install

    下载安装:

    http://apr.apache.org/download.cgi

    apr-util-1.5.1.tar.gz

    ./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/ && make && make install

     

    下载:http://sourceforge.net/projects/pcre

    #unzip -o pcre-8.32.zip

    #cd pcre-8.32

    #./configure --prefix=/usr/local/pcre

    #make

    #make install

    [root@localhost   httpd-2.4.3]# ./configure

    > --prefix=/usr/local/apache243

    > --enable-mods-shared=all

    > --enable-deflate

    > --enable-speling

    > --enable-cache

    > --enable-file-cache

    > --enable-disk-cache

    > --enable-mem-cache

    > --enable-so

    > --enable-expires=shared

    > --enable-rewrite=shared

    > --enable-static-support

    > --sysconfdir=/etc/httpd

    > --with-z=/usr/local/zlib/

    > --with-apr=/usr/local/apr-httpd/

    > --with-apr-util=/usr/local/apr-util-httpd/

    > --with-pcre=/usr/local/pcre/

    > --disable-userdir

    #make && make install

    安装完成后,进入/usr/local/apache243/目录下,检查是否有以下文件:

    bin  build  cgi-bin  error  htdocs  icons  include  logs  man  manual  modules

    启动Apache服务器,并查端口是否开启,启动Apache服务器的命令行如下:

    #/usr/local/apache243/bin/apachectl start

    提示信息:

    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message

    解决方案:

    vi /etc/httpd/httpd.conf

    加上下面一行,重启apache

    ServerName localhost:80

    查看端口命令行如下:

    #netstat -tnl|grep 80

    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LIST

    测试安装结果,打开浏览器,在地址栏中输入URL为:http://192.168.146.129/

    如果浏览器中出现It works!则表明Apache服务器可以使用。

    [经本人测试,这里并不能打开It Works,在网上找了大量的资料,总结一句话:service iptables stop 【关闭防火墙即可】]

    每种服务器软件都有必要制成开机时自动启动,Apache服务器开机自动启动,只要在“/etc/rc.d/rc.local”文件,加上 Apache服务器的启动命令即可。可以直接打开“/etc/rc.d/rc.local”文件,在最后一行写入Apache启动命令,也可以用echo 命令追加进去,如下命令行示:

    [root@localhost   apache243]# echo "/usr/local/apache243/bin/apachectl start" >> /etc/rc.d/rc.local

    安装MySQL数据库管理系统

    1、增加用户名和用户组

    #groupadd mysql

    #useradd -g mysql mysql

    2、进入源码包使用configure 检查并配置安装需要的系统环境,并生成安装配置文件

    #./configure

    >--prefix=/usr/local/mysql   //将软件安装在/usr/local/mysql目录下

    >--enable-thread-safe-client

    >--with-extra-charsets=all  //在安装mysql时安装所有字符集

     

    如果遇到错误信息:

    checking for tgetent in -lncurses... no

    checking for tgetent in -lcurses... no

    checking for tgetent in -ltermcap... no

    checking for termcap functions library... configure: error: No curses/termcap library found

    原因:缺少ncurses安装包

    解决方案:

    执行下面三行命令,执行完之后重新./configure(配置)

    yum list|grep ncurses

    yum -y install ncurses-devel

    yum install ncurses-devel

    接着#make && make install

    3、创建mysql数据库服务器的配置文件,可以使用源码包support-files目录中的my-medium.cnf文件作为模板,将其复制到/etc/目录下,命名为my.cnf文件即可。

    [root@localhost   mysql-5.0.18]# cp support-files/my-medium.cnf /etc/my.cnf

    4、如果还没安装过MySQL,必须创建MySQL授权表。进入到安装目录/usr/local/mysql下,执行bin目录下的mysql_install_db脚本,用来初始化MySQL数据库的授权表,其中存储了服务器访问允许。

    [root@localhost   mysql-5.0.18]#cd /usr/local/mysql

    [root@localhost   mysql]# bin/mysql_install_db --user=mysql  //创建授权表

    如果使用root用户运行上面的命令,应当使用--user选项,选项的值应当与你在第一步为运行服务器所创建的登录账户(mysql用户)相同。 如果用mysql用户登录来运行上面的命令,可以省略--user选项。用mysql_install_db创建mysql授权表后,需要手动重新启动服 务器。

    5、将程序二进制的所有权改为root用户,数据目录的所有权改为运行mysqld程序的mysql用户。如果现在位于安装目录(/usr/local/mysql)下,命令行如下:

    [root@localhost   mysql]# chown -R root .(注意有点)  //将文件的所有属性改为root用户

    [root@localhost   mysql]# chown -R mysql var  //将数据目录的所有属性改为mysql用户

    [root@localhost   mysql]# chgrp -R mysql .  //将组属性改为mysql组

     

    [root@localhost   mysql]# ls -l

    total 40

    drwxr-xr-x. 2 root  mysql 4096 Feb  7 20:50 bin

    drwxr-xr-x. 3 root  mysql 4096 Feb  7 20:50 include

    drwxr-xr-x. 2 root  mysql 4096 Feb  7 20:50 info

    drwxr-xr-x. 3 root  mysql 4096 Feb  7 20:50 lib

    drwxr-xr-x. 2 root  mysql 4096 Feb  7 20:50 libexec

    drwxr-xr-x. 3 root  mysql 4096 Feb  7 20:50 man

    drwxr-xr-x. 7 root  mysql 4096 Feb  7 20:50 mysql-test

    drwxr-xr-x. 3 root  mysql 4096 Feb  7 20:50 share

    drwxr-xr-x. 5 root  mysql 4096 Feb  7 20:50 sql-bench

    drwx------. 4 mysql mysql 4096 Feb  7 20:53 var

     

    6、在所需要的东西被安装完成后,应当使用下面的命令启动MySQL服务了,命令行如下:

    [root@localhost   mysql]#/usr/local/mysql/bin/mysqld_safe --user=mysql &

    报告信息(不理会):

    [root@localhost   mysql]# /usr/local/mysql/bin/mysqld_safe --user=mysql &

    [1] 4720

    [root@localhost   mysql]# nohup: ignoring input and redirecting stderr to stdout

    Starting mysqld daemon with databases from /usr/local/mysql/var

    7、MySQL数据库服务器启动之后,查看一下它的端口3306是否打开,如果看到以下结果表明mysql服务启动成功。命令行如下

    [root@localhost   mysql]# netstat -tnl|grep 3306

    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

    8、使用mysqladmin验证服务器在运行中。以下命令提供了简单的测试,可检查服务器是否已经开启并能响应连接。命令行如下:

    [root@localhost   mysql]# bin/mysqladmin  version

    Enter password:

    bin/mysqladmin  Ver 8.41 Distrib 5.0.18, for pc-linux-gnu on i686

    Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL license

    Server version          5.0.18-log

    Protocol version        10

    Connection              Localhost via UNIX socket

    UNIX socket             /tmp/mysql.sock

    Uptime:                 18 min 59 sec

    Threads: 1  Questions: 3  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 6  Queries per second avg: 0.003

    [root@localhost   mysql]# bin/mysqladmin variables //查看所有mysql参数

     

    9、设置访问权限,在mysql安装过程中,使用mysql_install_db程序安装了mysql数据库授权表,表定义了初始mysql用户 账户和访问权限,所有初始化账户均没有密码。这些账户为超用户账户,可以执行任何操作。初始root账户的密码为空,因此任何人可以用root账户不用任 何密码来连接mysql服务器,并具有所有权限,这意味着mysql安装未受保护。如果你想要防止客户端不使用密码用匿名用户来连接,你应当为匿名账户指 定密码或删掉匿名帐户,应当为mysql root账户指定密码。使用mysql -u root启动mysql客户端控制台,连接mysql服务器。命 令行如下:

    [root@localhost   mysql]# bin/mysql -u root  //没有密码可直接登录本机服务器

    Welcome to the MySQL monitor.  Commands end with ; or g.

    Your MySQL connection id is 5 to server version: 5.0.18-log

    Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

    10、如果有匿名账户存在,它拥有全部的权限,因此删掉它可以提高安全,在mysql客户端执行SQL语如下:

    mysql> delete from mysql.user where host='localhost' and user='';

    Query OK, 1 row affected (0.01 sec)

     

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

     

    11、可以用几种方法为root账户指定密码,我们选择用其中的一种。在mysql客户端命令行上使用set password指定密码,一定要使 用password()函数来加密密码。例如下面设置localhost域的密码为ios100。其他域可以使用同样的语句,使用的SQL语句如下。

    mysql> set password for 'root'@'localhost'=password('ios100');

    Query OK, 0 rows affected (0.00 sec)

     

    12、如果想退出mysql客户端,可以在mysql客户端提示符下输入命令exit或者quit,还可以按键盘ctrl+c组合键,都可以从 mysql客户端退出。因为已经给mysql服务器的root账号设置了密码,所以再次登录mysql客户端就要提供密码才能进入。退出mysql客户端 和重新启动mysql客户端的控制台命令如下。

    mysql> exit

    Bye

    [root@localhost   mysql]# bin/mysql -u root -h localhost -p

    Enter password:

    Welcome to the MySQL monitor.  Commands end with ; or g.

    Your MySQL connection id is 6 to server version: 5.0.18-log

    Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

    如果想关闭mysql服务器,在命令行使用mysql服务器的mysqladmin命令,通过-u参数给出mysql数据库管理员用户名root和通过-p参数给出密码,即可关闭mysql服务器。如下示:

    [root@localhost   mysql]# bin/mysqladmin -u root -p shutdown

    Enter password:

    STOPPING server from pid file /usr/local/mysql/var/localhost.pid

    130207 21:27:05  mysqld ended

    [1]+  Done                    /usr/local/mysql/bin/mysqld_safe --user=mysql

     

    13、mysql服务器和apache服务器一样也有必要设置为开机自动运行,设置方法进入到mysql源代码目录/usr/local/src /mysql-5.0.18,将子目录support-files下的mysql.server文件复制到/etc/rc.d/init.d目录中,并重 命名为mysqld,命令行如下。

    [root@localhost   mysql]# cd /usr/local/src/mysql-5.0.18

    [root@localhost   mysql-5.0.18]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

    修改一下权限

    [root@localhost   mysql-5.0.18]# chown root.root /etc/rc.d/init.d/mysqld

    [root@localhost   mysql-5.0.18]# chmod 755 /etc/rc.d/init.d/mysqld

    把mysqld添加到chkconfig中

    [root@localhost   mysql-5.0.18]# chkconfig --add mysqld

    在图形和字符集界面下自动启动mysqld

    [root@localhost   mysql-5.0.18]# chkconfig --level 3 mysqld on

    [root@localhost   mysql-5.0.18]# chkconfig --level 5 mysqld on

    再使用chkconfig --list命令检查设置

    [root@localhost   mysql-5.0.18]# chkconfig --list mysqld

    mysqld          0:off   1:off   2:on    3:on    4:off    5:on    6:off

    安装最新版的PHP模块

    进入php-5.4.11源码包编译

    [root@localhost   php-5.4.11]# ./configure

    > --prefix=/usr/local/php

    > --with-config-file-path=/usr/local/php/etc

    > --with-apxs2=/usr/local/apache243/bin/apxs

    > --with-mysql=/usr/local/mysql/

    > --with-libxml-dir=/usr/local/libxml2/

    > --with-png-dir=/usr/local/libpng/

    > --with-jpeg-dir=/usr/local/jpeg8/

    > --with-freetype-dir=/usr/local/freetype/

    > --with-gd=/usr/local/gd/

    > --with-zlib-dir=/usr/local/zlib/

    > --with-mcrypt=/usr/local/libmcrypt/

    > --with-mysqli=/usr/local/mysql/bin/mysql_config

    > --enable-soap

    > --enable-mbstring=all

    > --enable-sockets

    make(配置)

    提示信息:

    Build complete.

    Don't forget to run 'make test'.

    解决方案:

    不要make test 直接make install

    配置时可能会出现下面的错误:

    checking for MySQL support... yes

    checking for specified location of the MySQL UNIX socket... no

    checking for MySQL UNIX socket location... no

    configure: error: Cannot find libmysqlclient_r under /usr/local/mysql. Note that the MySQL client library is not bundled anymore!

    其实这跟PHP没有关系,那是因为在编译APACHE的时候,使用--with-mpm模块,所以就必须在编译MYSQL的时候加上 --enable-thread-safe-client.参数

    这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程。关于--enable-thread-safe- client项的官方介绍如下:如何生成线程式客户端库总是线程安全的。最大的问题在于从套接字读取的net.c中的子程序并不是中断安全的。或许你可能 希望用自己的告警中断对服务器的长时间读取,以此来解决问题。如果为SIGPIPE中断安装了中断处理程序,套接字处理功能应是线程安全的。 SupeSite/X-为了避免连接中断时放弃程序,MySQL将在首次调用mysql_server_init()、mysql_init()或 mysql_connect()时屏蔽SIGPIPE。如果你打算使用自己的SIGPIPE处理程序,首先应调用 mysql_server_init(),然后安装你的处理程序.

    还有第二种解决方法比较方便 :编译之前,先处理一下mysql的库,默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可

    # cd /usr/local/mysql/lib/mysql/

    # ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so

    (以上解决方法来自互联网!)

    还会报make: *** [ext/gd/gd.lo] error

    解决方法如下:

    好像说这个错误算是php5.4的bug,下面对应的两篇文章有对应的说明:

    https://bugs.php.net/bug.php?id=55224

    https://bugs.php.net/bug.php?id=60108

    解决方法:

    vi <gd_dir>/include/gd_io.h

    gdIOCtx结构中增加void *data;

    格式如下

    typedef struct gdIOCtx

    {

    int (*getC) (struct gdIOCtx *);

    int (*getBuf) (struct gdIOCtx *, void *, int);

     

    void (*putC) (struct gdIOCtx *, int);

    int (*putBuf) (struct gdIOCtx *, const void *, int);

     

    /* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */

    int (*seek) (struct gdIOCtx *, const int);

     

    long (*tell) (struct gdIOCtx *);

     

    void (*gd_free) (struct gdIOCtx *);

    void (*data);

    }

    gdIOCtx;

    我的GD安装在/usr/local/gd2目录下,所以是#vi vi /usr/local/gd/include/gd_io.h

    libltdl.so.3: cannot open shared object file: No such file or directory

    make: *** [ext/phar/phar.php] Error 127

    解决方法:

    ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3

    [root@localhost   ~]# cd /usr/local/libpng/lib/

    [root@localhost   lib]# ls

    libpng15.a   libpng15.so     libpng15.so.15.10.0  libpng.la  pkgconfig

    libpng15.la  libpng15.so.15  libpng.a             libpng.so

    可以看到libpng15.so.15

    然后修改/etc/ld.so.conf 文件:vi /etc/ld.so.conf

    在第一行下面追加/usr/local/libpng/lib这个路径。

    然后重新编译安装即可。

    提示信息:

    =====================================================================

    =====================================================================

    WARNED TEST SUMMARY

    ---------------------------------------------------------------------

    Bug #52062 (large timestamps with DateTime::getTimestamp and DateTime::setTimestamp) (32 bit) [ext/date/tests/bug52062.phpt] (warn: XFAIL section but test passes)

    =====================================================================

    You may have found a problem in PHP.

    This report can be automatically sent to the PHP QA team at

    http://qa.php.net/reports and http://news.php.net/php.qa.reports

    This gives us a better understanding of PHP's behavior.

    If you don't want to send the report immediately you can choose

    option "s" to save it.  You can then email it to qa-reports@lists.php.net later.

    Do you want to send this report now? [Yns]:

    解决方案:

    不要make test 直接make install

     

    安装完成后,需要建立PHP配置文件。在使用configure命令安装配置时使用“--with-config-file-path=/usr /local/php/etc/”选项,指定了配置文件的位置。将源码包下面的php.ini-development 文件复制到/usr/local /php/etc/中,并改名为php.ini即可,如下示:

    [root@localhost   php-5.4.11]# cp php.ini-development /usr/local/php/etc/php.ini

    修改php.ini 把;date.timezone 前面的分号去掉,改成date.timezone ="PRC"

    整合Apache与PHP,上面编译之前,我们使用configure命令安装配置时,使用--with-apxs2=/usr/local /apache242/bin/apxs选项以使Apache 2将PHP作为功能模块使用。但我们还要修改Apahce配置文件,添加PHP的支持,告 诉Apache将哪些后缀作为PHP解析。例如,让Apache把.php或.phtml后缀名解析为PHP.使用vi打开Apache的配置文件 /etc/httpd/httpd.conf,找到AddType application/x-gzip .gz .tgz指令选项,并在其下方添加一 条指令AddType application/x-httpd-php .php .phtml。也可以将任何后缀的文件解析为PHP,只要在添加的语 句中加入并用空格分开,这里以多添加一个.phtml来示例,如下示:

    # If the AddEncoding directives above are commented-out, then you

    # probably should define those extensions to indicate media types:

    #

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz

    AddType application/x-httpd-php .php .phtml

    修改完成后必须重启Apache服务器,才能重新加载配置文件使修改生效。

    [root@localhost   php-5.4.11]#/usr/local/apache243/bin/apachectl stop

    [root@localhost   php-5.4.11]#/usr/local/apache243/bin/apachectl start

     

    测试PHP环境是否可以正常运行,在/usr/local/apache243/htdocs目录下建一个test.php或test.phtml的文件,内容如下示:

    <?php

    phpinfo();

    ?>

    打开浏览器,在地址栏输入http://192.168.146.129/test.php来运行该文件,如果出现下图内容,说明LAMP环境安装成功。

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052451252.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    上例中使用phpinfo()函数,作用是输出有关PHP当前状态的大部分信息内容,这包括关于PHP的编译和扩展信息、PHP版本、服务器信息和 环境、PHP的环境、操作系统信息、路径、主要的和本地配置选项的值、HTTP头信息和PHP许可等。因为每个系统的安装不同,phpinfo()函数可 以用于检查某一特定系统配置设置和可用的预定义变量等。它也是一个宝贵的调试工具,因为它包含了所有 EGPCS(Environment,GET,POST,Cookie,Server)数据。

    phpMyAdmin的安装

    1、进入软件源码所在的目录/usr/local/src/中,并解压软件包phpMyAdmin-3.5.6-all-languages.tar.gz到当前目录phpMyAdmin-3.5.6-all-languages下。

    2、把解压的目录phpMyAdmin-3.5.6-all-languages下的文件,全部复制到Apache的/usr/local/apache243/htdocs下,并新建一个名为phpmyadmin的目录下面,即安装完成。

    [root@localhost   src]# cp -a phpMyAdmin-3.5.6-all-languages /usr/local/apache243/htdocs/phpmyadmin

    3、在使用phpmyadmin之前,也需要先配置一下。配置的方法是通过对phpmyadmin顶层目录下的config.inc.php文件中 的几个选项做一些设置即可。默认不存在config.inc.php文件,我们需要手工创建一个,也可以复制config.sample.inc.php 模板得到最低限度的配置文件。

    [root@localhost   src]# cd /usr/local/apache243/htdocs/phpmyadmin/

    [root@localhost   phpmyadmin]# cp config.sample.inc.php config.inc.php

     

    phpMyAdmin的配置

    我们通过身份验证模式的要求,可以有两种配置方案,一种是http和cookie身份验证模式。在这两种模式下,用户必须先在一个登录窗 口里输入MySQL数据库的有效用户名和密码,才能使用phpMyAdmin程序。这种做法有两个明显的好处;首先,因为MySQL数据库的密码没有出现 在config.inc.php文件里,所以身份验证过程更加安全;其次,允许以不同的用户身份登录对自己的数据库进行管理。这两种身份验证模式尤其适合 数据库中多个用户账号的情况。

    第二种方案是,config身份验证模式。这种情况下,密码以明文形式保存在config.inc.php文件里。只需要把MySQL用户 名和密码直接写入到config.inc.php文件即可。这样,在登录phpMyAdmin时就不会提示输入用户名和密码了,而只直接用 config.inc.php文件里写入的用户登录 。如果只是在一个本地测试系统上使用phpMyAdmin,可以使用这种模式。

    1、http身份验证模式

    如果想让phpMyAdmin使用HTTP身份验证模式,首先需要在config.inc.php文件做如下修改:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052451113.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    当完成设置之后,我们启动phpMyAdmin时,屏幕上将弹出一个WEB浏览器对话框,需要在这个对话框里输入MySQL用户名和密码,才能进入 phpMyAdmin操作界面。如下图示,在windows客户端用IE浏览器,访问WEB服务器的phpMyAdmin目录下的index.php文 件,即可启动phpMyAdmin.

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052452635.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    2、cookie身份验证模式

    cookie身份验证模式是HTTP身份验证模式的补充,不能使用HTTP身份验证模式的场合都可以使用它。cookie身份验证模式要求用户必须允许来自phpMyAdmin的cookie进入自己的计算机。即用户需要在浏览器中开启客户端的cookie功能。

    如果想让phpMyAdmin使用cookie身份验证模式,除了必须修改config.inc.php文件里的auth_type语句外, 还必须向blowfish_secret参数提供一个字符串。这个字符串可以是任意的,目的是在把登录时使用的用户和密码存储在客户端电脑上的 cookie之前,系统将会使用这个字符串对它们进行加密码。在config.inc.php中修改的内容如下图示:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052452427.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    和上面启动phpMyAdmin的方式一样,我们在windows客户端使用IE浏览器,访问web服务器上的phpMyAdmin目录下的index.php文件,需要提供MySQL的用户名和密码才能登录,如下图示:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052452987.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    3、config身份验证模式

    如果想让phpMyAdmin使用config身份验证模式,首先需要在config.inc.php文件里做出如下所示的修改。把MySQL数据库的用户名和密码以明文的方式写入,具体修改内容如下图示:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052453923.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

    和上面启动phpMyAdmin的方式一样,我们在windows客户端使用IE浏览器,访问WEB服务器上的phpMyAdmin目录下的 index.php文件。但不用提供MySQL的用户名和密码就可以登录,它是使用config.inc.php中以明文方式写入的用户名和密码登录的。 这里不在截图。

    到这里LAMP就安装完成了,我们下载的软件中有一个ZendGuard没用上,原因是我安装的php5.4.11的版本,截止到现在官方还没有支持PHP5.4版本的Zend加速器,官方截图如下:

     

    <a href="http://www.php100.com/uploadfile/2013/0219/20130219052453304.png" target="_blank" class="cboxElement" rel="example4" 15"="" style="text-decoration: none; color: rgb(1, 150, 227); ">

     

     

    援引:https://www.cnblogs.com/lixiuran/p/3280773.html

  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    LeetCode Populating Next Right Pointers in Each Node
    LeetCode Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode Reverse Linked List II
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Pascal's Triangle
    Palindrome Construct Binary Tree from Preorder and Inorder Traversal
    Pascal's Triangle II
    LeetCode Word Ladder
    LeetCode Binary Tree Zigzag Level Order Traversal
  • 原文地址:https://www.cnblogs.com/dereckbu/p/8891037.html
Copyright © 2011-2022 走看看