CenterOS 源码编译安装 PHP 8.3.1及性能优化配置以及 Laravel 10.3.1 部署
本文将介绍如何在 CenterOS 上源码编译并安装 PHP 8.3.1,源码编译更便于 PHP 版本和扩展的管理。 然后我们快速搭建一个 Laravel 10.3.1 框架应用。通过这篇教程,您可以轻松掌握 PHP 8.3.1 的编译和 Laravel 10.3.1 的使用,快速构建您的 PHP Web 应用。
一、PHP 8.3.1 源码编译安装流程#
# 1、下载地址:
https://www.php.net/downloads.php
# 2、下载
cd /Software && wget https://www.php.net/distributions/php-8.3.1.tar.gz
# 3、解压
tar -zxvf php-8.3.1.tar.gz
# 4、安装依赖包
yum install -y \
freetype \
gd \
libpng \
libpng-devel \
libjpeg \
libxml2 \
libxml2-devel \
zlib \
curl \
curl-devel \
net-snmp-devel \
libjpeg-devel \
php-ldap \
openldap-devel \
openldap-clients \
freetype-devel \
gmp-devel libzip \
libzip-devel \
sqlite-devel \
autoconf \
bzip2-devel \
curl-devel \
db4-devel \
libjpeg-devel \
libpng-devel \
libXpm-devel \
gmp-devel \
libc-client-devel \
openldap-devel \
unixODBC-devel \
postgresql-devel \
sqlite-devel \
aspell-devel \
net-snmp-devel \
libxslt-devel \
libxml2-devel \
pcre-devel \
mysql-devel \
unixODBC-devel \
postgresql-devel \
pspell-devel \
net-snmp-devel \
libxslt-devel
# 5、安装依赖包 oniguruma
oniguruma 是一个处理正则表达式的库,
mbstring 的正则功能需要oniguruma的支持,我们需要用到。
# 安装 oniguruma-6.9.4
cd /Software && wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -xvf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4/
./autogen.sh && ./configure --prefix=/usr --libdir=/lib64 # 64 位的系统一定要标识
make && make install
# 配置动态库的路径(加载so库):
(一)、方式一
vim /etc/ld.so.conf
在最后面添加路径:/usr/local/lib
保存退出执行命令:ldconfig
(二)、方式二
执行配置命令:export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
# 6、安装依赖包 libzip
wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar xf libzip-1.3.2.tar.gz
cd libzip-1.3.2/
./configure &&make && make install && echo $?
如果最后输出了0,如果最后输出了0,表示安装完成,如果是1,根据提示信息排查,继续重复,一般不会报错。
如果在 "5、安装依赖包 oniguruma" 时候未配置配置动态库的路径,此时需要配置动态库路径。
# 7、编译(大部分常用扩展)
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-opcache \
--with-pcre-jit \
--enable-gd \
--with-jpeg \
--with-freetype \
--with-gettext \
--with-curl \
--with-openssl \
--enable-sockets \
--enable-mbstring \
--enable-xml \
--with-zip \
--with-zlib \
--with-snmp \
--with-mhash \
--enable-ftp \
--enable-bcmath \
--enable-soap \
--enable-shmop \
--enable-sysvsem \
--enable-pcntl \
--with-gmp \
--enable-calendar \
--with-zlib \
--enable-gd \
--disable-rpath \
--with-bz2 \
--enable-sysvshm \
--enable-mbregex \
--enable-exif \
--enable-bcmath \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-libdir=/lib/x86_64-linux-gnu \
--with-kerberos \
--with-xsl \
--enable-opcache \
--enable-intl \
--with-pear
编译成功如下:
安装:
make && make install安装成功如下:
二、PHP 8.3.1 环境配置#
1.配置文件
cp /Software/php-8.3.1/php.ini-development /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
2.配置文件语法检测
fpm 启动用户配置的是 nginx(--with-fpm-user=nginx) ,所以先创建 nginx 用户。
useradd -M -s /sbin/nologin nginx
-M 没有家目录,没有登录。
-s 不能用来登录。
/usr/local/php8/sbin/php-fpm -t
3.服务管理
(1)启动
/usr/local/php/sbin/php-fpm
(2)关闭
pkill php-fpm
(3)重载
pkill -USR2 php-fpm
4.开机启动
vim /etc/rc.local
/usr/local/php/sbin/php-fpm
5.查看 php-fpm 启动情况
6.软连接 php.ini 配置文件
删除原有的 php.ini
rm /etc/php.ini
连接安装的 php.ini
ln -s /usr/local/php/etc/php.ini /etc
7.配置环境变量
vim /etc/profile
在最后添加:export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH
保存退出后重新加载配置:source /etc/profile
现在已全局生效:
8. PHP3.1 性能优化
一、PHP-FPM进程和线程特点:
1.PHP-FPM是阻塞的单线程模型,PHP-FPM的每个进程只开启一个线程,一个线程同时只能服务一个请求。
2.服务进程内存使用统计:
ps aux |grep php-fpm|awk '{mem+=$6}END{print mem}'
二.进程池:
查看进程池:
ps aux | grep php-fpm
显示php-fpm: pool www 的代表 work 子进程(实际处理请求)
显示php-fpm: process master 的代 master 主进程(负责管理 work 子进程)
查看进程数量:
ps aux | grep php-fpm | wc -l
9.时区配置
vim /usr/local/php/etc/php.ini
date.timezone = Asia/Shangha
三.进程守护者:
user = nginx
group = nginx
# 建议与nginx进程守护者保持一致
四.监听端口:
listen = 127.0.0.1:9000
五.进程管理器核心优化:
vim /usr/local/php/etc/php-fpm.d/www.conf
1.动态创建子进程:
pm = dynamic
2.最大子进程数:
pm.max_children = 100 (默认5)
#每开启一个php-fpm进程要占用近20M左右的内存,假设服务器内存为2G
3.初始进程数:
pm.start_servers = 40 (默认2)
4.最小空闲进程数:
pm.min_spare_servers = 20 (默认1)
5.最大空闲进程数:
pm.max_spare_servers = 60 (默认3)
6.最大多少次请求后子进程重生:
pm.max_requests = 10240
#有效降低内存消耗
六.进程状态监控:
1.php 配置:
vim /usr/local/php/etc/php-fpm.d/www.conf
pm.status_path = /status
重载配置:pkill -USR2 php-fpm
2.nginx设置方法:
nginx 安装配置请看《高性能 HTTP 和反向代理 web 服务器 Nginx》篇章。
准备工作:
cd /usr/local/nginx/conf && cp nginx.conf nginx.conf.bak
mkdir vhosts
vim nginx.conf
在最后添加以下配置:include vhosts/*.conf;
cd vhosts && vim status.conf
配置如下:
server{
listen 8081;
server_name 192.168.130.5;
location /status {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
重载 nginx 配置:pkill -USR2 nginx
打开 status 页面:
http://192.168.130.5:8081/status
进程状态信息解读:
pool: www # 进程池名称
process manager: dynamic # 进程管理方式
start time: 22/Jan/2016:15:49:00 +0800 # 启动时间
start since: 375 # 运行时长
accepted conn: 7 # 当前进程池接受的请求数
listen queue: 0 # 请求等待队列,如果不为 0 ,意味着 FPM 进程不足,需要增加
max listen queue: 0 # 最大等待队列数量
listen queue len: 1024 # SOCKET 等待队列长度
idle processes: 4 # 空闲进程数
active processes: 1 # 活跃的进程数
total processes: 5 # 总进程数
max active processes: 1 # 最大活跃进程数
max children reached: 0 # 达到最大进程数的次数,如果不为 0 ,意味着最大进程数不足,需要增加
slow requests: 0 # 慢请求数量,需要设置 slow log
max listen queue: 0、max active processes: 1 、max children reached: 0 决定
是否需要增加硬件。
三、安装 Laravel 10.3.1#
1、安装 composer
cd /Software
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
版本查看: composer -v
2、设置阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消:
composer config -g --unset repos.packagist
3、安装 laravel 项目:
mkdir /var/www/ && cd /var/www/
composer create-project laravel/laravel test
安装完成:
给项目目录设置权限:
chmod -R 777 ./storage*
chmod -R 777 ./bootstrap/cache*
配置 .env APP_URL:
APP_URL=http://192.168.130.5:8082
配置nginx:
cd /usr/local/nginx/conf/vhosts
vim test.conf:
server {
listen 8082;
server_name 192.168.130.5;
root /var/www/test/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
检查配置是否正确:
重载 nginx 配置:pkill -HUP nginx
访问 Laravel 项目:
192.168.130.5:8082/
至此,在 CenterOS 上源码编译并安装 PHP 8.3.1,源码编译和性能优化配置,以及 Laravel 10.3.1 的使用已全部讲解完
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: