LNMP架构祥解——php、nginx、mysql源码编译的过程(也就是搭建LNMP架构的过程)

前言

本文将介绍LNMP架构中PHP、Nginx、Mysql的源码编译过程
在我们使用的Linux系统中,可以从yum源中获得mysql、php,为什么要进行如此漫长复杂的过程进行编译呢?
这是因为官方为我们提供的mysql、php等其功能有限,我们自行编译,是为了定制化,可以在编译过程中添加需要的功能模块

yum安装和自己编译安装的区别
如果是yum安装,它会把所有的模块都安装进去,不管你用不用都会给你安装
如果是自己动手编译,安装服务的时候需要安装什么就编译什么模块,公司一般是这样做
需要什么服务就安装什么,这样系统就比较干净

mysql源码编译时要求虚拟机的硬盘大小不能小于20G,否则后边的编译过程可能会出问题
而且会很漫长,为了提升速度我们增加CPU核数和内存大小
我先查看一下我做实验的的主机是否满足条件
在这里插入图片描述

实验环境

rhel6.5版本的虚拟机+7.3版本的真机

主机信息主机功能
虚拟机server1(172.25.8.1)用来搭建lnmp架构
真机(172.25.8.250)用来测试

注意:实验过程中用到的yum源尽量和主机版本一致,有可能出现不兼容的问题

  • (1)在真机上面创建一个干净的快照server1
    在这里插入图片描述
  • (2)打开硬件管理中心,创建好快照
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • (3)用真机连接server1
    在这里插入图片描述
    声明:实验过程中用到的所有安装包均是在官网下载的,都下载到了我的真机上面
./configure表示检测一下环境
make表示编译
make install表示安装

1.源码编译安装php详细说明

  • (1)从真机给虚拟机server1传一个php的安装包
    在这里插入图片描述
  • (2)在server1上面查看安装包,并且解压,然后进入解压后的目录查看
    在这里插入图片描述
  • (3)建立一个lnmp架构的目录
    在这里插入图片描述
  • (4)进入编译后的目录,开始检测安装的环境,看东西够不够

在这里插入图片描述
在这里插入图片描述
出现错误
在这里插入图片描述
解决错误
在这里插入图片描述
在这里插入图片描述
再检测
在这里插入图片描述
又出现错误
在这里插入图片描述
解决错误
在这里插入图片描述

检测出现错误
在这里插入图片描述
解决错误
在这里插入图片描述
检测出现错误
在这里插入图片描述
在这里插入图片描述
解决错误
在这里插入图片描述
检测出现错误
在这里插入图片描述
解决错误
在这里插入图片描述
检测出现错误
在这里插入图片描述
在这里插入图片描述
解决错误
在这里插入图片描述

检测出现错误
在这里插入图片描述
在这里插入图片描述
解决错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

检测出现错误,并且解决
在这里插入图片描述
在这里插入图片描述
到这里就检测成功了,说明可以开始编译和安装了

  • (5)开始编译和安装
    在这里插入图片描述
  • (6)编译的时候指定了php的用户是nginx用户,因此要建立nginx用户

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

  • (7)配置php
cd /usr/local/lnmp/php/进入php目录
ls查看
cd etc/
cp  php-fpm.conf.default  php-fpm.conf复制一份配置文件模版
vim php-fpm.conf编辑fastcgi的进程管理文件

在这里插入图片描述

注意用户和组都是nginx
搜user group把用户和组全部改为nginx用户
开启pid=run/php-fpm.pid开启进程pid

在这里插入图片描述

在这里插入图片描述

cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cd /usr/local/lnmp/php/etc/
ls
vim php.ini 配置php的主配置文件
将date.timezone改为Asia/Shanghai

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

