安装PHP5和PHP7(资源)

PHP总共有三个模块:内核、Zend引擎、以及扩展层;
PHP内核用来处理请求、文件流、错误处理等相关操作;
Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;
扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;

php-fpm是一个完全独立的程序,不依赖php-cgi,也不依赖php.因为php-fpm是一个内置了php解释器的FastCGI服务,启动时能够自行读取php.ini配置和php-fpm.conf配置.
附:PHP FastCGI进程管理器PHP-FPM的架构
一个master进程,支持多个pool,每个pool由master进程监听不同的端口,pool中有多个worker进程.
每个worker进程都内置PHP解释器,并且进程常驻后台,支持prefork动态增加.
每个worker进程支持在运行时编译脚本并在内存中缓存生成的opcode来提升性能.
每个worker进程支持配置响应指定请求数后自动重启,master进程会重启挂掉的worker进程.
每个worker进程能保持一个到MySQL/Memcached/Redis的持久连接,实现"连接池",避免重复建立连接,对程序透明.
master进程并不接收和分发请求,而是worker进程直接accpet请求后poll处理.
master进程不断调用epoll_wait和getsockopt是用来异步处理信号事件和定时器事件.
这里提一下,Nginx也类似,master进程并不处理请求,而是worker进程直接处理,
不过区别在于Nginx的worker进程是epoll异步处理请求,而PHP-FPM仍然是poll.
如果worker进程不够用,master进程会prefork更多进程,
如果prefork达到了pm.max_children上限,worker进程又全都繁忙,
这时master进程会把请求挂起到连接队列backlog里(默认值是511).
Nginx跟PHP-FPM分开,其实是很好的解耦,PHP-FPM专门负责处理PHP请求,一个页面对应一个PHP请求,
页面中所有静态资源的请求都由Nginx来处理,这样就实现了动静分离,而Nginx最擅长的就是处理高并发.
PHP-FPM是一个多进程的FastCGI服务,类似Apache的prefork的进程模型,
对于只处理PHP请求来说,这种模型是很高效很稳定的.

 

1、 安装PHP5

安装PHP5与PHP7参考链接:https://my.oschina.net/u/3707523/blog/1593424

• PHP官网www.php.net

• 当前主流版本为5.6/7.1

• cd /usr/local/src/                      # 安装软件存放的目录

 

• 安装插件预防安装过程遇见问题

• yum install openssl openssl-devel bzip2-devel libjpeg-devel libpng-devel libmcrypt-devel fretype freetype-devel epel-release libmcrypt-devel expat-devel                                                             #安装插件

•wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

• tar -zvxf php-5.6.30.tar.gz

• cd php-5.6.30

• ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

在解压的目录执行以下代码,配置编译参数:

  1. ./configure   
  2.   
  3. --prefix=/usr/local/php    #PHP安装目录  
  4.   
  5. --with-apxs2=/usr/local/apache2/bin/apxs    #表示使用Apache2.0以上版本  
  6.   
  7. --with-config-file-path=/usr/local/php/etc   #指定php.ini位置  
  8.   
  9. --with-mysql=/usr/local/mysql   #mysql安装目录,对mysql的支持   
  10.   
  11. --with-pdo-mysql=/usr/local/mysql      
  12. --with-mysqli=/usr/local/mysql/bin/mysql_config   #mysqli安装目录,优化支持  
  13. --with-libxml-dir   #打开libxml2库的支持   
  14.   
  15. --with-gd   #打开gd库的支持   
  16.   
  17. --with-jpeg-dir   #打开对jpeg图片的支持   
  18.   
  19. --with-png-dir   #打开对png图片的支持    
  20.   
  21. --with-freetype-dir   #打开对freetype字体库的支持   
  22.   
  23. --with-iconv-dir   #关闭iconv函数,种字符集之间的转换   
  24.   
  25. --with-zlib-dir    #打开zlib库的支持  
  26.   
  27. --with-bz2   #打开对bz2文件的支持   
  28.   
  29. --with-openssl   #openssl支持,加密传输时用到   
  30.   
  31. --with-mcrypt   #算法   
  32.   
  33. --enable-soap   
  34.   
  35. --enable-gd-native-ttf   #支持TrueType 字符串函数库  
  36.   
  37. --enable-mbstring   #多字节,字符串的支持   
  38.   
  39. --enable-sockets   #打开sockets支持   
  40.   
  41. --enable-exif   #图片的元数据支持  

• make && make install

• cp php.ini-production  /usr/local/php/etc/php.ini

实例:

编译安装php5,        cd /usr/local/src/切换到软件安装目录

210829_sW8Q_3803405.png

查看安装包的大小。

104911_9VCE_3803405.png

然后解压缩包。tar -zvxf php-5.6.30.tar.gz,切换目录cd php-5.6.30

到这一步就回车。

213511_5glX_3803405.png

使用echo $?查看上一个命令是否正确。

212000_TBPO_3803405.png

212137_Vaas_3803405.png

安装需要的包

214003_VGRv_3803405.png

安装好,需要的包,之后再编译一次。

212421_iHrE_3803405.png

安装openssl-devel

214127_QXNR_3803405.png

按照上面的指示,安装bzip软件包。

215922_2oBH_3803405.png

220206_rKfV_3803405.png

再编译安装一次。  

220411_Jfqx_3803405.png

220824_JVv1_3803405.png

继续编译。(当编译过程出现问题时,就安装需要的包,然后再编译,看看是否还有错误。)

220849_2ZAx_3803405.png

221203_1avT_3803405.png

先安装扩展源。命令:yun install -y epel-release。因为这个包在扩展源里里面。

