站長資訊網
最全最豐富的資訊網站

步驟詳解Centos中編譯安裝php8與配置方法

本篇文章給大家帶來了關于php的相關知識,其中主要介紹了在Centos系統中是如何編譯安裝php,以及如何正確配置的,步驟很詳細!感興趣的朋友下面一起來看一下吧,希望對大家有幫助。

步驟詳解Centos中編譯安裝php8與配置方法

PHP(全稱:PHP:Hypertext Preprocessor,即“PHP:超文本預處理器”)是一種開源的通用計算機腳本語言,尤其適用于網絡開發并可嵌入HTML中使用。PHP的語法借鑒吸收C語言、Java和Perl等流行計算機語言的特點,易于一般程序員學習。PHP的主要目標是允許網絡開發人員快速編寫動態頁面。

準備工作

下載安裝文件

保險起見使用 php 官網下載:https://www.php.net/downloads
使用官網下載速度較慢,但是安全性有保障,如對安全性沒有要求也可百度搜索相關鏡像,本文選擇最新穩定版本 PHP 8.1.6

wget https://www.php.net/distributions/php-8.1.6.tar.gz tar -zxvf php-8.1.6.tar.gz cd php-8.1.6
登錄后復制

安裝依賴

yum install libxml2 libxml2-devel libsqlite3x-devel openssl bzip2 libcurl-devel libcurl libjpeg libpng freetype gmp libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glib2 ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel -y
登錄后復制

注意:當前 Centos 官方鏡像已停止服務,yum install 安裝 devel 軟件時,如報錯無法安裝可嘗試將 /etc/yum.repos.d/ 目錄下的 CentOS-Base.repo.rpmsave 中的文件內容覆蓋至 CentOS-Linux-BaseOS.repoCentOS-AppStream.repo.rpmsave 覆蓋至 CentOS-Linux-AppStream.repo,操作前請注意備份

因 yum 源中沒有 oniguruma 包,這里使用 github 源碼編譯安裝,項目地址:https://github.com/kkos/oniguruma

wget https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz tar -zxvf onig-6.9.8.tar.gz cd onig-6.9.8 ./configure --prefix=/usr make && make install
登錄后復制

創建用戶

安全起見,我們需要創建一個用戶用于運行 php,一般這個用戶是禁止登陸的,本文創建用戶名與用戶組均為 www,這個名稱可以自定義

# 創建用戶組 groupadd www # 創建用戶 useradd -g www www -M -s /sbin/nologin
登錄后復制

  • -g www 指定用戶組
  • -M 不創建家目錄(程序運行不需要家目錄)
  • -s /sbin/nologin 不允許登錄,更加安全

編譯并安裝

# 生成編譯文件 ./configure --prefix=/www/server/php81 --with-config-file-path=/www/server/php81/etc --enable-fpm --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype --with-mcrypt --with-jpeg --with-png -with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl -enable-mbstring --enable-gd --with-openssl --with-mhash --enable-pcntl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-opcache --with-xsl --enable-sockets --enable-mbregex --enable-ftp --with-webp # 編譯并安裝 make && make install # 復制配置文件 cp php.ini-production /www/server/php81/etc/php.ini # 或者使用 development cp php.ini-development /www/server/php81/etc/php.ini
登錄后復制

如果使用 apache 的話,需要在編譯參數中新增 --with-apxs2=/www/server/apache/bin/apxs,同時 --enable-fpm 參數可去除,其中 /www/server/apacheapache 安裝目錄,編譯完成后在 apache 的配置文件中解注釋對 php_module 的注釋即可,本文不細講 apache 配置。

配置

配置環境變量

/etc/profile 下新增 PATH=$PATH:/www/server/php81/bin && export PATH,使用 source /etc/profile 使配置立即生效。

創建 php-fpm 軟鏈接:

ln -s /www/server/php81/sbin/php-fpm /www/server/php81/bin/php-fpm
登錄后復制

nginx 配置 php

復制配置文件,如果之前已經復制過請跳過此步驟:

cp /www/server/php81/etc/php-fpm.conf.default /www/server/php81/etc/php-fpm.conf cp /www/server/php81/etc/php-fpm.d/www.conf.default /www/server/php81/etc/php-fpm.d/www.conf
登錄后復制

啟動 php-fpm:

/www/server/php81/sbin/php-fpm
登錄后復制

修改 nginx 配置文件

編輯 nginx.conf 文件,在對應的 server 下新增如下內容:

location ~ [^/].php(/|$) {     fastcgi_pass   127.0.0.1:9000;     fastcgi_index  index.php;     include        fastcgi.conf; }
登錄后復制

重啟 nginx ,nginx -s reload,在網站根目錄新建 phpinfo.php 文件:

<?php  phpinfo();
登錄后復制

步驟詳解Centos中編譯安裝php8與配置方法

nginx php 多版本共存

在日常的開發中,不同項目可能需要不同版本的 php 來運行,這就需要通過一些配置來實現 php 的共存。多個 php 版本共存時,需要在編譯時將不同版本的 php 安裝到不同的目錄。

打開 php 安裝路徑,編輯文件 etc/php-fpm.d/www.confetc/php-fpm.conf,在文件中新增或修改以下項:

