开发人员学Linux(7):CentOS7编译安装PHP并配置PHP-FPM

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

1.前言
上一篇讲述了如何编译安装MySQL,虽然可以通过yum install 或者rpm来安装,但是yum install和rpm安装有一个特点,就是有些参数是别人根据大众需求定制的,如果需要进行自己的特定参数指定,这个是比较难做到的,因此有一定Linux基础的人都是编译安装或者根据公司的具体环境制作适合环境的安装包。上一篇的例子中讲述了如何编译安装和如何配置多实例,并在最后讲述了如何配置主从复制配置。
以前开源开发经常将LAMP,就是Linux+Apache+MySQL+PHP,对于一些起步型的公司来说LAMP可以满足他们的所有幻想:既可以响应一定规模的用户,对硬件的要求也很小。现在随着Nginx的兴起,LAMP变成了LNMP,即Linux+Nginx+MySQL+PHP,因此本篇将讲述如何编译安装PHP并且使用php-fpm来让Nginx支持PHP。
2.准备
2.1下载PHP5.6.3源码
考虑到很多开源PHP还在用PHP5版本,因此这里以PHP5.6.3版本的编译安装为例:
下载:

1
wget http: //cn2 .php.net /distributions/php-5 .6.3. tar .gz

2.2WordPress中文版
WordPress是一个非常著名的个人博客系统,这里用它来验证我们的php-fpm配置正确与否。
下载:

1
wget https: //cn .wordpress.org /wordpress-4 .7.4-zh_CN.zip

2.3安装依赖库

1
2
3
4
5
6
7
yum  install  gcc automake autoconf libtool  make  –y
yum  install  gcc gcc-c++ glibc –y
yum  install  libmcrypt-devel mhash-devel libxslt-devel –y
yum  install  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel –y
yum  install  zlib zlib-devel glibc glibc-devel glib2 glib2-devel  bzip2  bzip2 -devel –y
yum  install  ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel -y
yum  install  krb5 krb5-devel libidn libidn-devel openssl openssl-devel -y

注:上面有些依赖库在上一篇中已经安装了,为省事我在这里又一股脑列上了,在实际安装过程中如果本地已经安装了就不会再次安装和下载了。
3.编译和设置
3.1编译文件
假定下载的php-5.6.3.tar.gz位于/root目录下,首先解压文件:

1
tar  zxvf  /root/php-5 .6.3. tar .gz


然后执行configure:

1
2
cd  /root/php-5 .6.3
. /configure  --prefix= /usr/local/php   -- enable -fpm --with-mcrypt -- enable -mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath -- enable -inline-optimization --with-bz2  --with-zlib -- enable -sockets -- enable -sysvsem -- enable -sysvshm -- enable -pcntl -- enable -mbregex --with-mhash -- enable -zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg- dir  -with-gettext -- enable -xml -- enable -freetype

如果依赖库都安装了就不会报错,如果提示缺少依赖库就用yum install 来安装。在上面的参数中:
--prefix=/usr/local/php:表示将来程序安装在/usr/local/php目录;
--enable-fpm:表示启用php-fpm模块,不启用这个nginx就没办法将php页面请求转发个nginx处理了。
接着执行:

1
2
make
make  install

因为源代码有点多,编译需要一点时间,请耐性等待。成功之后在/usr/local下会新建php文件夹,其文件目录结构如下:

1
2
3
4
5
6
7
8
9
[root@localhost ~] # ls -l /usr/local/php
total 0
drwxr-xr-x 2 root root 147 Jun  7 23:38 bin
drwxr-xr-x 2 root root  71 Jun 12 22:13 etc
drwxr-xr-x 3 root root  17 Jun  7 23:12 include
drwxr-xr-x 3 root root  85 Jun 12 22:12 lib
drwxr-xr-x 4 root root  28 Jun  7 23:12 php
drwxr-xr-x 2 root root  21 Jun  7 23:12 sbin
drwxr-xr-x 4 root root  28 Jun  7 23:12 var

3.2配置
3.2.1php.ini配置
首先将刚才解压的文件夹中将php.ini-development拷贝到/usr/local/php/lib目录并命名为php.ini:

1
cp   /root/php-5 .6.3 /php .ini-development  /usr/local/php/lib/php .ini


