前言

上个周三在Linux课上,让搭建LAMP环境,当时没搭好。周末搭的时候遇到一个百度搜不到的报错,整了一天也没解决。而在昨天晚上我成功解决了那个报错(原因是zlib库安装问题。不说了,我太菜了)。
于是今天把LAMP完整的搭好了。并记录了下搭建过程:

1、准备环境

1.概述
L:Linux 提供底层操作系统平台
A:Apache 提供一个浏览器的支持
M:MySQL 提供数据库支持
P:PHP/Perl/Python 提供人性化显示

安装顺序:Linux->Apache->MySQL->PHP
2.环境
(1)安装编译工具gcc、gcc-c++
(2)关闭系统RPM安装包的Apache、MySQL的服务
(3)关闭SELinux、防火墙
(4)关闭不必要的服务
(5)拷贝源码包,通过脚本批量安装
(6)确认磁盘空间未满
源码安装
Centos之源码安装LAMP服务器_Linux
eject弹出光盘

2、环境安装

镜像包:LAMP.iso
1.连接lamp源码包镜像LAMP.iso。将lamp-php5.4复制到/usr/src/lamp

cp -rf /run/media/root/20150430_144909/lamp-php5.4 /usr/src/lamp

Centos之源码安装LAMP服务器_Linux_02
Centos之源码安装LAMP服务器_Linux_03
2.挂载Centos系统镜像到/media

mount /dev/cdrom /media

Centos之源码安装LAMP服务器_php_04
3.安装编译工具gcc

yum -y install gcc*

Centos之源码安装LAMP服务器_mysql_05
4.关闭系统RPM安装包的Apache、MySQL的服务
Centos之源码安装LAMP服务器_mysql_06
系统没有安装Apache、MySQL的服务。
如果安装了的话,使用service 服务名 stop 关闭服务
如果设置开机不启用chkconfig httpd off
5.关闭SELinux、防火墙

iptables -F #清空防火墙所有内容
vi /etc/selinux/config
setenforce 0 #临时状态设为不启用

Centos之源码安装LAMP服务器_Linux_07
Centos之源码安装LAMP服务器_mysql_08
6.关闭不需要的服务
7.脚本批量安装

cd /usr/src/lamp
#!/bin/bash
/bin/ls *.tar.gz >ls.list
/bin/ls *.tgz >> ls.list
for a in `cat ls.list`
do
    /bin/tar -zxf $a
done
rm -rf ls.list

Centos之源码安装LAMP服务器_php_09
Centos之源码安装LAMP服务器_php_10
8.确认磁盘空间
df -h
注意
目录名不要改
顺序不要改

3、安装一些软件包

1.安装python底层环境

yum -y install python-devel

Centos之源码安装LAMP服务器_apache_11

2.安装libxml2 解释器

启用对其他语言的支持

cd /usr/src/lamp/libxml2-2.9.1/
./configure --prefix=/usr/local/libxml2/
make
make install

Centos之源码安装LAMP服务器_mysql_12
Centos之源码安装LAMP服务器_linux_13
Centos之源码安装LAMP服务器_linux_14

3.安装libmcrypt

提供加密算法

cd /usr/src/lamp/libmcrypt-2.5.8/
./configure --prefix=/usr/local/libmcrypt/
make
make install

4.安装mhash

提供加密方式的扩展
先安装libltdl

cd /usr/src/lamp/libmcrypt-2.5.8/libltdl/
./configure --enable-ltdl-install #启用安装
make
make install

然后安装mhash

cd /usr/src/lamp/mhash-0.9.9.9/
./configure
make
make install

5.安装mcrypt

提供php相关的加密支持扩展

cd /usr/src/lamp/mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib \
./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
make
make install

Centos之源码安装LAMP服务器_apache_15

6.安装zlib

提供压缩用途的函数库
按照视频里的方法,没安装成功,于是修改了点

cd /usr/src/lamp/zlib-1.2.3/
./configure --prefix=/usr/local/zlib/
make
make install
export LDFLAGS="-L /usr/local/zlib/lib"
export CPPFLAGS="-I /usr/local/zlib/include"

7.安装libpng

提供png格式的图片的库

cd /usr/src/lamp/libpng-1.2.31/
./configure --prefix=/usr/local/libpng
make
make install

