1 从php的官网下载需要的php版本 我用的是 php-8.2.22.tar.gz 2 解压 tar -zxvf php-8.2.22.tar.gz 3 安装php所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel gd gd-devel 4 新建 php运行所需要的用户 useradd -s /sbin/nologin www
5 安装php cd php8.2.22 ./configure --prefix=/usr/local/php8.2.22 --with-config-file-path=/usr/local/php8.2.22/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mysqlnd --with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd --with-freetype --with-jpeg --with-webp --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --with-curl --enable-mbregex --enable-mbstring
--enable-intl --enable-ftp --enable-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --enable-soap --with-gettext --disable-fileinfo --enable-opcache make make install cp php.ini-production /usr/local/php8.2.22/etc/php.ini
6 编辑php配置文件 编辑 php.ini文件 设置如下 short_open_tag = On disable_functions = "dl,exec,passthru,pcntl_exec,popen,posix_kill,posix_mkfifo,posix_setuid,proc_close,proc_open,proc_terminate,shell_exec,system,leak,posix_setpgid,posix_setsid,proc_get_status,proc_nice,show_source" cgi.fix_pathinfo=0 date.timezone = Asia/Shanghai expose_php = Off
7 编辑php-fpm配置文件 cp php-fpm.conf.default php-fpm.conf 编辑 php-fpm.conf 设置如下 pid = /usr/local/php8.22/var/run/php-fpm.pid error_log = log/php-fpm.log log_level = notice process_control_timeout = 30 events.mechanism = epoll listen = 127.0.0.1:9082 listen.backlog = -1 pm.max_children = 1024 pm.start_servers = 80 pm.min_spare_servers = 20 pm.max_spare_servers = 80 pm.max_requests = 2000 pm.status_path = /status ping.path = /ping ping.response = pong slowlog = var/log/phpslow_$pool.log request_slowlog_timeout = 5s request_terminate_timeout = 60s rlimit_files = 65534 php_admin_value[open_basedir] = "/tmp/" php_admin_value[disable_functions] = dl,exec,leak,passthru,pcntl_exec,popen,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,show_source,system
8 测试php #测试php-fpm配置 /usr/local/php8.2.22/sbin/php-fpm -t /usr/local/php8.2.22/sbin/php-fpm -c /usr/local/php8.2.22/etc/php.ini -y /usr/local/php8.2.22/etc/php-fpm.conf -t #启动php-fpm /usr/local/php8.2.22/sbin/php-fpm /usr/local/php8.2.22/sbin/php-fpm -c /usr/local/php8.2.22/etc/php.ini -y /usr/local/php8.2.22/etc/php-fpm.conf #关闭php-fpm kill -INT `cat /usr/local/php8.2.22/var/run/php-fpm.pid` #重启php-fpm kill -USR2 `cat /usr/local/php8.2.22/var/run/php-fpm.pid`
9 配置开机启动 vi /etc/init.d/php8.22-fpm 写入如下内容 根据实际情况修改 #!/bin/bash # chkconfig: 2345 10 90 # description: php-fpm is a FastCGI web server. # processname: php7-fpm # config: /usr/local/php8.2.22/etc/php-fpm.conf # pidfile: /usr/local/php8.2.22/var/run/php-fpm.pid #======================================================================================= PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin BINFILE="/usr/local/php8.2.22/sbin/php-fpm" CFGFILE="/usr/local/php8.2.22/etc/php-fpm.conf" PIDFILE="/usr/local/php8.2.22/var/run/php-fpm.pid" LOCKFILE="/usr/local/php8.2.22/var/run/php-fpm.lock" RETVAL=0 start() { [[ -x $BINFILE ]] || exit 5 [[ -f $CFGFILE ]] || exit 6 if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -gt 0 ]]; then echo "The php-fpm is already running." return 1 fi $BINFILE -t >/dev/null 2>&1 if [[ $? -ne 0 ]]; then echo "The php-fpm configure has error." return 1 fi echo -n "Starting php-fpm......" $BINFILE -y $CFGFILE -g ${PIDFILE} RETVAL=$? echo [[ $RETVAL -eq 0 ]] && touch $LOCKFILE return $RETVAL } stop() { if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then echo "The php-fpm is not running." return 1 fi echo -n "Shutting down php-fpm......" if [[ -f $PIDFILE ]]; then kill -QUIT `cat ${PIDFILE}` else kill -QUIT `ps aux | grep php-fpm | awk '/master/{print $2}'` fi RETVAL=$? echo [[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE return $RETVAL } restart() { stop sleep 1 while true do if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then start break fi sleep 1 done RETVAL=$? echo return $RETVAL } reload() { if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then echo "The php-fpm is not running." return 1 fi echo -n $"Reloading php-fpm......" if [[ -f $PIDFILE ]]; then kill -USR2 `cat ${PIDFILE}` else kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'` fi RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; *) echo "Usage: service php-fpm {start|stop|restart|reload}" RETVAL=1 esac exit $RETVAL
9 配置开机启动 chmod 755 /etc/init.d/php8.22-fpm chkconfig --add php8.22-fpm chkconfig php8.22-fpm on /etc/init.d/php8.22-fpm start
浙公网安备 33010602011771号