nginx+PHP

目录

一.PHP的源码编译

1.软件包下载

 2.编译php

二.拷贝php-fpm配置文件

1.php-fpm.conf

2.www.conf 

3.php.ini 

4.php-fpm.service,读取并开启服务 

三.nginx中使用php-fpm 

1.修改nginx配置文件

2.添加环境变量 

四、php添加memcache功能模块 

1.准备软件包

2.软件安装 

3.构建nginx高速缓存,添加memcache功能模块 

五.配置php加载模块openresty 

1.安装包下载解压

 2.编译

 3.改写配置文件

 4.进一步更改配置来提升速度

5.在真机进行压力测试

六.tomcat + memcache 高可用

1.在server2 与 server3 安装 jdk 与 tomcat

3.tomcat+Nginx 

4. tomcat结合memcache实现实现session共享 

七.goaccess日志可视化 


Nginx中、PHP配置、nginx结合php-fpm、memcache模块、openresty模块

一.PHP的源码编译

1.软件包下载

https://www.php.net/	
##解压
tar -xjf php-7.4.12.tar.bz2

然后安装解压bz2 的命令,然后解压php包

 2.编译php

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-inline-optimization --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring  --enable-bcmath --with-fpm-systemd

 安装缺少的依赖性

yum install -y systemd-devel
yum install -y libxml2-devel
yum install -y sqlite-devel
yum install -y libcurl-devel
yum install libpng-devel -y
oniguruma-devel   #此安装包不在软件仓库中,csdn中搜索下载
yum install oniguruma-6.8.2-1.el7.x86_64.rpm
yum install oniguruma-devel-6.8.2-1.el7.x86_64.rpm

configure完成

make进行编译

make install安装

 二.拷贝php-fpm配置文件

1.php-fpm.conf

2.www.conf 

进入php-fpm.d/目录,复制一份 www.conf.default为www.conf

 进入php-fpm.conf文件,将17行注释打开

3.php.ini 

 设置地区时间为上海

4.php-fpm.service,读取并开启服务 

注释掉21行

三.nginx中使用php-fpm 

1.修改nginx配置文件

进入nginx的配置目录,编辑配置文件,注释之前的设定,取消php的注释

vim /usr/local/nginx/conf/nginx.conf

在html中编写php发布页面,重新启动服务.

 在真机浏览器访问http://172.25.73.1/index.php 

2.添加环境变量 

cd /usr/local/lnmp/php/bin/
pwd			##/usr/local/lnmp/php/bin
cd
vim .bash_profile	##在.bash_profile文件添加文件路径
///
PATH=$PATH:$HOME/bin:/usr/local/lnmp/php/bin
///
source .bash_profile 		##使其生效
which php			##/usr/local/lnmp/php/bin/php
which phpize			##/usr/local/lnmp/php/bin/phpize
echo $PATH

四、php添加memcache功能模块 

1.准备软件包

http://pecl.php.net/package/memcache	##网址下载

2.软件安装 

解压软件包进入目录,执行phpize,提醒缺少依赖。phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。

安装依赖之后,重新phpize 

yum install autoconf -y
yum install automake.noarch -y
phpize			##扩展成功

对memcache进行源码编译,make然后mkae install 

./configure --enable-debug
make
make install

 编辑php.ini ,然后重启服务,执行php -m可以看到memcache

cd /usr/local/lnmp/php/etc/
ls
vim php.ini 
938行左右:extension=memcache    ##连接php与memcache服务

hp -m | grep memcache		##出现memcache表示添加成功
ystemctl reload php-fpm.service 
php -m				##测试php服务是否正常,可以看到memcache

3.构建nginx高速缓存,添加memcache功能模块 

使用memc-nginx模块构建高效透明的缓存机制。
如果需要做到高速缓存,nginx可以跳过php直接向memcache存储,但是只能做静态存储 ,如果需要动态存储,还是要调用php,通过php调用到数据后下一次nginx就可以直接从memcache那里取,效率大大提高。因此高速缓存时两种策略在同时进行。

使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制。先安装memcached,并开启服务,查看端口。

yum install -y memcached
systemctl start memcached.service
netstat -antlp			##11211端口
cat /etc/sysconfig/memcached	##11211端口

 

 cd 进入到memcache目录,拷贝文件并编译,最后重启服务

cd 
cd memcache-4.0.5.2/
ls
cp example.php /usr/local/nginx/html/
cp memcache.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
ls
vim memcache.php
///
define('ADMIN_PASSWORD','westos');      // Admin Password				##设定密码
$MEMCACHE_SERVERS[] = '172.25.7.1:11211'; // add more as an array				
#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array		##注释这一行
///
nginx -s reload				##重启nginx
systemctl start php-fpm.service	        ##开启服务
systemctl start memcached.service       ##开启服务

用户名设定为root,密码设定为westos,修改了ip地址,并且注释掉了29行

 此时服务配置成功,访问172.25.32.1/memcache.php。使用 用户名,密码登陆

五.配置php加载模块openresty 

基于openresty(构建高效透明的缓存机制) 访问,能将缓存放在nginx中,速度更快

1.安装包下载解压

