首先确认系统环境:centos6.4 min版本

1、安装需要的开发环境
yum groupinstall "Development Tools" "Server Platform Development" -y
2、下载并安装依赖的包(由于编译的是httpd2.4的版本对apr有更高要求)
3、开始编译安装依赖包
同步时间:ntpdate time.nist.gov
tar -xf apr-1.6.2.tar.gz
cd apr-1.6.2
./configure --prefix=/usr/local/apr
make && make install
 
tar xf apr-util-1.6.0.tar.gz
cd apr-util-1.6.0
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
如果在apr-util编译时报错:

解决办法:yum install expat-devel
4、编译httpd2.4
tar xf httpd-2.4.25.tar.gz
cd httpd-2.4.25
由于系统上已经安装了rpm包的httpd所以存在用户apache
[root@zabbix httpd-2.4.25]# id apache
uid=48(apache) gid=48(apache) groups=48(apache)
[root@zabbix httpd-2.4.25]# rpm -qa pcre*
pcre-7.8-6.el6.x86_64
安装依赖包pcre-devel
yum -y install pcre-devel
./configure --prefix=/usr/local/apache2.4 --sysconf=/etc/httpd2.4 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make && make install
 
将2.4启动的脚本添加到环境变量:
[root@zabbix local]# vim /etc/profile.d/apache2.sh
export PATH=/usr/local/apache2.4/bin:$PATH
 
[root@zabbix local]# . /etc/profile.d/apache2.sh
[root@zabbix local]# echo $PATH
/usr/local/apache2.4/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
 
启动httpd2.4服务:
apachectl start
 
编译安装mysql:
1、创建相应的账户和组
cat /etc/passwd|grep mysql 查看是否存在mysql账号
groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M mysql 创建mysql组和mysql账号
2、创建mysql数据目录,并授权
mkdir /data/mydata -pv 创建mysql数据目录
chown -R mysql:mysql /data/mydata 将数据目录的所属组所属用户修改
由于编译的是mysql5.6的版本,所以需要使用cmake
3、下载并安装cmake
下载cmake:
安装cmake:
tar xf cmake-3.7.2.tar.gz
cd cmake-3.7.2
./bootstrap
gmake
make install
4、编译安装mysql
下载mysql源文件:
tar xf mysql-5.6.36.tar.gz
cd mysql-5.6.36
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mydata \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DWITH_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
5、初始化mysql
chown -R mysql:mysql /usr/local/mysql 修改属组属主
cd /usr/local/mysql/scripts 执行数据初始化
./mysql_install_db --user=mysql --datadir=/data/mydata 执行此步报错:
[root@wadeson scripts]# ./mysql_install_db --user=mysql --datadir=/data/mydata
FATAL ERROR: Could not find ./bin/my_print_defaults
 
If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.
 
If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.
解决办法:
解决办法:加上--basedir=/usr/local/mysql
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mydata
 
cp support-files/my-default.cnf /etc/my.cnf 复制配置文件
增加到配置文件:
【mysqld】
basedir = /usr/local/mysql
datadir = /data/mydata
socket = /tmp/mysql.sock 增加套接字文件
cp support-files/mysql.server /etc/init.d/mysqld 复制启动脚本
vim /etc/profile.d/mysqld.sh      
export PATH=$PATH:/usr/local/mysql/bin
. /etc/profile.d/mysqld.sh
chkconfig --add mysqld
chkconfig --list|grep mysqld
[root@wadeson mysql]# service mysqld start
Starting MySQL.Logging to '/data/mydata/wadeson.err'.
. SUCCESS!
[root@wadeson mysql]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4086/sshd
tcp 0 0 :::22 :::* LISTEN 4086/sshd
tcp 0 0 :::3306 :::* LISTEN 87380/mysqld
 
编译安装php5.6版本:
1、下载php源码包:http://php.net/releases/

tar xf php-5.6.30.tar.bz2

cd php-5.6.30

编译前yum安装必要的环境

yum install -y libxml2 libxml2-devel bzip2-devel
然后执行编译:
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-mcrypt --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-gd
报错如下:
configure: error: jpeglib.h not found.
解决办法:
yum -y install libjpeg-devel
继续执行,依然报错:
configure: error: png.h not found.
解决办法:
yum -y install libpng-devel
再次执行,还是报错:
configure: error: freetype-config not found
解决办法:
yum install freetype-devel
依然执行./configure,报错:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决办法:
tar xf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make && make install
最后再次执行编译参数,成功
make && make install
 
