安装phpfpm
A. centos7安装php8,实现php7和php8同时运行
在 CentOS7 系统上安装 PHP8,实现与原有 PHP7 并存运行的过程,确保系统稳定与程序兼容性。安装步骤如下:
1. 进入目录,下载 PHP8.1.25 源码。
2. 解压源码,准备编译环境。
3. 进入解压目录,启动编译过程。
在配置过程中遇到错误,通过先执行特定命令解决,完成编译。
经过一系列配置,最终完成 PHP8 的安装。
4. 配置 PHP-FPM 服务。
5. 使用 systemctl 启动 PHP-FPM 服务,并修改服务文件为 php8-fpm。
创建 php8-fpm.service 文件于目录 /usr/lib/systemd/system/。
配置文件内容并保存,运行命令启动服务。
6. 在 php-fpm.conf 中进行其他相关配置。
在网站 vhost 配置中,如 nginx 配置中,基于两种方式监听:基于 unix socket 或基于 tcp。
基于 unix socket 通信方式,设置 listen = /dev/shm/php8-cgi.sock,配置 fastcgi_pass unix:/dev/shm/php8-cgi.sock,实现应用层内部通信,速度较快。
基于 tcp 监听方式,设置 listen = 127.0.0.1:9008,配置 fastcgi_pass 127.0.0.1:9008,端口需与 nginx 配置相匹配。
7. 启动 php8-fpm 服务,重新运行 nginx,实现通信。
8. 添加快捷方式到 /usr/bin 中,生成别名为 php8 的快捷方式,便于使用。
9. 添加对两种监听方式的说明与对比:
unix socket 监听方式:优点在于速度快、资源消耗少;缺点为稳定性较低,存在数据传输问题。适合在同一台机器上的 nginx 和 php-fpm 服务。
tcp 监听方式:优点为能保证数据的正确性,适合跨服务器场景;缺点为性能不如 unix socket。
通过上述步骤,成功在 CentOS7 上安装并配置 PHP8,实现了与 PHP7 的并存运行,满足了不同场景下的使用需求。
B. PHP-FPM详解
PHPFPM是PHP FastCGI进程管理器,专为管理PHP进程池设计,用于接收web服务器请求。以下是关于PHPFPM的详细解释:
一、PHPFPM的诞生 PHPFPM的诞生源自PHPFastCGI的需求,是为了有效管理PHPFastCGI而出现的程序。
二、PHPFastCGI的作用 PHPFastCGI是一个解析PHP请求并返回结果的CGI程序,但它本身并不负责管理进程。
三、PHPCGI与PHPFastCGI的区别 在PHPFastCGI之前,存在PHPCGI,但由于其执行效率低下,最终被PHPFastCGI取代。
四、FastCGI与CGI的区别 CGI模式:每次请求时都需要读取php.ini配置,初始化执行环境,耗时且重复。 FastCGI模式:允许一次启动一个主进程,读取一次配置,然后启动多个工作进程。当请求来临时,master将请求传递给worker,避免了重复的初始化工作,提高了效率。
五、PHPFPM的工作原理 PHPFPM创建一个主进程来控制何时以及如何将HTTP请求转发给一个或多个子进程处理。 主进程还负责管理进程的创建与销毁,以适应Web应用流量的变化。
六、PHPFPM的安装与配置 安装:PHP在5.3.3之后将PHPFPM整合到核心代码中,无需单独下载安装。只需在编译PHP源码时添加enablefpm即可启用PHPFPM支持。 全局配置:在CentOS中,PHPFPM的主配置文件为/etc/php7/phpfpm.conf,配置内容通常包括进程池定义。进程池定义文件通常使用www.conf作为默认配置文件,进行必要的编辑保存后,重启PHPFPM主进程。 进程池详细配置:请参考php.net/manual/install文档。
七、实际应用 以nginx为例,可以配置nginx将请求转发给PHPFPM进行处理。
以上是PHPFPM的详细解释,涵盖了其诞生背景、作用、与CGI/PHPCGI的区别、工作原理、安装与配置以及实际应用等方面。
C. 如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
Nextcloud 是一款自由 (开源) 的类 Dropbox 软件歼凳,由 ownCloud 分支演化形成。它使用 PHP 和 Javascript 编写,支持多种数据库系统,比如 Mysql/MariaDB、PostgreSQL、Oracle 数据库和 SQLite。它可以使你的桌面系统和云服务器中的文件保持同步,Nextcloud 为 Windows、Linux、Mac、安卓以及苹果手机都提供了客户端支持。Nextcloud 并非只是 Dropbox 的克隆,它还提供了很多附加特性,如日历、联系人、计划任务以及流媒体 Ampache。
在这篇文章中缓改游,我将向你展示如何在 CentOS 7 服务器中安装和配置最新版本的 Nextcloud 10。我会通过 Nginx 和 PHP7-FPM 来运行 Nextcloud,同时使用 MariaDB 做为数据库系统。
先决条件64 位的 CentOS 7服务器的 Root 权限
步骤 1 - 在 CentOS 7 中安装 Nginx 和 PHP7-FPM
在开始安装 Nginx 和 php7-fpm 之前,我们还学要先添加 EPEL 包的仓库源。使用如下命令:
-------------------------------------
yum -y install epel-release
现在开扰销始从 EPEL 仓库来安装 Nginx:
-------------------------------------
yum -y install nginx
然后我们还需要为 php7-fpm 添加另外一个仓库。互联网中有很个远程仓库提供了 PHP 7 系列包,我在这里使用的是 webtatic。
添加 PHP7-FPM webtatic 仓库:
-------------------------------------
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
然后就是安装 PHP7-FPM 以及 Nextcloud 需要的一些包。
复制代码 代码如下:
yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel
最后,从服务器终端里查看 PHP 的版本号,以便验证 PHP 是否正确安装。
-------------------------------------
php -v
D. 用yum安装php-fpm提示There are no enabled repos.
Nginx 本身就不用介绍了,目前使用 FastCGI 是最流行的模式.现在不少网站使用.我来介绍一个简单的安装方法.
先要使用第三方的源,默认的源是不存在最新的 php 的,需要 php 5.3.3 以上才有 php-fpm,所以一定要安装这些源..
配置最新 PHP 的源
如果是 CentOS 6 和 Red Hat (RHEL) 6 的 Remi 源
rpm-Uvhhttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm-Uvhhttp://rpms.famillecollet.com/enterprise/remi-release-6.rpm
如果是 CentOS 5 和 Red Hat (RHEL) 5 的 Remi 源
rpm-Uvhhttp://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm-Uvhhttp://rpms.famillecollet.com/enterprise/remi-release-5.rpm
配置 Nginx 的源
我们需要建一个新的源文件,编辑 /etc/yum.repos.d/nginx.repo 就可以了.加入如下内容
[nginx]
name=nginxrepo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
安装最新的 Nginx 和 PHP(php-fpm)
安装最新的 Nginx 和 PHP .还有支持启动 FastCGI 的 php-fpm 的功能.其它都是 PHP 的一些模块了.
yum--enablerepo=remiinstallnginxphpphp-fpmphp-common
php-pearphp-pdophp-mysqlphp-pgsqlphp-pecl-memcachephp-gd
php-mbstringphp-mcryptphp-xml
安装 MYSql 也需要使用这个的源才行
yum--enablerepo=remiinstallmysqlmysql-server
配置 Nginx 和 PHP-FPM
在 Nginx 加,给这些下面的注掉的内容打开,让 php 的文件支持使用 fastcgi 来通信就行了.
location~.php${
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME/usr/share/nginx/html$fastcgi_script_name;
includefastcgi_params;
}
测试 Nginx 和 PHP-FPM
我们需要确认 fastcgi 是否能正常的使用,所以需要在,上面的 /usr/share/nginx/html 中加入 phpinfo.php 的测试文件.
<?php
phpinfo();
?>
这时只要打开 url 来测试这个 phpinfo.php 文件是否能正常的显示就行了.
启动和永久启动 Nginx 和 PHP-FPM
我们一定不想下次 Nginx 和 PHP-FPM 在也启动不了啦,所以我们需要加入启动中去.让系统启动后就能自动启动这些.
servicenginxstart
servicephp-fpmstart
chkconfig--addnginx
chkconfig--levels235nginxon
chkconfig--addphp-fpm
chkconfig--levels235php-fpmon