linux企业实战 --源码编译Nginx+MySQL+PHP

1 lnmp

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

总述

  • LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
  • Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
  • Nginx是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。
  • Mysql是一个小型关系型数据库管理系统。
  • PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

2 lnmp架构总述

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

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

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

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

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

由于FastCGI程序并不需要不断产生新进程,因此使用FastCGI可以大大降低Web服务器的压力并产生较高的应用效率。

CGI就是所谓的短生存期应用程序,而FastCGl就是所谓的长生存期应用程序,FastCGI 像是一个常驻( long-
live )型的CGI,FastCGI可以一-直执行着,而不会每次花费时间去fork (这也是CGI最为人诟病的fork-and-execute模式)

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

3 安装mysql

虚拟机
在这里插入图片描述在这里插入图片描述在这里插入图片描述

解压安装mysql

tar zxf mysql-boost-5.7.28.tar.gz 

在这里插入图片描述在这里插入图片描述创建mysql用户

useradd -s /sbin/nologin -M mysql

id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)

在这里插入图片描述

yum install -y cmake
yum install -y gcc gcc-c++ ncurses-devel openssl-devel -y
yum install -y bison

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

扫描二维码关注公众号,回复: 9724838 查看本文章
make clean;
rm -fr CmakeCache.txt!!!!

安装cmake(相当于configure),用来编译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_MYISAM_STORAGE_ENGINE=1 		#
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 
-DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql 
-DMYSQL_TCP_PORT=3306 
-DWITH_BOOST=boost/boost_1_59_0/

make && make install

在这里插入图片描述在这里插入图片描述
修改权限

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

在这里插入图片描述
复制配置文件

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

在这里插入图片描述
初始化

mysqld --user=mysql --initialize (以 mysql 用户身份初始化)

在这里插入图片描述
启动mysql

启动 mysql:	systemctl start mysqld
进入 mysql:	mysql -uroot -predhat 	#使用刚才的临时密码
执行:		show databases; 会报错

需要执行:	mysql_secure_installation,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求

			剩余全部选 y

在这里插入图片描述在这里插入图片描述在这里插入图片描述
mysql安装配置完成。
注意: 如果执行过程中出错或者忘记密码,删掉data目录重新来一便

4 安装php

tar zxf php-7.4.1.tar.gz

在这里插入图片描述
进入解压后的目录,开始编译

./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

编译报错,逐步解决依赖性

yum install -y libxml2-devel  
yum install -y libpng-devel
yum install -y sqlite-devel.x86_64

yum源没有,lnmp包里面有

yum install -y oniguruma-* 

安装

make && make install

拷贝更改配置文件

cd /usr/local/lnmp/php/etc

cp php-fpm.conf.default php-fpm.conf # 查看配置文件中以下几项是否开启:
	pid = run/php-fpm.pid

在这里插入图片描述在这里插入图片描述
拷贝子配置文件

cd /usr/local/lnmp/php/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf
user = nginx
group = nginx

在这里插入图片描述在这里插入图片描述
拷贝更改 php 主配置文件

cp php.ini-production /usr/local/lnmp/php/etc/php.ini

修改时区:date.timezone = Asia/Shanghai

在这里插入图片描述在这里插入图片描述
拷贝 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
useradd -u 900 nginx

在这里插入图片描述
启动

/etc/init.d/php-fpm start

在这里插入图片描述

5 安装nginx

解压nginx

tar zxf nginx-1.16.0.tar.gz

在这里插入图片描述
进入 nginx 解压包:

编译小技巧

cd nginx-1.16.1

vim src/core/nginx.h
修改: #define NGINX_VER
"nginx/"(将此行末尾显示 nginx 版本号的配置删除)

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

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
编译安装 nginx:

./configure 
--prefix=/usr/local/lnmp/nginx 
--with-http_ssl_module 
--with-http_stub_status_module 
--user=nginx 
--group=nginx
# 根据提示解决依赖性

此处应该还需要安装 pcre-devel

make && make install

修改 nginx 配置文件,开启 php 模块

vim nginx.conf

user  nginx nginx;

location / {
root html;
index index.php index.html index.htm; (添加 php 页面)
	}

location ~ \.php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
           include        fastcgi.conf;
       }

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
将 nginx 启动脚本链接到/usr/local/sbin/

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
nginx -t 	#检测语法
nginx		#开启 nginx

在这里插入图片描述测试
在 nginx 默认发布目录添加 index.php

vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>

在这里插入图片描述
启动 nginx 并访问:http://172.25.42.1

在这里插入图片描述

发布了136 篇原创文章 · 获赞 1 · 访问量 1643

猜你喜欢

转载自blog.csdn.net/qq_45652989/article/details/104592382
今日推荐