lamp架构2-lnmp架构的搭建

系列文章目录

lnmp2

lnmp架构2-lnmp架构的搭建

  • 系列文章目录
  • lnmp架构图
  • 一、Mysql的初始化
  • 二、php的源码编译
  • 三、更改php的配置
  • 三、 做nginx和php-fpm的整合
  • 四、 nginx + php-fpm + mysqld的整合
  • 五、 扩充PHP模块之memcache
    • nginx高速缓存


lnmp架构图

lamp架构2-lnmp架构的搭建_第1张图片

一、Mysql的初始化

将启动脚本考入/etc/init.d/下启动(init方式传统启动脚本)
lamp架构2-lnmp架构的搭建_第2张图片
装了mariadb以后才会有这个文件

在这里插入图片描述
在这里插入图片描述
这个是Mysql的全局变量参数,在这里面配置的参数是全局生效的,并且持久化
修改mariadb的全局变量参数文件并作为Mysql的全局变量参数文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第3张图片
包含很多Mysql数据库的配置参数

lamp架构2-lnmp架构的搭建_第4张图片
Mysqld默认会读取的文件

在这里插入图片描述
初始化参数,一个是安全的,一个是非安全的
非安全是没有给管理员加密码,你要进去以后加密码
安全的是随机生成了密码
在这里插入图片描述
为了安全性,让mysql运行在私有用户中,不是直接在root下运行
在这里插入图片描述
运行完以后生成一个随机密码
在这里插入图片描述
在这里插入图片描述
在启动以后,如果有报错,可以去改路径下去查看
在这里插入图片描述
netstat - antlp查看到3306mysql端口已经打开了
在这里插入图片描述
已经启动了
在这里插入图片描述
生产环境推荐使用的安全安装
在这里插入图片描述
将刚才生成随机密码输入,自己设置新的密码后,是否启动密码校验脚本,我选择的是No
启动密码校验脚本的话,会强制你密码的强度,字符串大小写长度等等
lamp架构2-lnmp架构的搭建_第5张图片
lamp架构2-lnmp架构的搭建_第6张图片lamp架构2-lnmp架构的搭建_第7张图片
刷新数据库的认证数据表

lamp架构2-lnmp架构的搭建_第8张图片
-p后面跟的是密码,进入到了数据库,warning是推荐你不要-p后面直接接入密码,这样别人history就能查到你数据库的密码,不安全使用交互式输入密码

lamp架构2-lnmp架构的搭建_第9张图片
lamp架构2-lnmp架构的搭建_第10张图片

二、php的源码编译

rpm 源码 自动化 容器化安装都行
可以直接去php下载php的源码
我直接在我的服务器下获取
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第11张图片
yum install bzip2 -y
在这里插入图片描述
–with-config-file是php主配置文件的目录,–enable-fpm激活faster cgi的管理器 --with-fpm-user指定Php运行的时候以什么身份运行,用Nginx当初配Nginx时候的用户,这样可以防止处理权限问题了,不指定,默认是httpd,可不加,你后面可以更改主配置文件来随时更改用户
选项越多,编译的模块依赖性就越多
–with-curl curl命令 iconv 有关图形 --with-mhash加密 --with-zlib 网页压缩 --with-openssl网页加密 --enable-mysqlnd直通数据库,5.4以后默认就会激活Mysql的nd驱动,原生的话要外挂mysql这样会外加模块,占用内存,这个是php自己的模块可以减少内存
mysqlli pdo-mysl都是通过调用mysqlnd来完成
soap是动态模块sockets网页的socket --enable-inline php的优化参数
这些参数连安装rpm包的参数都不够

lamp架构2-lnmp架构的搭建_第12张图片
系统自带的php动态的包,缺什么直接安装

在这里插入图片描述

lamp架构2-lnmp架构的搭建_第13张图片
系统优先找rpm包,所以源码编译的时候不要安装rpm包
-libsystemddevel没有

lamp架构2-lnmp架构的搭建_第14张图片在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

lamp架构2-lnmp架构的搭建_第15张图片在这里插入图片描述
lamp架构2-lnmp架构的搭建_第16张图片
lamp架构2-lnmp架构的搭建_第17张图片在这里插入图片描述
lamp架构2-lnmp架构的搭建_第18张图片
lamp架构2-lnmp架构的搭建_第19张图片在这里插入图片描述
这个包系统不带,我从阿里云下载的
在这里插入图片描述
lamp架构2-lnmp架构的搭建_第20张图片
在这里插入图片描述
在这里插入图片描述
make 以后然后make install
在这里插入图片描述

三、更改php的配置

默认配置目录
lamp架构2-lnmp架构的搭建_第21张图片
将php变量加入用户变量中

lamp架构2-lnmp架构的搭建_第22张图片在这里插入图片描述

lamp架构2-lnmp架构的搭建_第23张图片
将default去掉就是它的默认配置文件

