分享ubuntu 64 server 干净环境安装php5.3.10+mysql5.5.20+apache2.2.22(完)

黄袍披身 2012-02-05 11:49:47
加精
最近php 出了几个大的安全隐患,在熟悉了yum 和 apt-get install 这些懒人安装模式后,逐渐的忘记了以前配置和编译环境的事情,昨天因为changjay同学说能不能提供一些安装过程,看了看我们板块这方面的文章也少,花了一下午和一晚上时间终于把裸机(只有系统的ubuntu 64 server 11.10) 装上了最新的php apache mysql 其中用到的各种扩展模块 全部都是最新的版本。
因为是裸机 需要安装各种缺失的组件,实际上如果对自己的系统比较熟悉(以前安装模块位置很清楚),仅仅是升级php的话,顺利一次过 这个时间不会超过半个小时(实际上时间最多是10分钟)。剩下的时间都花在下载,找压缩包,以及配置错误重新配置编译上了。其中有一个文件存在bug 在gcc-4.6.1 语法错误的严格检查下报错,根据出错的提示,修改该c文件后顺利编译。

注:本文#符号代表在root 权限下操作提示符,#号后跟指令



直接说升级安装吧,因为安装升级新版本只需要重新编译一下新版本就可以了,升级之前需要将已经安装的模块列出来,以及安装的位置给记录清楚,可以通过echo phpinfo();来查看旧版本安装了什么扩展.
下载最新版本php
http://www.php.net/downloads.php

我下载的文件是
php-5.3.10.tar.gz

#tar -zxf php-5.3.10.tar.gz
#cd php-5.3.10
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/opt/mysql/server-5.5/ --with-curl=/usr/local/curl --enable-ftp --with-libxml-dir=/usr/local/libxml2 --with-expat-dir=/usr/lib --enable-soap --with-xsl=/usr/local/libxslt --enable-xslt --with-gd=/usr/local/gd2/ --with-jpeg-dir=/usr/local/jpeg8/ --with-zlib-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/local/freetype

这里如果照抄应该是不行的,因为除非你安装的路径和所有模块都一致,所以你参照我的配置 可以自己修改一下,一个是路径位置,另外一个是一些不需要的扩展。

这里稍微的解释一下配置参数的意思.
--prefix= 这里设置的是安装的位置
--with- 后面跟的是模块 模块后跟的=是模块已经编译安装好的路径


#make;make install

顺利的话编译完成安装好就可以了,因为配置文件都已经存在,也不需要进行修改,除非是从很旧的版本升级上来有参数需要变动的。

====================

下面是裸机安装整个环境的过程,可能有的忘记了,我慢慢回忆,将过程补充完整。

1.安装apache
比较简单,不需要太多的配置
下载最新稳定版本

#wget http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.22.tar.bz2
#tar -zxf httpd-2.2.22.tar.bz2
#cd httpd-2.2.22
# ./configure --prefix=/usr/local/apache --enable-modules=so --enable-rewrite
# make;make install

如果没有安装wget 需要先安装wget工具.
#apt-get install wget
实际上我很少使用 wget,当然顺带的推荐一下 aria2
#apt-get install aria2

使用方法
#aria2c -t x http://xxxxx
x 为多少个线程,自动支持断点继传,万一有事出门,关了电脑,下次继续使用这个指令他会自动从上次中断位置开始.


如果像我一样是裸机安装的话可能会有缺少某些环境的错误提示,发现什么就给装上什么,提示 gcc 不存在 那么 apt-get install gcc
这些编译环境我就直接用apt-get 了.这个还要自己编译的话那就太耗时间了。

安装好后,暂时不需要去启动apache.因为我们还有很多工作要做。

2.安装php以及各种需要使用的库
如果是升级php的话就一般不需要折腾这个步骤了。一般的库都轻松解决,不过也有碰上比较麻烦的,例如GD库。

a.安装GD库 -让php支持gif,png,jpeg格式
GD库需要以下模块的支持
jpeg8,libpng,freetype

首先是 jepg8 (网上大多数使用的是jepg6版本,此为最新模块)
#aria2ch -t 3 ttp://www.ijg.org/files/jpegsrc.v8d.tar.gz
#tar -zxf jpegsrc.v8d.tar.gz
#cd jpeg-8d
#./configure --prefix=/usr/local/jpeg8/ --enable-shared --enable-static
#make;make install

其次是 libpng
http://sourceforge.net/projects/libpng/files/libpng16/1.6.0beta10/libpng-1.6.0beta10.tar.gz/download
使用浏览器打开地址下载(网上大多是旧的1.2x版本,这里是最新的模块)

