part_77:lnmp架构的搭建(MYSQL、PHP、nginx的源码编译)

lnmp 架构

LNMP = Linux+Nginx+Mysql+PHP
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。
LNMP和LAMP唯一不同是指提供web服务的是Nginx,在Apache中,PHP是作为一个模块存在的。而在Nginx中,PHP是作为一个独立服务存在的,这个服务叫做php-fpm。Nginx直接处理静态请求,动态请求会转发给php-fpm.

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的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

mysql 数据库的源码编译

  • 先下载mysql的数据库源码包,并解压
    在这里插入图片描述
  • 创建一个目录,来存放编译后的mysql
[root@server1 mysql-5.7.17]# mkdir /usr/local/lnmp
  • 安装源码编译工具cmake(版本要选择好)
  • cmake:
[root@server1 ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y
  • 创建编译环境,选择自己的需要进行添加(在mysql目录下编译)
cd mysql-5.5.12
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   #安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data \    #数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \   #Unix socket 文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \   #安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \   #安装 innodb 存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \   #安装 archive 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \  #安装 blackhole 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \   #安装数据库分区
-DENABLED_LOCAL_INFILE=1 \  #允许从本地导入数据
-DWITH_READLINE=1 \  #快捷键功能
-DWITH_SSL=yes \  #支持 SSL
-DDEFAULT_CHARSET=utf8 \  #使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci \  #校验字符
-DEXTRA_CHARSETS=all \   #安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 \   #MySQL 监听端口

在这里插入图片描述

  • 初次编译,会发现,有许多依赖性需要安装,依次安装完成。
    在这里插入图片描述
[root@server1 mysql-5.7.17]# yum install ncurses-devel gcc-c++ bison -y
  • 再次编译时,要删除 CMakeCache.txt 文档后再编译。
    在这里插入图片描述
  • 在make && make install 时,需要大的内存(最好是20G以上)
    在这里插入图片描述
    在这里插入图片描述
  • 配置完内存后:make && make install
  • 配置mysql
  • 将编译完成后的mysql启动脚本复制到系统的启动服务目录下
    在这里插入图片描述
  • 给mysql脚本一个执行权限
[root@westos support-files]# chmod +x /etc/init.d/mysqld
  • 先将/etc下的my.cnf 备份,再将编译完成的默认配置文件放到/etc/my.cnf
    在这里插入图片描述
  • 编辑配置文件[root@westos etc]# vim /etc/my.cnf
    在这里插入图片描述
  • 对mysql服务进行限制,限制在mysql的家目录下,(如果系统没有mysql用户,需要先创建mysql组和用户)
[root@westos lnmp]# groupadd -g 27 mysql
[root@westos lnmp]# useradd -u 27 -g 27 -s /sbin/nologin mysql
  • 将mysql目录下的所有文件的所有组都改为mysql,只有data的所有人是mysql(因为data文件存放的是数据,要写入,保证其权限)并给mysql及其内部文件一个执行权限
[root@westos mysql]# chmod +x mysql/ -R
[root@westos lnmp]# chown mysql.mysql mysql/ -R
[root@westos lnmp]# chown root mysql/ -R
[root@westos lnmp]# cd mysql/
[root@westos mysql]# chown mysql data/

在这里插入图片描述

  • 将编译生成的二进制命令存放进环境变量,保证可以直接调用该二进制命令
    在这里插入图片描述
    在这里插入图片描述
  • 将mysql初始化
  • 初始化mysql会生成初始化密码,要牢记
[root@westos data]# mysqld --user=mysql --initialize

在这里插入图片描述

  • 如果初始化不成功,则要把data目录下的东西全部删除后重试
  • 开启mysql服务
    在这里插入图片描述
  • 登陆mysql(密码是刚才生成的密码)
    在这里插入图片描述
  • mysql的安全初始化(更改密码并作以下修改)
root@westos data]# mysql_secure_installation

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

  • 此时mysql数据库安装完成
    在这里插入图片描述

php 的源码编译

  • 下载php的源码安装包并解压
    在这里插入图片描述
  • 安装编译php所需要的依赖性:
[root@westos ~]# yum install -y net-snmp-devel libmcrypt-* gmp-devel-4.3.1-7.el6_2.2.x86_64 freetype-devel 2:libpng-devel-1.2.49-1.el6_2.x86_64 libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libcurl-devel openssl-devel libxml2-devel

在这里插入图片描述

  • 进入解压后的目录创造编译环境并编译
[root@westos php-5.6.35]#./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash

在这里插入图片描述

  • 完成后:make && make install
    在这里插入图片描述
  • 编译完成
    在这里插入图片描述
  • 创建nginx用户:[root@westos ~]# useradd nginx
  • 配置php服务 vim /usr/local/lnmp/php/etc/php-fpm.conf
    在这里插入图片描述
  • 将第25行注释去掉
    在这里插入图片描述
  • 修改时区
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 将php启动脚本复制到系统启动脚本的默认目录下,并给一个执行权限,测试php是否可以启动
    在这里插入图片描述
    在这里插入图片描述

nginx 的源码编译

  1. 下载并解压nginx的源码安装包
    在这里插入图片描述
  2. 安装依赖性pcre-devel gcc zlib-devel:
    yum install -y pcre-devel gcc zlib-devel
  3. 编辑配置文件:去掉nginx的版本号:
    [root@westos nginx-1.14.0]#vim src/core/nginx.h
    在这里插入图片描述
  4. 编辑配置文件:关闭debug日志
    [root@westos nginx-1.14.0]# vim auto/cc/gcc
    注释掉172行
  5. 编译
[root@westos nginx-1.14.0]# ./configure --prefix=/usr/local/lnmp/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx 
  1. 当openssl报错时,有可能是openssl版本问题,这时安装openssl-devel再重新编译即可[root@westos lib]# yum install openssl-devel -y
    在这里插入图片描述

  2. make && make install

  3. 查看nginx的大小
    在这里插入图片描述

  4. 编辑nginx配置文件:vim /usr/local/lnmp/nginx/conf/nginx.conf
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 做软连接:
    [root@westos sbin]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/

  6. 检测nginx服务是否可用并开启nginx

[root@westos sbin]# ./nginx -t  ##语法检测
[root@westos sbin]# ./nginx -v  ##查看版本
[root@westos sbin]# ./nginx -V  ##查看信息
[root@westos nginx-1.14.0]# nginx   ##打开
  1. 通过端口查看是否开启
    在这里插入图片描述
  2. 检测:浏览器上查看
    在这里插入图片描述
  3. 访问测试:编写php页面,并查看
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42311209/article/details/89489544