手动编译安装一个php8.2.3
先以root用户登陆服务器,我这里是Debian11,然后运行下面的命令,Redhat系改成yum install
apt install -y build-essential pkg-config libxml2-dev openssl libssl-dev libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libonig-dev libzip-dev libwebp-dev libfreetype-dev libfreetype6-dev libxslt-dev
下载php8.2.3
wget https://www.php.net/distributions/php-8.2.3.tar.gz
解压PHP压缩包并且进入解压缩目录
tar zxvf php-8.2.3.tar.gz
cd php-8.2.3
复制下面一大串命令,回车等待系统自动检查
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/conf.d \
--enable-fpm --with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-freetype=/usr/local/freetype \
--with-jpeg \
--with-zlib \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--enable-gd --with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-zip \
--enable-soap \
--with-gettext \
--enable-fileinfo \
--enable-opcache \
--with-xsl \
--with-pear \
--with-webp
出现Thank you use PHP字样表示编译环境没问题,运行下面命令编译和安装
make && make install
配置php8.2.3
经过漫长的等待之后,没有意外的话在刚才解压缩的php8.2.3的目录下面有php.ini-production这个文件,将这个文件复制到etc目录下,并更名为php.ini
cp php.ini-production /usr/local/php/etc/php.ini
然后创建php-fpm配置文件
vim /usr/local/php/etc/php-fpm.conf
这里我直接用的是LNMP环境包下面的配置,根据自己需要调整,复制粘贴后,请退出保存!
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = debug
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 100
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 100
pm.max_requests = 1024
pm.process_idle_timeout = 10s
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
接下来创建PHP-FPM服务的管理
vim /usr/lib/systemd/system/php-fpm.service
复制下面的内容,复制粘贴后,请退出保存!
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config
/usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
[Install]
WantedBy=multi-user.target
赋予任意用户执行权限
chmod +x /usr/lib/systemd/system/php-fpm.service
设置PHP开机自启
systemctl enable php-fpm
systemctl start php-fpm
查看PHP的状态显示running就成功了
systemctl status php-fpm
让Nginx支持PHP环境,在/usr/local/nginx/conf/下面创建两个配置文件
编辑第一个配置文件
vim /usr/local/nginx/conf/enable-php.conf
复制下面的内容,复制粘贴后,请退出保存!
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/usr/local/php/var/run/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
编辑第二个配置文件
vim /usr/local/nginx/conf/enable-php-pathinfo.conf
复制下面的内容,复制粘贴后,请退出保存!
location ~ [^/]\.php(/|$)
{
fastcgi_pass unix:/usr/local/php/var/run/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
}
至此手动安装PHP完成,如果需要启用Opcache插件请继续看下面
编译Opcache
进入PHP解压缩目录
cd /root/php-8.2.3/ext/opcache
执行下面这个命令,这个命令的路径是你PHP安装的路径,如果没有更改请直接复制下面的命令
/usr/local/php/bin/phpize
然后在执行下面的命令
./configure --with-php-config=/usr/local/php/bin/php-config
至此Opcache安装完成,它会把生成的文件自动放到相应的目录但是我们还需要开启它
开启Opcache和Jit
我们需要进入目录/usr/local/php/etc找到php.ini文件
vim /usr/local/php/etc/php.ini
找到[opcache]这段配置编辑它,复制下面的内容,复制粘贴后,请退出保存!
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20210902/opcache.so
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
;jit配置
opcache.jit=1205
opcache.jit_buffer_size=64M
请注意zend_extension中的路径每个人都不一样,最好是直接手动找到这个路径手动复制上去