Detailed steps to compile, install and configure php8 in Centos

藏色散人
Release: 2023-02-17 12:56:01
forward
6192 people have browsed it

This article brings you relevant knowledge about PHP. It mainly introduces how to compile and install PHP in the Centos system and how to configure it correctly. The steps are very detailed! Friends who are interested can take a look below. I hope it will be helpful to everyone.

Detailed steps to compile, install and configure php8 in Centos

PHP (full name: PHP: Hypertext Preprocessor, i.e. "PHP: Hypertext Preprocessor") is an open source general-purpose computer scripting language, especially suitable for Developed for the web and can be embedded in HTML. The syntax of PHP draws on the characteristics of popular computer languages such as C language, Java and Perl, making it easy for ordinary programmers to learn. The main goal of PHP is to allow web developers to write dynamic pages quickly.

Preparation

Download the installation file

To be safe, use php official website download: https: //www.php.net/downloads
The download speed using the official website is slower, but the security is guaranteed. If you have no requirements for security, you can also search for related mirrors on Baidu. This article chooses the latest stable version 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
Copy after login

Installation dependencies

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
Copy after login

Note: The current Centos official image has stopped serving,yum installInstallationdevelsoftware, if an error is reported and cannot be installed, try overwriting the file contents inCentOS-Base.repo.rpmsavein the/etc/yum.repos.d/directory. ToCentOS-Linux-BaseOS.repo,CentOS-AppStream.repo.rpmsaveis overwritten toCentOS-Linux-AppStream.repo, please make a backup before operation

Because there is no oniguruma package in the yum source, here we use the github source code to compile and install. Project address: 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
Copy after login

Create user

For security reasons, we need to create a user for running php. Generally, this user is prohibited from logging in. This article creates a user The name and user group are bothwww, this name can be customized

# 创建用户组 groupadd www # 创建用户 useradd -g www www -M -s /sbin/nologin
Copy after login
  • ##-g wwwSpecify user group
  • -MDo not create a home directory (a home directory is not required to run the program)
  • -s /sbin/nologinDo not allow login , more secure

Compile and install
# 生成编译文件 ./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
Copy after login

If using

apache, you need to add--with-apxs2=/www/server/apache/bin/apxsin the compilation parameters, and the--enable-fpmparameter can be removed, where/www/server/apacheis the installation directory ofapache. After compilation, uncomment thephp_modulein the configuration file ofapache. , this article will not go into details aboutapacheconfiguration.

Configuration

Configuration environment variables

In

/etc/profileAddPATH=$PATH:/www/server/php81/bin && export PATH, and usesource /etc/profileto make the configuration take effect immediately.

Create

php-fpmSoft link:

ln -s /www/server/php81/sbin/php-fpm /www/server/php81/bin/php-fpm
Copy after login

nginx configuration php

Copy the configuration file. If you have copied it before, please skip this step:

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
Copy after login

Start php-fpm:

/www/server/php81/sbin/php-fpm
Copy after login

Modify nginx configuration file

Edit

nginx.conffile, add the following content under the correspondingserver:

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

##Restart nginx,
nginx -s reload

, create a newphpinfo.phpfile in the root directory of the website:

<?php phpinfo();
Copy after login

Detailed steps to compile, install and configure php8 in Centos

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
Copy after login

随后在 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; }
Copy after login

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
Copy after login

随后添加为开机自启即可,如下:(php-fpm81是上一步自定义得到文件名)

# 添加运行权限 chmod +x /etc/init.d/php-fpm81 chkconfig --add php-fpm81 chkconfig php-fpm81 on
Copy after login

手动操作命令如下:

# 启动 /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
Copy after login

推荐学习:《PHP视频教程

The above is the detailed content of Detailed steps to compile, install and configure php8 in Centos. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:codeover
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!