1. php编译安装与配置
  2. ===========================================
  3. 官网:http://php.net/
  4. 官网下载:http://php.net/downloads.php
  5. ===========================================
  6. 一:了解与准备
  7. 1.1:Apache(httpd)  nginx 与 php 连接方式:
  8. httpd与php:
  9. 1:php 作为 httpd 模块
  10. 2:fastcgi(php-fpm)
  11. 3:cgi(此处不讲解)
  12. nginx与php:
  13. 1:fastcgi(php-fpm)
  14. 1.2:PHP安装与依赖:
  15. ~]# 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
  16. 1.3:备注:
  17. 1:上面的依赖基本解决所需要的依赖。
  18. 2:编译安装完成后可以增减所支持的php模块,此处所编译的模块已经非常完备。
  19. 3:需要编译单个模块,查看php模块编译方式:php模块编译
  20. 4:下面编译安装的配置选项:
  21. --prefix=/usr/local/php7    主程序文件路径
  22. --sysconfdir=/etc/php7      配置文件路径
  23. --with-config-file-path=/etc/php7       php.ini 文件路径
  24. --with-apxs2=/usr/local/httpd/bin/apxs  以 httpd 模块编译时需要指定 httpd 的 apxs 文件路径。
  25. 其他的配置可以按自己需求指定,这几个选项也可以使用默认配置。
  26. 5:php7移除了 mysql 扩展,php7仅能是用 mysqli 和 pdo_mysql。php5可以使用。
  27. php5编译时加入选项:--with-mysql 。详情查看下面的 PHP与MariaDB(mysql)连接
  28. 6:此处以 CentOs7 编译 php7 为示例,配合讲解php5安装的要点。
  29. 7:php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(生产)
  30. 编译完成后选择自己需要的 php.ini 文件 复制到 --with-config-file-path 指定的目录。
  31. 如果编译时为指定此选项,编译完成配置并启动nginx和php查看 phpinfo() 函数所指定的 php.ini 文件路径:Configuration File (php.ini) Path
  32. 默认为php目录下的 lib 目录。
  33. 8:PHP安装与依赖中 psmisc.x86_64 是 killall 命令的包名,以便最小化安装时终止进程。
  34. 二:php编译与配置:
  35. 2.1: httpd 模块
  36. 备注:需要事先存在httpd ,编译指定 apxs 文件位置。此处以--with-apxs2=/usr/local/httpd/bin/apxs 作为演示。
  37. php7:
  38. ~]# ./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
  39. php5.6:(仅增加了选项 --with-mysql=mysqlnd)
  40. ~]# ./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
  41. 2.2:fastcgi php-fpm 模式
  42. php7:
  43. ~]# ./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
  44. php5.6:(仅增加了选项 --with-mysql=mysqlnd)
  45. ~]# ./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
  46. 2.3:php.ini 配置文件(在源码包目录下)
  47. ~]# cp php.ini-production /etc/php7/php.ini
  48. 2.4:php 作为 httpd 模块
  49. 不需要修改 php 配置,
  50. 2.5:fastcgi php-fpm
  51. ~]# cp /etc/php7/php-fpm.conf.default /etc/php7/php-fpm.conf
  52. ~]# cp /etc/php7/php-fpm.d/www.conf.default /etc/php7/php-fpm.d/www.conf
  53. # 默认即可是本机 127.0.0.1 不必修改。
  54. ~]# vi /etc/php7/php-fpm.d/www.conf
  55. # 监听地址
  56. listen = 127.0.0.1:9000
  57. # 允许的客户端
  58. listen.allowed_clients = 127.0.0.1
  59. 备注:php5 需要复制 php-fpm.conf.default 为 php-fpm.conf 即可。查看 php-fpm.conf 监听地址和允许的客户端。
  60. 2.6:启动与停止
  61. httpd模块:
  62. 重新加载 httpd 。
  63. fastcgi:
  64. ~]# vi /etc/php7/php-fpm.conf
  65. 打开注释:(不打开注释仅能使用 killall php-fpm 关闭 php)
  66. pid = run/php-fpm.pid
  67. 启动:
  68. /usr/local/php7/sbin/php-fpm
  69. 立刻终止
  70. kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
  71. kill -TERM `cat /usr/local/php7/var/run/php-fpm.pid`
  72. killall php-fpm
  73. 平滑终止
  74. kill -QUIT `cat /usr/local/php7/var/run/php-fpm.pid`
  75. 平滑重启
  76. kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
  77. 2.7:加入环境变量
  78. ~]# vi /etc/profile.d/web.sh
  79. export PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin
  80. 2.8:CentOS 系统服务(/etc/php7/php-fpm.conf 文件 pid = run/php-fpm.pid 注释需要打开:2.6 )
  81. CentOS 6:
  82. ~]# vi /etc/rc.d/init.d/php-fpm
  83. ~]# chmod +x /etc/rc.d/init.d/php-fpm
  84. --------------------------file start---------------------------------
  85. #! /bin/sh
  86. # chkconfig: - 84 16
  87. # description:  PHP FastCGI Process Manager
  88. # Source function library.
  89. . /etc/init.d/functions
  90. # Check that networking is up.
  91. . /etc/sysconfig/network
  92. # Additional environment file
  93. if [ -f /etc/sysconfig/php-fpm ]; then
  94. . /etc/sysconfig/php-fpm
  95. fi
  96. if [ "$NETWORKING" = "no" ]
  97. then
  98. exit 0
  99. fi
  100. RETVAL=0
  101. prog="php-fpm"
  102. # 可根据版本不同修改 phpfpm pidfile lockfile变量。其他地方不用修改。
  103. phpfpm="/usr/local/php7/sbin/php-fpm"
  104. pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}
  105. lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}
  106. start () {
  107. echo -n $"Starting $prog: "
  108. dir=$(dirname ${pidfile})
  109. [ -d $dir ] || mkdir $dir
  110. daemon --pidfile ${pidfile} ${phpfpm}
  111. RETVAL=$?
  112. echo
  113. [ $RETVAL -eq 0 ] && touch ${lockfile}
  114. }
  115. stop () {
  116. echo -n $"Stopping $prog: "
  117. killproc -p ${pidfile} php-fpm
  118. RETVAL=$?
  119. echo
  120. if [ $RETVAL -eq 0 ] ; then
  121. rm -f ${lockfile} ${pidfile}
  122. fi
  123. }
  124. restart () {
  125. stop
  126. start
  127. }
  128. reload () {
  129. echo -n $"Reloading $prog: "
  130. if ! ${phpfpm} --test ; then
  131. RETVAL=6
  132. echo $"not reloading due to configuration syntax error"
  133. failure $"not reloading $prog due to configuration syntax error"
  134. else
  135. killproc -p ${pidfile} php-fpm -USR2
  136. RETVAL=$?
  137. fi
  138. echo
  139. }
  140. # See how we were called.
  141. case "$1" in
  142. start)
  143. start
  144. ;;
  145. stop)
  146. stop
  147. ;;
  148. status)
  149. status -p ${pidfile} php-fpm
  150. RETVAL=$?
  151. ;;
  152. restart)
  153. restart
  154. ;;
  155. reload|force-reload)
  156. reload
  157. ;;
  158. configtest)
  159. ${phpfpm} --test
  160. RETVAL=$?
  161. ;;
  162. condrestart|try-restart)
  163. [ -f ${lockfile} ] && restart || :
  164. ;;
  165. *)
  166. echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"
  167. RETVAL=2
  168. ;;
  169. esac
  170. exit $RETVAL
  171. --------------------------file end---------------------------------
  172. ~]# service php-fpm {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}
  173. CentOS 7:
  174. ~]# vim /usr/lib/systemd/system/php-fpm.service
  175. --------------------------file start---------------------------------
  176. [Unit]
  177. Description=php-fpm
  178. After=syslog.target network.target
  179. [Service]
  180. Type=forking
  181. PIDFile=/usr/local/php7/var/run/php-fpm.pid
  182. ExecStart=/usr/local/php7/sbin/php-fpm
  183. ExecReload=/bin/kill -USR2 $MAINPID
  184. PrivateTmp=true
  185. [Install]
  186. WantedBy=multi-user.target
  187. --------------------------file end---------------------------------
  188. ~]# systemctl (start | restart | reload | stop | enable | disable | status) php-fpm.service
  189. 2.8:系统启动服务
  190. CentOS 6:
  191. 加入 chkconfig 管理:
  192. ~]# chkconfig --add php-fpm
  193. 开机启动:
  194. ~]# chkconfig --level 345 php-fpm on
  195. 开机不启动:
  196. ~]# chkconfig php-fpm off
  197. 查看开机是否启动
  198. ~]# chkconfig --list php-fpm
  199. CentOS 7:
  200. 开机启动:
  201. ~]# systemctl enable php-fpm.service
  202. 开机不启动:
  203. ~]# systemctl disable php-fpm.service
  204. 2.9:加入 man 文档
  205. CentOS 6:
  206. ~]# vim /etc/man.config
  207. CentOS 7:
  208. ~]# vi /etc/man_db.conf
  209. 写入:
  210. MANPATH /usr/local/php7/php/man
  211. 备注:然后就可以使用 man 命令查看
  212. 三:httpd  nginx 与 php 连接
  213. 3.1:httpd 模块 php
  214. 要点:
  215. 1:httpd开启模块:
  216. LoadModule proxy_module modules/mod_proxy.so
  217. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
  218. 2:php编译指定 httpd apxs 路径(成为 httpd 模块)
  219. --with-apxs2=/usr/local/httpd24/bin/apxs
  220. 连接:
  221. ~]# vi /etc/httpd/httpd.conf
  222. 1:添加:(编译时这个默认已经添加)
  223. LoadModule php7_module        modules/libphp7.so
  224. #LoadModule php5_module        modules/libphp5.so
  225. 2:添加 index.php:
  226. <IfModule dir_module>
  227. DirectoryIndex index.php index.html
  228. </IfModule>
  229. 3:文件最后添加:
  230. <FilesMatch \.php$>
  231. SetHandler application/x-httpd-php
  232. </FilesMatch>
  233. 备注:vhost 也可以应用
  234. 3.2:httpd(fastcgi)与 php-fpm
  235. 要点:
  236. 1:httpd开启模块:
  237. LoadModule proxy_module modules/mod_proxy.so
  238. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
  239. 2:php编译开启模块:
  240. --enable-fpm
  241. 连接方式1:
  242. ~]# vi /etc/httpd/httpd.conf
  243. 最后添加:
  244. # On:正向代理(默认)  Off:反向代理(此处建议使用)
  245. ProxyRequests Off
  246. <FilesMatch \.php$>
  247. SetHandler proxy:fcgi://127.0.0.1:9000
  248. </FilesMatch>
  249. 连接方式2:
  250. ~]# vi /etc/httpd/httpd.conf
  251. 最后添加:
  252. # On:正向代理(默认)  Off:反向代理(此处建议使用)
  253. ProxyRequests Off
  254. <LocationMatch ^(.*\.php)$>
  255. ProxyPass fcgi://127.0.0.1:9000/var/www/html/
  256. </LocationMatch>
  257. 连接方式3:类型2的改变
  258. ~]# vi /etc/httpd/httpd.conf
  259. 最后添加:
  260. # On:正向代理(默认)  Off:反向代理(此处建议使用)
  261. ProxyRequests Off
  262. ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/var/www/html/$1
  263. 连接方式设置完后再添加 index.php:
  264. <IfModule dir_module>
  265. DirectoryIndex index.php index.html
  266. </IfModule>
  267. 备注:连接方式1 更方便在本地使用,2和3一般会使用远程 php 服务器上。
  268. 3.3:Nginx与php连接
  269. 要点:
  270. 1:Nginx 默认支持 fastcgi
  271. 2:php编译开启模块:
  272. --enable-fpm
  273. 连接:
  274. server {
  275. listen       80;
  276. server_name  localhost;
  277. root /var/www/html;
  278. index  index.php index.html;
  279. .......
  280. # nginx 连接方式
  281. location ~ \.php$ {
  282. # root /:可以在这里单独设置php的根,$document_root 变量是上面 root 定义的网站根路径。
  283. fastcgi_pass   127.0.0.1:9000;
  284. fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  285. include        fastcgi_params;
  286. }
  287. }
  288. 四:PHP与MariaDB(mysql)连接:
  289. 4.1:使用 MariaDB 编译(相对于mysql安装的目录)
  290. --with-mysql=/usr/local/mysql
  291. --with-mysqli=/usr/local/mysql/bin/mysql_config
  292. --with-pdo-mysql=/usr/local/mysql
  293. 4.2:使用 PHP 的 mysqlnd 编译(推荐使用)
  294. --with-mysql=mysqlnd
  295. --with-mysqli=mysqlnd
  296. --with-pdo-mysql=mysqlnd
  297. 4.3:php版本区别要点:
  298. 1:php7移除了 mysql 扩展,php7仅能是用 mysqli 和 pdo_mysql
  299. 2:mysqlnd 要求 php版本 >= 5.3
  300. 4:mysqlnd和php内部机制结合更紧密,是优化过的mysql驱动,建议使用。
  301. 五:测试
  302. 1.1:添加文件与内容
  303. ~]# vi /var/www/html/index.php
  304. <?php
  305. phpinfo();
  306. ?>
  307. 六:php多版本安装注意事项。
  308. 6.1:httpd与php
  309. httpd 模块:可以编译多个版本,但同时只能运行一个,另外一个需要注释。
  310. LoadModule php7_module        modules/libphp7.so
  311. #LoadModule php5_module        modules/libphp5.so
  312. httpd fastcgi:
  313. 在 vhost 虚拟机中指定不同的监听地址。
  314. 例如:
  315. <VirtualHost *:80>
  316. DocumentRoot "/web/a"
  317. ServerName www.a.com
  318. <FilesMatch \.php$>
  319. SetHandler proxy:fcgi://127.0.0.1:9000
  320. </FilesMatch>
  321. # 或者
  322. ProxyRequests Off
  323. ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/var/www/html/$1
  324. </VirtualHost>
  325. 6.2:nginx与php
  326. 指定不同的监听地址
  327. location ~ \.php$ {
  328. fastcgi_pass   127.0.0.1:9000;
  329. }
  330. 七:推荐博客
  331. 6.1:官网安装帮助文档:http://php.net/manual/zh/install.php
  332. 6.2:http://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/