执行make发现
Centos之源码安装LAMP服务器_php_16
下载zlib-devel,然后重新执行make命令,成功了。

yum install zlib-devel

Centos之源码安装LAMP服务器_php_17

8.安装jpeg6

提供jpeg格式的图片的库

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
yum -y install libtool
cd /usr/src/lamp/jpeg-6b/
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
make
make install

Centos之源码安装LAMP服务器_mysql_18
Centos之源码安装LAMP服务器_php_19

9.安装freetype

提供字体相关引擎

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

10.安装GD

提供PHP图形扩展库。提供一个API。接收处理图片

mkdir /usr/local/gd2
cd /usr/src/lamp/gd-2.0.35
vi gd_png.c
./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/ --with-png=/usr/local/libpng/
make
make install

Centos之源码安装LAMP服务器_linux_20
Centos之源码安装LAMP服务器_Linux_21

4、开始安装

1.安装Apache

(1)安装

cd /usr/src/lamp/
cp -r apr-1.4.6 httpd-2.4.7/srclib/apr
cp -r apr-util-1.4.1 httpd-2.4.7/srclib/apr-util
cd /usr/src/lamp/httpd-2.4.7
./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc --with-include-apr --enable-so --enable-deflate-shared --enable-expires=shared --enable-rewrite=shared

Centos之源码安装LAMP服务器_Linux_22
执行结果,缺少pcre-config,进行安装:

cd /usr/src/lamp/pcre-8.34/
./configure
make
make install

Centos之源码安装LAMP服务器_php_23

cd /usr/src/lamp/httpd-2.4.7
./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc --with-include-apr --enable-so --enable-deflate-shared --enable-expires=shared --enable-rewrite=shared
make
make install

Centos之源码安装LAMP服务器_apache_24
安装成功
(2)启动apache2
1.启动apache2
Centos之源码安装LAMP服务器_Linux_25
遇到一个错误,原因:Apache安装是编译安装,安装路径不是默认路径,Apache服务没有添加到Linux服务中
2.解决方法:
1)将链接apachectl 复制到系统启动目录下并命名为httpd

cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/apache2

现在就可以使用service httpd start等命令了,但在linux服务列表还没有注册
2)使用chkconfig来注册apache服务,并且可以在linux的服务列表中看到chkconfig –list
在init.d的httpd链接文件中第2行添加如下注释:

vi /etc/rc.d/init.d/apache2

Centos之源码安装LAMP服务器_linux_26

意义:
35:在3级别和5级别(级别见文末TIPS)启动apache2
61:启动顺序为61号,S61
61:关闭顺序为61号,K61
当进行chkconfig --add apache2操作时,如果没有指定level那么就会来这个注释中取值

3)将httpd配置自启并加入linux服务监控

chkconfig --add apache2

解决方法参考:
把httpd加入到service并设置启动,参考过程中只把httpd改为apache2,其他不变。
3.再次启动apache2

service apache2 start

Centos之源码安装LAMP服务器_Linux_27
然后就发现启动成功了。
(3)测试
1.先自己在物理机上测试访问一下
Centos虚拟机ip:192.168.1.33
Centos之源码安装LAMP服务器_linux_28
Apache搭建成功,也可用Centos上的elinks工具进行测试。
2.安装elinks

yum -y install elinks

Centos之源码安装LAMP服务器_php_29
测试一下

elinks 192.168.1.33

Centos之源码安装LAMP服务器_apache_30
测试成功。

2.安装MySQL

(1)安装

yum -y install cmake
yum -y install bison #语法解释器

Centos之源码安装LAMP服务器_mysql_31
(2)建立mysql用户并安装mysql

useradd mysql
#查看id mysql
cd /usr/src/lamp/mysql-5.5.23/

[root@qwzf mysql-5.5.23]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSET=all -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql \
> -DMYSQL_TCP_PORT=3306

Centos之源码安装LAMP服务器_Linux_32
发现报错:
Centos之源码安装LAMP服务器_linux_33
解决方法:

yum -y install ncurses-devel
cd /usr/src/lamp/ncurses-5.9/
./configure --with-shared --without-debug --with-ada --enable-overwrite
make
make install
cd ..
rm -rf mysql-5.5.23 #删掉原来的目录
tar -zxf mysql-5.5.23.tar.gz #再次解压

