将启动脚本考入/etc/init.d/下启动(init方式传统启动脚本)
装了mariadb以后才会有这个文件
这个是Mysql的全局变量参数,在这里面配置的参数是全局生效的,并且持久化
修改mariadb的全局变量参数文件并作为Mysql的全局变量参数文件
初始化参数,一个是安全的,一个是非安全的
非安全是没有给管理员加密码,你要进去以后加密码
安全的是随机生成了密码
为了安全性,让mysql运行在私有用户中,不是直接在root下运行
运行完以后生成一个随机密码
在启动以后,如果有报错,可以去改路径下去查看
netstat - antlp查看到3306mysql端口已经打开了
已经启动了
生产环境推荐使用的安全安装
将刚才生成随机密码输入,自己设置新的密码后,是否启动密码校验脚本,我选择的是No
启动密码校验脚本的话,会强制你密码的强度,字符串大小写长度等等
刷新数据库的认证数据表
-p后面跟的是密码,进入到了数据库,warning是推荐你不要-p后面直接接入密码,这样别人history就能查到你数据库的密码,不安全使用交互式输入密码
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包的参数都不够
系统优先找rpm包,所以源码编译的时候不要安装rpm包
-libsystemddevel没有
这个包系统不带,我从阿里云下载的
make 以后然后make install
监听端口
进程pm最多5个,默认2个,保持一个空闲
进入php源码里面拷贝所需配置文件
这是主配置文件
init方式,起名php-fpm
由于编译的使用了–sytemd使用它可以用systemctl来启动
systemd启动:
没有特别具体的报错
错误点READ-only,百度查看
是因为启动了保护,不让在里面写入东西
每次修改这里的文件都需要reload一下
rpm包编译是cgi 无后台程序
源码是fastcgi 有后台程序,所以可以平滑加载
但是后台会消耗大,所以一般会做反向代理和负载均衡
直接访问9000端口访问php意义不大
当php处理以php结尾的请求
通过fastcgi递交给后台的9000端口
注释掉是因为这个文件包含了
查看php自带的内部的信息函数,通常不要让外部主机访问这个Info
如果数据库不在本地还可以指定远程的主机,用户还有密码
测试
php代码写的数据库管理工具
权限没有问题
是找不到它的首页
解决方法
定义默认如何找首页
这里的用户是数据库的用户,不是操作系统里面的用户
root和刚才进入数据库的密码
目录中的other进不去
php和Nginx都是nginx用户针对这个文件是other所以进不去
lnmp搭建完成
没有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源码编译三部曲
现在(前面)搭建好的是传统的缓存策略
访问的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模块,不用安装
有时候服务启动不来,就是端口冲突
所以查看ps ax 和 netstat -antlp
查看有无重复启动服务,和端口冲突没
它的安装参数和Nginx一样,所以直接用直接nginx安装参数就行,内部就是Nginx
但是其默认安装路径就是/usr/local/openresty
修改主配置文件
对照之前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来控制生命周期了