一、了解LNMP架构
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
(1)Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
(2)Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
(3)Mysql是一个小型关系型数据库管理系统。 PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
(4)这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
lnmp架构部署示意图:

1.Apache+PHP 和 Nginx+PHP的区别
Apache一般是把PHP当做自己的一个模块来启动;而Ngnix则是把http请求变量转发给PHP进程,即PHP独立进程,与Ngnix通信,这种方式叫做Fast-CGI运行方式。所以Apache所编译的PHP不能用于Nginx。

2.什么是Fast-CGI
Fast-CGI是一个可伸缩的、高速的在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持Fast-CGI,包括Apache、Nginx和lighttpd等。同时,Fast-CGI也被许多脚本语言支持,其中就有PHP。
Fast-CGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后将结果返回给HTTP服务器。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用了。
FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给Fast-CGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
3.Nginx+Fast-CGI运行原理
Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过Fast-CGI接口来调用。Fast-CGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。
wrapper:为了调用CGI程序,还需要一个Fast-CGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过Fast-CGI接口,wrapper接收到请求,然后Fork(派生)出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过Fast-CGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据(html页面或者图片)发送给客户端。这就是Nginx+Fast-CGI的整个运作过程。

Nginx+Fast-CGI运行过程
###########################mysql源码编译##########################
1.下载cmake-2.8.12.2-4.el6.x86_64.rpm 和mysql-boost-5.7.17.tar.gz
2.安装源码编译工具cmake(支持编译C++语言):cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y

3.tar zxf mysql-boost-5.7.17.tar.gz ##解压源码包
4.cd mysql-5.7.17/

5.创建预编译环境,可以定制即加上自己所需的安装条件(比如安装位置等等)
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ 安装目录
> -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \ 数据库存放目录
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ Unix socket文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ 安装 myisam 存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 安装 innodb 存储引擎
> -DDEFAULT_CHARSET=utf8 \ 使用utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \ 校验字符
> -DEXTRA_CHARSETS=all \ 安装所有扩展字符集
6.直接执行完上面命令后,会报错,要解决一系列依赖性

yum install gcc gcc-c++ -y rm -fr CMakeCache.txt

cmake后加入语句-DWITH_BOOST=boost/boost_1_59_0/ 并删除CMakeCache.txt(编译缓存文件信息)

cmake
yum install ncurses-devel -y cmake rm -fr CMakeCache.txt #ncurses-devel为字符终端处理库


yum intsall bison -y cmake ##linux下c/c++语法分析器


rm -fr CMakeCache.txt cmake

本文详细介绍了LNMP(Linux+Nginx+MySQL+PHP)架构,讲解了各组件的作用,以及Nginx与Fast-CGI的运行原理。接着,文章提供了MySQL、PHP和Nginx的源码编译安装步骤,包括配置选项和依赖安装。最后,文中还涵盖了论坛(以Discuz为例)的搭建流程,涉及权限设置和数据库连接配置。
最低0.47元/天 解锁文章

651

被折叠的 条评论
为什么被折叠?



