VPS手动安装PHP以及开启Opcache

203天前 · 网站 · 213次阅读

手动编译安装一个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中的路径每个人都不一样,最好是直接手动找到这个路径手动复制上去

PHP

最后修改于19天前