cd sapi/
ls
cd fpm/
vim init.d.php-fpm
cp init.d.php-fpm  /etc/init.d/php-fpm 建立php的启动脚本
chmod +x /etc/init.d/php-fpm 给脚本一个权限
/etc/init.d/php-fpm start  开启php服务
netstat -tnlp 默认php服务开启9000端口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里为止,php的源码编译、安装、配置都已经完成

2.源码编译安装nginx的详细说明

  • (1)从真机给server1传一个1.16.0版本的nginx安装包
    在这里插入图片描述
  • (2)在server1上面解压并且进入解压后的目录
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • (3)检测编译安装的环境是否满足
    在这里插入图片描述
    检测出现错误
    在这里插入图片描述
    解决错误
    在这里插入图片描述
    再次检测就成功了
    在这里插入图片描述
  • (4)编译和安装
    在这里插入图片描述
  • (5)配置nginx服务
编辑nginx服务的配置文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
加入index.php(现在要做lnmp(把php和nginx关联起来))
开启php模块:注释掉fastcgi_param,把文件写为 fastcgi.conf

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

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin把nginx服务的启动脚本做软连接,方便管理nginx服务
输入nginx可以tab补全
nginx -t检测配置文件的语法是否存在错误
nginx 开启nginx服务

在这里插入图片描述
在这里插入图片描述
查看nginx服务开启的端口,默认是80端口
在这里插入图片描述

编写nginx服务的默认发布页面(已经将默认发布页面改为index.php了)
pwd
cd /usr/local/lnmp/nginx/html
vim index.php
<?php
phpinfo()
?>

在这里插入图片描述
在这里插入图片描述
重新加载服务,使设置生效
在这里插入图片描述

  • (6)测试
在真机的浏览器里面测试:
在浏览器输入:172.25.8.1就可以看到php的页面了(此时nginx和php已经关联起来了)

在这里插入图片描述
到这里nginx的编译、安装、配置已经进行完毕,接下来进行mysql
在进行mysql的编译安装之前,为了加快安装mysql的速度,我们来调整一下cpu和内存的大小

先关闭server1虚拟机
在这里插入图片描述
在真机中打开硬件管理中心
在这里插入图片描述
将内存设置为2048M
在这里插入图片描述
将CPU设置为2核的
在这里插入图片描述
用真机再次连接server1
在这里插入图片描述

3.源码编译安装mysql的详细说明

  • (1)从真机给虚拟机server1传一个mysql的安装包
    在这里插入图片描述
  • (2)解压并且进入解压后的目录
    在这里插入图片描述
  • (3)发现这个使用cmake
    在这里插入图片描述
  • (4)安装cmake
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • (5)检测环境
    在这里插入图片描述
    出现错误
    在这里插入图片描述
    解决错误
    在这里插入图片描述
    先删掉刚刚检测生成的文件再进行编译
    在这里插入图片描述
    出现问题,解决
    在这里插入图片描述

先删掉刚刚检测生成的文件再进行编译
在这里插入图片描述
出现问题,解决
在这里插入图片描述

