安装php7.2并且整合nginx且分开部署
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且分开部署的更多相关文章
- Centos 7下编译安装PHP7.2(与Nginx搭配的安装方式)
一.下载源码包 百度云网盘下载地址:https://pan.baidu.com/s/1li4oD3qjvFyIaEZQt2NVRg 提取码:4yde 二.安装php依赖组件 yum -y instal ...
- nginx php-fpm安装配置 CentOS编译安装php7.2
CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...
- centos6.4下安装php7+nginx+mariadb环境
一,安装php71,创建php用户和用户组,并在github下载php7源码#新建php用户和php组# groupadd -r php && useradd -r -g php -s ...
- 全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx
可道云真的很强大,安装包很小,功能却很齐全,还可以自定义轻应用如果有手机客户端就更好了 研究了一下,可道云根目录放到外置存储设备(移动硬盘)会更合适,改路径的方法下面有提到上传文件时一个文件会在用户目 ...
- CentOS6.5安装php7+nginx+mysql实现安装WordPress
安装php7+nginx参考该博客http://blog.csdn.net/whatday/article/details/50645117 安装php7参考http://blog.csdn.net/ ...
- Ubunt16.04下安装PHP7+Nginx+MySQL
本文通过Ubuntu PPA来安装PHP7. 1.添加PPA $ sudo apt-get install python-software-properties software-properti ...
- linux 安装php7 Nginx
这里 记录下 本屌安装linux 下安装php7 即遇到的问题. wget http://cn2.php.NET/distributions/php-7.0.4.tar.gz tar zxvf ph ...
- CentOS单机安装FastDFS&整合Nginx
单机安装 一 准备工作 准备linux服务器或虚拟机,这里是虚拟机,操作系统CentOS 6.4 Tracker 和 Storage 安装在一台机器上 FastDFS 5.08版本 1,准备软件 软件 ...
- mac下安装php7.2、mysql5.7、nginx环境
本篇文章是通过homebrew安装,home brew对于Mac相当于centos 的yum一样方便简单,大家可以先去安装home brew.网上很多简单靠谱的例子,这里不写了 一.准备条件为了安装最 ...
随机推荐
- 使用css实现时间轴
本文将使用css来实现一个左右交叉布局的时间轴,效果如下: 使用的都是一些常用的css,代码如下: <!DOCTYPE> <html> <head> <tit ...
- 一、CSS介绍
CSS介绍 1.css概述: CSS指层叠样式表 CSS样式表极大地提高了工作效率 selector{ property:value } 注:property(属性)大于1之后,property之间用 ...
- nodejs通过mocha处理运行文件路径下所有js文件
1.获取文件路径: 方式一:整个js文件使用 var path=require('path');var public_path=path.resolve('../testcase/listData/* ...
- [java,2017-05-04] 创建word文档
package test; import java.text.SimpleDateFormat; import java.util.Date; import com.aspose.words.Data ...
- python3 kmp 字符串匹配
先声明,本人菜鸟一个,写博客是为了记录学习的过程,以及自己的理解和心得,可能有的地方写的不好,希望大神指出... 抛出问题 给定一个文本串test_str(被匹配的字符串)和模式串pat_str(需要 ...
- leetcode15
class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); Li ...
- leetcode437
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- 003之MFCSocket异步编程(指针机制)
002篇是采用传统方式创建,不适应动态的网络环境,服务器为客户端保留着断开连接时的套接字,不够灵活.而采用指针机制不仅可以更加灵活性,而且能使代码更集中,更具有条理性.将其转变成指针机制.功能及运行保 ...
- java.io.Flushable 接口
package java.io; import java.io.IOException; /** * 在什么情况下用呢? 缓冲输出到一个流中的情况下,这个流要刷新. */ public interfa ...
- 微探eventlet.monkey_patch
e ventlet.monkey_patch在运行时动态修改已有的代码,而不需要修改原始代码 在eventlet.monkey_patch中支持以下几种python原生库修改 eventlet.mon ...