php编译安装与配置
- php编译安装与配置
- ===========================================
- 官网:http://php.net/
- 官网下载:http://php.net/downloads.php
- ===========================================
- 一:了解与准备
- 1.1:Apache(httpd) nginx 与 php 连接方式:
- httpd与php:
- 1:php 作为 httpd 模块
- 2:fastcgi(php-fpm)
- 3:cgi(此处不讲解)
- nginx与php:
- 1:fastcgi(php-fpm)
- 1.2:PHP安装与依赖:
- ~]# yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
- 1.3:备注:
- 1:上面的依赖基本解决所需要的依赖。
- 2:编译安装完成后可以增减所支持的php模块,此处所编译的模块已经非常完备。
- 3:需要编译单个模块,查看php模块编译方式:php模块编译
- 4:下面编译安装的配置选项:
- --prefix=/usr/local/php7 主程序文件路径
- --sysconfdir=/etc/php7 配置文件路径
- --with-config-file-path=/etc/php7 php.ini 文件路径
- --with-apxs2=/usr/local/httpd/bin/apxs 以 httpd 模块编译时需要指定 httpd 的 apxs 文件路径。
- 其他的配置可以按自己需求指定,这几个选项也可以使用默认配置。
- 5:php7移除了 mysql 扩展,php7仅能是用 mysqli 和 pdo_mysql。php5可以使用。
- php5编译时加入选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)连接
- 6:此处以 CentOs7 编译 php7 为示例,配合讲解php5安装的要点。
- 7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(生产)
- 编译完成后选择自己需要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
- 如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
- 默认为php目录下的 lib 目录。
- 8:PHP安装与依赖中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止进程。
- 二:php编译与配置:
- 2.1: httpd 模块
- 备注:需要事先存在httpd ,编译指定 apxs 文件位置。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
- php7:
- ~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
- php5.6:(仅增加了选项 --with-mysql=mysqlnd)
- ~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
- 2.2:fastcgi php-fpm 模式
- php7:
- ~]# ./configure --prefix=/usr/local/php7 --sysconfdir=/etc/php7 --with-config-file-path=/etc/php7 --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
- php5.6:(仅增加了选项 --with-mysql=mysqlnd)
- ~]# ./configure --prefix=/usr/local/php5 --sysconfdir=/etc/php5 --with-config-file-path=/etc/php5 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --with-xsl --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --with-recode --with-tidy
- 2.3:php.ini 配置文件(在源码包目录下)
- ~]# cp php.ini-production /etc/php7/php.ini
- 2.4:php 作为 httpd 模块
- 不需要修改 php 配置,
- 2.5:fastcgi php-fpm
- ~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
- ~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
- # 默认即可是本机 127.0.0.1 不必修改。
- ~]# vi /etc/php7/php-fpm.d/www.conf
- # 监听地址
- listen = 127.0.0.1:9000
- # 允许的客户端
- listen.allowed_clients = 127.0.0.1
- 备注:php5 需要复制 php-fpm.conf.default 为 php-fpm.conf 即可。查看 php-fpm.conf 监听地址和允许的客户端。
- 2.6:启动与停止
- httpd模块:
- 重新加载 httpd 。
- fastcgi:
- ~]# vi /etc/php7/php-fpm.conf
- 打开注释:(不打开注释仅能使用 killall php-fpm 关闭 php)
- pid = run/php-fpm.pid
- 启动:
- /usr/local/php7/sbin/php-fpm
- 立刻终止
- kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
- kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
- killall php-fpm
- 平滑终止
- kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
- 平滑重启
- kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
- 2.7:加入环境变量
- ~]# vi /etc/profile.d/web.sh
- export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
- 2.8:CentOS 系统服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释需要打开:2.6 )
- CentOS 6:
- ~]# vi /etc/rc.d/init.d/php-fpm
- ~]# chmod +x /etc/rc.d/init.d/php-fpm
- --------------------------file start---------------------------------
- #! /bin/sh
- # chkconfig: - 84 16
- # description: PHP FastCGI Process Manager
- # Source function library.
- . /etc/init.d/functions
- # Check that networking is up.
- . /etc/sysconfig/network
- # Additional environment file
- if [ -f /etc/sysconfig/php-fpm ]; then
- . /etc/sysconfig/php-fpm
- fi
- if [ "$NETWORKING" = "no" ]
- then
- exit 0
- fi
- RETVAL=0
- prog="php-fpm"
- # 可根据版本不同修改 phpfpm pidfile lockfile变量。其他地方不用修改。
- phpfpm="/usr/local/php7/sbin/php-fpm"
- pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
- lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
- start () {
- echo -n $"Starting $prog: "
- dir=$(dirname ${pidfile})
- [ -d $dir ] || mkdir $dir
- daemon --pidfile ${pidfile} ${phpfpm}
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && touch ${lockfile}
- }
- stop () {
- echo -n $"Stopping $prog: "
- killproc -p ${pidfile} php-fpm
- RETVAL=$?
- echo
- if [ $RETVAL -eq 0 ] ; then
- rm -f ${lockfile} ${pidfile}
- fi
- }
- restart () {
- stop
- start
- }
- reload () {
- echo -n $"Reloading $prog: "
- if ! ${phpfpm} --test ; then
- RETVAL=6
- echo $"not reloading due to configuration syntax error"
- failure $"not reloading $prog due to configuration syntax error"
- else
- killproc -p ${pidfile} php-fpm -USR2
- RETVAL=$?
- fi
- echo
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status -p ${pidfile} php-fpm
- RETVAL=$?
- ;;
- restart)
- restart
- ;;
- reload|force-reload)
- reload
- ;;
- configtest)
- ${phpfpm} --test
- RETVAL=$?
- ;;
- condrestart|try-restart)
- [ -f ${lockfile} ] && restart || :
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"
- RETVAL=2
- ;;
- esac
- exit $RETVAL
- --------------------------file end---------------------------------
- ~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}
- CentOS 7:
- ~]# vim /usr/lib/systemd/system/php-fpm.service
- --------------------------file start---------------------------------
- [Unit]
- Description=php-fpm
- After=syslog.target network.target
- [Service]
- Type=forking
- PIDFile=/usr/local/php7/var/run/php-fpm.pid
- ExecStart=/usr/local/php7/sbin/php-fpm
- ExecReload=/bin/kill -USR2 $MAINPID
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
- --------------------------file end---------------------------------
- ~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service
- 2.8:系统启动服务
- CentOS 6:
- 加入 chkconfig 管理:
- ~]# chkconfig --add php-fpm
- 开机启动:
- ~]# chkconfig --level 345 php-fpm on
- 开机不启动:
- ~]# chkconfig php-fpm off
- 查看开机是否启动
- ~]# chkconfig --list php-fpm
- CentOS 7:
- 开机启动:
- ~]# systemctl enable php-fpm.service
- 开机不启动:
- ~]# systemctl disable php-fpm.service
- 2.9:加入 man 文档
- CentOS 6:
- ~]# vim /etc/man.config
- CentOS 7:
- ~]# vi /etc/man_db.conf
- 写入:
- MANPATH /usr/local/php7/php/man
- 备注:然后就可以使用 man 命令查看
- 三:httpd nginx 与 php 连接
- 3.1:httpd 模块 php
- 要点:
- 1:httpd开启模块:
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
- 2:php编译指定 httpd apxs 路径(成为 httpd 模块)
- --with-apxs2=/usr/local/httpd24/bin/apxs
- 连接:
- ~]# vi /etc/httpd/httpd.conf
- 1:添加:(编译时这个默认已经添加)
- LoadModule php7_module modules/libphp7.so
- #LoadModule php5_module modules/libphp5.so
- 2:添加 index.php:
- <IfModule dir_module>
- DirectoryIndex index.php index.html
- </IfModule>
- 3:文件最后添加:
- <FilesMatch \.php$>
- SetHandler application/x-httpd-php
- </FilesMatch>
- 备注:vhost 也可以应用
- 3.2:httpd(fastcgi)与 php-fpm
- 要点:
- 1:httpd开启模块:
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
- 2:php编译开启模块:
- --enable-fpm
- 连接方式1:
- ~]# vi /etc/httpd/httpd.conf
- 最后添加:
- # On:正向代理(默认) Off:反向代理(此处建议使用)
- ProxyRequests Off
- <FilesMatch \.php$>
- SetHandler proxy:fcgi://127.0.0.1:9000
- </FilesMatch>
- 连接方式2:
- ~]# vi /etc/httpd/httpd.conf
- 最后添加:
- # On:正向代理(默认) Off:反向代理(此处建议使用)
- ProxyRequests Off
- <LocationMatch ^(.*\.php)$>
- ProxyPass fcgi://127.0.0.1:9000/var/www/html/
- </LocationMatch>
- 连接方式3:类型2的改变
- ~]# vi /etc/httpd/httpd.conf
- 最后添加:
- # On:正向代理(默认) Off:反向代理(此处建议使用)
- ProxyRequests Off
- ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
- 连接方式设置完后再添加 index.php:
- <IfModule dir_module>
- DirectoryIndex index.php index.html
- </IfModule>
- 备注:连接方式1 更方便在本地使用,2和3一般会使用远程 php 服务器上。
- 3.3:Nginx与php连接
- 要点:
- 1:Nginx 默认支持 fastcgi
- 2:php编译开启模块:
- --enable-fpm
- 连接:
- server {
- listen 80;
- server_name localhost;
- root /var/www/html;
- index index.php index.html;
- .......
- # nginx 连接方式
- location ~ \.php$ {
- # root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
- 四:PHP与MariaDB(mysql)连接:
- 4.1:使用 MariaDB 编译(相对于mysql安装的目录)
- --with-mysql=/usr/local/mysql
- --with-mysqli=/usr/local/mysql/bin/mysql_config
- --with-pdo-mysql=/usr/local/mysql
- 4.2:使用 PHP 的 mysqlnd 编译(推荐使用)
- --with-mysql=mysqlnd
- --with-mysqli=mysqlnd
- --with-pdo-mysql=mysqlnd
- 4.3:php版本区别要点:
- 1:php7移除了 mysql 扩展,php7仅能是用 mysqli 和 pdo_mysql
- 2:mysqlnd 要求 php版本 >= 5.3
- 4:mysqlnd和php内部机制结合更紧密,是优化过的mysql驱动,建议使用。
- 五:测试
- 1.1:添加文件与内容
- ~]# vi /var/www/html/index.php
- <?php
- phpinfo();
- ?>
- 六:php多版本安装注意事项。
- 6.1:httpd与php
- httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个需要注释。
- LoadModule php7_module modules/libphp7.so
- #LoadModule php5_module modules/libphp5.so
- httpd fastcgi:
- 在 vhost 虚拟机中指定不同的监听地址。
- 例如:
- <VirtualHost *:80>
- DocumentRoot "/web/a"
- ServerName www.a.com
- <FilesMatch \.php$>
- SetHandler proxy:fcgi://127.0.0.1:9000
- </FilesMatch>
- # 或者
- ProxyRequests Off
- ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
- </VirtualHost>
- 6.2:nginx与php
- 指定不同的监听地址
- location ~ \.php$ {
- fastcgi_pass 127.0.0.1:9000;
- }
- 七:推荐博客
- 6.1:官网安装帮助文档:http://php.net/manual/zh/install.php
- 6.2:http://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/
php编译安装与配置的更多相关文章
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动
CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...
- CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境
CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...
- 【MySQL】源码编译安装和配置MySql 5.5.32(单实例)
[需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数 ...
- Hadoop学习笔记(一)——编译安装和配置
近期工作调动.打算补一下大数据处理的知识.可能会陆续涉及hadoop.mongodb.ddbs等. 首先Apache提供二进制的Hadoop版本号是32位的.在启动时总是有警告,所以想自己编译一遍.部 ...
- OpenLDAP编译安装及配置
原文发表于cu:2016-06-20 参考文档: 原理:http://seanlook.com/2015/01/15/openldap_introduction/ 官方文档: http://www.o ...
- CentOS 7下OpenLDAP编译安装及配置
一.环境 Server:基于CentOS-7-x86_64-1511 Server IP: 172.18.12.203 二.软件获取 OpenLDAP OpenLDAP官网下载地址:http://ww ...
- Linux编译安装与配置-MySQL(5.5,5.6)版本系(笔记)
MySQL 5.5(5.6)后版本,需要使用cmake(Cross make , https://cmake.org/ )编译 我的环境如下: VMWare虚拟机,CentOS 5.5 x86_64( ...
- freeradius编译安装+mysql配置
参考文档: freeradius 官网的wikihttp://wiki.freeradius.org/Home ubuntu freeradius搭建教程 http://yustanto.com/fr ...
随机推荐
- Xcode_9_beta.xip 更新下载
Xcode_9_beta.xip 更新下载 Xcode_9_beta.xip 链接: pan.baidu.com/s/1dFJ33tJ 密码: 89mv
- Union与UnionAll
UNION指令的目的是将两个SQL语句的结果合并起来.从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION的一个限制是两个 ...
- iOS开发 Swift开发数独游戏(一)
一.前言 我姥姥是一名退休数学老师,一直很喜欢玩数独游戏.我以前答应过她要给她写一个数独游戏.本来计划是写一个Android应用的,但恰好我学了好长时间iOS开发一直没做什么"大项目&quo ...
- PHP添加mcrypt扩展模块
PHP添加mcrypt扩展模块 系统环境:CentOS6.3 APACHE:httpd-2.4.2 PHP:php-5.3.21 一.安装mcrypt 1.下载Libmcrypt,mhash,mcry ...
- SQL数据库学习系列之一
数据库知识的重要性不言而喻,以下链接给出了最最基础知识的讲解. 第一讲:SQL 语法 第二讲:SQL SELECT 语句 第三讲:SELECT DISTINCT 语句 第四讲:SQL WHERE 子句 ...
- andriod绘制图形
使用view画图,有两个重要的组件需要介绍: (1)Paint 可以理解为画刷或者画笔,去主要用来设置绘图使用的颜色.填充方式.透明度.字体以及字体样式等. (2)Canvas 画布,在view上显示 ...
- memcache学习资料
memcached是国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能.官方站点 http://memcached.org/memcac ...
- Console-算法:fun1(do while)
ylbtech-Arithmetic:Console-算法[do while]-XX 1.A,Demo(案例) 1.B,Solution(解决方案) using System; namespace ...
- 安装docker-compose的两种方式
这里简单介绍下两种安装docker-compose的方式,第一种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,第二种方式略微麻烦,但是安装过程比较稳定 方法一: # curl -L h ...
- 【AS3 Coder】任务五:Flash 2D游戏的第二春(上)
在上一节中,我们基本上已经讲完了游戏中最主要的逻辑部分,不过为了更加全面地运用Starling中的一些特性,在本节中我们将一起来看看如何实现多面板切换以及粒子效果,这两个玩意儿可是比较频繁会出现于St ...