0%

CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境

什么是LAMP
LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代表的方面功能非常强大的组件。
LAMP这个词的由来最早始于德国杂志“c’t Magazine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。这些组件并不是开始就设计为一起使用的,但是,这些软件都是开源的,可以很方便的随时获得并免费使用,这就导致了这些组件经常在一起使用。这些组件的兼容性也在不断完善,为了改善不同组件之间的协作,已经创建了某些扩展功能,在一起的应用情形变得非常普便,因而成为目前最流行的web应用基础架构。

LAMP的组件
平台由四个组件组成,呈分层结构,每一层都提供了整个架构的一个关键部分:
   LinuxLinux 处在最底层,提供操作系统。它的灵活性和可定制化的特点意味着它能够产生一种高度定制的平台,让其它组件在上面运行。其它组件运行于Linux 之上,但是并不一定局限于 Linux,也可以在 Microsoft Windows, Mac OS X 或 UNIX上运行。
   ApacheApache位于第二层,它是一个Web 服务平台,提供可让用户获得 Web 页面的机制。Apache 是一款功能强大、稳定、可支撑关键任务的Web服务器,Internet 上超过 50% 的网站都使用它作为 Web 服务器。
   MySQLMySQL 是最流行的开源关系数据库管理系统,是LAMP的数据存储端。在 Web 应用程序中,所有帐户信息、产品信息、客户信息、业务数据和其他类型的信息都存储于数据库中,通过 SQL 语言可以很容易地查询这些信息。
   PHP/PerlPerl是一种灵活的语言,特别是在处理文本要素的时候,这种灵活性使Perl很容易处理通过 CGI接口提供的数据,灵活地运用文本文件和简单数据库支持动态要素。PHP 是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。可以使用 PHP 编写能访问 MySQL 数据库中的数据和 Linux 提供的一些特性的动态内容。

二、系统环境

系统平台:CentOS release 5.8 (Final)

Apache版本:httpd-2.2.9.tar.gz

Mysql 版本:mysql-5.0.41.tar.gz

Php版本:php-5.2.6.tar.gz

三、安装前准备

1、库文件准备

在安装PHP之前,应先安装PHP5需要的最新版本库文件,例如libxml2、libmcrypt以及GD2库等文件。安装GD2库是为了让PHP5支 持GIF、PNG和JPEG图片格式,所以在安装GD2库之前还要先安装最新的zlib、libpng、freetype和jpegsrc等库文件。而且中间还会穿插安装一些软件,读者可以按照本节提供的顺序安装。

autoconf-2.61.tar.gz

freetype-2.3.5.tar.gz

gd-2.0.35.tar.gz

jpegsrc.v6b.tar.gz

libmcrypt-2.5.8.tar.gz

libpng-1.2.31.tar.gz

libxml2-2.6.30.tar.gz

zlib-1.2.3.tar.gz

ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz

phpMyAdmin-3.0.0-rc1-all-languages.tar.gz

2、安装gcc、gcc-c++编译器

用gcc -v 命令检查安装时使用的编译工作是否存在

如系统未安装,在系统联网的情况下使用yum install gcc和yum install gcc-c++安装

3、卸载默认的低版本环境

目前发行的Linux操作系统版本中,如果选择默认全部安装,就已经安装了LAMP环境,但是版本相对都比较低。我们可以再安装一个LAMP环境和原来的并存,但是这样做没有必要,因为同时只能开启一个LAMP环境。所要我们要在安装之前,先应检查一下系统中是否已经安装了低版本的环境,如果已经安装过了,停止原来的服务运行,或者把原来的环境卸载掉。
a. 卸载Apache

rpm -qa | grep httpd

说明:检查是否安装了httpd软件包

rpm -e httpd-2.2.3-63.el5.centos –nodeps

说明:卸载软件包, –nodeps 如果有连带关系,也强制卸载

cd /etc/httpd/

rm -rf *

说明:到原来的apache安装目录下,将其所有的安装目录和文件都删掉

b. 卸载Mysql

rpm -qa | grep mysql

rpm -e mysql-5.0.77-4.el5_4.2 –nodeps

说明:卸载mysql

c. 卸载Php

rpm -qa | grep php

rpm -e php-common-5.1.6-27.el5 –nodeps

rpm -e php-ldap-5.1.6-27.el5 –nodeps

rpm -e php-cli-5.1.6-27.el5 –nodeps

