1.安装php 7.2

2.php配置

3.nginx配置

4.测试

5.报错与解决

6.利用upstream实现负载均衡

1.安装php 7.2

启动容器:

 liwangdeMacBook-Air:~ liwang$ docker run -i -t --name php --net mynetwork --ip : centos /bin/bash

复制php至容器

 liwangdeMacBook-Air:~ liwang$ docker .tar.gz php:/soft

安装插件

 [root@6aaa15f97607 php-]# yum install gcc gcc-c++ make libxml2 libxml2-devel libpng libpng-devel -y

编译php

 [root@6aaa15f97607 html]# ./configure --prefix=/usr/local/php --with-pdo-mysql --enable-mysqlnd --with-gd --enable-gd-jis-conv --enable-fpm --with-mysqli=mysqlnd
 [root@6aaa15f97607 html]# make && make install

2.配置PHP

1.复制php-fpm.conf

 [root@6aaa15f97607 php-]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

2.复制www.conf

 [root@6aaa15f97607 php-]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

3.修改www.conf

查看php容器ip地址

 liwangdeMacBook-Air:~ liwang$ docker inspect -f {{.NetworkSettings.Networks.mynetwork.IPAddress}} php
 172.18.0.5
 liwangdeMacBook-Air:~ liwang$ 

修改www.con listen为容器ip,具体如下:

 [root@6aaa15f97607 php-fpm.d]# sed -n "34,38p" /usr/local/php/etc/php-fpm.d/www.conf
 ;   '/path/to/unix/socket' - to listen on a unix socket.
 ; Note: This value is mandatory.
 listen = 

 ; Set listen() backlog.
 [root@6aaa15f97607 php-fpm.d]# 

4.启动php-fpm

 [root@6aaa15f97607 php-fpm.d]#/usr/local/php/sbin/php-fpm
 [root@6aaa15f97607 php-fpm.d]#

5.查看启动状态

 [root@6aaa15f97607 php-fpm.d]#netstat -tulnp
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
 tcp                        /php-fpm: mast
 tcp                       0.0.0.0:*               LISTEN      -
 udp                       0.0.0.0:*                           -
 [root@6aaa15f97607 php-fpm.d]# ps aux
 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
 root              pts/    Ss   :   : /bin/bash
 root          ?        Ss   :   : php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
 nobody       ?        S    :   : php-fpm: pool www
 nobody       ?        S    :   : php-fpm: pool www
 root          pts/    R+   :   : ps aux
 [root@6aaa15f97607 php-fpm.d]# 

3.nginx配置

1.nginx.conf配置如下:

注意index中需要设置添加index.php,location php需要注意fastcgi_pass和fastcgi_param项

 [root@dbc19df20116 www]# sed -n "32,82p" /usr/local/nginx/conf/nginx.conf | egrep -v "#|^$"
     keepalive_timeout  ;
     server {
         listen       ;
         server_name  localhost;
         location / {
             root   html;
             index  index.php index.html index.htm;
         }
         error_page        /50x.html;
         location = /50x.html {
             root   html;
         }
         location ~ \.php$ {
             root           html;
             fastcgi_pass   ;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
             include        fastcgi_params;
         }
     }
 [root@dbc19df20116 www]# 

2.由于fastcgi_pass连接至不同的服务器,故php服务器需要设置index root

 [root@6aaa15f97607 php-fpm.d]# ls -l /usr/local/nginx/html/index.php
 -rw-r--r--  root root  May  : /usr/local/nginx/html/index.php
 [root@6aaa15f97607 php-fpm.d]# 

4.测试

 [root@dbc19df20116 www]# curl localhost
 Hello,This is PHP server site
 [root@dbc19df20116 www]# 

5.报错与解决

 [root@dbc19df20116 www]# cat /usr/local/nginx/logs/error.log
 // :: [notice] #: signal process started
 // :: [alert] #: sched_setaffinity() failed (: Invalid argument)
 // :: [error] #: * FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.18.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://172.18.0.5:9000", host: "localhost"
 [root@dbc19df20116 www]# 

1.如果nginx与php服务器是分开部署的话,如错误日志所属,那么172.18.0.5这台服务器上需要有nginx的root文件,既index.php,添加后解决此问题。

2.如果nginx与php是在同一服务器,且php是使用127.0.0.1进行连接的话,那么可以修改nginx.conf为:

(fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;)

6.利用upstream实现负载均衡

环境:在服务器172.18.0.5上构建两台php,其端口分别为9000以及9001

 [root@6aaa15f97607 ~]# netstat -tulnp
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
 tcp                       0.0.0.0:*               LISTEN      -
 tcp                        /php-fpm: master
 tcp                        /php-fpm: master
 udp                       0.0.0.0:*                           -
 [root@6aaa15f97607 ~]# 

在nginx本地构建一台php,其端口为9000

 [root@dbc19df20116 conf]# netstat -tulnp
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
 tcp                       0.0.0.0:*               LISTEN      -
 tcp                         /php-fpm: master
 tcp                             /nginx: master pr
 udp                       0.0.0.0:*                           -
 [root@dbc19df20116 conf]# 

修改nginx配置文件nginx.conf

upstream作用域http标签内

其后状态值含义如下:

weight:值越大,负载则越重

backup:当其他机器忙或则down时,数据才会请求backup机器,因此,此机器负载最轻

down:表示该机器不参与负载

例如,如下配置,将负载压在172.18.0.5上,127.0.0.1则作为备份机

upstream siteidc{

server 172.18.0.5:9000 weight=2;

server 172.18.0.5:9001 weight=1;

server 127.0.0.1:9000 backup;

}

location设置如下,将fastcgi_pass压为upstream的值即可。