lamp架构2-lnmp架构的搭建_第24张图片
;代表注释,去掉该注释
在这里插入图片描述
在这里插入图片描述
lamp架构2-lnmp架构的搭建_第25张图片
不用变更文件,看看里面的配置
在这里插入图片描述

监听端口
在这里插入图片描述
进程pm最多5个,默认2个,保持一个空闲
lamp架构2-lnmp架构的搭建_第26张图片
进入php源码里面拷贝所需配置文件
这是主配置文件

lamp架构2-lnmp架构的搭建_第27张图片
考入源码包里面的启动脚本

lamp架构2-lnmp架构的搭建_第28张图片

在这里插入图片描述
有两种启动方式

init方式,起名php-fpm

由于编译的使用了–sytemd使用它可以用systemctl来启动
systemd启动:

在这里插入图片描述
没有特别具体的报错
lamp架构2-lnmp架构的搭建_第29张图片
在这里插入图片描述
错误点READ-only,百度查看
是因为启动了保护,不让在里面写入东西
在这里插入图片描述在这里插入图片描述
每次修改这里的文件都需要reload一下
在这里插入图片描述

注释掉这个
在这里插入图片描述在这里插入图片描述
启动以后,需要去修改配置文件里面的时区

lamp架构2-lnmp架构的搭建_第30张图片
在这里插入图片描述

在这里插入图片描述
lamp架构2-lnmp架构的搭建_第31张图片
在这里插入图片描述
rpm包编译是cgi 无后台程序
源码是fastcgi 有后台程序,所以可以平滑加载
在这里插入图片描述
但是后台会消耗大,所以一般会做反向代理和负载均衡
直接访问9000端口访问php意义不大

三、 做nginx和php-fpm的整合

lamp架构2-lnmp架构的搭建_第32张图片
当php处理以php结尾的请求
通过fastcgi递交给后台的9000端口
lamp架构2-lnmp架构的搭建_第33张图片
注释掉是因为这个文件包含了
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第34张图片在这里插入图片描述
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第35张图片
lamp架构2-lnmp架构的搭建_第36张图片
在这里插入图片描述
路径要写自己的与官方不一样
lamp架构2-lnmp架构的搭建_第37张图片在这里插入图片描述
nginx开机自启

在这里插入图片描述在这里插入图片描述查看php自带的内部的信息函数,通常不要让外部主机访问这个Info
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第38张图片

四、 nginx + php-fpm + mysqld的整合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果数据库不在本地还可以指定远程的主机,用户还有密码
lamp架构2-lnmp架构的搭建_第39张图片
在这里插入图片描述
在这里插入图片描述
测试
lamp架构2-lnmp架构的搭建_第40张图片
php代码写的数据库管理工具
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第41张图片lamp架构2-lnmp架构的搭建_第42张图片
在这里插入图片描述
lamp架构2-lnmp架构的搭建_第43张图片
权限没有问题
在这里插入图片描述
是找不到它的首页
lamp架构2-lnmp架构的搭建_第44张图片
解决方法
lamp架构2-lnmp架构的搭建_第45张图片
定义默认如何找首页

lamp架构2-lnmp架构的搭建_第46张图片
在这里插入图片描述
lamp架构2-lnmp架构的搭建_第47张图片
这里的用户是数据库的用户,不是操作系统里面的用户
root和刚才进入数据库的密码
在这里插入图片描述
目录中的other进不去

在这里插入图片描述
php和Nginx都是nginx用户针对这个文件是other所以进不去
在这里插入图片描述
lamp架构2-lnmp架构的搭建_第48张图片

lnmp搭建完成

五、 扩充PHP模块之memcache

lamp架构2-lnmp架构的搭建_第49张图片
在这里插入图片描述
没有config
lamp架构2-lnmp架构的搭建_第50张图片
在这里插入图片描述
一定要把php源码路径的安装目录中的Bin放在全局环境中,要不然调用不了phpize
这个指令可以完成预编译环境,其实就是寻找你的动态库
lamp架构2-lnmp架构的搭建_第51张图片在这里插入图片描述

make make install
该模块安装在这个位置
在这里插入图片描述php的主配置文件,php-fpm是php的管理器
在这里插入图片描述
写一个扩展参数
在这里插入图片描述
平滑加载,重新加载你的主配置文件
在这里插入图片描述
-m是列出php所有模块
在这里插入图片描述
这个是nosql数据库,做数据库的缓冲,完全运行在内存
传统的关系式数据库结构是存储结构化关系数据
在这里插入图片描述
在这里插入图片描述
netstat -antlpe监听端口11211端口
在这里插入图片描述nosql数据库,完全运行在内存,默认启动会占用你本机64M的内存量,也可以修改
将数据写入你内存,读写速度快,特点不能做持久化,一重启数据就没有了,内存没有做持久化
好处快,并且降低数据库的压力
lamp架构2-lnmp架构的搭建_第52张图片
连接memache