[www] ; 根據版本配置,比如 php8.1 配置為 php-cgi-81.sock listen = /tmp/php-cgi-81.sock listen.backlog = 8192 listen.allowed_clients = 127.0.0.1 ; 運行 master 進程用戶名,一定要設置!!并且 listen 中設置的文件 nginx 必須有讀權限,否則會報錯 listen.owner = www ; 運行 master 進程用戶名,參考上一個 listen.group = www listen.mode = 0666 ; worker 進程運行的用戶,該用戶需要有運行的 PHP 文件的讀權限,如涉及文件上傳還需要對應目錄的寫權限 user = www ; worker 進程的用戶組,參考上一項 group = www ; 動態調整 worker 數 pm = dynamic ; 依據版本設置 如 php8.1 配置為 phpfpm_81_status pm.status_path = /phpfpm_81_status ; 最大 worker 進程數 一般設置為 內存/50M pm.max_children = 50 ; 啟動時的 worker 進程數 pm.start_servers = 5 ; 限制時的最小 worder 進程數 pm.min_spare_servers = 5 ; 限制時的最大 worder 進程數 pm.max_spare_servers = 10 ; 請求超時時間 request_terminate_timeout = 100 ; 慢日志記錄時間,請求事件超出此時間會記錄日志 request_slowlog_timeout = 30 ; 慢日志目錄,目錄一定要存在且上面設置的 user 用戶要有寫權限 slowlog = /www/wwwlogs/php/slow.log
登錄后復制

隨后在 nginx 配置文件,對應的 server 中修改 fastcgi_pass 為剛才設置中的 listen 對應的路徑,注意此文件 nginx 運行用戶必須有讀權限,否則會報錯:

 location ~ [^/].php(/|$) { -    fastcgi_pass   127.0.0.1:9000; +    fastcgi_pass   unix:/tmp/php81.sock;      fastcgi_index  index.php;      include        fastcgi.conf;  }
登錄后復制

php-fpmphp-Fastcgi Process Manager,php-fpmFastCGI 的實現,并提供了進程管理的功能。php-fpm 進程包含 master 進程與 worker 進程,一般情況下,master 進程只有一個,負責監聽端口、調度請求,而 worder 進程則有多個,每個進程內部都嵌入了一個 PHP 解釋器,是 PHP 代碼真正運行的地方。前文設置中的 workerphp-fpmworker 進程數量。

開機自啟

編輯文件 /etc/init.d/php-fpm81,如需多版本兼容文件名后加上當前版本,如這里使用 php-fpm81,寫入如下內容:

#!/bin/bash  # chkconfig: - 51 64  . /etc/init.d/functions  # php-fpm 路徑 exec=/www/server/php81/sbin/php-fpm # 鎖文件 用于識別當前軟件是否在運行 lock=/var/lock/subsys/php-fpm81 # 標識 輸出信息用 可隨意修改 proc=php-fpm81  function start() {     pidofproc $exec > /dev/null     [ $? = 0 ] && echo "${proc} 正在運行中" && exit     daemon $exec     if [ $? = 0 ]; then         echo "${proc} 啟動成功"         rm -f lock         touch $lock     else       echo "${proc} 啟動失敗 $?"     fi }  function stop() {     pidofproc $exec > /dev/null     [ $? != 0 ] && echo "${proc} 未運行" && exit     killproc $exec     if [[ $? == 0 ]]; then         echo "${proc} 停止成功"         rm -f $lock     else       echo "${proc} 停止失敗 $?"     fi }  function reload() {     killproc $exec -HUP     if [[ $? == 0 ]]; then         echo "平滑重啟成功"     else         echo "平滑重啟失敗 $?"     fi }  function restart() {     stop     start }  function procStatus() {     status $exec > /dev/null     if [[ $? == 0 ]]; then         echo "${proc} 已啟動"     else         echo "${proc} 未啟動"     fi }  case "$1" in   start)     start     ;;   stop)     stop     ;;   reload)     reload     ;;   restart)     restart     ;;   status)     procStatus     ;;   *)     echo $"Usage: $0 {start|stop|reload|restart|status}" esac
登錄后復制

隨后添加為開機自啟即可,如下:( php-fpm81 是上一步自定義得到文件名)

# 添加運行權限 chmod +x /etc/init.d/php-fpm81 chkconfig --add php-fpm81 chkconfig php-fpm81 on
登錄后復制

手動操作命令如下:

# 啟動 /etc/init.d/php-fpm81 start # 停止 /etc/init.d/php-fpm81 stop # 平滑重啟 /etc/init.d/php-fpm81 reload # 重啟 /etc/init.d/php-fpm81 restart # 運行狀態 /etc/init.d/php-fpm81 status
登錄后復制

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久99精品久久久久久首页 | 日韩免费码中文在线观看| 正在播放酒店精品少妇约| 久久久久国产精品免费免费搜索 | 日韩一级在线视频| 国产精品jizz在线观看直播| mm1313亚洲精品国产| 亚洲国产美女精品久久久| 国内精品久久久久| 亚洲欧洲日韩极速播放| 国产高清国产精品国产专区| 久夜色精品国产一区二区三区| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 中日韩精品视频在线观看| 久久久无码精品亚洲日韩软件| 国产精品久久久久jk制服| 日韩人妻无码精品一专区| 国产成人精品久久二区二区 | 无码国产精品一区二区免费I6| 亚洲AV无码国产精品色| 久久人人爽人人精品视频| 国产在线视精品麻豆| 亚洲精品免费在线| 国产在线精品一区二区三区不卡| selaoban在线视频免费精品| 夜夜爽一区二区三区精品| 337P日本欧洲亚洲大胆精品 | 国产国产成人久久精品杨幂| 国产精品青草久久| 91精品国产一区| 国产一区二区三区精品视频| 国产成人精品一区二三区在线观看| 日韩久久精品一区二区三区| 亚洲AV无码精品蜜桃| 91精品啪在线观看国产91九色 | 国内精品免费视频精选在线观看| 中文字幕精品亚洲无线码一区应用| 丰满人妻熟妇乱又仑精品| 91精品国产综合久久精品| 热99RE久久精品这里都是精品免费| 中文字幕av日韩精品一区二区|