rpm -e php-5.1.6-27.el5 –nodeps

说明:卸载PHP

4、关闭selinux,清空防火墙规则

5、使用ssh shell将windows下的13个源码包上传到/usr/local/src

6、解包

编写一个shell脚本tar.sh进行解包。

复制代码
#!/bin/sh  
cd /usr/local/src
ls *.tar.gz > ls.list        
for TAR in `cat ls.list`  
do
tar -zxvf $TAR
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298

<div><a title="复制代码" href="http://www.cnblogs.com/mchina/archive/2012/11/28/2778779.html"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></div>
</div>
执行脚本tar.sh进行解包

<strong>7、将源码包*.tar.gz全都删除</strong>

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112011423274.jpg" />

</div>
<strong>四、安装LAMP</strong>

<strong>1、安装libxml2</strong>

# cd /usr/local/src/libxml2-2.6.30
# ./configure --prefix=/usr/local/libxml2
# make &amp;&amp; make install

<strong>2、安装libmcrypt</strong>

# cd /usr/local/src/libmcrypt-2.5.8
# ./configure --prefix=/usr/local/libmcrypt
# make &amp;&amp; make install

<strong>3、安装zlib</strong>

# cd /usr/local/src/zlib-1.2.3
# ./configure
# make &amp;&amp; make install

<strong>4、安装libpng</strong>

# cd /usr/local/src/libpng-1.2.31
# ./configure --prefix=/usr/local/libpng
# make &amp;&amp; make install

<strong>5、安装jpeg6</strong>

这个软件包安装有些特殊,其它软件包安装时如果目录不存在,会自动创建,但这个软件包安装时需要手动创建。

# mkdir /usr/local/jpeg6
# mkdir /usr/local/jpeg6/bin
# mkdir /usr/local/jpeg6/lib
# mkdir /usr/local/jpeg6/include
# mkdir -p /usr/local/jpeg6/man/man1

# cd /usr/local/src/jpeg-6b
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make &amp;&amp; make install

<strong>6、安装freetype</strong>

# cd /usr/local/src/freetype-2.3.5
# ./configure --prefix=/usr/local/freetype
# make
# make install

<strong>7、安装autoconf</strong>

# cd /usr/local/src/autoconf-2.61
# ./configure
# make &amp;&amp; make install

<strong>8、安装GD库</strong>

# cd /usr/local/src/gd-2.0.35
# ./configure \
--prefix=/usr/local/gd2/ \
--enable-m4_pattern_allow \
--with-zlib=/usr/local/zlib/ \
--with-jpeg=/usr/local/jpeg6/ \
--with-png=/usr/local/libpng/ \
--with-freetype=/usr/local/freetype/

# make

<strong>出现错误:</strong>