lamp架构2-lnmp架构的搭建_第53张图片默认会连接你的11211端口,如果你的memache在远程你可以替换掉你的localhost
编写的就是把数据存入你的内存
lamp架构2-lnmp架构的搭建_第54张图片lamp架构2-lnmp架构的搭建_第55张图片
数据存入你的内存里面了
在这里插入图片描述
监控页面
lamp架构2-lnmp架构的搭建_第56张图片

修改认证的admin和密码,不改也行
memache没有集群的概念是分布的,每个结点,对cpu没有要求,对内存有要求,所以不好的电脑多插入几个内存,可以当memache服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

lamp架构2-lnmp架构的搭建_第57张图片
远程的话多加几个ip地址就行了
在这里插入图片描述
lamp架构2-lnmp架构的搭建_第58张图片
lamp架构2-lnmp架构的搭建_第59张图片
多刷几遍这个
在这里插入图片描述
这个页面监控的是在Memache里面的命中率,就是访问example.php页面的时候就是访问的memache
缓存命中率非常高
lamp架构2-lnmp架构的搭建_第60张图片
需要php什么模块就官网搜索下载然后搭建起来
下载进入安装的目录
phpize(加载php安装路径和库)
./configure源码编译三部曲

nginx高速缓存

现在(前面)搭建好的是传统的缓存策略
访问的php页面
80->9000(php-fpm管理器)->调用php进程处理->memache 该方式比Php加载到mysql模块,访问mysql(sql)磁盘,Memache(nosql)内存,访问内存快
这个架构也可以,先访问Memache,有无命中,没有这个去Mysql取,取到后再存入memache
php进程处理
在这里插入图片描述
弊端:nginx高并发不能体现出来
因为nginx通过fastcgi这个方式递交给php后端这个方式后,生命周期由后端php来处理**(nginx的反向代理,客户端通过nginx代理到后端的php,而不是直接访问php)**
高并发可以继续处理客户端的请求,但是无法返回客户端需要的数据
由于动态,静态直接nginx给,但是动态的页面则需要到后端的数据库以及memache里面来取
lamp架构2-lnmp架构的搭建_第61张图片通过压力测试
ab是http的压力测试工具
-c10并发10个,-n5000完成5000次请求
在这里插入图片描述
每s处理2000多个请求
lamp架构2-lnmp架构的搭建_第62张图片

高效缓存策略

不需要动态语言的处理,直接返回(非常快),生命周期变成nginx可以发挥好Nginx高并发的特性
lamp架构2-lnmp架构的搭建_第63张图片
需要2个模块,memc(专门连接memache,也可以换成redis,也可以是别的存储,filesystem)和scrache(nginx标准模块,专门处理缓存,可以连接后端不同类型的缓存设施)
默认Nginx没有这些模块,需要到官网下载,进行编译,(麻烦,让nginx支持cookie算法,每次都要编译麻烦)
我使用另一款nginx发行版,openresty
lamp架构2-lnmp架构的搭建_第64张图片
内部就是Nginx,加了lua脚本
适合敏捷的web开发,可以支持web服务器的快速扩展,如动态更新
都是基于lua,更加灵活
这个已经集成了大量的nginx模块,不用安装

lamp架构2-lnmp架构的搭建_第65张图片
同样是web服务器同样是80会冲突,所以先停掉Nginx

在这里插入图片描述
有时候服务启动不来,就是端口冲突
所以查看ps ax 和 netstat -antlp
查看有无重复启动服务,和端口冲突没

在这里插入图片描述
在这里插入图片描述
它的安装参数和Nginx一样,所以直接用直接nginx安装参数就行,内部就是Nginx
但是其默认安装路径就是/usr/local/openresty

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

lamp架构2-lnmp架构的搭建_第66张图片
修改主配置文件
在这里插入图片描述对照之前Nginx的主配置文件修改
我直接把/usr/local/nginx/conf/nginx.conf文件考入覆盖掉/usr/local/openresty/nginx/conf
启动openresty
在这里插入图片描述lamp架构2-lnmp架构的搭建_第67张图片
在这里插入图片描述
没有问题
lamp架构2-lnmp架构的搭建_第68张图片
lamp架构2-lnmp架构的搭建_第69张图片
lamp架构2-lnmp架构的搭建_第70张图片
定义后端有多少个memache,多个Memache是来负载均衡的,本机127.0.1,如果想要远程输入ip

lamp架构2-lnmp架构的搭建_第71张图片lamp架构2-lnmp架构的搭建_第72张图片lamp架构2-lnmp架构的搭建_第73张图片
lamp架构2-lnmp架构的搭建_第74张图片逻辑,用户访问的url,先到memache看有无该key,没有,通过fastcgi_pass递交给后端的php取,取完后返回值为200就成功,再调用srcache_store 将数据上传到memache,下次直接就可以去memache取
现在是Nginx来控制生命周期了

在这里插入图片描述
lamp架构2-lnmp架构的搭建_第75张图片在这里插入图片描述
压力测试
在这里插入图片描述
速度变成2w多每s处理数据
在这里插入图片描述

你可能感兴趣的:(lnmp架构,架构)