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