lnmp环境配置之编译源码安装PHP的方法

昝辉Zac Zac的SEO博客,坚持12年,优化成为生活。

PHP是lnmp环境中必不可少的一个关键的东西了,我们不管是nginx,apache要执行php都需要安装php了,下面小编为各位介绍编译源码安装PHP的方法,希望文章可以帮助到各位.

我们使用vagrant建立虚拟环境,这里使用"chef/centos-6.5"这个box,这个box是一个比较纯净的CentOS-6.5系统,关于Vagrant如何使用,请参考Vagrant快速入门.

  1. $vagrantinitchef/centos-6.5
  2. $vagrantup

执行上述命令之后,就已经建立了一个centos-6.5的虚拟机并且启动了,这时我们使用命令ssh连接到虚拟机.

$ vagrant ssh

提示符变成了[vagrant@localhost ~]$,说明成功连接到了虚拟机,接下来,我们就可以开始PHP开发环境的安装配置了.

如果不使用vagrant,可以自己安装一个CentOS系统或者是虚拟机,以下步骤与vagrant没有直接关系.

编译源码安装PHP

首先,下载PHP安装文件,我们使用源码编译安装 PHP 5.4.35,到PHP官网下载PHP安装文件.

  1. $wgethttp://jp1.php.net/distributions/php-5.4.35.tar.gz
  2. $tar-zxvfphp-5.4.35.tar.gz
  3. $cdphp-5.4.35

接下来对PHP源码进行编译安装,进入到源码目录之后,执行下列命令安装.

注意:如果需要mysql的话,最好是在变异的时候就提供参数并且指定为使用mysqlnd库,否则单独编译 扩展的形式安装只能使用MySQL Client Library.

  1. $./configure--prefix=/usr/local/php--with-config-file-path=/usr/local/php/etc--with-iconv-dir--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--disable-rpath--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--with-curl--with-curlwrappers--enable-mbregex--enable-fpm--enable-mbstring--with-mcrypt--enable-ftp--with-gd--enable-gd-native-ttf--with-openssl--with-mhash--enable-pcntl--enable-sockets--with-xmlrpc--enable-zip--enable-soap--with-gettext--with-mysql=mysqlnd--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd

执行上述命令之后,提示如下错误:

configure: error: no acceptable C compiler found in $PATH

这是因为没有安装gcc编译器,我们需要先安装gcc.

$ sudo yum install gcc

安装之后,重新编译,这次出现了新的错误:

configure: error: xml2-config not found. Please check your libxml2 installation.

提示找不到libxml2,没问题,安装一下就行了.

$ sudo yum install libxml2-devel

继续重新编译,编译安装的过程就是不断解决问题的过程,每次遇到问题,我们去解决问题,没有什么是能难道我们的.

configure: error: Cannot find OpenSSL's <evp.h>

因为我们启用了--with-openssl,因此,我们需要安装openssl-devel.

$ sudo yum install openssl-devel

再次编译,提示:

  1. configure:error:Pleasereinstallthelibcurldistribution-
  2. easy.hshouldbein<curl-dir>/include/curl/

错误已经说明了,安装一下libcurl.

$ sudo yum install libcurl-devel

继续编译,我们还会遇到如下错误:

configure: error:jpeglib.h not found.

因为我们的编译参数中提供了对GD库的支持,因此需要安装以下几个库.

  1. $sudoyuminstalllibjpeglibjpeg-devel
  2. $sudoyuminstalllibpnglibpng-devel
  3. $sudoyuminstallfreetypefreetype-devel

安装了这么多lib,总该成功了吧,再次编译,悲剧的是,又报错了:

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

我们还需要安装libmcrypt,这个lib在yum中是没有的,因此需要下载下来,手动编译.

  1. $wgetftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
  2. $tar-zxvflibmcrypt-2.5.7.tar.gz
  3. $cdlibmcrypt-2.5.7
  4. $./configure
  5. $make
  6. $sudomakeinstall

好了,我们再编译一次,这次一定要成功了,再不成功就不玩了,幸运的是,这次configure成功,一鼓作气,编译安装:

  1. $make
  2. $sudomakeinstall

一切都顺利的话,我们已经成功编译并且安装了PHP,安装目录在/usr/local/php,最后,我们需要提供php的配置文件php.ini.

  1. $sudocpphp.ini-development/usr/local/php/etc/php.ini
  2. $sudomv/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf

PHP的安装目录由configure的--prefix=目录参数指定,另外,这里我们搭建的是用于开发的环境,如果需要作为生产环境,则需要注意一些安全性问题,同时,建议不要拷贝php.ini-development文件了,而是拷贝php.ini-production文件.

查看一下PHP的版本:

  1. $/usr/local/php/bin/php--version
  2. PHP5.4.35(cli)(built:Nov25201408:23:11)
  3. Copyright(c)1997-2014ThePHPGroup
  4. ZendEnginev2.4.0,Copyright(c)1998-2014ZendTechnologies

为了操作方便,可以将php的bin目录添加到环境变量,编辑~/.bash_profile,在export PATH上面添加下面一行内容:

