Centos Nginx 多php版本

記錄一次安裝的過程
系統:centos
php版本:5.4 5.6
目的:安裝兩個php版本

1:首先通過lnmp安裝了第一個版本的php5.4具體命令lnum的官網上有具體操作
2:修改php-fpm的配置
先停止在運行中的php-fpm,先查看php-fpm的pid

[root@ etc]# ps aux | grep  php-fpm
root     25903  0.0  0.2 266664  5508 ?        Ss   11:35   0:00 php-fpm: master process (/usr/local/etc/php-fpm-5.4.conf)
www      25904  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25905  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25906  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25907  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25908  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25909  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25910  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25911  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25912  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
www      25913  0.0  0.2 266664  4848 ?        S    11:35   0:00 php-fpm: pool www
root     25915  0.0  0.0 112648   972 pts/0    R+   11:35   0:00 grep --color=auto php-fpm

查看命令:ps aux | grep php-fpm 輸出結果可以知道,當前的php-fpm運行的pid爲25903,然後通過結束命令,把當前的進程先關閉。
結束命令kill -INT 25903
運行後,再次查看進程

[root@iZwz99zpj9k5noj0vtkozjZ etc]# ps aux | grep  php-fpm
root     26059  0.0  0.0 112648   972 pts/0    R+   13:54   0:00 grep --color=auto php-fpm

php-fpm確實被關閉了。然後我們找到php-fpm的配置文件位置,開始配置1下php-fpm。配置後的結果如下

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log //修改的地方
log_level = notice

[www]
listen = 9001 //修改的地方
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 = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/php_5.4_slow.log //修改的地方

修改完之後,就要重新啓動fpm了,但是我爲了可以區分兩個版本的php-fpm.conf我就把上面的這個配置文件改了下名字,並且移動到了/usr/local/etc下面,方便管理。如果是通過lnmp來安裝php,那麼lnmp有可能已經幫你把php-fpm安裝成了服務,這樣一來你只需要修改服務的配置文件,就可以使php-fpm默認讀取新的配置文件了,服務的文件位置爲
/etc/rc.d/init.d/php-fpm

prefix=/usr/local/php
exec_prefix=${prefix}
conf=/usr/local/etc //新增

php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${conf}/php-fpm-5.4.conf //修改
php_fpm_PID=${prefix}/var/run/php-fpm.pid


php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"

修改好之後,爲了區分兩個php版本,我又把這個文件的名字改了一下,改爲php-fpm-5.4,好了,現在我們啓動新的php-fpm,使用命令service php-fpm-5.4 start

[root@iZwz99zpj9k5noj0vtkozjZ init.d]# service php-fpm-5.4 start
Starting php-fpm  done
[root@iZwz99zpj9k5noj0vtkozjZ init.d]# ps aux | grep  php-fpm
root     26114  0.0  0.2 163072  5508 ?        Ss   14:06   0:00 php-fpm: master process (/usr/local/etc/php-fpm-5.4.conf)
www      26115  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26116  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26117  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26118  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26119  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26120  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26121  0.0  0.2 163072  4848 ?        S    14:06   0:00 php-fpm: pool www
www      26122  0.0  0.2 163072  4852 ?        S    14:06   0:00 php-fpm: pool www
www      26123  0.0  0.2 163072  4852 ?        S    14:06   0:00 php-fpm: pool www
www      26124  0.0  0.2 163072  4852 ?        S    14:06   0:00 php-fpm: pool www
root     26128  0.0  0.0 112648   972 pts/0    R+   14:07   0:00 grep --color=auto php-fpm

啓動後查看了下進程,看來啓動已經成功了,但是這個時候我們訪問php文件會發現,報502的錯誤,這是因爲我們把fpm的端口從默認的9000改成了9001,但是nginx讀取的還是9000,這個情況當然會出現502的情況,那我們現在去修改下nginx的配置,改成9001看看到底能不能成功訪問。

server {
        listen  8080;
        server_name localhost;
        charset utf-8;
            root /data/wwwroot/lol;


        location / {
                index  index.shtml index.php index.html index.htm ;
                if (!-e $request_filename) {
                        rewrite  ^(.*)$  /index.php?s=$1  last;
                        break;
                }
        }

        location ~ .+\.php($|/) {
                fastcgi_pass   127.0.0.1:9001;//修改成9001
                fastcgi_connect_timeout      180;
                fastcgi_read_timeout            600;
                fastcgi_send_timeout            600;
                fastcgi_index  index.php;
                include        fastcgi_params;

                set $path_info "";
                set $real_script_name $fastcgi_script_name;
                if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                        set $real_script_name $1;
                        set $path_info $2;
                }
                fastcgi_param  SCRIPT_FILENAME  $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;

        }

        error_log  /data/wwwlogs/lol_error.log;
        access_log  /home/wwwlogs/lol_access.log;
}

如果配置都沒問題,那麼就可以看到phpinfo的信息了


