WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 数码解说
    • 生活趣事
    • 生活日记
  • 全球科技
    • 新浪博客
    • A5资讯
    • 环球网新闻
  • 编程教学
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
  • 专题
  • 基友
  • 隐私
  • 云优化
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君

如何在CentOS 7上使用Apache和PHP-FPM在一台服务器上运行多个PHP版本

夏柔6月 22, 2020

介绍

在Apache Web服务器使用虚拟主机上的单个实例管理多个域。同样,PHP-FPM使用守护程序在单个实例上管理多个PHP版本。您可以一起使用Apache和PHP-FPM托管多个PHP Web应用程序,每个Web应用程序都使用不同版本的PHP,并且全部都在同一服务器上,并且同时全部。这很有用,因为不同的应用程序可能需要不同版本的PHP,但是某些服务器堆栈(如定期配置的LAMP堆栈)只能管理一个。与将每个应用程序托管在自己的实例上相比,将Apache与PHP-FPM结合起来也是一种更具成本效益的解决方案。

PHP-FPM也提供配置选项,stderr以及stdout日志记录,紧急重新启动和适应过程产卵,这是重载的网站是有用的。实际上,将Apache与PHP-FPM结合使用是托管PHP应用程序的最佳堆栈之一,尤其是在性能方面。

在本教程中,您将在一个实例上设置两个PHP网站。每个站点都将使用其自己的域,并且每个域都将部署其自己的PHP版本。第一个site1.your_domain将部署PHP 7.0。第二个site2.your_domain将部署PHP 7.2。

先决条件

  • 通过使用CentOS 7进行初始服务器设置来设置一台至少具有1GB RAM的CentOS 7服务器,包括sudo非root用户和防火墙。
  • 通过遵循如何在CentOS 7上安装 Apache Web服务器来设置和配置Apache Web服务器。
  • 配置为指向您的CentOS 7服务器的域名。通过遵循如何从公共域注册商指向DigitalOcean域名服务器,您可以学习如何将域指向DigitalOcean Droplet 。在本教程中,我们将使用两个子域,每个子域A在我们的DNS设置中指定一个记录:site1.your_domain和site2.your_domain。

第1步-使用PHP-FPM安装PHP版本7.0和7.2

完成前提条件后,您现在将安装PHP版本7.0和7.2。SCL(软件集合)存储库为CentOS 7系统维护了许多版本的PHP堆栈。如果您需要PHP的绝对最新版本,并且在SCL上不可用,请remi改用PPA(个人软件包存档)。

首先将SCL存储库安装到系统中:

sudo yum install centos-release-scl -y

首先,让我们了解一下SCL上可用的PHP 7版本:

sudo yum list rh-php7[0-9].x86_64

您将看到类似以下的输出:

OutputAvailable Packages
rh-php70.x86_64                                 2.3-1.el7                                 centos-sclo-rh
rh-php71.x86_64                                 1-1.el7                                   centos-sclo-rh
rh-php72.x86_64                                 1-2.el7                                   centos-sclo-rh
rh-php73.x86_64                                 1-1.el7                                   centos-sclo-rh

您会注意到,也提供了最新版本PHP 7.3。但是,对于我们的示例,我们将安装版本7.0和7.2。

让我们从旧版本开始。安装rh-php70并rh-php70-php-fpm:

sudo yum install rh-php70  rh-php70-php-fpm -y
  • rh-php70 是运行PHP应用程序的元包。
  • rh-php70-php-fpm 提供作为守护程序运行并接收Fast / CGI请求的Fast Process Manager解释器。

现在,对PHP 7.2版重复该过程。安装rh-php72和rh-php72-php-fpm。

sudo yum install rh-php72  rh-php72-php-fpm -y

接下来,运行以下命令以开始使用两个软件集合:

sudo scl enable rh-php70 bash
sudo scl enable rh-php72 bash

默认情况下,两个PHP版本都在port上侦听9000。但是在本教程中,我们希望同时运行两个版本。因此,我们指定两个新端口:

为此,您可以/etc/opt/rh/rh-php70/php-fpm.d/www.conf在自己喜欢的文本编辑器中打开,并将的每个外观更改9000为9002。然后保存并关闭该文件,并重复这个过程/etc/opt/rh/rh-php72/php-fpm.d/www.conf,现在才替换9000用9003。或者,您可以使用以下两个sed命令进行替换:

sudo sed -i 's/:9000/:9002/'  /etc/opt/rh/rh-php70/php-fpm.d/www.conf
sudo sed -i 's/:9000/:9003/'  /etc/opt/rh/rh-php72/php-fpm.d/www.conf

现在,您已经为每个PHP服务指定了专用端口。但是,在进行这些修改之前,必须将端口添加到SELinux配置中。