PATH=$PATH:/usr/local/php/bin

然后执行如下命令:

$ source ~/.bash_profile

这样,我们就可以直接使用命令,而不需要添加目录了.

小技巧:如何查看PHP使用的是哪个配置文件?

  1. $strace-eopenphp2>&1|grepphp.ini
  2. open("/usr/local/php/bin/php.ini",O_RDONLY)=-1ENOENT(Nosuchfileordirectory)
  3. open("/usr/local/php/etc/php.ini",O_RDONLY)=3

如果没有安装strace命令,使用yum install strace 安装即可.

安装扩展

安装完成基本的PHP了,接下来我们需要安装一些符合业务需要的扩展,安装yaf开发框架扩展,执行以下命令,使用pecl进行安装:

$ sudo /usr/local/php/bin/pecl install yaf

不出意外的话,上述命令足以完成yaf的安装,接下来,需要在php.ini文件中启用yaf扩展,编辑/usr/local/php/etc/php.ini,加入以下内容.

extension=yaf.so

安装mysql和mysqli扩展

安装mysql相关扩展,推荐使用mysqlnd库,但是找了半天,实在是没有找到好的办法单独编译mysql扩展使用 mysqlnd库,最后在文档中看到下面这段内容:

  1. TheMySQLdatabaseextensionsmustbeconfiguredtousetheMySQLClientLibrary.InordertousetheMySQLNativeDriver,PHPneedstobebuiltspecifyingthattheMySQLdatabaseextensionsarecompiledwithMySQLNativeDriversupport.ThisisdonethroughconfigurationoptionspriortobuildingthePHPsourcecode.

这里说的是如果安装mysql扩展的话,只能使用MySQL Client Library,百度/谷歌有好多安装教程,如果希望使用mysqlnd库的话,只能在编译PHP的时候指定,因此,好像是只能重新编译PHP了,如果你有好的办法,可以交流交流.

安装eAccelerator扩展

  1. $wgethttps://github.com/eaccelerator/eaccelerator/archive/master.zip-Oeaccelerator.zip
  2. $sudoyuminstallunzip
  3. $unzipeaccelerator.zip
  4. $cdeaccelerator-master/
  5. $phpize
  6. $./configure--enable-shared
  7. $make
  8. $sudomakeinstall

在php.ini中增加eAccelerator的配置信息:

  1. zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"
  2. eaccelerator.shm_size="16"
  3. eaccelerator.cache_dir="/tmp/eaccelerator"
  4. eaccelerator.enable="1"
  5. eaccelerator.optimizer="1"
  6. eaccelerator.check_mtime="1"
  7. eaccelerator.debug="0"
  8. eaccelerator.filter=""
  9. eaccelerator.shm_ttl="0"
  10. eaccelerator.shm_prune_period="0"
  11. eaccelerator.shm_only="0"

执行php -v可以看到:

  1. $php-v
  2. PHP5.4.35(cli)(built:Nov25201410:40:18)
  3. Copyright(c)1997-2014ThePHPGroup
  4. ZendEnginev2.4.0,Copyright(c)1998-2014ZendTechnologies
  5. witheAcceleratorv1.0-dev,Copyright(c)2004-2012eAccelerator,byeAccelerator

安装Xdebug扩展:

  1. $wgethttp://github.com/xdebug/xdebug/archive/master.zip-Oxdebug.zip
  2. $unzipxdebug.zip
  3. $cdxdebug-master
  4. $/usr/local/php/bin/phpize
  5. $./configure--enable-xdebug
  6. $make
  7. $sudomakeinstall

接下来配置php.ini,加入该扩展:

  1. zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
  2. xdebug.remote_enable=1
  3. xdebug.remote_host=localhost
  4. xdebug.remote_port=9000
  5. xdebug.remote_connect_back=1
  6. ;xdebug.remote_autostart=1

安装OpCache扩展:因为eAccelerator已经没人维护好长时间了,所以,可以考虑使用OpCache.

  1. $wgethttp://pecl.php.net/get/zendopcache-7.0.3.tgz
  2. $tar-zxvfzendopcache-7.0.3.tgz
  3. $cdzendopcache-7.0.3
  4. $phpize
  5. $make
  6. $sudomakeinstall

接下来需要配置php.ini,启用该扩展.

注意:如果与XDebug一起使用的话,需要确保OpCache在Xdebug之前加载.

  1. zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/opcache.so"
  2. opcache.memory_consumption=128
  3. opcache.interned_strings_buffer=8
  4. opcache.max_accelerated_files=4000
  5. opcache.revalidate_freq=60
  6. opcache.fast_shutdown=1
  7. opcache.enable_cli=1

相关广告
  • lnmp环境配置之编译源码安装PHP的方法 lnmp环境配置之编译源码安装PHP的方法 lnmp环境配置之编译源码安装PHP的方法
相关阅读

lnmp环境配置之编译源码安装PHP的方法

2019/10/10 17:46:00 | 谷歌SEO算法 | GDPR