nginx -s stop		       ##先停止nginx服务

https://openresty.org/cn/      ##软件下载

 2.编译

cd openresty-1.19.3.1/
ls
./configure --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install

 3.改写配置文件

切换到指定目录下
cd /usr/local/openresty/nginx/conf/
vim nginx.conf
///
user  nginx;
worker_processes  auto;

events {
    worker_connections  65535;
}

#取消php这几行的注释,只注释其中一行
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
///
cd ..
cd html/
cp /usr/local/nginx/html/example.php .	   #拷贝配置文件
cp /usr/local/nginx/html/index.php .       #拷贝
/usr/local/openresty/nginx/sbin/nginx      #启动
/usr/local/openresty/nginx/sbin/nginx -t   #检测语法
/usr/local/openresty/nginx/sbin/nginx -s reload

 然后在真机浏览器中访问

 4.进一步更改配置来提升速度

cd /usr/local/openresty/nginx/conf
vim nginx.conf
///
http {
        upstream memcache {
        server 127.0.0.1:11211;
        keepalive 512;			##保持512个不立即关闭的连接用于提升性能
        }

    include       mime.types;
    default_type  application/octet-stream;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    下面添加
        location /memc {
        internal;			##表示只接受内部访问
        memc_connect_timeout 100ms;
        memc_send_timeout 100ms;
        memc_read_timeout 100ms;
        set $memc_key $query_string;	##使用内置的$query_string来作为key
        set $memc_exptime 300;		##表示缓存失效时间
        memc_pass memcache;
        }
///
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload

5.在真机进行压力测试

 可以观察到5000次访问没有报错且速度较快

 传输量大幅度提高了

六.tomcat + memcache 高可用

1.在server2 与 server3 安装 jdk 与 tomcat

在server2中:///
tar zxf apache-tomcat-7.0.37.tar.gz  #解压
rpm -ivh  jdk-8u121-linux-x64.rpm  #安装rpm包
mv apache-tomcat-7.0.37 /usr/local/ #移动目录到指定路径下
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat  #方便起见建立tomcat软连接
cd /usr/local/tomcat/webapps/ROOT/
lftp 172.25.254.250  #连接服务器下载文件 
cd /pub/docs/lamp
get test.jsp    #下载一个.jsp文件,用于后面测试
cd /usr/local/tomcat/bin
ls    #bin目录中有启动和停止tomcat的脚本
./startup.sh  #启动tomcat
\\\
在server3中可以不必下载,直接从server2中scp传输即可
相同的操作,最终启动tomcat 

在server2和server3中操作 

在server1中修改配置文件

vim /usr/local/nginx/conf/nginx.conf

在server2和server3重启tomcat

 然后在真机浏览器使用172.25.32.2:8080访问

 然后在真机浏览器使用172.25.32.3:8080访问

3.tomcat+Nginx 

在server1主机中

cd /usr/local/nginx/conf
vim nginx.conf

http {
	upstream tomcat {
            server 172.25.32.2:8080;
    	    server 172.25.32.3:8080;
	}
}

location / {
            root   html;
            index  index.html index.htm index.php index.jsp;
        }


        location ~ \.jsp$ {
            proxy_pass   http://tomcat;
        }


nginx -t
nginx -s reload

在确保server2和server3的tomcat服务开启的情况下在浏览器使用172.25.32.1/index.jsp访问到此页面

此时配置文件全部截图为

在server2 和server3中的/usr/local/tomcat/webapps/ROOT添加一个test.jsp页面,然后进入日志存放的目录cd /usr/local/tomcat/logs/,cat catalina.out 最后在网页输入172.25.132.1/test.jsp

  然后在网页输入172.25.132.1/test.jsp

此时我们在server的tomcat中插入数据,然后关闭server2的tomcat,继续输入新的数据,Nginx的健康检测会快速切换到server3,不会影响输入数据,但是刚刚在网页输入的数据丢

 

 

4. tomcat结合memcache实现实现session共享 

当服务开启时:
server2的tomcat将数据保存在server3的session中
server3的tomcat将数据保存在server2的session中

当server2的tomcat关闭,server3将数据保存在server3的session中
当server3的tomcat关闭,server2将数据保存在server2的session中

1.在server2与server3安装memcached

systemctl start memcached.service

2.配置server2 与 server3

在server2中

cd /usr/local/tomcat/conf/
vim context.xml

///
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.132.2:11211,n2:172.25.132.3:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
///

 然后下载jar包,删除6版本的memcache

 然后配置server3

注意:这里的server3中的储存策略 failoverNodes=“n2“

 写入数据,当server2的tomcat关闭时,继续输入数据并查看,数据没有丢失并正常写入

关闭server1的n1

 

 关闭server2的n1

 

七.goaccess日志可视化 

获取资源

解压并且安装两个插件

这个插件软件仓库中没有,需要自己下载

然后进行编译

    ./configure --enable-utf8 --enable-geoip=legacy
    make 
    make install

然后监控日志

goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html   ##监控access.log日志

 在网页中输入172.25.132.1/report.html

然后在真机中输入 ab -c10 -n 1000 http://172.25.132.1/index.html测试压力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值