SELinux的是短期的安全增强的Linux,它在默认情况下在CentOS 7.您必须添加新的端口启用9002和9003你的SELinux的数据库,并将它们分配给你的httpd服务或应用程序将无法运行。使用semanage命令执行此任务:

sudo semanage port -a -t http_port_t -p tcp 9002
sudo semanage port -a -t http_port_t -p tcp 9003

该-a标志指定您要向数据库添加对象。该-t标志指定对象的类型,在这种情况下为http_port_t。并且-p标志指定tcp协议。您可以在本教程中或通过访问SELinux官方文档来了解有关SELinux和semanage命令的更多信息。

现在您可以启动并启用PHP服务了。从rh-php70-php-fpm服务开始,并使其能够在启动时启动:

sudo systemctl start rh-php70-php-fpm
sudo systemctl enable rh-php70-php-fpm

接下来,验证您的rh-php70-php-fpm服务状态:

sudo systemctl status rh-php70-php-fpm

您将看到类似以下的输出:

Output● rh-php70-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/rh-php70-php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-18 04:49:59 UTC; 1min 6s ago
 Main PID: 1852 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
   CGroup: /system.slice/rh-php70-php-fpm.service
           ├─1852 php-fpm: master process (/etc/opt/rh/rh-php70/php-fpm.conf)
           ├─1853 php-fpm: pool www
           ├─1854 php-fpm: pool www
           ├─1855 php-fpm: pool www
           ├─1856 php-fpm: pool www
           └─1857 php-fpm: pool www

Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager...
Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.

重复此过程,启动rh-php72-php-fpm服务,并使其在启动时启动:

sudo systemctl start rh-php72-php-fpm
sudo systemctl enable rh-php72-php-fpm

接下来,验证您的rh-php72-php-fpm服务状态:

sudo systemctl status rh-php72-php-fpm

您将看到另一个输出,如下所示:

Output● rh-php72-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-18 04:50:04 UTC; 1min 59s ago
 Main PID: 1876 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
   CGroup: /system.slice/rh-php72-php-fpm.service
           ├─1876 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf)
           ├─1877 php-fpm: pool www
           ├─1878 php-fpm: pool www
           ├─1879 php-fpm: pool www
           ├─1880 php-fpm: pool www
           └─1881 php-fpm: pool www

Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager...
Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.

至此,您已经在服务器上安装了两个PHP版本。接下来,您将为要部署的每个网站创建目录结构。

第2步-为两个网站创建目录结构

在本部分中,您将为两个网站中的每个网站创建一个文档根目录和一个索引页。

首先,为site1.your_domain和创建文档根目录site2.your_domain:

sudo mkdir /var/www/site1.your_domain
sudo mkdir /var/www/site2.your_domain

默认情况下,Apache Web服务器以apache用户和apache组身份运行。因此/var/www/,其所有文件和子目录也应归它们所有。运行以下命令来验证您的网站根目录的正确所有权和权限:

sudo chown -R apache:apache /var/www/site1.your_domain
sudo chown -R apache:apache /var/www/site2.your_domain
sudo chmod -R 755 /var/www/site1.your_domain
sudo chmod -R 755 /var/www/site2.your_domain

该chown命令将两个网站目录的所有权更改为apache用户和apache组。该chmod命令更改与该用户和组以及其他用户关联的权限。

接下来,您将info.php在每个网站根目录中创建一个文件。这将显示每个网站的PHP版本信息。开始于site1:

sudo vi /var/www/site1.your_domain/info.php

添加以下行:/var/www/site1.your_domain/info.php

<?php phpinfo(); ?>

复制

保存并关闭文件。现在将info.php您创建的文件复制到site2:

sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php

现在,您的Web服务器具有每个站点向访问者提供数据所需的文档根目录。接下来,您将配置Apache Web服务器以使用两个不同的PHP版本。

步骤3 —为两个网站配置Apache

在本节中,您将创建两个虚拟主机配置文件。这将使您的两个网站可以同时使用两个不同的PHP版本。

为了让Apache提供此内容,必须使用正确的指令创建虚拟主机文件。您将在目录中创建两个新的虚拟主机配置文件/etc/httpd/conf.d/。

首先为网站创建一个新的虚拟主机配置文件site1.your_domain。在这里,您将指导Apache使用PHP 7.0呈现内容:

sudo vi /etc/httpd/conf.d/site1.your_domain.conf

添加以下内容。确保网站目录路径,服务器名称,端口和PHP版本与您的设置匹配:/etc/httpd/conf.d/site1.your_domain.conf


<VirtualHost *:80>
     ServerAdmin admin@site1.your_domain
     ServerName site1.your_domain
     DocumentRoot /var/www/site1.your_domain
     DirectoryIndex info.php
     SetHandler "proxy:fcgi://127.0.0.1:9002
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     AddHandler php70-fcgi .php
     Action php70-fcgi /cgi-bin/php70.fcgi
     ErrorLog /var/log/httpd/site1.your_domain_error.log
     CustomLog /var/log/httpd/site1.your_domain_access.log combined
