64位CentOS6.3下源码搭建LAMP环境

时间:2022-09-18 14:56:16

LAMP环境搭建一直以来都是一件让人头痛的事,网上也有很多与此相关的教程,但是大部分的教程都是在32位下的环境搭建的。真实环境中,用32位的服务器那是相当的少,所以这里将用64位的系统来搭建LAMP环境。

 

会用到的所有组件

1

httpd-2.2.27.tar.gz

2

mysql-5.5.40.tar.gz

3

php-5.4.35.tar.bz2

4

bison-2.0.tar.gz

5

freetype-2.4.0.tar.gz

6

gd-2.0.33.tar.gz

7

gettext-0.16.1.tar.gz

8

jpegsrc.v6b.tar.gz

9

libmcrypt-2.5.7.tar.gz

10

libpng-1.6.14.tar.gz

11

libxml2-2.7.1.tar.gz

12

ncurses.tar.gz

13

zlib-1.2.3.tar.gz

14

memcached-1.4.17.tar.gz

15

memcache-2.2.7.tgz

 

将所有组件复制到/root/lamp目录下。

[root@localhost lamp]# ll
总用量 64932
-rw-r--r-- 1 root root 1396855 11月 20 18:03autoconf-2.61.tar.gz
-rw-r--r-- 1 root root 1163590 11月 29 2014bison-2.0.tar.gz
-rw-r--r-- 1 root root 1899204 11月 20 11:55freetype-2.4.0.tar.gz
-rw-r--r-- 1 root root 587617 11月 20 13:25gd-2.0.33.tar.gz
-rw-r--r-- 1 root root 8539634 11月 29 2014gettext-0.16.1.tar.gz
-rw-r--r-- 1 root root 7519677 11月 18 11:50httpd-2.2.27.tar.gz
-rw-r--r-- 1 root root 613261 11月 29 2014jpegsrc.v6b.tar.gz
-rw-r--r-- 1 root root 523321 11月 20 12:02libmcrypt-2.5.7.tar.gz
-rw-r--r-- 1 root root 1358799 11月 20 11:20libpng-1.6.14.tar.gz
-rw-r--r-- 1 root root 4769568 11月 20 11:55libxml2-2.7.1.tar.gz
-rw-r--r-- 1 root root 326970 11月 27 19:06memcached-1.4.17.tar.gz
-rw-r--r-- 1 root root 21727672 11月 20 14:14mysql-5.5.40.tar.gz
-rw-r--r-- 1 root root 2826473 11月 20 12:00ncurses.tar.gz
-rw-r--r-- 1 root root 12279065 11月 20 10:23php-5.4.35.tar.bz2
-rw-r--r-- 1 root root 426278 11月 20 11:41 ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
-rw-r--r-- 1 root root 499773 11月 29 2014zlib-1.2.3.tar.gz


总的安装顺序是按照以下步骤来走的: zlib、Apache、MySQL、PHP扩展组件、PHP、PHP其他扩展

 

zlib安装

         zlib是一个很好的压缩解压缩库,后面很多组件的安装都会使用到它,所以要最先安装。当然,我们这里是64位的系统,所以在配置过程过,与32位有所不同,如果用32位的配置的话,安装是没问题的,后面在配置其他组件时会出现类似以下的错误

relocation R_X86_64_32can not be used when making a shared object; recompile with –fPIC

 

[root@localhost lamp]# pwd
/root/lamp
[root@localhost lamp]# tar -zxfzlib-1.2.3.tar.gz
[root@localhost lamp]# cd zlib/1.2.3/
[root@localhost 1.2.3]#CFLAGS="-fPIC" ./configure //这一是关键,64位的系统一定要在前面加上CFLAGS="-fPIC",而且不需要用prefix指定安装目录,否则会影响后面组件的安装
[root@localhost 1.2.3]# make &&make install


 

Apache安装

Apache的安装相对比较简单,安装过程也很少出错。