先删掉刚刚检测生成的文件再进行编译
在这里插入图片描述
在这里插入图片描述检测成功

  • (6)安装,这个特别慢
    在这里插入图片描述
    在这里插入图片描述
  • (7)配置mysql
    进入lnmp目录,可以看到生成了mysql目录
    在这里插入图片描述
    进入mysql目录查看
    在这里插入图片描述
    进入mysql的解压目录,查找mysql服务的启动脚本
    在这里插入图片描述
    在这里插入图片描述
    生成mysql的启动脚本,给权限
    先备份一下mysql服务的配置文件,再复制一份模版
    在这里插入图片描述
    编辑mysql的配置文件
    在这里插入图片描述
    写入基本信息:主目录、数据目录、套节字文件的目录
    在这里插入图片描述
    建立mysql用户
    在这里插入图片描述
    将mysql主目录的权限变为mysql,只有这样才可以生成它的数据目录
    在这里插入图片描述
    编辑环境文件
    在这里插入图片描述
    加入mysql命令
    在这里插入图片描述
    source使其生效,可以看出有mysql命令了
    在这里插入图片描述
    生成data目录的同时回给一个数据库的初始密码
    在这里插入图片描述
    在这里插入图片描述
    可以看到生成了data目录
    在这里插入图片描述
    生成data目录之后将权限改回来,只把data目录的权限给mysql
    在这里插入图片描述开启mysql服务
    在这里插入图片描述
    利用初始密码登录数据库
    发现只有改了密码之后才可以查看数据库
    在这里插入图片描述
    初始化数据库,改数据库的的密码(给root的)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    再次登录数据库,可以查看了
    在这里插入图片描述
    可以看到数据目录下生成了套节字文件
    在这里插入图片描述
    在这里插入图片描述
    最后将php、nginx、mysql服务全部开启
    在这里插入图片描述编译和安装mysql的过程中都发生了什么
    进入解压目录之后
    开始编译,会指定编译目录,编译之后会在解压目录下面生成makefile和objs这两个目录
    编译完之后开始安装,安装之后会在/usr/local/lnmp/生成mysql目录

整个实验步骤如下,仅供大家参考

(1)先poweroff先关闭虚拟机
(2)virt-manager 在真机是给虚拟机加内存为2048M和cpu2个
(3)先在www.mysql.com的官网上面查看mysql的包、编译说明、官方文档等等(这个要学会看)
(4)在真机给虚拟机传一个mysql-boost的包,已经下载好的
(5)在虚拟机上面:tar zxf mysql 解压mysql的包
cd mysql/进入解压目录
ls查看,发现mysql编译需要使用cmake(类似gcc编译器)
(6)从真机给虚拟机传一个cmake的安装包
(7)在虚拟机上面yum install -y cmake安装cmake编译器
现在有cmake命令了,开始使用命令编译(编译需要的模块参考官方文档)
(8)在真机中evience rhel6 lanmp.pdf查看编译需要的模块(官网没有找到)
(9)开始编译
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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
参考文档里面没有最后一个,编译的时候报错,在最后把提示的这个加上
每次编译完之后都会生成这个文件:CMakeCache.txt
出现错误,解决
yum install -y ncurses-devel
每次重新编译之前:rm -rf CMakeCache.txt
再编译,又报错
yum install -y gcc-c++
rm -rf CMakeCache.txt
再编译,又报错
yum install -y bison
rm -rf CMakeCache.txt
再编译,这次好了
(10)make && make install(开始安装,这个特别慢)
(11)配置mysql
cd mysql/进入解压目录
cd /usr/local/lnmp
cd mysql/进入解压目录
cd support-files/
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
cp /etc/my.cnf /etc/my.cnf.bak备份
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir=mysql的主目录
datadir=mysql的数据目录
socket=mysql的套节字文件目录
group -g 27 mysql建立mysql用户
useradd -u 27 -g 27 mysql
id mysql
chown mysql.mysql /usr/local/lnmp/mysql -R
cd /usr/local/lnmp/mysql
vim ~/.bash_profile
加入:/usr/local/lnmp/mysql/bin
source ~/.bash_profile
mysql tab看有没有数据库
mysqld --user=mysql --initialize生成data目录
chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R
/etc/init.d/mysqld start开启数据库服务
mysql -uroot -p按照自动生成的密码登录一次,发现查看数据库没有权限,需要安全初始化
mysql_secure_installation数据库安全初始化
mysql -uroot -predhat登录数据库
show database;查看
exit
cd /usr/local/lnmp/mysql
cd data/
netstat -tlnp查看
nginx开启nginx服务
/etc/init.d/php-fpm start开启php服务
netstat -tlnp查看服务开启的情况
看nginx的80端口、php的9000端口、mysql的3306端口是否都开启

这三部分现在都准备好了,接下来就可以利用lnmp架构实现客户访问服务器从前到后的整个流程了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值