前些日子,获得一枚阿里云的优惠券,于是弄了台低配服务器,装centos6.2安全加固版。本来想用yum方式搭建lamp环境,结果装完php页面无法解析,搜索半天也不知道怎么解决,于是索性用源码包搭建lamp环境。手头有一个lamp源码安装的笔记,但是里边软件版本都很低,而且有些软件是用不着的,所以我边参考各软件官方的安装文档边写下此文。

1. 安装编译环境

软件编译需要用到gcc,但是阿里云的服务器默认不允许安装编译软件,修改/etc/yum.conf将下面一句话注释掉即可:exclude=kernel.之后yum install gcc gcc-c++ make安装好编辑环境。

2. 安装apache

apache依赖以下几个包

apr
apr-util
pcre

apr和apr-util可以从http://apr.apache.org/download.cgi获取相应源码,通过以下两条命令将它们解压到apache源码包的srclib目录里执行

1
2
tar zxvf apr-util-1.5.1.tar.gz -C ./httpd-2.4.3/srclib/
tar zxvf apr-1.4.6.tar.gz -C ./httpd-2.4.3/srclib/`

再进入srclib目录下将这两个文件夹改名,去掉版本号(安装文档要求)。

1
2
3
cd httpd-2.4.3/srclib/
mv apr-1.4.6 apr
mv apr-util-1.5.1 apr-util

至于pcre,为了省事,直接yum安装就好了yum install pcre pcre-devel

现在,进入apache源码包目录,执行以下命令进行安装

1
2
3
4
./configure --prefix=/usr/local/apache --with-included-apr
//两个参数分别指定安装目录,包含apr和apr-util包
make
make install

到此,apache已安装完成,运行apache/usr/local/apache2/bin/apachectl start

通过浏览器访问,apache正常工作。

3.安装mysql

mysql的源码可以从http://www.mysql.com/downloads/mysql/获取,注意选择下载源码包。

从5.5版本开始,编译mysql需要使用cmake,直接yum intall cmake搞定

通过以下命令安装mysql。参考了《Linux安装mysql——源码安装》

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 安装前的设置
shell> groupadd mysql
shell> useradd -r -g mysql mysql  #新建用户组和用户,方便管理
shell> mkdir -p /usr/local/mysql/data #建立数据库存放目录
# 开始安装
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> yum install ncurses-devel #cmake需要这玩意,直接yum搞定
shell> cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1
               #mysql默认安装到/usr/local/mysql下,所以此处可以不设置
shell> make
shell> make install
# 安装后的设置
shell> cd /usr/local/mysql
shell> chown -R root:mysql . #更改属主为root,属组为mysql
shell> chown -R mysql:mysql data #更改data目录属主为mysql,所属组为mysql
shell> scripts/mysql_install_db --user=mysql #生成测试数据库
# 可选命令 
shell> cp support-files/my-medium.cnf /etc/my.cnf #复制配置文件
shell> bin/mysqld_safe --user=mysql & #启动mysql
shell> cp support-files/mysql.server /etc/init.d/mysql #这样就可以service命令调用mysql服务了

cmake参数说明:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql       //安装目录
-DINSTALL_DATADIR=/usr/local/mysql/data         //数据库存放目录
-DDEFAULT_CHARSET=utf8                        //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci           //校验字符
-DEXTRA_CHARSETS=all                          //安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1                     //允许从本地导入数据

注意事项:

重新编译时,需要清除旧的对象文件和缓存信息。

1
2
3
make clean
rm -f CMakeCache.txt
rm -rf /etc/my.cnf

启动mysql后,记得要给mysql的root用户加密码

1
2
3
4
5
6
7
mysql>use mysql;
mysql>desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";  //为root添加远程连接的能力。
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password  from user where User='root'; 
mysql>flush privileges;
mysql>exit

4.安装php

安装php的关键在于configure时指定apache的目录和mysql的目录及开启一些常用功能

1
2
3
4
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql
#这里提示libxml2库有问题,直接yum install libxml2 libxml2-devel搞定
make
make install

参数说明:

-prefix=/usr/local/php 指定安装目录
-with-config-file-path=/usr/local/php/etc/ 指定配置文件目录
-with-apxs2=/usr/local/apache/bin/apxs 指定apache目录
-with-mysql=/usr/local/mysql/
-with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysql目录和mysqli目录
-enable-soap 开启soap协议支持,可选
-enable-mbstring=all 开启多字节支持
-enable-sockets 开启socket,可选
-with-pdo-mysql 这个最好加上,不然将来用pdo时是个麻烦

安装完php后,将配置文件复制到指定的目录下,进行相关设置

之后,修改apache的配置文件,使其支持php

重启apache服务,在htdocs里写个经典的phpinfo.php,测试成功。

至此,lamp环境搭建完成。有些库比如gd库等并不是lamp环境必须的东西,所以没有出现在本文中,将来需要的时候可以自行添加。