[root@localhost lamp]# tar -zxfhttpd-2.2.27.tar.gz
[root@localhost lamp]# cd httpd-2.2.27
[root@localhost httpd-2.2.27]# ./configure--prefix=/usr/local/apache2/ --sysconfdir=/etc/httpd/ --with-z=/usr/local/zlib/--with-included-apr --disable-userdir --enable-so --enable-deflate=shared--enable-expires=shared --enable-rewrite=shared --enable-static-support
[root@localhost httpd-2.2.27]# make&& make install
[root@localhost httpd-2.2.27]# echo"/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local //将Apache添加到开机启动,这里有多种方法,不一定要参照我这一种


由于前面的zlib我们是指定路径安装的,所以在这要配置Apache的zlib目录,--with-z=/usr/local/zlib/,否则会出现错误:checking whether to enable mod_deflate... configure: error:mod_deflate has been requested but can not be built due to prerequisitefailures

MySQL安装

         我们这里使用的MySQL版本是5.5.40,在这个版本中,已经不再使用configure和make来编译安装了,而是采用了cmake,所以我们要先安装cmake,直接用yum安装即可


[root@localhost lamp]# yum -y install cmake


         此外,MySQL还需要ncurses组件的支持,否则会出现错误

CMake Error atcmake/readline.cmake:83 (MESSAGE):

  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.OnDebian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it isncurses-devel.


[root@localhost lamp]# tar -zxfncurses.tar.gz
[root@localhost lamp]# cd ncurses-5.9/
[root@localhost ncurses-5.9]# ./configure--with-shared --without-debug --without-ada --enable-overwrite
[root@localhost ncurses-5.9]# make&& make install

         同时还要安装Bison,否则会有警告:Warning: Bison executable not found in PATH

[root@localhost lamp]# tar -zxfbison-2.0.tar.gz
[root@localhost lamp]# cd bison-2.0
[root@localhost bison-2.0]# ./configure
[root@localhost bison-2.0]# make &&make install

         接下来才是真正安装MySQL


[root@localhost lamp]# tar -zxfmysql-5.5.40.tar.gz
[root@localhost lamp]# cd mysql-5.5.40
[root@localhost mysql-5.5.40]# cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DEXTRA_CHARSETS=all //老版本的MySQL用的是make编译的,配置命令为./configure--prefix=/usr/local/mysql/ --with-extra-charsets=all。关于MySQL新版和旧版的编译参数,请参照网上的说明,这里就不做详细说明。
[root@localhost mysql-5.5.40]# make&& make install
对MySQL进行简单的配置
[root@localhost mysql-5.5.40]# groupaddmysql
[root@localhost mysql-5.5.40]# useradd -gmysql mysql
[root@localhost mysql-5.5.40]# cpsupport-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql-5.5.40]# cd/usr/local/mysql/
[root@localhost mysql]#./scripts/mysql_install_db --user=mysql
[root@localhost mysql]# chown -R mysql/usr/local/mysql/
[root@localhost mysql]# chgrp -R mysql/usr/local/mysql/
[root@localhost mysql]#/usr/local/mysql/bin/mysqld_safe --user=mysql & //启动mysql服务
[root@localhost mysql]# ./bin/mysql mysql
mysql> update user set password =password('123456') where user = 'root'; //设置root用户密码,设置后要重启mysql服务才会生效
mysql> quit

添加到开机启动

[root@localhost mysql]# cp/root/lamp/mysql-5.5.40/support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chown root.root/etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod 755/etc/rc.d/init.d/mysqld
[root@localhost mysql]# chkconfig --add/etc/rc.d/init.d/mysqld

至此,Apache与MySQL都已安装完毕,基本没什么难点,主要就是要花的时间比较多。接下来看下PHP扩展组件的安装。

PHP扩展组件安装

         这里我们需要的组件有:libxml、libmcrypt、libltdl、zlib(前面已安装)、libpng、jpeg、freetype、gettext、gd。