注意:在开发服务器将php.ini-development改为php.ini,如果是生产服务器建议将php.ini-production改为php.ini, php.ini-production与php.ini-development相比是关闭了一些调试输出,这在生产环境中可以减少日志文件的体积和提高性能,在开发环境中建议还是打开以便于调试。在接下来的讲解中是基于开发环境配置的。
对php.ini做如下更改:
error_reporting = E_ALL & ~E_NOTICE ;输出调试信息和通知
error_log = /usr/local/php/var/log/error-log.log ;错误日志存放位置
date.timezone = "Asia/Shanghai"; 这句原本是” ;date.timezone =”,需要去掉其注释并设置为中国时区
3.2.2php-fpm.conf配置
首先将/usr/local/php/ etc/php-fpm.conf.default拷贝一份并命名为php-fpm.conf:

1
2
cd  /usr/local/php
cp  etc /php-fpm .conf.default etc /php-fpm .conf

接着对php-fpm.conf做如下更改:
;pid = run/php-fpm.pid这一句取消注释,并改为:pid = /usr/local/php/var/run/php-fpm.pid;
;error_log = log/php-fpm.log这一句取消注释,并改为:error_log = /usr/local/php/var/log/error-log.log
user = nobody改为:user = nginx
group = nobody改为:group = nginx
;catch_workers_output = yes这一句取消注释,改为:catch_workers_output = yes
php-fpm可执行文件在/usr/local/php/sbin目录下,可以通过/usr/local/php/sbin来执行监听,默认是监听9000端口。
4.安装WordPress
4.1数据库准备 
4.1.1启动MySQL数据库
为了观察上一篇我们的Master-slave配置效果,这次我们将两个数据库实例都启动:

1
2
/usr/local/mysql-5 .7.18 /data/3306/mysql  start
/usr/local/mysql-5 .7.18 /data/3307/mysql  start

4.1.2MySQL数据库准备
为了信息安全,专门在主数据库实例上创建一个名为wordpress的库,并为wordpress库配置一个数据库账户,命令如下:

1
2
create  database  wordpress;
grant  all  privileges  on  wordpress.*  to  wordpress@localhost identified  by  'WordPress' ;flush  privileges ;

即新建wordpress库,同时新建wordpress数据库账号,账户密码为WordPress,拥有对wordpress库的全部权限。
4.2WordPress站点及域名解析配置
4.2.1解压缩WordPress
假设wordpress-4.7.4-zh_CN.zip在/root目录下,执行以下命令来解压文件:

1
2
cd  ~
tar  zxvf . /wordpress-4 .7.4-zh_CN. tar .gz

将wordpress放入nginx目录下:

1
mv  . /wordpress  /usr/local/nginx-1 .12.0 /html


4.2.2在nginx中增加站点
首先在/usr/local/nginx-1.12.0/conf/vhosts增加一个文件,名为wordpress.goodapp.net.conf,其内容如下:
    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
         listen       80;
         server_name  wordpress.goodapp.net;
         access_log  logs /wordpress .access.log  main;
         error_log  logs /wordpress .error.log;
         #root   html;
         #index  index.html index.htm index.jsp index.php;
         
         location /{
                 root html /wordpress ;
                 index index.htm index.html index.php;
             }
             
         location ~* \.php$ {
                  root html /wordpress ;
                  fastcgi_pass 127.0.0.1:9000;
                  fastcgi_index index.php;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  include fastcgi_params;
             }
     }

然后在/usr/local/nginx-1.12.0/conf/nginx.conf中include这个文件,文件内容如下:
wKioL1k_8wuwnIqcAABjd0dN1K8390.png-wh_50 
接着检查配置是否有语法错误,如果没有语法错误就重新加载配置:

1
/usr/local/nginx-1 .12.0 /sbin/nginx  –t


4.2.3启动应用
首先启动nginx:

1
systemctl reload nginx.service


注:见本系列前面章节,因nginx已配置为随系统启动了,可以通过上述命令重新启动。
接着启动php-fpm:

1
/usr/local/php/sbin/php-fpm


这是可以观察php-fpm的启动状态:

1
2
[root@localhost ~] # netstat -lntp | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      5498 /php-fpm : maste

如果结果不是上述,可以查看错误日志:

1
tail  /usr/local/php/var/log/error-log .log


