安装PHP5和PHP7(资源)

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

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请求来讲,这种模型是很高效很稳定的.html

 

一、 安装PHP5

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

• PHP官网www.php.netlinux

• 当前主流版本为5.6/7.1nginx

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

 

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

• 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.gzapache

• tar -zvxf php-5.6.30.tar.gzvim

• 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/切换到软件安装目录

查看安装包的大小。

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

到这一步就回车。

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

安装须要的包

安装好,须要的包,以后再编译一次。

安装openssl-devel

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

再编译安装一次。  

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

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

继续编译。

编译完成图。

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

 

 


二、 安装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              #这两个模块要注释掉其中一个

 

 

常见问题:

一、问题:须要安装的包名,不对。

 

二、使用yum install httpd就能够安装httpd,为何还要这样使用源码包安装呢?是由于有功能的差别吗?

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

 

三、./configure是否是就是在编译?

make就是编译后的安装?

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

生成makefile的做用是什么?

答:

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

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

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

没有Makefile 就没办法make

 

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

答:废弃啦。 去掉它吧。

 

五、编译不成功

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

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

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

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

 

七、make编译不了

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

安了expat要从新编译apr-util

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

九、安装mysql  再弄MariaDB的时候  容易冲突(缘由端口同样 都是21端口)

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

10.

 

答:

./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.缺乏依赖的包

答案:安装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

相关文章
相关标签/搜索