</VirtualHost>

为DocumentRoot您指定网站根目录的路径。为ServerAdmin您添加your_domain站点管理员可以访问的电子邮件。为ServerName您添加第一个子域的URL。为SetHandler您指定port 9002。其余指令也将您的服务配置为部署PHP 7.0。

保存并关闭文件。

接下来,为网站创建一个新的虚拟主机配置文件site2.your_domain。您将指定此子域来部署PHP 7.2:

sudo vi /etc/httpd/conf.d/site2.your_domain.conf

添加以下内容。再次,确保网站目录路径,服务器名称,端口和PHP版本与您的唯一信息匹配:/etc/httpd/conf.d/site2.your_domain.conf

<VirtualHost *:80>
     ServerAdmin admin@site2.your_domain
     ServerName site2.your_domain
     DocumentRoot /var/www/site2.your_domain
     DirectoryIndex info.php
     SetHandler "proxy:fcgi://127.0.0.1:9003
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     AddHandler php72-fcgi .php
     Action php72-fcgi /cgi-bin/php72.fcgi
     ErrorLog /var/log/httpd/site2.your_domain_error.log
     CustomLog /var/log/httpd/site2.your_domain_access.log combined
</VirtualHost>

完成后保存并关闭文件。然后检查Apache配置文件是否存在语法错误:

sudo apachectl configtest

您将看到输出打印Syntax OK:

OutputSyntax OK

最后,重新启动Apache服务以实现您的更改:

sudo systemctl restart httpd

既然已经配置了Apache为每个站点提供服务,您将对其进行测试以确保正在运行正确的PHP版本。

第4步-测试两个网站

至此,您已经配置了两个网站来运行两个不同版本的PHP。现在测试结果。

打开Web浏览器,并访问这两个网站和。您将看到两个页面,如下所示:http://site1.your_domainhttp://site2.your_domain

如何在CentOS 7上使用Apache和PHP-FPM在一台服务器上运行多个PHP版本-WordPress极简博客
如何在CentOS 7上使用Apache和PHP-FPM在一台服务器上运行多个PHP版本-WordPress极简博客

注意标题。第一页表明已site1.your_domain部署PHP 7.0版。第二个指示已site2.your_domain部署PHP版本7.2。

现在,您已经测试了站点,请删除info.php文件。因为它们包含有关服务器的敏感信息,并且未经授权的用户可以访问,所以它们构成了安全漏洞。删除文件:

sudo rm -rf /var/www/site1.your_domain/info.php
sudo rm -rf /var/www/site2.your_domain/info.php

现在,您有一台CentOS 7服务器,可以处理具有两个不同PHP版本的两个网站。但是,PHP-FPM不限于此一个应用程序。

结论

现在,您已经将虚拟主机和PHP-FPM组合在一起,以在单个服务器上为多个网站和PHP的多个版本提供服务。Apache服务可以处理的PHP站点和PHP版本数量的唯一实际限制是实例的处理能力。

#apache#CentOS7
0
分享
夏柔 站长
文章 712评论 23
赞赏
夏柔
相关文章
  • 全网首发-日主题V2角标亲测美化
  • 自定义onion域名
  • 宝塔linux面板一键工具箱
  • 7种提高代码阅读能力的方法
  • 保护你的WordPress,修改服务器默认用户名root
  • Python多线程扫描端口
  • ThnBo-一款针对WordPress开发的缩略图美化插件,为广大站长提供缩略图的美化便利
  • WordPress去除index.php的方法
  • WordPress美化-文字渐变特效
  • WordPress美化-抖动图片
27 5月, 2020
小米手环5新增5种运动模式 可控制手机拍照
夏柔
站长
夏山如碧 - 怀柔天下
712文章
23评论
58144K获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门30
WordPress技术教程265
前沿技术情报所7
城市创新——新消费8
最近有哪些不可错过的热文5
程序员的养生之道0
疫情实况
31省新增12例确诊 均为境外输入
2月 24, 2021
31省新增10例确诊 均为境外输入
2月 23, 2021
31省新增11例确诊 均为境外输入
2月 22, 2021
更多
每日快讯
一幅从未面世的梵高画作将拍卖
2月 26, 2021
邓亚萍喊王一博参加奥运会街舞比赛
2月 26, 2021
王毅:中印边境事态是非曲直很清楚
2月 26, 2021
元宵节最佳赏月时间
2月 26, 2021
人社部正研究延迟退休改革方案
2月 26, 2021
惠若琪宣布怀孕
2月 25, 2021
上海发现低龄自闭症患儿新药
2月 25, 2021
25岁女孩欠二十万外债抑郁失联
2月 25, 2021
更多
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2021 WordPress极简博客. Designed by 骚老板. 辽公网安备21010502000474号