1.什么是LNMP?
LNMP = Linux+Nginx+Mysql+PHP
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。
LNMP和LAMP唯一不同是指提供web服务的是Nginx而不是Apache:在Apache中,PHP是作为一个模块存在的。
在Nginx中,PHP是作为一个独立服务存在的,这个服务叫做php-fpm. ;Nginx直接处理静态请求,动态请求会转发给php-fpm.
2.LNMP的工作原理
- 浏览器发送http request请求到服务器(Nginx)
- 服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序)
- PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。
- PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM
- PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx
- 服务器再通过Http response的形式传送给浏览器。
- 浏览器再进行解析与渲染然后进行呈现。
实验环境
主机(版本:ip) | 功用 |
---|---|
虚拟机server1(rhel7.3:172.25.16.1) | 搭建lnmp |
真机(rhel7.3:172.25.16.250) | 测试机 |
3.MYSQL数据库的源码编译
step1 解压安装 mysql:
tar zxf mysql-boost-5.7.28.tar.gz
step2 创建 mysql 用户:
useradd -s /sbin/nologin -M mysql
step3 编译MYSQL:
cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等
yum install -y cmake #编译mysql需要用的包
cd mysql-5.7.28 #进入mysql解压后的目录
#以下命令为编译:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #指定套接字文件位置
> -DEXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8 \ #默认字符集
> -DDEFAULT_COLLATION=utf8_general_ci \ #默认字符校对
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装myisam 存储引擎
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装innodb存储引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \ #安装memory存储引擎
> -DWITH_READLINE=1 \ #支持readline库
> -DENABLED_LOCAL_INFILE=1 \ #启用加载本地数据
> -DMYSQL_USER=mysql \ #指定mysql运行用户
> -DMYSQL_TCP_PORT=3306 #指定mysql端口
step4 根据提示解决依赖性问题:
yum install -y gcc gcc-c++ ncurses-devel openssl-devel -y
step5 可能会看到这样的报错:
CMake Error at cmake/boost.cmake:81 (ME