上述部分编译参数解释:
--prefix=/usr/local/php:定义安装的路径
--with-mysql=/usr/local/mysql :指定mysql安装目录
--with-mysqli=/usr/local/mysql/bin/mysql_config
--enable-xml :支持扩展标记语言
--enable-sockets :支持sockets
--with-mcrypt :提供加密支持
--with-config-file-path=/etc :在/etc目录下生成配置文件/etc/php.ini
--with-config-file-scan-dir=/etc/php.d :在/etc/php.d目录下有分配置文件
--with-bz2 :支持bz2压缩
--enable-maintainer-zts:支持线程的模块,如果使用prefork请不要加入该选项,可通过命令httpd -V显示当前加载的模块
查看当前编译的httpd2.4支持的mpm:
[root@wadeson ~]# /usr/local/apache2.4/bin/httpd -V
AH00557: httpd: apr_sockaddr_info_get() failed for wadeson
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Server version: Apache/2.4.25 (Unix)
Server built: Jul 7 2017 00:38:29
Server's Module Magic Number: 20120211:67
Server loaded: APR 1.6.2, APR-UTIL 1.6.0
Compiled using: APR 1.6.2, APR-UTIL 1.6.0
Architecture: 64-bit
Server MPM: prefork 支持的prefork模块,于是php没有上述选项
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr/local/apache2.4"
-D SUEXEC_BIN="/usr/local/apache2.4/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/httpd2.4/mime.types"
-D SERVER_CONFIG_FILE="/etc/httpd2.4/httpd.conf"
 
复制php.ini主配置文件:
cp php.ini-production  /etc/php.ini
然后将httpd与php进行连接,因为httpd是编译安装的2.4的版本:
[root@wadeson httpd2.4]# pwd
/etc/httpd2.4
[root@wadeson httpd2.4]# ll
total 124
drwxr-xr-x. 2 root root 4096 Jul 7 00:40 extra
-rw-r--r--. 1 root root 18991 Jul 7 16:22 httpd.conf
-rw-r--r--. 1 root root 18759 Jul 7 15:46 httpd.conf.bak
-rw-r--r--. 1 root root 13077 Jul 7 00:40 magic
-rw-r--r--. 1 root root 60855 Jul 7 00:40 mime.types
drwxr-xr-x. 3 root root 4096 Jul 7 00:40 original
在http.conf配置文件中加入以下:
DirectoryIndex index.html index.php
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php
AddType text/html .php
并且确认php的模块已经被启用:(因为这种模式是和httpd模块的方式)
LoadModule php5_module modules/libphp5.so (这是针对prefork模式)
区分:
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
 
然后在网站目录编写index.php测试页面:
[root@wadeson htdocs]# cat index.php
<?php
phpinfo();
?>

然后测试是否与数据库mysql连接:
[root@wadeson htdocs]# vim index.php
<?php
phpinfo();
$link = mysql_connect('127.0.0.1','root','');
if ($link)
echo "successful";
else
echo "failure";
mysql_close()
?>
/usr/local/php/bin/php -i:查看所有配置信息
 
为php5.6增加xcache模块:
tar xf xcache-3.0.1.tar.gz
cd xcache-3.0.1
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install 后执行报错
报错如下:
.0.1/xcache.c -fPIC -DPIC -o .libs/xcache.o
/root/tools/xcache-3.0.1/xcache.c: In function ¡®zif_xcache_get_special_value¡¯:
/root/tools/xcache-3.0.1/xcache.c:324: error: ¡®IS_CONSTANT_ARRAY¡¯ undeclared (first use in this function)
/root/tools/xcache-3.0.1/xcache.c:324: error: (Each undeclared identifier is reported only once
/root/tools/xcache-3.0.1/xcache.c:324: error: for each function it appears in.)
make: *** [xcache.lo] Error 1
上面的内容会报错,原因是php5.6  xcache3.0并不支持,所以官网下载最新版,所以还是多去官网或权威网站比较好
于是下载新版本:
tar xf xcache-3.2.0.tar.gz
cd xcache-3.2.0
/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
出现下面所示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
[root@wadeson xcache-3.2.0]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
total 1264
-rwxr-xr-x. 1 root root 589332 Jul 7 15:46 opcache.so
-rwxr-xr-x. 1 root root 701379 Jul 7 16:48 xcache.so
 