location ~ \.php$ {

root           html;

fastcgi_pass   siteidc;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;

include        fastcgi_params;

}

整体nginx.conf文件如下:

 [root@dbc19df20116 conf]# cat nginx.conf | grep -v "^$" | grep -v "#"
 worker_processes  ;
 worker_cpu_affinity    ;
 worker_rlimit_nofile ;
 events {
     use epoll;
     worker_connections  ;
 }
 http {
     upstream siteidc{
         server  weight=;
         server  weight=;
         server  backup;
     }
     include       mime.types;
     default_type  application/octet-stream;
     sendfile        on;
     keepalive_timeout  ;
     server {
         listen               default backlog=;
         server_name  localhost;
         location / {
             root   html;
             index  index.php index.html index.htm;
         }
         error_page        /50x.html;
         location = /50x.html {
             root   html;
         }
         location ~ \.php$ {
             root           html;
             fastcgi_pass   siteidc;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
             include        fastcgi_params;
         }
     }
     server {
     listen ;
     server_name www.wang-li.top;

     location / {
         root html/www;
         index index.html index.php;
     }
     location ~ \.php$ {
         root html/www;
         fastcgi_pass ;
         fastcgi_index index.php;
         fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/www$fastcgi_script_name;
         include fastcgi_params;
     }
     }
 }
 [root@dbc19df20116 conf]# 



安装php7.2并且整合nginx且分开部署的更多相关文章

  1. Centos 7下编译安装PHP7.2(与Nginx搭配的安装方式)

    一.下载源码包 百度云网盘下载地址:https://pan.baidu.com/s/1li4oD3qjvFyIaEZQt2NVRg 提取码:4yde 二.安装php依赖组件 yum -y instal ...

  2. nginx php-fpm安装配置 CentOS编译安装php7.2

    CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...

  3. centos6.4下安装php7+nginx+mariadb环境

    一,安装php71,创建php用户和用户组,并在github下载php7源码#新建php用户和php组# groupadd -r php && useradd -r -g php -s ...

  4. 全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx

    可道云真的很强大,安装包很小,功能却很齐全,还可以自定义轻应用如果有手机客户端就更好了 研究了一下,可道云根目录放到外置存储设备(移动硬盘)会更合适,改路径的方法下面有提到上传文件时一个文件会在用户目 ...

  5. CentOS6.5安装php7+nginx+mysql实现安装WordPress

    安装php7+nginx参考该博客http://blog.csdn.net/whatday/article/details/50645117 安装php7参考http://blog.csdn.net/ ...

  6. Ubunt16.04下安装PHP7+Nginx+MySQL

    本文通过Ubuntu PPA来安装PHP7.   1.添加PPA $ sudo apt-get install python-software-properties software-properti ...

  7. linux 安装php7 Nginx

    这里 记录下 本屌安装linux  下安装php7 即遇到的问题. wget http://cn2.php.NET/distributions/php-7.0.4.tar.gz tar zxvf ph ...

  8. CentOS单机安装FastDFS&整合Nginx

    单机安装 一 准备工作 准备linux服务器或虚拟机,这里是虚拟机,操作系统CentOS 6.4 Tracker 和 Storage 安装在一台机器上 FastDFS 5.08版本 1,准备软件 软件 ...

  9. mac下安装php7.2、mysql5.7、nginx环境

    本篇文章是通过homebrew安装,home brew对于Mac相当于centos 的yum一样方便简单,大家可以先去安装home brew.网上很多简单靠谱的例子,这里不写了 一.准备条件为了安装最 ...

随机推荐

  1. 深入了解scanf()/getchar()和gets()/cin等函数

    转:http://www.cnblogs.com/FCWORLD/archive/2010/12/04/1896511.html 转:问题描述一:(分析scanf()和getchar()读取字符) s ...

  2. JavaScript中B继承A的方法

    js继承有5种实现方式:1.继承第一种方式:对象冒充  function Parent(username){    this.username = username;    this.hello = ...

  3. Java 身份证号码验证

    身份证号码验证 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 2.地址码(前 ...

  4. 李清华201772020113《面向对象程序设计(java)》第二周学习总结

    李清华201772020113<面向对象程序设计(java)>第二周学习总结 第一部分 理论知识 第三章 本章主要讲了java基本知识中的标识符,关键字,注释,以及数据类型,变量,运算符, ...

  5. Python第1天

    今天主要学习内容如下: 概论,各种开发语言的对比,高级语言包括:python(开发效率高,执行效率低) Java(开发效率低,执行效率高),PHP,低级语言包括:C语言,汇编语言: Python 语言 ...

  6. Java 8 方法引用

    转自:https://www.runoob.com/java/java8-method-references.html 方法引用通过方法的名字来指向一个方法. 方法引用可以使语言的构造更紧凑简洁,减少 ...

  7. Mybatis的mapper文件中#和$的区别 以及 resultType和resultMap的区别

    一般#{}用于传递查询的参数,一般用于从dao层传递一个string或者其他的参数过来,mybatis对这个参数会进行加引号的操作,将参数转变为一个字符串. SELECT * FROM employe ...

  8. jquery.validate和jquery.form配合实现验证表单后AJAX提交

    基础代码其实很简单,之后一点一点扩充.最终代码写在最后. 表单: <form action="@Url.Action("AddColumns","Cont ...

  9. Python 学习图谱

    https://mp.weixin.qq.com/s/-fJYAlOs4ui0YeJ-W6BkeQ

  10. ubuntu安装jdk,maven,tomcat

    ubuntu16.04安装jdk8 -jdk 检查是否安装成功 java -version 出现如上信息即安装成功 安装maven,先去官网下载指定版本的maven,个人使用apache-maven- ...