#tar -zxf libpng-1.6.0beta10.tar.gz
#cd libpng-1.6.0beta10
#cp ./scripts/makefile.std makefile
注意这里不需要配置,直接复制文件就可以了
#make; make install

最后是freetype
# wget http://cdnetworks-kr-1.dl.sourceforge.net/project/freetype/freetype2/2.4.8/freetype-2.4.8.tar.bz2
这是最新的版本
#bzip2 -d freetype-2.4.8.tar.bz2
#tar -xvf freetype-2.4.8.tar
#cd freetype-2.4.8
#./configure --prefix=/usr/local/freetype
#make; make install

现在需要的三个模块都已经编译好了,
正式开始安装GD库

#wget https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_34RC1.tar.gz
这是最新的版本

#tar -zxf GD_2_0_34RC1.tar.gz
#cd pierrejoye-gd-libgd-5551f61978e3/src/
#./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg8/ --with-png --with-zlib --with-freetype=/usr/local/freetype/
#make; make install

b.安装curl库
这是最新版本的curl
#wget http://curl.haxx.se/download/curl-7.24.0.tar.gz
#tar -zxf curl-7.24.0.tar.gz
#cd curl-7.24.0
#./configure --prefix=/usr/local/curl
#make; make install

3.安装php

安装php前我们还得解决libxml2 和 libxslt

a.libxml2
这也是最新的版本
#wget http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.30.tar.gz
#tar -zxf libxml2-2.6.30.tar.gz
#cd libxml2-2.6.30
#./configure --prefix=/usr/local/libxml2
#make; make install

b.libxslt
同样,最新的包
#wget http://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/libxslt-1.1.22.tar.gz
#tar -zxf libxslt-1.1.22.tar.gz
#cd libxslt-1.1.22
#./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2
#make; make install

好了,经过漫长的编译,终于要装php了
最新版本,出来没几天
#aria2c http://cn.php.net/distributions/php-5.3.10.tar.gz
#tar -zxf php-5.3.10.tar.gz
#cd php-5.3.10
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/opt/mysql/server-5.5/ --with-curl=/usr/local/curl --enable-ftp --with-libxml-dir=/usr/local/libxml2 --with-expat-dir=/usr/lib --enable-soap --with-xsl=/usr/local/libxslt --enable-xslt --with-gd=/usr/local/gd2/ --with-jpeg-dir=/usr/local/jpeg8/ --with-zlib-dir=/usr/lib --with-png --with-freetype-dir=/usr/local/freetype
#make; make install

路径注意核对之前编译的各个库的地址保持一致.mysql 也要先装好,这里就不说mysql的编译方法了.

编译完成
复制php.ini文件
#cp ./php.ini-development /usr/local/php/lib/php.ini

修改apache 支持 php
找到安装apache 路径/usr/local/apache/conf/httpd.conf
在 原有 AddType 下 增加

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

保存
# /usr/local/apache/bin/apachectl restart
重启apache

这个时候你就可以在 web 目录内
/usr/local/apache/htdocs
里增加一个php测试一下了
<?php
echo phpinfo();
?>


如果能输出类似 我帖子顶部的图样子 基本上恭喜你 安装过程就结束了,剩下是配置问题啦。

========================================
配置安装正常工作的php 如何增加其他模块?

比如本次安装,我们在安装结束后需要增加mysqli模块怎么处理?

切换路径
#cd /php-5.3.10/ext/mysqli
#phpize
#./configure –prefix=/usr/local/mysqli --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/opt/mysql/bin/mysql_config
#make; make install

编译完成后在mysqli 文件夹内的 modules 下会有mysqli.so
当然在编译完成的路径
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626
内有有这个mysqli.so 文件
修改php.ini文件加载此so 模块
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20090626/mysqli.so
重启apache 查看phpinfo 你就可以看到mysqli的支持了.

后来我还增加了memcache eaccelerator xdebug ...
mamcache 稍微麻烦些,需要libevent的支持,由于是裸体环境所以又编译了其他部分.具体的可以查看网上的教程,碰到问题再讨论吧。

修改:
1. 原配置 修改png 为 --with-png-dir=/usr/lib 发现不指定路径的话可能会无法显示png图片
2.安装gd部分还需要到下一级目录src 修正为 #cd pierrejoye-gd-libgd-5551f61978e3/src
3.开始提到的c错误文件 是 libpng 里的某个文件,文件名我已经忘记了,
解决方法是找到这个文件出错的位置 将原本传递2个参数 改成传递第三个参数
redir_handle = open(xxxx, xxx | xxxx,0777).重新make 即可.