170617_5JAS_3803405.png

221521_xh4x_3803405.png

继续编译。

221630_YlSZ_3803405.png

编译完成图。

221850_woq4_3803405.png

./configure 安装完成了,编译好后,下一步。

221936_Ih2O_3803405.png

 

 


2、 安装PHP7

• cd /usr/local/src/

• wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2

• tar jxf php-7.1.6.tar.bz2

• cd php-7.1.6

• ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc  --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif

• make && make install

• ls /usr/local/apache2.4/modules/libphp7.so

• cp php.ini-production  /usr/local/php7/etc/php.ini

实例:

安装PHP7

[root@ocalhost ~]# cd /usr/local/src/
[root@localhost ~] # wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
[root@localhosts ~]# tar -jvf nginx-1.10.2.tar.gz
[root@localhost ~]# cd php-7.1.6
[root@localhost /php-7.1.] # ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc  --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
[root@localhosts php-7.1.6]# make
[root@ocalhost php-7.1.6] # make install
[root@localhost php-7.1.6] # ls /usr/local/apache2.4/modules/libphp
libphp5.so   libphp7.so
[root@localhosts php-7.1.6]# ls /usr/local/apache2.4/modules/libphp7.so
/usr/local/apache2.4/modules/libphp7.so
[root@localhosts php-7.1.6]# du -sh !$
37M     /usr/local/apache2.4/modules/libphp7.so
[root@localhosts php-7.1.6]# /usr/local/php7/bin/php -m                  #查看php7加载的模块
[root@localhosts php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M        #查看apache加载的php 
[root@ocalhost php-7.1.6]# !vim
vim /etc/init.d/mariadb
[root@localhosts php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf
/php5.so                                                                    #搜索的内容
# LoadModule php5_module                  modules/libphp5.so              #注释掉php5
LoadModule php_module                    modules/libphp7.so              #这两个模块要注释掉其中一个

 

 

常见问题:

1、问题:需要安装的包名,不对。

212741_PJSC_3803405.png

 

2、使用yum install httpd就可以安装httpd,为什么还要这样使用源码包安装呢?是因为有功能的差异吗?

答:主要目的是要学习编译安装这个技能。 多数企业也是习惯使用编译安装的。

 

3、./configure是不是就是在编译?

make就是编译后的安装?

make和make && make install有什么区别?

生成makefile的作用是什么?

答:

./config 预编译,检查系统是否能够满足软件包编译环境,系统是否存在GCC编译器+依赖的软件库,生成Makefile文件。

make 是编译,基于第一步生产的makefile文件用于指定编译的步骤和顺序,包括编译时依赖的软件包记录,make生成二进制文件。

make install是安装,将二进制文件cp或安装到linux系统目录中,供用户或者程序去使用;

没有Makefile 就没办法make

 

4、配置安装的时候,提示: configure: WARNING: unrecognized options: --enable-gd-native-tty。 是说明 --enable-gd-native-tty 这个参数废弃了吗? 还是有其他的问题?

答:废弃啦。 去掉它吧。

 

5、编译不成功

]W8`{XGJ6DN}TR{​{$3R$M{Q.png

答:apr以及apr-util都需要编译安装。

6、当/usr/local/apache2.4/conf/httpd.conf中,php5和php7模块都没注释掉,会默认使用哪个呢?

答:会冲突,要注视掉一个。

 

7、make编译不了

165337_LxDV_3803405.jpg

答:缺xml解析依赖,安装expat-devel,命令:yum install -y expat-devel,

安了expat要重新编译apr-util

8、: configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决方案:
yum -y install epel-release
yum -y install php-mcrypt
yum -y install libmcrypt-devel

9、安装mysql  再弄MariaDB的时候  容易冲突(原因端口一样 都是21端口)

答: 你把/data/mysql 整个目录干掉。就不会冲突了.

10.

143826_aZGO_3803405.png

 

答:

./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,但并不是所有的tar包都是源代码的包,楼主可以ls看看有没有configure这个文件,也许你下的是二进制的包,如果是二进制的包,解压后直接就能使用。
二进制的mysql包,可以放到任意位置,所有的命令都是解压后目录的bin目录下,你要想在任意目录都能使用mysql的命令,需要把bin目录加到PATH环境变量中,比如你的mysql目录是/usr/local/mysql,你可以这样添加环境变量,vi ~/.bash_profile在文件的最后面添加
PATH=$PATH:/usr/local/mysql/bin
export PATH
然后执行source ~/.bash_profile
这样就可以在任意目录执行mysql的所有命令了

 

11.缺少依赖的包

08aeaa437d65b9eb8d31d03a57dac54bbf3.jpg

答案:安装yum install -y 


php中mysql,mysqli,mysqlnd,pdo到底是什么   http://blog.csdn.net/u013785951/article/details/60876816
查看编译参数  http://ask.apelearn.com/question/1295 

安装参考链接:https://www.cnblogs.com/nfyx/p/9086038.html

 

链接 :

修改Apache配置指定php配置文件php.ini的位置方法 :https://www.jb51.net/article/106111.htm 

https://www.jb51.net/article/58872.htm

 

PHP 性能分析第一篇: Intro to Xhprof & Xhgui : https://www.cnblogs.com/thrillerz/p/5072407.html 

PHP 性能分析第二篇: Xhgui In-Depth  : https://www.cnblogs.com/thrillerz/p/5072407.html 

PHP 性能分析第三篇: 性能调优实战  :https://www.cnblogs.com/thrillerz/p/5085307.html

PHP  : https://www.cnblogs.com/thrillerz/category/601879.html

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3803405/blog/1807011

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值