Lnmp(1)--搭建Lnmp(mysql)及lnmp的理念

本文详细介绍了LNMP架构,包括其概念、搭建流程,以及CGI和FastCGI的原理。此外,还深入讲解了如何搭建MySQL,强调了配置过程中需要注意的参数和可能出现的问题及其解决方法。
摘要由CSDN通过智能技术生成

1.概念

  • LNMP是指一组通常一起使用来运行 动态网站 或服务器的自由软件名称首字母缩写
  • L指Linux,M一般指MySQL,也可以指MariaDB,P一般是指PHP,也可以指Perl或Python

2.搭建Lnmp架构的流程

  • 1>用户通过http协议发起请求,请求会先抵达LNMP架构中的nginx
  • 2>nginx会根据用户的请求进行判断,这个判断是由Location完成的
  • 3>判断用户请求的是静态页面,nginx直接进行处理
  • 4>判断用户的请求是动态请求,nginx会将该请求交给fastcgi协议下发
  • 5>fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后调用具体的工作进程wrapper
  • 6>wrapper线程会调用php进行解析,如果只是解析php代码,那么直接返回结果给客户端
  • 7>如果有查询数据库的操作,则由php连接数据库(用户 密码 IP)然后发起查询的操作
  • 8>最终数据由mysql -> php -> php-fpm -> fastcgi -> nginx -> http -> user

3.CGI的介绍

  • CGI(Common Gateway Interface),即通用网关接口,
  • 是WWW技术中最重要的技术之一,是外部应用程序(CGI程序)与WEB服务器之间的接口标准
  • 负责在CGI程序和Web服务器之间传递信息
  • CGI是Web服务器运行时,调用外部应用程序(即CGI程序)的规范
  • CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器

出现背景

  • CGI是比较原始的开发动态网站的方式
  • 由于静态的html页面无法实现网站的动态内容的生成,所以就需要由web服务器调用CGI程序,
  • CGI程序生成动态内容,返回给web服务器,web服务器再返回给浏览器
CGI应用程序能够通过Web服务器与浏览器进行交互
还可以通过数据库API与数据库服务器等外部数据源进行通信
从数据库服务器中获取数据,将数据格式化为html文档后,发送给浏览器
也可以将从浏览器获得的数据u放到数据库中

在这里插入图片描述
CGI程序处理步骤:

  • 1>浏览器通过html表单或超链接,请求指向一个CGI应用程序的URL
  • 2>服务器收到浏览器发送的请求
  • 3>服务器调用执行指定CGI应用程序
  • 4>CGI应用程序根据相关信息(通常是基于浏览者输入的内容)
  • 5>CGI应用程序把操作结果格式化为网络服务器和浏览器能够理解的文档(通常是html网页),并发送给web服务器
  • 6>web服务器把操作结果返回给浏览器

4.FastCGI的介绍

  • FastCGI实际上是增加了以下扩展功能的CGI,是CGI的改进
  • 描述了客户端和web服务器程序之间传输数据的一种标准
  • FastCGI致力于减少web服务器与CGI程序之间进行交互的开销
  • 从而使web服务器可以同时处理更多的web请求
  • 与CGI为每个web请求创建一个新的进程不同
  • FastCGI使用持续的进程来处理一连串的web请求
  • 这些进程由FastCGI进程管理器管理,而不是web服务器
    在这里插入图片描述
由于FastCGI程序并不需要不断产生新进程,
因此使用FastCGI可以大大降低web服务器的压力并产生较高的应用效率
CGI就是所谓的短生存期应用程序,而FastCGI就是所谓的长生存期应用程序
FastCGI像是一个常驻(long-live)型的CGI,可以一直执行着
而不会每次花费时间去fork(这也是CGI最为人诟病的fork-and-execute模式)