把主配置文件放到php的碎片配置小分队
[root@wadeson xcache-3.2.0]# mkdir /etc/php.d
[root@wadeson xcache-3.2.0]# cp xcache.ini /etc/php.d/
修改/etc/php.d/xcache.ini文件中的指定地方
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xcache.so
重启服务:
[root@wadeson httpd2.4]# /usr/local/apache2.4/bin/apachectl restart

于是整个lamp环境已经编译成功

note:

如果在编译php遇见了其他错误可以参考如下内容:

http://www.poluoluo.com/jzxy/201505/364819.html

lamp编译详解的更多相关文章

  1. LAMP PHP 详解

    目录 LAMP PHP 详解 LAMP 请求流程与原理 PHP 简介 PHP Zend Engine Opcode php 配置详解 php 加速器 部署LAMP 使用 php 连接 mysql 最基 ...

  2. 2010_3_1最新 完整 FFMPEG 编译详解

    在网上看了很多编译详解,都很零散.经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴. 第一步:准备编译平台. 需要 一个 MinGW 和 一个 MSYS 安装包 以及 ...

  3. Android 6.0 RK3288 ROM编译详解+命令详解【转】

    本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...

  4. Android编译详解之lunch命令 【转】

    本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载▼ 标签: it 分类: android内核剖析     Android的优势就在于其开源,手机和 ...

  5. C语言001--hello world编译详解

    1.编写hello.c程序,并编译运行 book@100ask:~/linux/c01$ cat hello.c -n 1 #include <stdio.h> 2 3 int main( ...

  6. 02.PHP7.x编译详解

    #php7编译安装安装 ``` useradd -M -s /sbin/nologin www yum -y install openssl-devel bzip2-devel curl-devel ...

  7. 01.PHP5.x编译详解

    ##PHP5.5编译安装 ``` wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...

  8. CentOS 7.4下源码编译安装配置LAMP环境详解

    CentOS 7.4搭建LAMP,LAMP:Linux.Apache.MySQL.PHP. 目录:第一部分 准备工作第二部分 安装Apache服务第三部分 安装MySQL服务第四部分 搭建PHP运行环 ...

  9. CentOS下搭建LAMP环境详解

    前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS ...

随机推荐

  1. java中计算时间差

    Calendar cale = null; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ...

  2. java发展历程、常用dos命令与jDK工具使用

    Java菜鸟学习之旅 1.勤敲代码 2.必须将课堂上讲的内容学到位 2.1 学到会用 2.2 在学会之前不要自作主张 2.3 当天课程当天完成 3.能说会道 3.1 善于表达 3.2 学会的都能讲 4 ...

  3. 搜索R包和查看包的技巧

    1.R怎么搜包 # 安装sos包 install.packages("sos") # 导入sos包 library(sos) # 使用函数findFn() 函数里面传入关键字来搜索 ...

  4. eclipse中设置在编译运行项目之前自动保存修改的文件

    Window -> Preferences -> General -> Workspace -> “Save automatically before build” Windo ...

  5. ORACLE内存结构之SGA

    SGA的管理: SQL> show parameter sga NAME                                 TYPE        VALUE ---------- ...

  6. [iPhone硬件]-GPS定位的使用

    iPhone中GPS定位如何使用 关键词 1.info.plist配置授权描述 2.引入库 3.CLLocationManager的使用 info.plist配置 在info.plist中根据情况加入 ...

  7. (转)聊聊Servlet、Struts1、Struts2以及SpringMvc中的线程安全

    前言 很多初学者,甚至是工作1-3年的小伙伴们都可能弄不明白?servlet Struts1 Struts2 springmvc 哪些是单例,哪些是多例,哪些是线程安全? 在谈这个话题之前,我们先了解 ...

  8. riemann的安装和使用

    Riemann monitors distributed systems. 具体介绍就不多说了,一个分布式的监控系统.可以接收各种event上报,然后通过强大的脚本和插件,展示曲线,柱状,饼图等来对系 ...

  9. GROUP BY 和 ORDER BY一起使用

    转:http://lzfhope.blog.163.com/blog/static/636399220092554045196/ 环境:oracle 10g单单group by 或者order by本 ...

  10. mysql应用实例

    目录: 表结构 sql练习 1.表结构 SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- T ...