栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

lamp架构2-lnmp架构的搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lamp架构2-lnmp架构的搭建

系列文章目录 lnmp2

lnmp架构2-lnmp架构的搭建

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

nginx高速缓存


lnmp架构图

一、Mysql的初始化

将启动脚本考入/etc/init.d/下启动(init方式传统启动脚本)

装了mariadb以后才会有这个文件



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



包含很多Mysql数据库的配置参数


Mysqld默认会读取的文件


初始化参数,一个是安全的,一个是非安全的
非安全是没有给管理员加密码,你要进去以后加密码
安全的是随机生成了密码

为了安全性,让mysql运行在私有用户中,不是直接在root下运行

运行完以后生成一个随机密码


在启动以后,如果有报错,可以去改路径下去查看

netstat - antlp查看到3306mysql端口已经打开了

已经启动了

生产环境推荐使用的安全安装

将刚才生成随机密码输入,自己设置新的密码后,是否启动密码校验脚本,我选择的是No
启动密码校验脚本的话,会强制你密码的强度,字符串大小写长度等等


刷新数据库的认证数据表


-p后面跟的是密码,进入到了数据库,warning是推荐你不要-p后面直接接入密码,这样别人history就能查到你数据库的密码,不安全使用交互式输入密码


二、php的源码编译

rpm 源码 自动化 容器化安装都行
可以直接去php下载php的源码
我直接在我的服务器下获取


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包的参数都不够


系统自带的php动态的包,缺什么直接安装


系统优先找rpm包,所以源码编译的时候不要安装rpm包
-libsystemddevel没有







这个包系统不带,我从阿里云下载的




make 以后然后make install

三、更改php的配置

默认配置目录

将php变量加入用户变量中


将default去掉就是它的默认配置文件


;代表注释,去掉该注释



不用变更文件,看看里面的配置

监听端口

进程pm最多5个,默认2个,保持一个空闲

进入php源码里面拷贝所需配置文件
这是主配置文件


考入源码包里面的启动脚本


有两种启动方式

init方式,起名php-fpm

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


没有特别具体的报错


错误点READ-only,百度查看
是因为启动了保护,不让在里面写入东西

每次修改这里的文件都需要reload一下

注释掉这个

启动以后,需要去修改配置文件里面的时区





rpm包编译是cgi 无后台程序
源码是fastcgi 有后台程序,所以可以平滑加载

但是后台会消耗大,所以一般会做反向代理和负载均衡
直接访问9000端口访问php意义不大

三、 做nginx和php-fpm的整合


当php处理以php结尾的请求
通过fastcgi递交给后台的9000端口

注释掉是因为这个文件包含了





路径要写自己的与官方不一样

nginx开机自启

查看php自带的内部的信息函数,通常不要让外部主机访问这个Info

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




如果数据库不在本地还可以指定远程的主机,用户还有密码



测试

php代码写的数据库管理工具




权限没有问题

是找不到它的首页

解决方法

定义默认如何找首页




这里的用户是数据库的用户,不是操作系统里面的用户
root和刚才进入数据库的密码

目录中的other进不去


php和Nginx都是nginx用户针对这个文件是other所以进不去

lnmp搭建完成

五、 扩充PHP模块之memcache



没有config


一定要把php源码路径的安装目录中的Bin放在全局环境中,要不然调用不了phpize
这个指令可以完成预编译环境,其实就是寻找你的动态库

make make install
该模块安装在这个位置
php的主配置文件,php-fpm是php的管理器

写一个扩展参数

平滑加载,重新加载你的主配置文件

-m是列出php所有模块

这个是nosql数据库,做数据库的缓冲,完全运行在内存
传统的关系式数据库结构是存储结构化关系数据


netstat -antlpe监听端口11211端口
nosql数据库,完全运行在内存,默认启动会占用你本机64M的内存量,也可以修改
将数据写入你内存,读写速度快,特点不能做持久化,一重启数据就没有了,内存没有做持久化
好处快,并且降低数据库的压力

连接memache

默认会连接你的11211端口,如果你的memache在远程你可以替换掉你的localhost
编写的就是把数据存入你的内存

数据存入你的内存里面了

监控页面

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



远程的话多加几个ip地址就行了



多刷几遍这个

这个页面监控的是在Memache里面的命中率,就是访问example.php页面的时候就是访问的memache
缓存命中率非常高

需要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里面来取
通过压力测试
ab是http的压力测试工具
-c10并发10个,-n5000完成5000次请求

每s处理2000多个请求

高效缓存策略

不需要动态语言的处理,直接返回(非常快),生命周期变成nginx可以发挥好Nginx高并发的特性

需要2个模块,memc(专门连接memache,也可以换成redis,也可以是别的存储,filesystem)和scrache(nginx标准模块,专门处理缓存,可以连接后端不同类型的缓存设施)
默认Nginx没有这些模块,需要到官网下载,进行编译,(麻烦,让nginx支持cookie算法,每次都要编译麻烦)
我使用另一款nginx发行版,openresty

内部就是Nginx,加了lua脚本
适合敏捷的web开发,可以支持web服务器的快速扩展,如动态更新
都是基于lua,更加灵活
这个已经集成了大量的nginx模块,不用安装


同样是web服务器同样是80会冲突,所以先停掉Nginx


有时候服务启动不来,就是端口冲突
所以查看ps ax 和 netstat -antlp
查看有无重复启动服务,和端口冲突没



它的安装参数和Nginx一样,所以直接用直接nginx安装参数就行,内部就是Nginx
但是其默认安装路径就是/usr/local/openresty



make make install


修改主配置文件
对照之前Nginx的主配置文件修改
我直接把/usr/local/nginx/conf/nginx.conf文件考入覆盖掉/usr/local/openresty/nginx/conf
启动openresty


没有问题



定义后端有多少个memache,多个Memache是来负载均衡的,本机127.0.1,如果想要远程输入ip


逻辑,用户访问的url,先到memache看有无该key,没有,通过fastcgi_pass递交给后端的php取,取完后返回值为200就成功,再调用srcache_store 将数据上传到memache,下次直接就可以去memache取
现在是Nginx来控制生命周期了



压力测试

速度变成2w多每s处理数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号