安裝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