记录一次安装的过程
系统: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版本共存了