4.2.4配置检测
我们可以在/usr/local/nginx-1.12.0/html/wordpress中创建一个测试php页面,文件名为test.php,文件内容如下:

1
2
3
<?php
     phpinfo();
?>

为了能在Windows宿主机中能通过域名观察结果,需要对hosts文件做修改,hosts文件位于C:\Windows\System32\drivers\etc目录,修改后的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host
# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost
192.168.60.198       www.goodapp.net
192.168.60.198       bbs.goodapp.net
192.168.60.198       wordpress.goodapp.net

注:192.168.60.198是CentOS7虚拟机的IP地址。
在浏览器中打开http:// wordpress.goodapp.net/test.php页面,效果如下:
wKioL1k_81_xyBaFAAEe2whxVEE767.png-wh_50 
4.3安装
在宿主机打开http://wordpress.goodapp.net/wp-admin/install.php即可看到安装界面:
wKiom1k_827wwpVrAAC46GUzWMw687.png-wh_50 
点击“现在就开始!”就进入安装界面,如下图:
wKioL1k_832DevzJAACR0jPoQB8376.png-wh_50 
在本篇《4.1.2MySQL数据库准备》中我们已经创建了wordpress库和wordpress用户,其密码为WordPress,将上述信息填写并提交即完成wordpress的安装。
完成安装后的wordpress后台管理首页效果如下:
wKiom1k_85DiVgjjAAG329sOVpw885.png-wh_50 
至于wordpress如何使用这里就不详述了,感兴趣的可以去其官网看手册,这里主要是用wordpress来检查nginx+php-fpm是否配置正确。
5.MySQL主从效果检查
感兴趣的朋友可以看一下我们上一篇讲的MySQL主从配置是否正确,下面是我用HeidiSQL这个开源的数据库管理工具查看到的主从数据库的界面:
wKiom1k_86LQPtpjAAG329sOVpw570.png-wh_50 
注:HeiDiSQL官网:https://www.heidisql.com,可免费下载使用,支持PostgreSQL、MySQL及SQL Server。
6.总结
本篇讲述了如何编译PHP及通过配置让Nginx借助php-fpm来支持php应用,最后通过一个php应用wordpress的安装和配置来检查nginx+php-fpm是否配置正确,并且在本篇也检验了上一篇所述的MySQL主从复制是否正常工作。















本文转自周金桥51CTO博客,原文链接:http://blog.51cto.com/zhoufoxcn/1935159 ,如需转载请自行联系原作者




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
305 1
|
4月前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
166 2
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
140 1
|
2月前
|
存储 监控 Linux
在 CentOS 7 中如何对新硬盘进行分区、格式化、挂载及配置最佳实践
本文详细介绍了在 CentOS 7 中如何对新硬盘进行分区、格式化、挂载及配置最佳实践,包括使用 `fdisk` 创建分区、`mkfs` 格式化分区、创建挂载点、编辑 `/etc/fstab` 实现永久挂载等步骤,旨在有效管理服务器磁盘空间,提高系统稳定性和可维护性。
333 1
|
2月前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
59 1
|
4月前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
564 8
centos7 mysql安装及配置
|
3月前
|
Linux
CentOS 7.x时间同步服务chrony配置详解
文章详细介绍了在CentOS 7.x系统中如何安装和配置chrony服务,以及它与ntpd服务的对比,强调了chrony在时间同步方面的高效性和准确性。
288 2
|
2月前
|
安全 Linux 数据库连接
CentOS 7环境下DM8数据库的安装与配置
【10月更文挑战第16天】本文介绍了在 CentOS 7 环境下安装与配置达梦数据库(DM8)的详细步骤,包括安装前准备、创建安装用户、上传安装文件、解压并运行安装程序、初始化数据库实例、配置环境变量、启动数据库服务、配置数据库连接和参数、备份与恢复、以及安装后的安全设置、性能优化和定期维护等内容。通过这些步骤,可以顺利完成 DM8 的安装与配置。
363 0
|
2月前
|
Linux
CentOS-Stream-9配置chfs
通过上述步骤,您就可以在CentOS Stream 9上配置并运行CHFS,为用户提供基于HTTP的文件分享服务。请注意,实际操作时应根据CHFS的具体版本和文档进行适当调整。
67 0