ホームページ  >  記事  >  バックエンド開発  >  Centos で php8 をコンパイル、インストール、構成する詳細な手順

Centos で php8 をコンパイル、インストール、構成する詳細な手順

藏色散人
藏色散人転載
2023-02-03 14:59:056357ブラウズ

この記事では、PHP に関する関連知識を提供します。主に、Centos システムで PHP をコンパイルおよびインストールする方法と、PHP を正しく構成する方法を紹介します。手順は非常に詳細です。興味のある方は以下をご覧ください。皆様のお役に立てれば幸いです。

Centos で php8 をコンパイル、インストール、構成する詳細な手順

PHP (正式名: PHP: Hypertext Preprocessor、つまり「PHP: Hypertext Preprocessor」) は、オープンソースの汎用コンピュータ スクリプト言語であり、特に次の用途に適しています。 Web 用に開発されており、HTML に埋め込むことができます。 PHP の構文は、C 言語、Java、Perl などの一般的なコンピューター言語の特徴を取り入れているため、一般のプログラマーでも簡単に学習できます。 PHP の主な目標は、Web 開発者が動的ページを迅速に作成できるようにすることです。

#準備

インストール ファイルをダウンロード

安全のため、php 公式 Web サイトのダウンロードを使用してください。 : https://www.php.net/downloads

公式 Web サイトを使用した場合、ダウンロード速度は遅くなりますが、セキュリティは保証されています。セキュリティに要件がない場合は、Baidu で関連ミラーを検索することもできます。この記事では最新の安定バージョン 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 公式イメージは停止していますServing、

yum install Installation devel ソフトウェアで、エラーが報告されてインストールできない場合は、次の CentOS-Base.repo.rpmsave のファイルの内容を上書きしてみてください。 /etc/yum.repos.d/ ディレクトリ。CentOS-Linux-BaseOS.repo に、CentOS-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 && エクスポート PATH を追加し、

source /etc/profile

を使用して、構成をすぐに有効にします。 作成php-fpm ソフトリンク: <pre class="brush:php;toolbar:false">ln -s /www/server/php81/sbin/php-fpm /www/server/php81/bin/php-fpm</pre>

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

Start php-fpm:

/www/server/php81/sbin/php-fpm
Modify nginxconfiguration file

Edit

nginx.conf

ファイルで、対応する

server

の下に次の内容を追加します:

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

#nginx を再起動します、

nginx -s reload
、Web サイトのルート ディレクトリに新しい phpinfo.php ファイルを作成します:
<?php

phpinfo();

##

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 Managerphp-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视频教程

以上がCentos で php8 をコンパイル、インストール、構成する詳細な手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcodeoverで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。