本文中作者是以虚拟机(VMware)安装的 CentOS 5.5 进行试验。下面进行安装详解
1、准备工作
一、请先确认你所安装的 Linux 系统中是否已经安装了Apache、MySQL、PHP,如果安装请先卸载。
查看是否安装(Apache为例)
1 |
[root@localhost Linux] rpm -qa|grep httpd
|
注:rpm -qa 是查看本机中已经安装的所有软件。 grep httpd 是过滤出与 httpd(apache) 有关的软件。注:grep php 是查看 PHP;grep mysql 是查看 MySQL
那么就需要把这三个软件都卸载了。
卸载命令如下:
1 |
[root@localhost Linux] rpm -e httpd-2.2.3-43.el5.centos --nodeps
|
注:–nodeps 是强制卸载
二、请保证你的 Linux 系统中安装了 gcc、g++ 编译器
检查是否安装很简单,在命令行中敲入“gc”或“g+”,按 tab 键,看下面是否有命令显示。
如果没有也没关系,安装 gcc、g++ 的方法十分简单
三、将所有的软件(大部分都是 tar 包)包拷贝到 /tmp/lamp 底下,并解压
解压 tar.gz 命令(php软件为例):
1 |
tar zxvf php-5.2.6.tar.gz
|
当执行完此命令后,会在当前目录下创建一个 php-5.2.6 的文件夹,解压的所有文件会放置在 php-5.2.6 文件夹中
请按照同样的方法将所有的包都解压,并且删除所有的 *.tar.gz 文件
1 |
[root@localhost lamp] rm -rf *.gz
|
以上命令删除所有的 .gz 文件
四、编译安装软件包介绍
在 Linux 系统安装每个源代码软件包的过程如下:
配置(configure)
编译(make)
安装(make install)
2、搭建 LAMP 环境(请按照下面给出的顺序进行安装)
这里所有的软件都安装在 /usr/local 下
一、安装libxml
安装顺序:1、进入 libxml 目录;2、配置参数(包括安装路径;依赖软件;安装功能等);3、编译;4、安装。注:所有软件包安装类似
1 2 |
[root@localhost lamp] cd libxml2-2.6.30/ [root@localhost libxml2-2.6.30] ./configure --prefix=/usr/local/libxml2 |
./configure 为软件包配置参数命令,–prefix 表示指定的安装目录,大部分目录若不在会自动创建,个别不会,需要我们手动创建
1 |
[root@localhost libxml2-2.6.30] make && make install
|
以上命令是将编译和安装在一起执行,由于软件小,安装速度比较快,若大的软件,可能会花比较长的时间。
二、安装libmcrypt
1 2 3 |
[root@localhost lamp] cd libmcrypt-2.5.8/ [root@localhost libmcrypt-2.5.8] ./configure --prefix=/usr/local/libmcrypt [root@localhost libmcrypt-2.5.8] make && make install |
三、安装zlib
1 2 3 |
[root@localhost lamp] cd zlib-1.2.3/ [root@localhost zlib-1.2.3] ./configure [root@localhost zlib-1.2.3] make && make install |
./configure 后面不要跟 –prefix 参数,让其安装在默认目录中,因为安装 libpng 的时候会用到 zlib。
四、安装libpng
1 2 3 |
[root@localhost lamp] cd libpng-1.2.31/ [root@localhost libpng-1.2.31] ./configure --prefix=/usr/local/libpng [root@localhost libpng-1.2.31] make && make install |
五、安装jpeg6
这个软件配置的时候不会自动创建目录,需要我们手动创建
1 2 3 4 5 |
[root@localhost libpng-1.2.31] mkdir /usr/local/jpeg6 [root@localhost libpng-1.2.31] mkdir /usr/local/jpeg6/bin [root@localhost libpng-1.2.31] mkdir /usr/local/jpeg6/lib [root@localhost libpng-1.2.31] mkdir /usr/local/jpeg6/include [root@localhost libpng-1.2.31] mkdir -p /usr/local/jpeg6/man/man1 |
生成目录完毕!
如果您读到这篇文章时,jpeg6已经过时了,那么请在安装更高版本的jpeg时不用再新建目录了,因为jpeg7以上的都不用自己新建目录的了
1 2 3 |
[root@localhost lamp] cd jpeg-6b/ [root@localhost jpeg-6b] ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static [root@localhost jpeg-6b] make && make install |
./configure 中参数说明:
–enable-shared 建立共享库使用的GNU的libtool
–enable-static 建立静态库使用的GNU的libtool
六、安装freetype
1 2 3 |
[root@localhost lamp] cd freetype-2.3.5/ [root@localhost freetype-2.3.5] ./configure --prefix=/usr/local/freetype [root@localhost freetype-2.3.5] make && make install |
七、安装autoconf
1 2 3 |
[root@localhost lamp] cd autoconf-2.61/ [root@localhost autoconf-2.61] ./configure [root@localhost autoconf-2.61] make && make install |
这个软件直接安装在默认目录下。
八、安装GD
1 2 3 |
[root@localhost lamp] cd gd-2.0.35/ [root@localhost gd-2.0.35] ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png=/usr/local/libpng/ --with-freetype=/usr/local/freetype/ [root@localhost gd-2.0.35] make && make install |
./configure 中参数说明:
–with-jpeg=/usr/local/jpeg6/ 指定到哪去找jpeg库文件的位置
–with-png=/usr/local/libpng/ 指定到哪去找png库文件的位置
–with-freetype=/usr/local/freetype/ 指定到哪去找freetype 2.x字体库的位置
注意 安装此软件包可能会出现以下错误,如下图所示:
如果出现如此错误,解决方法:
[root@localhost gd-2.0.35] vi gd_png.c
找到关键词”png.h” 命令:/png.h 回车
替换为:/usr/local/libpng/include/png.h
效果如下图所示:
保存退出,继续执行”make && make install” 执行即可安装成功。
九、安装Apache(关键)
1 2 3 |
[root@localhost lamp] cd httpd-2.2.9/ [root@localhost httpd-2.2.9] ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-static-support [root@localhost httpd-2.2.9] make && make install |
./configure 中的参数说明:
–sysconfdir=/etc/httpd 指定Apache服务器的配置文件(httpd.conf等文件)存放位置
–with-included-apr 使用捆绑APR/APR-Util的副本
–enable-so 以动态共享对象(DSO)编译
–enable-deflate=shared 缩小传输编码的支持
–enable-expires=shared 期满头控制
–enable-rewrite=shared 基于规则的URL操控
–enable-static-support 建立一个静态链接版本的支持
测试 Apache 服务器
1、检查 /usr/local/ 下是否出现 apache2 目录;
2、检查 /etc/ 目录下面是否出现 httpd 目录,即里面是否有 httpd.conf 文件、extra目录等内容
3、开启 apache 服务器
1 |
[root@localhost httpd] /usr/local/apache2/bin/apachectl start
|
stop(关闭)、restart(重启)
如果关闭、开启出现错误:
Syntax error on line 54 of /etc/httpd/httpd.conf: Cannot load /usr/local/apache2/modules/mod_deflate.so into server: /usr/local/apache2/modules/mod_deflate.so: cannot restore segment prot after reloc: Permission denied
解决方法:
关闭SeLinux即可,方法:不需要重启Linux,运行 [root@localhost ~]# setenforce 0
4、查看 apache 服务器是否启动,即查看 80 端口是否启动
[root@glocalhost httpd] netstat -tnl|grep 80
执行完命令,出现如下所示,表示已经启动
tcp 0 0 :::80 :::* LISTEN
5、在浏览器中访问
如果在本机的话,请在浏览器地址栏中输入:http://localhost 或 http://127.0.0.1
如果是远程连接的话,比如:SSH连接,那么请在浏览器地址栏中输入 Linux 的 ip 地址。比如:http://192.168.1.254
或者先用ifconfig查看一下本机IP
若网页中出现大字“
It works!
”说明 Apache 安装成功。
测试完毕!
添加 Apache 每次开机自动启动
1 |
[root@localhost /] echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
|
十、安装MySQL(重要)
请先确认rpm包上的mysql已删除
安装 MySQL 之前先建立一个专门管理 MySQL 的组和用户名
建立一个组名叫“mysql”
1 |
[root@localhost /] groupadd mysql
|
建立一个用户名叫“mysql”,让他属于“mysql”组
1 |
[root@localhosty /] useradd -g mysql mysql
|
1 2 3 |
[root@localhost lamp] cd mysql-5.0.41/ [root@localhost mysql-5.0.41] ./configure --prefix=/usr/local/mysql --with-extra-charsets=all [root@localhost mysql-5.0.41] make && make install |
./configure 参数说明:
–with-extra-charsets=all 安装MySQL 所有的字符集
注意 在 ./configure 的时候如果出现如下错误
原因:缺少ncurses安装包。
解决方法:下载安装相应软件包
1 2 |
yum list|grep ncurses yum -y install ncurses-devel |
ncurses安装完成之后,再进行 ./configure 配置!
MySQL安装完成之后,设置一些内容,这些内容非常繁琐,但是又非常关键的,希望大家耐心学习。
1、设置配置文件 my.cnf,放在 /etc/ 目录下
1 |
[root@localhost mysql-5.0.41] cp support-files/my-medium.cnf /etc/my.cnf
|
2、初始化数据库文件,安装完 MySQL 之后,并不会出现 MySQL 的数据文件及数据存放位置
首先切换到 MySQL 的安装目录下
1 |
[root@localhost mysql-5.0.41] cd /usr/local/mysql/
|
使用 bin 目录下的 mysql_install_db 进行初始化数据库文件,并使用上面建的 mysql 用户
1 |
[root@localhost mysql] bin/mysql_install_db --user=mysql
|
运行完之后,会发现 MySQL 安装目录中会多一个 var 目录,里面放置的就是数据库文件,包括我们已经建的数据库都会放置在这个目录里面。
3、设置 MySQL 安装目录权限
改变目录下的所有文件和目录的拥有者为 root
1 |
[root@localhost mysql] chown -R root .
|
改变 var 目录的拥有者为 mysql 用户
1 |
[root@localhost mysql] chown -R mysql ./var/
|
改变所有目录和文件的用户组为 mysql 组
1 |
[root@localhost mysql] chgrp -R mysql . #这里有一个点,别忽视了
|
4、启动 MySQL
1 |
[root@localhost mysql] /usr/local/mysql/bin/mysqld_safe --user=mysql &
|
& 表示在后台启动
这时,使用 netstat -tnl,如果看见 3306 端口,那么说明启动成功
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
5、设置权限,如果我们现在直接使用 bin 目录下的 mysql 命令,那么就能登录
1 |
[root@localhost mysql] bin/mysql
|
这样就太危险了!因此需要设置权限。
先登录进 MySQL 中,使用 SQL 命令删除主机不是“localhost” 的用户名(MySQL 中的用户都mysql库中的user表),只留允许本机登录的账号。
1 |
mysql> DELETE FROM mysql.USER WHERE Host != 'localhost';
|
刷新授权表
1 |
mysql> FLUSH privileges;
|
设置允许本机进入 MySQL 的 root 用户的密码
1 |
mysql> SET password FOR 'root'@'localhost'=password('123456');
|
注:设置的密码必须记住,不然就进不去 MySQL 数据库了。
到这步的时候,我们的 root 用户,就已经设置了密码(密码为“123456”),我们可以测试一下,键入“exit”退出MySQL
这时登录 MySQL 数据库的命令不能是 bin/mysql 那么简单,应该如下:
1 |
[root@localhost mysql] bin/mysql -h 127.0.0.1 -u root -p123456
|
-h 指定主机名
-u 用户名
-p 密码
6、关闭 MySQL 数据库服务器
1 |
[root@localhost mysql] bin/mysqladmin -u root -p shutdown
|
这里的是 root 用户是 MySQL 中的用户,执行后会提示你输入密码,Enter password:
输入密码,回车即可关闭数据库。
启动命令,请看本节4
7、加入到开机默认启动
1 |
[root@localhost mysql] echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.d/rc.local
|
当执行# setenforce 0后,连接mysql数据库可能出现以下错误:
/usr/local/mysql/lib/libmysqlclient.so.15: cannot restore segment prot after reloc: Permission denied
解决办法如下:
1.禁用 SELinux
# vi /etc/sysconfig/selinux
SELINUX=disabled
2.应用 chcon
# chcon -t texrel_shlib_t /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0
这里我们安装 PHP 的高版本 php-5.3.19,安装参数比较多,请一定注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost lamp] cd php-5.3.19/ [root@localhosty php-5.3.19] ./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-png-dir=/usr/local/libpng/ \ > --with-jpeg-dir=/usr/local/jpeg6/ \ > --with-freetype-dir=/usr/local/freetype/ \ > --with-gd=/usr/local/gd2/ \ > --with-mcrypt=/usr/local/libmcrypt/ \ > --with-mysqli=/usr/local/mysql/bin/mysql_config \ > --enable-soap \ > --enable-mbstring=all \ > --enable-sockets |
“>”符号不用自己输入,回车后即可
./configure 参数说明:
–with-config-file-path=/usr/local/php/etc 指定PHP5配置文件存入的路径
–with-apxs2=/usr/local/apache2/bin/apxs 告诉PHP查找Apache 2的地方
–with-mysql=/usr/local/mysql/ 指定MySQL的安装目录
–with-libxml-dir=/usr/local/libxml2/ 告诉PHP放置libxml2库的地方
–with-png-dir=/usr/local/libpng/ 告诉PHP放置libpng库的地方
–with-jpeg-dir=/usr/local/jpeg6/ 告诉PHP放置jpeg库的地方
–with-freetype-dir=/usr/local/freetype/ 告诉PHP放置freetype库的地方
–with-gd=/usr/local/gd2/ 告诉PHP放置gd库的地方
–with-mcrypt=/usr/local/libmcrypt/ 告诉PHP放置libmcrypt库的地方
–with-mysqli=/usr/local/mysql/bin/mysql_config 变量激活新增加的MySQLi功能
–enable-soap 变量激活SOAP和Web services支持
–enable-mbstring=all 使多字节字符串支持
–enable-sockets 变量激活socket通讯特性
执行命令后,出现“Thank you for using PHP.”,说明配置成功。
1 |
[root@localhost php-5.3.19]# make && make install
|
编译和安装,时间会比较长,耐心等待吧!
有时会出现
1 2 3 |
/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [libphp5.la] 错误 1 |
编译完成后,需要以下配置
1、设置 php.ini 配置文件
1 |
[root@localhost php-5.3.19] cp php.ini-development /usr/local/php/etc/php.ini
|
注:/usr/local/php/etc 是在配置的时候指定的位置
2、和 Apache 整合
先打开 Apache 的配置文件 httpd.conf
1 |
[root@gamejzy php-5.3.19] vi /etc/httpd/httpd.conf
|
会发现文件中有这么条内容
1 |
LoadModule php5_module modules/libphp5.so
|
这就说明 PHP 已经加载到 Apache 服务器中了,我们所要做的是告诉 Apache 服务器,哪些后缀名使用 PHP 解析
在 vi 编辑器中搜索“AddType application/x-compress .Z”
在后面添加一条:AddType application/x-httpd-php .php
当然,您也可以加上html,除非万不得已,不要加上,那样会造成服务器压力过大,当然也可以加asp jsp等来忽然人(主要是hacker)
为了让Apache 自动认识 index.php 作为首页我们还必须修改DirectoryIndex 行,添加 index.php:
DirectoryIndex index.html index.php
保存并退出,重启 Apache
1 2 |
[root@localhost php-5.3.19] /usr/local/apache2/bin/apachectl stop [root@localhost php-5.3.19] /usr/local/apache2/bin/apachectl start |
3、测试 Apache 服务器是否可以解析 PHP
往 /usr/local/apache2/htdocs 目录下添加一个phpinfo.php 文件,键入以下代码:
1 |
echo phpinfo();
|
打开浏览器,访问该文件,看到输出php和服务器的信息的话,您就成功了
到此,CentOS 下的 LAMP 环境就搭建完毕了,虽然步骤繁琐,但是“工欲善其事,必先利其器”,花些时间,搭建一个完美的环境是值得的。