php编译安装与配置的更多相关文章

  1. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  2. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  3. CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

    CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...

  4. 【MySQL】源码编译安装和配置MySql 5.5.32(单实例)

    [需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数 ...

  5. Hadoop学习笔记(一)——编译安装和配置

    近期工作调动.打算补一下大数据处理的知识.可能会陆续涉及hadoop.mongodb.ddbs等. 首先Apache提供二进制的Hadoop版本号是32位的.在启动时总是有警告,所以想自己编译一遍.部 ...

  6. OpenLDAP编译安装及配置

    原文发表于cu:2016-06-20 参考文档: 原理:http://seanlook.com/2015/01/15/openldap_introduction/ 官方文档: http://www.o ...

  7. CentOS 7下OpenLDAP编译安装及配置

    一.环境 Server:基于CentOS-7-x86_64-1511 Server IP: 172.18.12.203 二.软件获取 OpenLDAP OpenLDAP官网下载地址:http://ww ...

  8. Linux编译安装与配置-MySQL(5.5,5.6)版本系(笔记)

    MySQL 5.5(5.6)后版本,需要使用cmake(Cross make , https://cmake.org/ )编译 我的环境如下: VMWare虚拟机,CentOS 5.5 x86_64( ...

  9. freeradius编译安装+mysql配置

    参考文档: freeradius 官网的wikihttp://wiki.freeradius.org/Home ubuntu freeradius搭建教程 http://yustanto.com/fr ...

随机推荐

  1. Xcode_9_beta.xip 更新下载

    Xcode_9_beta.xip 更新下载 Xcode_9_beta.xip 链接: pan.baidu.com/s/1dFJ33tJ 密码: 89mv

  2. Union与UnionAll

    UNION指令的目的是将两个SQL语句的结果合并起来.从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION的一个限制是两个 ...

  3. iOS开发 Swift开发数独游戏(一)

    一.前言 我姥姥是一名退休数学老师,一直很喜欢玩数独游戏.我以前答应过她要给她写一个数独游戏.本来计划是写一个Android应用的,但恰好我学了好长时间iOS开发一直没做什么"大项目&quo ...

  4. PHP添加mcrypt扩展模块

    PHP添加mcrypt扩展模块 系统环境:CentOS6.3 APACHE:httpd-2.4.2 PHP:php-5.3.21 一.安装mcrypt 1.下载Libmcrypt,mhash,mcry ...

  5. SQL数据库学习系列之一

    数据库知识的重要性不言而喻,以下链接给出了最最基础知识的讲解. 第一讲:SQL 语法 第二讲:SQL SELECT 语句 第三讲:SELECT DISTINCT 语句 第四讲:SQL WHERE 子句 ...

  6. andriod绘制图形

    使用view画图,有两个重要的组件需要介绍: (1)Paint 可以理解为画刷或者画笔,去主要用来设置绘图使用的颜色.填充方式.透明度.字体以及字体样式等. (2)Canvas 画布,在view上显示 ...

  7. memcache学习资料

    memcached是国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能.官方站点 http://memcached.org/memcac ...

  8. Console-算法:fun1(do while)

    ylbtech-Arithmetic:Console-算法[do while]-XX   1.A,Demo(案例) 1.B,Solution(解决方案) using System; namespace ...

  9. 安装docker-compose的两种方式

    这里简单介绍下两种安装docker-compose的方式,第一种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,第二种方式略微麻烦,但是安装过程比较稳定 方法一: # curl -L h ...

  10. 【AS3 Coder】任务五:Flash 2D游戏的第二春(上)

    在上一节中,我们基本上已经讲完了游戏中最主要的逻辑部分,不过为了更加全面地运用Starling中的一些特性,在本节中我们将一起来看看如何实现多面板切换以及粒子效果,这两个玩意儿可是比较频繁会出现于St ...