update:
centOS 64
5.44
./configure --prefix=/usr/local/php --with-apxs2=/var/www/bin/apxs --with-mysql=/usr/local/mysql/ --with-curl=/usr/local/curl --enable-ftp --with-libxml-dir=/usr/local/libxml2 --enable-soap --with-xsl=/usr/local/libxslt --with-gd --with-png-dir=/usr/local/lib --with-jpeg-dir=/usr/local/jpeg8/ --with-zlib-dir=/usr/lib --with-freetype-dir=/usr/local/freetype --enable-mbstring

make时需要注意 出现错误
libz.a: could not read symbols: Bad value

编译时指定64位
CFLAGS="-O3 -fPIC" ./configure


5.4.0
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/opt/mysql/server-5.5/ --with-curl=/usr/local/curl --enable-ftp --with-libxml-dir=/usr/local/libxml2 --enable-soap --with-xsl=/usr/local/libxslt --with-gd --with-png-dir=/usr/local/lib --with-jpeg-dir=/usr/local/jpeg8/ --with-zlib-dir=/usr/lib --with-freetype-dir=/usr/local/freetype --enable-mbstring --enable-pdo --with-pdo-mysql --with-openssl


...全文
11760 104 打赏 收藏 转发到动态 举报
写回复
用AI写文章
104 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinbasara 2012-04-30
  • 打赏
  • 举报
回复
严重顶,期待WIN平台的说
YapingXin 2012-02-21
  • 打赏
  • 举报
回复
Debian用户飘过。。。
caigenphoenix 2012-02-21
  • 打赏
  • 举报
回复
支持下
kb5706 2012-02-21
  • 打赏
  • 举报
回复
楼主实在是太有耐心了…………这得需要多少时间才弄得出来啊??
黄袍披身 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 93 楼 falizixun2 的回复:]
我感觉用编译安装对技术要求比较高,而且安装起来经常会遇到依赖性问题,除非对某个开源版本相当熟悉了, 用yum系统能自动解决依赖关系,安装会比较顺利。两者区别何在呢?

不过我个人认为的最大的区别是YUM一般都是竟像源里的版本,所以用yum装,环境版本一般不会是最新的,另外稳定性应该也没有用编译方式安装来得高。但是这个也不好说,毕竟没有数据可以强有力证明!
[/Quote]

嗯,实际上也就是为了更新才有了这次编译过程。
相对来说自己编译的话就有比较多的自由度,能按照自己的实际需要进行编译,如果是yum...就一瞎子,人家给你弄好了你就用,可能连最后路径还得摸个半天...
至于稳定性,实际上除了新版本自身可能有性能上的差异外,如果对编译不熟悉,我想真不如官方的yum镜像,毕竟那都是经过官方特别调试后的版本。
对linux来说除非是重要的补丁,还真没必要升级个不停。
feixiang992 2012-02-20
  • 打赏
  • 举报
回复
收藏
谢谢分享
yyjoker 2012-02-20
  • 打赏
  • 举报
回复
嗯,实际上也就是为了更新才有了这次编译过程.
ymy1248227142 2012-02-20
  • 打赏
  • 举报
回复
路过,学习了
fengrz780811 2012-02-17
  • 打赏
  • 举报
回复
谢谢分享
kaifadi 2012-02-16
  • 打赏
  • 举报
回复

我感觉用编译安装对技术要求比较高,而且安装起来经常会遇到依赖性问题,除非对某个开源版本相当熟悉了, 用yum系统能自动解决依赖关系,安装会比较顺利。两者区别何在呢?

不过我个人认为的最大的区别是YUM一般都是竟像源里的版本,所以用yum装,环境版本一般不会是最新的,另外稳定性应该也没有用编译方式安装来得高。但是这个也不好说,毕竟没有数据可以强有力证明!
Mr.Zero_ 2012-02-16
  • 打赏
  • 举报
回复
表示支持

楼主辛苦了
  • 打赏
  • 举报
回复
支持一直走在APACHE上的朋友
Harlan 2012-02-16
  • 打赏
  • 举报
回复
不错,也许以后用得着,谢谢楼主分享。
lianshangnidec 2012-02-15
  • 打赏
  • 举报
回复
http://blog.csdn.net/lianshangnidec
路过看看,望大家互踩
Henry.6 2012-02-15
  • 打赏
  • 举报
回复
这个要标记一下,以前在linux下部署php不成功啊
computer19810 2012-02-15
  • 打赏
  • 举报
回复
非常好,感谢搂主
ynwenta 2012-02-14
  • 打赏
  • 举报
回复
谢谢分享,有时间再试试!
水果味 2012-02-14
  • 打赏
  • 举报
回复
没有尝试 想去实现一下 可是很多都不太明白
k331787521 2012-02-14
  • 打赏
  • 举报
回复
看不懂哈啊。。。不过还是留言
lwxlover 2012-02-14
  • 打赏
  • 举报
回复
谢谢分享。已收藏。
加载更多回复(50)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