[root@localhost mysql]# cd /root/lamp/
[root@localhost lamp]# tar -zxflibxml2-2.7.1.tar.gz
[root@localhost lamp]# cd libxml2-2.7.1
[root@localhost libxml2-2.7.1]# ./configure--prefix=/usr/local/libxml2/
[root@localhost libxml2-2.7.1]# make&& make install

[root@localhost libpng-1.6.14]# cd ..
[root@localhost lamp]# tar -zxflibmcrypt-2.5.7.tar.gz
[root@localhost lamp]# cd libmcrypt-2.5.7
[root@localhost libmcrypt-2.5.7]#./configure --prefix=/usr/local/libmcrypt/
[root@localhost libmcrypt-2.5.7]# make&& make install

[root@localhost libmcrypt-2.5.7]# cdlibltdl/ //注意,这个包是在libmcrypt目录下的
[root@localhost libltdl]# ./configure--enable-ltdl-install
[root@localhost libltdl]# make &&make install

[root@localhost libltdl]# cd ../../
[root@localhost lamp]# tar -zxflibpng-1.6.14.tar.gz
[root@localhost lamp]# cd libpng-1.6.14
[root@localhost libpng-1.6.14]# [root@localhostlibpng-1.6.14]# ./configure --prefix=/usr/local/libpng/
[root@localhost libpng-1.6.14]# make&& make install

[root@localhost libpng-1.6.14]# cd ..
[root@localhost lamp]# tar -zxfjpegsrc.v6b.tar.gz
[root@localhost lamp]# cd jpeg-6b/
[root@localhost jpeg-6b]# mkdir -p/usr/local/jpeg6/bin //由于程序无法自动创建目录,所以需要手动创建,否则可能会安装失败
[root@localhost jpeg-6b]# mkdir -p/usr/local/jpeg6/lib
[root@localhost jpeg-6b]# mkdir -p/usr/local/jpeg6/include
[root@localhost jpeg-6b]# mkdir -p/usr/local/jpeg6/man/man1
[root@localhost jpeg-6b]# ./configure--prefix=/usr/local/jpeg6/ --enable-shared --enable-static
[root@localhost jpeg-6b]# make &&make install

 

         如果出现错误

[root@localhost jpeg-6b]#make && make install

./libtool --mode=compilegcc -O2  -I. -c ./jcapimin.c

make: ./libtool:命令未找到

make: *** [jcapimin.lo] 错误 127

则需要安装libtool

[root@localhost jpeg-6b]# yum –y installlibtool


覆盖掉原来的配置文件,然后重新编译才不会出错

[root@localhost jpeg-6b]# cp/usr/share/libtool/config/config.sub /root/lamp/jpeg-6b/
[root@localhost jpeg-6b]# cp/usr/share/libtool/config/config.guess /root/lamp/jpeg-6b/
[root@localhost jpeg-6b]# ./configure--prefix=/usr/local/jpeg6/ --enable-shared --enable-static
[root@localhost jpeg-6b]# make &&make install

[root@localhost jpeg-6b]# cd ..
[root@localhost lamp]# tar -zxffreetype-2.4.0.tar.gz
[root@localhost lamp]# cd freetype-2.4.0
[root@localhost freetype-2.4.0]#./configure --prefix=/usr/local/freetype/
[root@localhost freetype-2.4.0]# make&& make install

[root@localhost freetype-2.4.0]# cd ../
[root@localhost lamp]# tar -zxfgettext-0.16.1.tar.gz
[root@localhost lamp]# cd gettext-0.16.1
[root@localhost gettext-0.16.1]#./configure --prefix=/usr/local/gettext/
[root@localhost gettext-0.16.1]# make&& make install