make[2]: *** [gd_png.lo] Error 1
make[2]: Leaving directory `/usr/local/src/gd-2.0.35'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/gd-2.0.35'
make: *** [all] Error 2

<img alt="" src="http://images.cnitblog.com/blog/370046/201303/04150013-634a98a0882c4cb38ae1035a8fc81ae2.jpg" />

<strong>分析:</strong>这个问题是因为gd库中的gd_png.c这个源文件中包含png.h时,png.h没有找到导致的。

<strong>解决:</strong>

在编译文件里

# vi gd_png.c

将include “png.h” 改成 include “/usr/local/libpng/include/png.h

<img alt="" src="http://images.cnitblog.com/blog/370046/201303/04150117-5407c0fc8e9f4aa195edf6e0be2df122.jpg" />

其中/usr/local/libpng/为libpng安装路径。

# make install

<strong>9、安装Apache</strong>

# cd /usr/local/src/httpd-2.2.9
# ./configure \
--prefix=/usr/local/apache2 \
--sysconfdir=/etc/httpd \
--with-z=/usr/local/zlib \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--enable-static-support
# make &amp;&amp; make install

<strong>10、配置Apache</strong>

启动Apache
# /usr/local/apache2/bin/apachectl start

关闭Apache
# /usr/local/apache2/bin/apachectl stop

查看80端口是否开启
# netstat -tnl|grep 80

访问Apache服务器

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112013390510.jpg" />

添加自启动
# echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local

<strong>11、安装Mysql</strong>

添加一个mysql标准组
# groupadd mysql

添加mysql用户并加到mysql组中
# useradd -g mysql mysql

# cd /usr/local/src/mysql-5.0.41
# ./configure \
--prefix=/usr/local/mysql/ \
--with-extra-charsets=all

<strong>出现错误:</strong>

checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for termcap functions library... configure: error: No curses/termcap library found

<img alt="" src="http://images.cnitblog.com/blog/370046/201303/04160325-58efbf0c43f44f3ca9aaea7580e6f7e1.jpg" />

<strong>分析:</strong>缺少ncurses安装包

<strong>解决:</strong>

# yum install ncurses-devel

# make &amp;&amp; make install

<strong>12、配置Mysql</strong>

创建MySQL数据库服务器的配置文件
# cp support-files/my-medium.cnf /etc/my.cnf

用mysql用户创建授权表,创建成功后,会在/usr/local/mysql目录下生成一个var目录
# /usr/local/mysql/bin/mysql_install_db --user=mysql

将文件的所有属性改为root用户
# chown -R root /usr/local/mysql

将数据目录的所有属性改为mysql用户
# chown -R mysql /usr/local/mysql/var

将组属性改为mysql组
# chgrp -R mysql /usr/local/mysql

启动数据库
# /usr/local/mysql/bin/mysqld_safe --user=mysql &amp;

查看3306端口是否开启
# netstat -tnl|grep 3306

简单的测试
# /usr/local/mysql/bin/mysqladmin version

查看所有mysql参数
# /usr/local/mysql/bin/mysqladmin variables

设置Mysql开机自启动
# cp /usr/local/src/mysql-5.0.41/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chown root.root /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list mysqld
# chkconfig --levels 245 mysqld off

<strong>13、Mysql安全性设置</strong>

没有密码可以直接登录本机服务器
# /usr/local/mysql/bin/mysql -u root

查看mysql用户权限信息
mysql> select * from mysql.user;
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112014475213.jpg" />

删除非localhost的主机
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112014502137.jpg" />

刷新授权表
mysql> FLUSH PRIVILEGES;
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112014515397.jpg" />

为root用户添加密码
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('abc123');
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112015163569.jpg" />

再次进入Mysql客户端
# /usr/local/mysql/bin/mysql -u root -h localhost -p
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112015455738.jpg" />

关闭MySQL数据库
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112015461760.jpg" />

<strong>14、安装PHP</strong>

# cd /usr/local/src/php-5.2.6
# ./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-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 &amp;&amp; make install

<strong>15、配置PHP</strong>

创建配置文件
# cp php.ini-dist /usr/local/php/etc/php.ini

使用vi编辑apache配置文件
# vi /etc/httpd/httpd.conf

添加这一条代码
Addtype application/x-httpd-php .php .phtml
<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016070936.jpg" />

重启Apache
# /usr/local/apache2/bin/apachectl restart

以上安装步骤可以写成一个shell script,详细参考<a href="http://files.cnblogs.com/mchina/lamp.rar" target="_blank">http://files.cnblogs.com/mchina/lamp.rar</a>

<strong>16、安装Zend加速器</strong>

# cd /usr/local/src/ZendOptimizer-3.2.6-linux-glibc21-i386/
# ./install.sh

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016381120.jpg" />

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016363118.jpg" />

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016364425.jpg" />

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016370948.jpg" />

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016372021.jpg" />

<img alt="" src="http://pic002.cnblogs.com/images/2012/370046/2012112016372927.jpg" />

<strong>17、安装phpMyAdmin</strong>
<div>拷贝目录到指定位置并改名为phpmyadmin</div>
<div># cp -a  phpMyAdmin-3.0.0-rc1-all-languages /usr/local/apache2/htdocs/phpmyadmin</div>
<div># cd /usr/local/apache2/htdocs/phpmyadmin/</div>
<div># cp config.sample.inc.php config.inc.php</div>
<strong>18、配置phpMyAdmin</strong>
<div># vi /usr/local/apache2/htdocs/phpmyadmin/config.inc.php</div>
<div>将auth_type 改为http</div>
<div>
<div>
<pre>$cfg['Servers'][$i]['auth_type'] = 'http';
五、测试

1、编写info.php文件,查看php配置详细

vi /usr/local/apache2/htdocs/info.php


```

通过浏览器访问http://10.0.0.154/info.php,获得php的详细配置信息

2、Zend加速器信息

3、访问phpMyAdmin

至此LAMP环境配置完毕。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!