Home  >  Article  >  Operation and Maintenance  >  How to install multiple versions of PHP for Nginx under Linux system

How to install multiple versions of PHP for Nginx under Linux system

WBOY
WBOYforward
2023-05-11 19:34:041286browse

linux version: 64-bit centos 6.4

nginx version: nginx1.8.0

php version: php5.5.28 & php5.4.44

Note that if php5.5 is The main version has been installed in the /usr/local/php directory, then you can install other versions of php and specify different installation directories.

Install php

# wget http://cn2.php.net/get/php-5.4.44.tar.gz/from/this/mirror
# tar zxvf php-5.4.44.tar.gz
# cd php-5.4.44
#./configure --prefix=/usr/local/php5.4.44 \
--with-curl \
--with-freetype-dir \
--with-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-mysql \
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-png-dir \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
--enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip
# make && make install
# cp -r ./sapi/fpm/php-fpm.conf /usr/local/php5.4.44/etc/php-fpm.conf
# cp php.ini-development /usr/local/php5.4.44/lib/php.ini
# cp -r ./sapi/fpm/php-fpm /etc/init.d/php-fpm5.4.44

Modify the listening port of php-fpm.conf to 9001, because the main version 5.5.28 listens on 9000.

; note: this value is mandatory.
listen = 127.0.0.1:9001

Start php-fpm

# /etc/init.d/php-fpm5.4.44

php installation is successful and check the process

#ps aux|grep php

How to install multiple versions of PHP for Nginx under Linux system

In this way, php-fpm has been started.

Configure nginx

Add a new configuration of port 8054 and point it to 9001 and the specified directory:

server {
    listen    8054;
    server_name localhost;


    location / {
      #root  html;
root /usr/www5.4.44;
      index index.html index.htm;
    }


    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }


location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param script_filename /usr/www5.4.44$fastcgi_script_name;
}
 
  }

nginx configuration file nginx .conf in

# cd /usr/local/nginx/conf

The complete nginx configuration is as follows:

#user nobody;
worker_processes 4;
 
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
 
#pid    logs/nginx.pid;
 
 
events {
  worker_connections 1024;
}
 
 
http {
  include    mime.types;
  default_type application/octet-stream;
 
  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  #         '$status $body_bytes_sent "$http_referer" '
  #         '"$http_user_agent" "$http_x_forwarded_for"';
 
  #access_log logs/access.log main;
 
  sendfile    on;
  #tcp_nopush   on;
 
  #keepalive_timeout 0;
  keepalive_timeout 65;
 
  #gzip on;
 
  server {
    listen    80;
    server_name localhost;
 
    #charset koi8-r;
 
    #access_log logs/host.access.log main;
 
    location / {
      #root  html;
			root /usr/www;
      index index.html index.htm;
    }
 
    #error_page 404       /404.html;
 
    # redirect server error pages to the static page /50x.html
    #
    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }
 
    # proxy the php scripts to apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #  proxy_pass  http://127.0.0.1;
    #}
 
    # pass the php scripts to fastcgi server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #  root      html;
    #  fastcgi_pass  127.0.0.1:9000;
    #  fastcgi_index index.php;
    #  fastcgi_param script_filename /scripts$fastcgi_script_name;
    #  include    fastcgi_params;
    #}
 
		location ~ \.php$ {
		root html;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi_params;
		fastcgi_param script_filename /usr/www$fastcgi_script_name;
		}
 
    # deny access to .htaccess files, if apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #  deny all;
    #}
  }
	
	server {
    listen    8054;
    server_name localhost;
 
    location / {
      #root  html;
			root /usr/www5.4.44;
      index index.html index.htm;
    }
 
    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }
 
		location ~ \.php$ {
		root html;
		fastcgi_pass 127.0.0.1:9001;
		fastcgi_index index.php;
		include fastcgi_params;
		fastcgi_param script_filename /usr/www5.4.44$fastcgi_script_name;
		}
 
  }
 
 
	
  # another virtual host using mix of ip-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;
 
  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
 
 
  # https server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;
 
  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;
 
  #  ssl_session_cache  shared:ssl:1m;
  #  ssl_session_timeout 5m;
 
  #  ssl_ciphers high:!anull:!md5;
  #  ssl_prefer_server_ciphers on;
 
  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
 
}

Restart nginx

# /usr/local/nginx/sbin/nginx -s reload

Note that you need to open a new port in the firewall, otherwise it will not be accessible:

Firewall configuration

Note that if you want to access the web page of the virtual machine on a local machine such as xp, if it is centos6, you need to modify the firewall to start port 80

# cd /etc/sysconfig

Modify the iptables file, Or edit directly with vim

# vim /etc/sysconfig/iptables

Add the following line to open the firewall port 80:

-a input -m state --state new -m tcp -p tcp --dport 8054 -j accept

Restart the firewall

# /etc/init.d/iptables restart

If the test is successful, check phpinfo( )

How to install multiple versions of PHP for Nginx under Linux system

The above is the detailed content of How to install multiple versions of PHP for Nginx under Linux system. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete