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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

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 ,如需转载请自行联系原作者




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
Linux 网络安全 开发工具
Centos6.5安装并配置Telnet服务
该内容是一个关于如何安装配置Telnet服务的教程。首先,通过yum安装vim、xinetd、telnet和telnet-server。接着,修改/etc/xinetd.d/telnet配置文件,将disable改为no,并设置访问限制(如限定特定网段和时间)。关闭防火墙,重启服务。创建测试用户后,分别使用CentOS和Windows的Telnet客户端进行连接测试,显示成功,实验完成。
25 1
|
5天前
|
Linux
CentOS 7 配置yum阿里源 (三步即可)
CentOS 7 配置yum阿里源 (三步即可)
|
16天前
|
网络协议 Java 应用服务中间件
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
11 0
|
18天前
|
Linux 网络安全 开发工具
Centos7 sendmail服务安装与配置
该文本描述了在Linux系统中设置邮件服务的步骤。首先,启用httpd的邮件发送功能,然后安装sendmail、sendmail-cf和dovecot。接着配置/sendmail.mc,设定IP和邮件域名。在dovecot配置文件中启用imap、pop3和lmtp协议,取消明文认证限制,设定mail_location,并开启SSL。创建用户mail3和mail4,给予相应权限。停止postfix服务,编辑访问控制、提交配置、本地主机名等文件。最后,重置sendmail、dovecot和saslauthd服务。
44 0
|
18天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置PXE服务
PXE是Intel开发的预启动执行环境,允许工作站通过网络从远程服务器启动操作系统。它依赖DHCP分配IP,DNS服务分配主机名,TFTP提供引导程序,HTTP/FTP/NFS提供安装源。要部署PXE服务器,需关闭selinux和防火墙,安装dhcpd、httpd、tftp、xinetd及相关服务,配置引导文件和Centos7安装源。最后,通过syslinux安装引导文件,并创建pxelinux.cfg/default配置文件来定义启动参数。
55 0
|
18天前
|
运维 网络协议 Linux
【运维系列】Centos7安装并配置postfix服务
安装CentOS7的Postfix和Dovecot,配置Postfix的`main.cf`文件,包括修改完全域名、允许所有IP、启用邮箱等。然后,配置Dovecot的多个配置文件以启用auth服务和调整相关设置。重启Postfix和Dovecot,设置开机自启,并关闭防火墙进行测试。最后,创建邮箱账户并在Windows邮箱客户端中添加账户设置。
17 0
|
18天前
|
网络协议 Linux 网络安全
Centos7 配置DNS服务
该教程指导配置DNS服务器:首先通过yum安装bind和cach件,然后修改IP设置。接着,编辑/etc/named.conf,将第13行和21行的参数改为&quot;any&quot;。在/etc/named.rfc1912中更新正向和反向域名。创建正向解析文件/var/named.localhost和反向解析文件/var/named.loopback,按指定格式添加解析记录。最后,重启服务,确保防火墙关闭,通过nslookup检查DNS配置效果。
25 1
|
18天前
|
Linux 网络安全
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
23 0
|
18天前
|
开发工具 数据安全/隐私保护
Centos6.5安装并配置samba服务
配置Samba服务,执行`yum -y install samba`。创建finance、sales、manager组及对应用户:user1, user2(finance组),user3(sales组),manager(manager组)。设定用户密码。创建共享目录,给予finance组对finance目录的读写权限,编辑`smb.conf`。manager拥有所有共享目录的读写权限。确保用户对其共享文件夹有完全权限,其他用户只读写。重启服务。共享/opt/public_share为share,创建无登陆权用户Tonny,允许所有用户读写,文件属主为Tonny。最后,重启服务。
12 0
|
18天前
|
网络协议
Centos6.5配置网络适配器
使用`vi /etc/sysconfig/network/ifcfg-eth0`配置网卡,将ONBOOT设为YES,移除dhcp,设定IP为192.168.10.1,子网掩码255.255.255.0,网关192.168.10.254。可选设置DNS。最后,重启网络服务`service network restart`。
19 0