3:安裝另外1個版本的php,這裏我要安裝的是php5.6版本的,就直接從官網下載代碼進行安裝了,具體安裝的
4:安裝好之後,我們就需要再創建1個服務用來配置5.6版本的php-fpm了,複製1份5.4的服務,重命名爲php-fpm-5.6命令爲:cp /etc/rc.d/init.d/php-fpm-5.4 /etc/rc.d/init.d/php-fpm-5.6,然後修改裏面的文件配置

prefix=/usr/local/php5.6
exec_prefix=${prefix}
conf=/usr/local/etc

php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${conf}/php-fpm-5.6.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid

然後再複製一份fpm的配置文件命令爲

[root@iZwz99zpj9k5noj0vtkozjZ init.d]# cd /usr/local/etc
[root@iZwz99zpj9k5noj0vtkozjZ etc]# ls
php-fpm-5.4.conf  php-fpm-5.4.conf.bak
[root@iZwz99zpj9k5noj0vtkozjZ etc]# cp php-fpm-5.4.conf php-fpm-5.6.conf
[root@iZwz99zpj9k5noj0vtkozjZ etc]# ls
php-fpm-5.4.conf  php-fpm-5.4.conf.bak  php-fpm-5.6.conf
[root@iZwz99zpj9k5noj0vtkozjZ etc]# 

修改配置


[global]
pid = /usr/local/php5.6/var/run/php-fpm.pid
error_log = /usr/local/php5.6/var/log/php-fpm.log
log_level = notice

[www]
listen = 9000
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 = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 0 
slowlog = var/log/php_5.6_slow.log

啓動服務器

[root@iZwz99zpj9k5noj0vtkozjZ etc]# service php-fpm-5.6 start
Starting php-fpm  done
[root@iZwz99zpj9k5noj0vtkozjZ etc]# ps aux|grep php
root     26329  0.0  0.2 163072  5500 ?        Ss   14:37   0:00 php-fpm: master process (/usr/local/etc/php-fpm-5.4.conf)
www      26330  0.0  0.3 163072  7088 ?        S    14:37   0:00 php-fpm: pool www
www      26331  0.0  0.3 163072  5928 ?        S    14:37   0:00 php-fpm: pool www
www      26332  0.0  0.3 163072  5928 ?        S    14:37   0:00 php-fpm: pool www
www      26333  0.0  0.3 163072  7088 ?        S    14:37   0:00 php-fpm: pool www
www      26334  0.0  0.3 163072  5928 ?        S    14:37   0:00 php-fpm: pool www
www      26335  0.0  0.2 163072  4844 ?        S    14:37   0:00 php-fpm: pool www
www      26336  0.0  0.2 163072  5064 ?        S    14:37   0:00 php-fpm: pool www
www      26337  0.0  0.3 163072  5916 ?        S    14:37   0:00 php-fpm: pool www
www      26338  0.0  0.3 163072  5932 ?        S    14:37   0:00 php-fpm: pool www
www      26339  0.0  0.3 163072  7088 ?        S    14:37   0:00 php-fpm: pool www
root     28356  0.0  0.2 121740  5128 ?        Ss   15:39   0:00 php-fpm: master process (/usr/local/etc/php-fpm-5.6.conf)
www      28357  0.0  0.2 121740  4580 ?        S    15:39   0:00 php-fpm: pool www
www      28358  0.0  0.2 121740  4580 ?        S    15:39   0:00 php-fpm: pool www
www      28359  0.0  0.2 121740  4580 ?        S    15:39   0:00 php-fpm: pool www
www      28360  0.0  0.2 121740  4580 ?        S    15:39   0:00 php-fpm: pool www
www      28361  0.0  0.2 121740  4584 ?        S    15:39   0:00 php-fpm: pool www
www      28362  0.0  0.2 121740  4584 ?        S    15:39   0:00 php-fpm: pool www
www      28363  0.0  0.2 121740  4584 ?        S    15:39   0:00 php-fpm: pool www
www      28364  0.0  0.2 121740  4584 ?        S    15:39   0:00 php-fpm: pool www
www      28365  0.0  0.2 121740  4584 ?        S    15:39   0:00 php-fpm: pool www
www      28366  0.0  0.2 121740  4584 ?        S    15:39   0:00 php-fpm: pool www
root     28368  0.0  0.0 112648   972 pts/0    R+   15:39   0:00 grep --color=auto php

查看下端口的狀況

[root@iZwz99zpj9k5noj0vtkozjZ etc]# netstat -atpn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      28356/php-fpm: mast 
tcp        0      0 0.0.0.0:9001            0.0.0.0:*               LISTEN      26329/php-fpm: mast 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      31398/mysqld        
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      26576/nginx: master 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      26576/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3089/sshd           
tcp        0     52 172.18.42.27:22         14.223.93.183:5727      ESTABLISHED 3686/sshd: root@pts 
tcp        0      0 172.18.42.27:34968      106.11.68.13:80         ESTABLISHED 957/AliYunDun  

這樣一來就可以不同域名多個php版本共存了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章