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扩展