Linux自动化运维——9—Nginx+PHP

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

一、PHP的源码编译

1、软件包下载

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

在这里插入图片描述

2、编译php

configure

./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.conf文件,将注释打开
在这里插入图片描述

在这里插入图片描述

3、php.ini

在这里插入图片描述
设置地区时间
在这里插入图片描述

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

在这里插入图片描述
注释
在这里插入图片描述

三、nginx中使用php-fpm

1、修改nginx配置文件

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

cd /usr/local/nginx
vim conf/nginx.conf
nginx -s reload

在这里插入图片描述
在这里插入图片描述

在html中编写php发布页面,重新启动服务,在真机浏览器访问http://172.25.73.1/index.php

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、添加环境变量

在这里插入图片描述

四、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 
///
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;				##在这个位置
;;;;;;;;;;;;;;;;;;;;;;
 938 extension=memcache				##连接php与memcache服务
///
php -m | grep memcache				##出现memcache表示添加成功
systemctl reload php-fpm.service 
php -m								##测试php服务是否正常,可以看到memcache

在这里插入图片描述在这里插入图片描述

3、构建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','root');      // Admin Password						##设定密码
$MEMCACHE_SERVERS[] = '172.25.73.1:11211'; // add more as an array				##server1IP
#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array		##注释
///
nginx -s reload							##重启nginx
systemctl start php-fpm.service			##开启服务
systemctl start memcached.service		##开启服务

在这里插入图片描述

在这里插入图片描述此时服务配置成功,访问172.25.73.1/memcache.php。使用 用户名,密码 登陆

在这里插入图片描述

五、配置php加载模块openresty

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

1、准备

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

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

在这里插入图片描述

2、软件安装

tar zxf openresty-1.19.3.1.tar.gz 
ls
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;
}

        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 -t
/usr/local/openresty/nginx/sbin/nginx -s reload

ERROR
在这里插入图片描述

/usr/local/openresty/nginx/sbin/nginx -s reload 
报错 nginx: [error] invalid PID number "" in "/usr/local/openresty/nginx/logs/nginx.pid"

解决:使用nginx -c的参数指定nginx.conf文件的位置,conf文件的位置在nginx -t的返回信息中

/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
/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、在真机进行压力测试

ab -c10 -n 5000 http://172.25.73.1/example.php
///
Complete requests:      5000
Failed requests:        0
Total transferred:      1425000 bytes
HTML transferred:       580000 bytes
///
##可以看到压测速度很快,且没有报错,速度很快。
ab -c10 -n 5000 http://172.25.73.1/index.php
///
Complete requests:      5000
Failed requests:        492
   (Connect: 0, Receive: 0, Length: 492, Exceptions: 0)
Total transferred:      358824457 bytes
HTML transferred:       357979457 bytes
///
##传输量大幅度提升

六、tomcat + memcache 高可用

1、在server2 与 server3 安装 jdk 与 tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

向 server3 部署 tomcat 与 jdk 的操作

bin/shutdown.sh   ##关闭服务进行scp
netstat -antlp
cd /usr/local/
scp -r tomcat/ server3:/usr/local/
 scp jdk-8u121-linux-x64.rpm server3:
在server3的操作
rpm -ivh jdk-8u121-linux-x64.rpm   ##安装
cd /usr/local/
cd tomcat/
 bin/startup.sh    ##开启服务
netstat -antlp   ##查看端口

在这里插入图片描述

2、重新启动server2 的 tomcat

在这里插入图片描述在浏览器使用172.25.73.2:8080访问
在浏览器使用172.25.73.3:8080访问
在这里插入图片描述

3、tomcat+Nginx

在server1中

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

http {
	upstream tomcat {
        	server 172.25.73.2:8080;
    	    server 172.25.73.3:8080;
	}
}

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

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

nginx -t
nginx -s reload

在浏览器使用172.25.73.1/index.jsp访问到此页面
在这里插入图片描述
在server2 的==/usr/local/tomcat/webapps/ROOT添加一个test.jsp页面
在server3 的
/usr/local/tomcat/webapps/ROOT==添加一个test.jsp页面
在这里插入图片描述使用浏览器访问,并添加数据,查看日志

cd /usr/local/tomcat/logs
 cat catalina.out

在这里插入图片描述可以看到刚刚在网页添加的数据,此时将server2的 tomcat 关闭,继续输入新的数据,Nginx的健康检测会快速切换到server3,不会影响输入数据,但是刚刚在网页输入的数据丢失
在这里插入图片描述
在这里插入图片描述

3、tomcat结合memcache实现实现session共享

为了解决上述问题,在实际生产中都是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
yum install -y memcached
systemctl start memcached
2、配置server2 与 server3

server2中

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

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

下载jar包  如图下
cd /usr/local/tomcat/lib

在这里插入图片描述

cd /usr/local/tomcat   ##关闭重启服务
 bin/shutdown.sh   ##关闭服务
 bin/startup.sh    ## 在开启服务
tail -f logs/catalina.out    ##查看日志  出现配置文件[n1]代表成功

在这里插入图片描述

在这里插入图片描述
在server3中

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

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

下载jar包  如图上
cd /usr/local/tomcat/lib

cd /usr/local/tomcat   ##关闭重启服务
 bin/shutdown.sh   ##关闭服务
 bin/startup.sh    ## 在开启服务
tail -f logs/catalina.out    ##查看日志  出现[n2]代表成功

在这里插入图片描述在这里插入图片描述
访问页面建立user1、user2、、、、红色标记的ID可以用telnet查询

要在server2、server3中下载
cd /usr/local/tomcat
yum install -y telnet
telnet localhost 11211
get  ID 查询

在这里插入图片描述

此时关闭server2的tomcat,在网页继续输入数据,然后查询,数据没有丢失并且在写入

在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿王不想秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值