Centos之源码安装LAMP服务器_php_34
Centos之源码安装LAMP服务器_apache_35
然后重新编译安装mysql
Centos之源码安装LAMP服务器_linux_36
安装成功,然后

make
make install

Centos之源码安装LAMP服务器_linux_37
(3)进入mysql目录更改权限

cd /usr/local/mysql
chown -R mysql:mysql . #改属主
/usr/local/mysql/scripts/mysql_install_db --user=mysql #数据库初始化

Centos之源码安装LAMP服务器_php_38
初始化成功,授权表和库的权限

chown -R root .
chown -R mysql data/
cp support-files/my-medium.cnf /etc/my.cnf #复制配置文件

Centos之源码安装LAMP服务器_php_39
(4)开启MySQL并查看

/usr/local/mysql/bin/mysqld_safe --user=mysql

Centos之源码安装LAMP服务器_apache_40
发现开启失败。杀死mysql的进程,再初始化数据库,然后启动

ps aux | grep mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql
netstat -anpt

Centos之源码安装LAMP服务器_apache_41
发现3306端口已经打开,数据库已经启动
添加mysql开机自启

vim /etc/rc.d/rc.local

Centos之源码安装LAMP服务器_Linux_42
(5)登陆mysql并设置密码
登录mysql

/usr/local/mysql/bin/mysql

Centos之源码安装LAMP服务器_linux_43
设置密码,然后登录mysql

/usr/local/mysql/bin/mysqladmin -u root password 'wmm123'
/usr/local/mysql/bin/mysql -u root -p

Centos之源码安装LAMP服务器_php_44
如果退出要删除history,因为会记录设置的密码

history -c

至此,MySQL安装测试成功。

3.安装PHP

(1)先安装上预先准备好的环境

yum -y install libtool*

(2)修改配置文件以支持数据库的内容

vim /usr/local/gd2/include/gd_io.h

Centos之源码安装LAMP服务器_apache_45
添加上这一行代码(为了使php读到数据库内容),保存退出
(3)安装php

cd /usr/src/lamp/php-5.4.25/

#指定之前安装过的软件路径
[root@qwzf php-5.4.25]# ./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-mcrypt=/usr/local/libmcrypt/ \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --without-pear

Centos之源码安装LAMP服务器_linux_46
执行成功,然后

make
make install

Centos之源码安装LAMP服务器_mysql_47
Centos之源码安装LAMP服务器_mysql_48
源码编译安装成功,然后配置文件
创建存放配置文件的目录并复制一下主配置文件

mkdir /usr/local/php/etc
cp php.ini-production /usr/local/php/etc/php.ini

添加指定的那一行,保存退出

vi /usr/local/apache2/etc/httpd.conf

Centos之源码安装LAMP服务器_mysql_49
重启Apache

/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
#/usr/local/apache2/bin/apachectl restart

好了,到这里Apache、MySQL和PHP安装成功。下面进行测试

5、进行测试

1.Apache与PHP

在/usr/local/apache2/htdocs/目录下创建一个index.php
写入PHP代码,这里直接写个查看phpinfo信息的:

<?php
  phpinfo();
?>

物理机上进行访问
Centos之源码安装LAMP服务器_linux_50
测试成功,说明Apache能与PHP一起工作

2.Apache与MySQL

写一个qwzf.php,内容如下:

<?php
$link=mysql_connect('localhost','root','wmm123');
if($link) echo "I am wmm!!!";
mysql_close();
?>

物理机上访问
Centos之源码安装LAMP服务器_apache_51
说明MySQL能与Apache一起工作

3.安装phpmyadmin

为了方便数据库管理,可以安装一下phpmyadmin

cd /usr/src/lamp/
cp -r phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin

进入phpmyadmin目录,生成配置文件

cd /usr/local/apache2/htdocs/phpmyadmin
cp config.sample.inc.php config.inc.php 
#修改访问类型
vim config.inc.php 
#将cookie改成http

Centos之源码安装LAMP服务器_linux_52
Centos之源码安装LAMP服务器_apache_53
访问phpmyadmin,输入mysql用户和密码,看到如下界面
Centos之源码安装LAMP服务器_php_54

到此,LAMP环境完全搭建成功。

感悟

了解了源码安装的整个过程,又增强了自己解决报错的能力。