lnmp架构搭建---源码编译MYSQL,PHP,nginx

文章目录

  • 1.什么是LNMP?
  • 2.LNMP的工作原理
  • 3.MYSQL数据库的源码编译
  • 4.PHP源码编译
  • 5.nginx的源码编译

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 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=
This CMake script will look for boost in . If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80

解决:

缺少 -DWITH_BOOST=参数
重新编译时加上下面的参数: 
-DWITH_BOOST=boost/boost_1_59_0/

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

make clean
rm -fr CmakeCache.txt

后面编译过程中可能会有一个 warnin:

CMake Warning at cmake/bison.cmake:20 (MESSAGE):
Bison executable not found in PATH
Call Stack (most recent call first):
sql/CMakeLists.txt:514 (INCLUDE)

解决:

yum install -y bison

step6 安装:

make && make install ##如果 make 还有问题,删除原来的目录,重新解压编译(安装过程较长) 

step7 修改权限:

cd /usr/local/lnmp/mysql
mkdir data
chown -R root .
chown -R mysql data
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/

step8 复制配置文件:

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
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
systemctl status mysqld

step9 初始化:

mysqld --user=mysql --initialize	#以mysql 用户身份初始化
注意:初始化会生成一个临时密码,用于登录 mysql(要记住此密码)
比如:2019-01-03T09:06:09.448851Z 1 [Note] A temporary password is generated
for root@localhost: r#9VqAoA/au
r#9VqAoA/au就是临时密码

step10 启动mysql:

systemctl start mysqld

step11 进入 mysql:

mysql -uroot -pr#9VqAoA/au: #使用刚才的临时密码(会有报错,所以需要安全初始化)

step12 安全初始化:

mysql_secure_installation	#然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求;剩余全部选 y

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第1张图片
lnmp架构搭建---源码编译MYSQL,PHP,nginx_第2张图片
lnmp架构搭建---源码编译MYSQL,PHP,nginx_第3张图片
在这里插入图片描述
mysql安装配置完成

4.PHP源码编译

step1 解压安装包:

tar zxf php-7.4.1.tar.gz

step2 解决依赖性:

yum -y install bzip2

step3 进入解压后的目录,开始编译:

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc \
--with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config \
--enable-soap \
--enable-mbstring=all \
--enable-sockets \
--with-pdo-mysql=/usr/local/lnmp/mysql \
--enable-gd \
--without-pear \
--enable-fpm

step4 根据编译过程中的报错逐步解决依赖性:
可能会需要安装的包:

yum install -y libxml2-devel
yum install -y libpng-devel
yum install -y oniguruma-*

step5 安装:

make && make install

step6 拷贝更改配置文件:

cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf		#开启17行:pid = run/php-fpm.pid

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第4张图片
step7 拷贝子配置文件:

cd /usr/local/lnmp/php/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf	#更改23和24行内容如下
user = nginx
group = nginx

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第5张图片
在这里插入图片描述
step8 拷贝更改php主配置文件:

cd php-7.4.1
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini	#961行修改时区如下
date.timezone = Asia/Shanghai

在这里插入图片描述
step9 拷贝php启动脚本至/etc/init.d/:

cd /root/lnmp/php-7.4.1/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm	#添加执行权限

step10 启动php:

/etc/init.d/php-fpm start

注意:
启动报错可能因为没有 nginx 用户,需要手动创建

useradd -u 900 nginx

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第6张图片
php安装配置完成

5.nginx的源码编译

step1 解压安装包

tar zxf nginx-1.16.0.tar.gz

step2 去掉nginx的版本号:

cd /root/lnmp/nginx-1.16.0
vim src/core/nginx.h	

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第7张图片
step3 关闭debug日志:
因为debug的日志非常多,企业中一般不需要开启

vim auto/cc/gcc
做如下修改:
# debug
#CFLAGS="$CFLAGS -g" (将这2行注释调,关闭debug)

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第8张图片
step4 编译安装 nginx:

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx

step5 根据提示解决依赖性:
此处应该还需要安装pcre-devel:

yum install pcre-devel -y

step6 安装:

make && make install

step7 修改nginx配置文件,开启php模块:
lnmp架构搭建---源码编译MYSQL,PHP,nginx_第9张图片
step8 将nginx启动脚本链接到/usr/local/sbin/:

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/

step9 开启nginx:

nginx -t ##检测语法
nginx

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第10张图片
step10 测试:

尝试访问http://172.25.254.1	##是nginx默认页面

lnmp架构搭建---源码编译MYSQL,PHP,nginx_第11张图片
在nginx默认发布目录添加index.php:

vim /usr/local/lnmp/nginx/html/index.php
写入:
()
?>

在这里插入图片描述
刷新http://172.25.254.1可以看到php的默认页面
lnmp架构搭建---源码编译MYSQL,PHP,nginx_第12张图片
nginx 安装配置完成

你可能感兴趣的:(lnmp,数据库,nginx,linux,mysql)