WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 技术教程(干货) 如何在CentOS 7上使用Apache和PHP-FPM在一台服务器上运行多个PHP版本

如何在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
J2dcg1.png
猜你喜欢
  • Nginx添加跨域限制规则
  • 使用测速脚本对国内Linux服务器进行测速
  • 域名爆破之自动化信息收集脚本
  • 利用免费接口实现国家开放大学刷网课脚本
  • RiProV2定制导航条
  • 判断是否在微信浏览器打开
  • 微信内自动播放音频非百度方案
  • 利用veImageX加速您的网站,想不快都难!
  • SWAPIDC减少注册信息及防刷注册量教学
  • Python实现定时发送每日早报及生活指数
20 9月, 2023
9月20日,星期三,在这里每天60秒读懂世界!
夏柔
站长
夏山如碧 - 怀柔天下
1725
文章
25
评论
58145K
获赞
版权声明

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

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

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2