FastCGI的运行过程

  • 1>web服务器启动时,初始化FastCGI的程序执行环境
  • 例如,nginx服务器对应的ngx_http_fastcgi_module模块
  • 2>FastCGI进程管理器自身初始化,启动多个CGI进程并等待来自web服务器的连接
  • 3>当客户端请求到达web服务器时,web服务器将该请求采用socket方式转发到FastCGI主进程
  • FastCGI主进程选择并连接到一个CGI解释器(关联FastCGI子进程)
  • 然后,web服务器将CGI环境变量和标准输入发送到FastCGI子进程
  • 4>FastCGI子进程完成处理后,将标准输出和错误信息从同一socket连接返回给web服务器
  • 最后,FastCGI子进程关闭与web服务器之间的连接
  • 5>FastCGI子进程继续等待并处理下一个来自web服务器的连接

5.搭建mysql并配置所需参数(number1)

  • 配置number1时需要配置以下参数,否则安装mysql时速度过慢、或编译错误
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

源码编译mysql

  • tar zxf mysql-boost-5.7.28.tar.gz #解压安装mysql
  • useradd -s /sbin/nologin -M mysql # 创建mysql用户(-M不创建主目录)
  • 此用户为非交互式用户,是程序自己启动进程时使用的,并不交互式登录,因此不用创建家目录
  • id mysql #查看用户id
  • yum install cmake -y #安装编译所需软件
  • 编译
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_MYISAM_STORAGE_ENGINE=1 \         #安装mysiam存储引擎
> -DWITH_INNOBASE_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端口
  • yum install gcc gcc-c++ ncurses-devel -y #安装解决依赖性所需软件
  • 再次编译

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

  • 若出现如下报错,需进行以下步骤:
    在这里插入图片描述

  • 重新编译时,要清除原来的对象文件和存储信息

  • make clean

  • rm -rf CMakeCache.txt

  • 再次编译需添加参数-DWITH_BOOST=boost/boost_1_59_0/
    在这里插入图片描述

  • 出现以下错误,要安装解决依赖性的软件

  • yum install openssl-devel -y #安装解决依赖性的软件
    在这里插入图片描述

  • 重新编译时,要清除原来的对象文件和存储信息

  • make clean

  • rm -rf CMakeCache.txt

  • 再次编译
    在这里插入图片描述

  • 出现以下警告时,需要安装所需软件

  • yum install bison -y #安装所需软件

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

  • make && make install #编译安装,过程时间较长
  • 如果make还有问题,则删除原来的目录,重新解压编译
    在这里插入图片描述

更改mysql的配置

  • 1>修改权限

  • cd /usr/local/lnmp/mysql #切换到mysql的安装路径中

  • mkdir data #建立数据目录

  • chown -R root . #修改权限,将所有文件及目录的拥有者改为root

  • chown -R mysql data #将data目录的权限改为mysql

  • ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/ #做命令mysql的软连接,使得mysql命令能够直接使用
    在这里插入图片描述

  • 2>复制配置文件

  • cd /usr/local/lnmp/mysql/mysql-test/include

  • cp default_my.cnf /etc/my.cnf

  • cd /usr/local/lnmp/mysql/support-files

  • cp -a mysql.server /etc/init.d/mysqld #复制mysql的启动文件

  • chmod +x /etc/init.d/mysqld #给启动文件添加执行权限

  • chkconfig mysqld on #检测mysql

  • systemctl status mysqld #查看mysql的状态,未开启
    在这里插入图片描述
     =

  • 3>初始化及启动

  • mysqld --user=mysql --initialize #以mysql用户身份初始化

  • 初始化之后会生成一个临时密码,用于登录mysql,要记住此密码

  • systemctl start mysqld #启动mysql

  • 若进行初始化之后,启动mysql时出现问题,则检查/usr/local/lnmp/mysql/data文件,查看是否存在数据,若存在则删掉其中的数据,并重新按照配置方法进行配置
    在这里插入图片描述

  • 4>进入mysql并进行安全初始化

  • mysql -uroot -p'_K_gqojw5O<q' #使用刚才的密码进入mysql

  • 若登录过程出现错误,则在密码上加入引号

  • 执行show databases; 会出现错误,然后退出mysql进行安全初始化

  • mysql_secure_installation #安全初始化

  • mysql -uroot -predhat #使用新密码重新登录

  • 若在安全初始化时忘记原始密码,停止mysqld,清空data数据,重新初始化mysql,会重新生成原始密码,重心启动mysql,之后再使用密码进行安全初始化
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值