[root@localhost gettext-0.16.1]# cd ..
[root@localhost lamp]# tar -zxfgd-2.0.33.tar.gz
[root@localhost lamp]# cd gd-2.0.33
[root@localhost gd-2.0.33]# ./configure--prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/--with-png=/usr/local/libpng/ --with-freetype=/usr/local/freetype/ --with-zlib
[root@localhost gd-2.0.33]# make &&make install

PHP安装

PHP的安装比较麻烦,很容易出错,所以在安装过程中一定要看清楚是什么错误,一步步解决。

[root@localhost gd-2.0.33]# cd ../
[root@localhost lamp]# tar -jxfphp-5.4.35.tar.bz2
[root@localhost lamp]# cd php-5.4.35
[root@localhost ~]# ./configure--prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/--with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/--with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/--with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-zlib--with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config--enable-soap --enable-mbstring=all --enable-sockets
[root@localhost php-5.4.35]# make&& make install
[root@localhost php-5.4.35]# cpphp.ini-development /usr/local/php/etc/php.ini
[root@localhost php-5.4.35]# vi/etc/httpd/httpd.conf


查找到IfModule mime_module,在里面增加一条内容,开启Apache对PHP的支持

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

保存后重启Apache

[root@localhost php-5.4.35]#/usr/local/apache2/bin/apachectl -k restart
[root@localhost php-5.4.35]# vi/usr/local/apache2/htdocs/index.php


输入内容为:

         

<?phpphpinfo(); ?>

然后在浏览器中输入http://ip/index.php查看PHP的安装信息,看到PHP的安装信息后,搜索gd,可以看到gd库已经成功整合到PHP中。至此PHP安装结束

为PHP安装其他扩展

         在PHP的源码的ext目录中,有许多扩展的组件,这些组件要怎么使用呢?可以利用phpize来帮我们实现这些扩展,接下来就用curl这个扩展来举例。

[root@localhost php-5.4.35]# cd/root/lamp/php-5.4.35/ext/curl/
[root@localhost curl]#/usr/local/php/bin/phpize
[root@localhost curl]# yum -y install curlcurl-devel //安装curl的组件,这里就偷下懒,直接用yum安装,当然也可以用源码安装,安装方法跟前面的大同小异,就不再多说了。
[root@localhost curl]# ./configure--with-php-config=/usr/local/php/bin/php-config
[root@localhost curl]# make && makeinstall


这时会系统会提示组件编译后所放的目录:Installingshared extensions:    /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

我们只要记下这个目录,把它添加到php.ini中的extension_dir中,然后添加对应的组件即可。

以上是PHP源码自带的扩展,然后我们看一下非自带的扩展如何添加,比如Memcache。

[root@localhost curl]# cd ~/lamp/
[root@localhost lamp]# tar -zxfmemcached-1.4.17.tar.gz
[root@localhost lamp]# cd memcached-1.4.17
[root@localhostmemcached-1.4.17]# yum -y install libevent libevent-devel //这里还需要libevent和libevent-devel这两个包,直接用yum安装即可
[root@localhost memcached-1.4.17]#./configure --prefix=/usr/local/memcached/
[root@localhost memcached-1.4.17]# make&& make install
[root@localhost memcached-1.4.17]# echo"/usr/local/memcached/bin/memcached -d -m 512 -u root" >>/etc/rc.d/rc.local //将memcache添加到开机启动
[root@localhost memcached-1.4.17]# cd ..
[root@localhost lamp]# tar -zxfmemcache-2.2.7.tgz
[root@localhost lamp]# cd memcache-2.2.7
[root@localhost memcache-2.2.7]#/usr/local/php/bin/phpize
[root@localhost memcache-2.2.7]#/usr/local/php/bin/phpize --with-php-config=/usr/local/php/bin/php-config
[root@localhost memcache-2.2.7]# make&& make install
[root@localhost memcache-2.2.7]# make&& make install
[root@localhost memcache-2.2.7]# vi/usr/local/php/etc/php.ini //在里面添加memcache扩展