yum安装php7,及编译安装redis,memcache,mongodb扩展

AndyYang| 阅读:2917 发表时间:2017-01-05 20:55:20 phplinux
摘要:因为工作需要,所以升级下php7,于是就尝试的搭下,以此小记。
一、php7安装:
CentOS/RHEL 7.x:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

我拿了两台6.x的测试,另外一台安装提示:Package: php70w-mcrypt-7.0.12-1.w6.x86_64 (webtatic) Requires: libmcrypt.so()64的错误
多安装:rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

然后运行:
yum install php70w php70w-bcmath php70w-cli php70w-common php70w-fpm php70w-mcrypt php70w-mysqli php70w-pear php70w-devel php70w-mbstring php70w-gd php70w-opcache

以上参考:http://blog.csdn.net/dxywx/article/details/50609137

二、redis安装:
服务:
请查看历史博文 http://www.webyang.net/Html/web/article_174.html

扩展:
cd /opt
git clone https://github.com/phpredis/phpredis.git
/usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config
make && make install

三、memcache安装:
服务:
yum install memcached

扩展:
cd /opt
git clone https://github.com/websupport-sk/pecl-memcache.git
(介绍页:https://github.com/websupport-sk/pecl-memcache,很多人memcache扩展找不到)
/usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config
make && make install

四、mongodb安装:
服务:
查看历史博文:http://www.webyang.net/Html/web/article_274.html

不过有台机器启动的时候报了个错:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory。
解决方法:先执行yum whatprovides libstdc++.so.6(查看哪个安装包包含该库),打印如下:
[root@BJ-YZ-S-23106 bin]# yum whatprovides libstdc++.so.6
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirror.neu.edu.cn
libstdc++-4.4.7-16.el6.i686 : GNU Standard C++ Library
Repo        : base
Matched from:
Other       : libstdc++.so.6
然后再执行:yum install libstdc++-4.4.7-16.el6.i686

此处参考:https://my.oschina.net/xiaohai945/blog/491211

扩展:
https://pecl.php.net/package/mongodb(最新的1.2.2没装上去,1.1.9试了可以)
cd /opt
wget https://pecl.php.net/get/mongodb-1.1.9.tgz
tar -xzvf mongodb-1.1.9.tgz
cd mongodb-1.1.9
/usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config
make && make install

另外需要注意:php5.x的mongodb扩展可以是mongo、mongodb(我试了mongodb装不上,mongo可以),php7的mongodb扩展只支持mongodb,而且mongo扩展被抛弃,不提供更新,但是历史版本仍然可用。

五、其他:
vi /etc/php.ini
添加
extension=redis.so
extension=memcache.so
extension=mongodb.so

正常编译安装的都在 /usr/local/php底下,但是yum安装的则相对比较分散(这是我不太喜欢yum安装的一个原因)。

编译安装的php5.x:
/usr/local/php/sbin/php-fpm
/usr/local/php/etc/php-fpm.conf
/usr/local/php/bin/php

yum安装的php7:
/usr/sbin/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
/usr/bin/php

扩展:
/usr/lib64/php/modules/
php-fpm启动脚本:
vim /etc/init.d/php-fpm7
  1. #!/bin/bash
  2. #
  3. # Startup script for the PHP-FPM server.
  4. #
  5. # chkconfig: 345 85 15
  6. # description: PHP is an HTML-embedded scripting language
  7. # processname: php-fpm
  8. # config: /usr/local/php/etc/php.ini
  9. # Source function library.
  10. . /etc/rc.d/init.d/functions
  11. DESC="php-fpm daemon"
  12. NAME=php-fpm
  13. # php-fpm路径
  14. DAEMON=/usr/sbin/$NAME
  15. # 配置文件路径
  16. CONFIGFILE=/etc/php-fpm.conf
  17. # PID文件路径(在php-fpm.conf设置)
  18. PIDFILE=/var/run/$NAME/$NAME.pid
  19. SCRIPTNAME=/etc/init.d/$NAME
  20. # Gracefully exit if the package has been removed.
  21. test -x $DAEMON || exit 0
  22. rh_start() {
  23. $DAEMON -y $CONFIGFILE || echo -n " already running"
  24. }
  25. rh_stop() {
  26. kill -QUIT `cat $PIDFILE` || echo -n " not running"
  27. }
  28. rh_reload() {
  29. kill -HUP `cat $PIDFILE` || echo -n " can't reload"
  30. }
  31. case "$1" in
  32. start)
  33. echo -n "Starting $DESC: $NAME"
  34. rh_start
  35. echo "."
  36. ;;
  37. stop)
  38. echo -n "Stopping $DESC: $NAME"
  39. rh_stop
  40. echo "."
  41. ;;
  42. reload)
  43. echo -n "Reloading $DESC configuration..."
  44. rh_reload
  45. echo "reloaded."
  46. ;;
  47. restart)
  48. echo -n "Restarting $DESC: $NAME"
  49. rh_stop
  50. sleep 1
  51. rh_start
  52. echo "."
  53. ;;
  54. *)
  55. echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
  56. exit 3
  57. ;;
  58. esac
  59. exit 0

因为两个项目需要不同的php版本,所以我在一台服务器上装了两个php,一个编译的5.x,一个yum的7.0,php-fpm的一个监听端口改为9001,nginx也需要小调整下fastcgi_pass的解析,其他没变。

本文为AndyYang原创,转载请注明出处!
如果您觉得好,可以打赏作者:
如果您觉得累了,是否想看点美女养养眼:猛戳>>朋友帮
如果您觉得皮了,是否想来点神吐槽:猛戳>>iPhone查询中

已有0条评论

昵称:
邮箱:
iPhone查询中 - bbs.ipcxz.com 朋友帮 - www.pengyb.cn iPhone查询中 - bbs.ipcxz.com
反馈
微信订阅号