一、企业级架构之LNMP

一、LNMP 概述

1、LNMP之间的关系:

LNMP = Linux + Nginx + MySQL + PHP

2、配置LNMP服务器:

(1) 克隆一台centos7虚拟机,修改 IP 地址 和 UUID 编号。

IP 为 10.1.1.10,UUID 修改后三位。

(2) 设置主机名称,绑定IP地址与主机名称到/etc/hosts文件。

hostnamectl set-hostname lnmp.itcast.cn
vim /etc/hosts
10.1.1.10 lnmp lnmp.itcast.cn

(3) 关闭防火墙和selinux。

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

(4) 关闭NetworkManager服务。

systemctl stop NetworkManager
systemctl disable NetworkManager

(5) 配置 yum 源。

配置阿里镜像源。

(6) 安装ntpdate,进行时间同步。

yum install ntpdate -y
ntpdate cn.ntp.org.cn

二、LNMP软件架构之MySQL

1、MySQL安装:

(1) 安装方式:

企业级数据库部署中,常用的MySQL数据库一共有两种安装方式:GLIBC 安装与源码安装。

① GLIBC 安装:使用操作系统的包管理器(如APT、YUM等)来安装MySQL,会自动处理依赖关系。

源码安装:通过从MySQL官方网站下载MySQL源代码,并手动编译安装,这种方式需要更多的手动配置和管理。

(2) 安装步骤:

编辑脚本一键安装:

#!/bin/bashtar -zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql#创建一个名为mysql的系统用户,该用户只用于运行 MySQL 服务,不允许登录系统
useradd -r -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql
cd /usr/local/mysql
yum remove mariadb-libs -y#运行MySQL提供的mysql_install_db脚本来初始化MySQL数据库,指定初始化过程中使用mysql用户
scripts/mysql_install_db --user=mysql#将MySQL提供的启动脚本复制到/etc/init.d/mysql,以便使用系统命令管理MySQL服务
cp support-files/mysql.server /etc/init.d/mysql
service mysql start# 追加/usr/local/mysql/bin目录到环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile

设置完成后,使用source命令执行mysql.sh脚本:

source mysql.sh

(3) mysql 默认选项:

默认安装路径:/usr/local/mysql

默认数据目录:/usr/local/mysql/data

默认端口:3306

默认socket文件存放路径:/tmp/mysql.sock (这个套接字文件用于本地连接到 MySQL 服务器,允许客户端应用程序如 php 与 MySQL 服务器进行通信)

2、MySQL后续配置:

(1) 配置MySQL密码以及安全策略:

mysql_secure_installation

(2) MySQL登录验证:

mysql -uroot -p

远程登录:

mysql -h 服务器IP地址 -P 端口号 -uroot -p

三、LNMP架构之Nginx

1、Nginx应用场景:

Nginx是一款轻量级的 Web 服务器/反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器,其特点是占有内存少,并发能力强。

(1) 应用场景:

①web服务器软件。

充当邮件服务器,提供 IMAP/POP3/SMTP 服务。

充当反向代理服务器,实现负载均衡功能。

(2) 特点:

高可靠:一个进程下有多个线程,某个线程故障不会影响其他线程运行;

热部署:平滑升级,在不停止业务的情况下实现软件升级以及重载;

高并发:可以同时响应更多的请求事件;

响应快:尤其在处理静态文件上,响应速度很快;

低消耗:1w个请求消耗内存2-3MB;

分布式支持:反向代理七层负载均衡,把用户请求进行分流。

2、Nginx安装:

(1) 安装方式:

①yum安装配置,需使用Nginx官方源或者EPEL源 (版本过低,无法进行定制,不推荐)

源码编译。

(2) Nginx编译安装:

去官网下载Nginx安装包:

社区版 => http://www.nginx.org

企业版 => http://www.nginx.com

使用Shell脚本安装Nginx软件:
前提准备:安装依赖库:

yum -y install pcre-devel zlib-devel openssl-devel
yum -y install gcc gcc-c++ autoconf automake make

编写脚本:

#!/bin/bashtar -zxf nginx-1.12.2.tar.gz
cd nginx-1.12.2
useradd -r -s /sbin/nologin www#--prefix:安装路径
#--with:安装拓展模块 -支持https -查看nginx基本状态信息 -代理服务器获取客户端真实IP./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module#编译安装
make && make install

3、Nginx目录:

(1) 目录介绍:

conf:配置文件目录,Nginx主配置文件nginx.conf。

html:网站默认目录,源代码存放于此目录下 。

logs:日志目录,access.log访问日志与error.log错误日志。

sbin:可执行文件,Nginx的主程序sbin/nginx。

(2) sbin/nginx -h

显示nginx的帮助信息:

(3) 启动nginx:

sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ss -naltp | grep 80

4、扩展nginx.service脚本:

(1) 停止原生的nginx:

cd /usr/local/nginx
sbin/nginx -s stop

(2) 创建nginx.service脚本,编写脚本:

vim /usr/lib/systemd/system/nginx.service

[Unit]Description=Nginx Web Server
After=network.target[Service]
Type=forkingExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]
WantedBy=multi-user.target

这个脚本是一个 systemd 服务单元文件,systemd 是一个 Linux 系统的初始化系统和服务管理器,负责在系统启动时启动各种服务。

当编写并启用了这个脚本后,就可以使用系统命令启动、重载和停止Nginx服务。

(3) 使用系统命令管理nginx:

四、LNMP架构之php

1、php介绍:

PHP(Hypertext Preprocessor,超文本预处理器)是一种通用开源脚本语言,主要应用于Web领域。

Nginx与PHP之间的关系:Nginx与PHP相对而言都是独立的,只不过在解析动态脚本时,Nginx会将源代码发送给PHP-FPM程序进行解析。

2、安装php-fpm:

(1) 安装依赖库:

yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel

(2) 编写配置文件:

tar -zxf php-7.2.12.tar.gzcd php-7.2.12#--prefix:安装目录
#--with-config-file-path:配置文件目录
#--enable-fpm:开启php-fpm功能./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-libzip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-ztsmake && make install

3、php-fpm配置文件:

/usr/local/php/etc/ 专门用于存放 php-fpm 启动或运行过程中需要的配置文件。

使用php-fpm进行管理php服务,需要三个配置文件:

(1) php.ini

默认php配置文件,可以在这个文件中开启或关闭特定的 PHP 扩展。

php.ini 默认存放在 /root/php-7.2.12 下,php.ini-development 和 php.ini-production 分别用于开发环境和生产环境。

php.ini-development 设置为显示所有错误,包括警告和通知。

php.ini-production 设置为不显示详细的错误信息给最终用户。

把php.ini移动到/usr/local/php/etc目录:

cp /root/php-7.2.12/php.ini-development /usr/local/php/etc/php.ini

(2) php-fpm.conf

PHP-FPM 的主配置文件,它包含了 PHP-FPM 的全局设置,默认存放在 /usr/local/php/etc/ 下。

将该默认配置文件复制一份存放到此目录下:

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

(3) www.conf文件:

php-fpm 的子配置文件,优先级最高,默认存放在 /usr/local/php/etc/php-fpm.d 下。

将该默认配置文件复制一份存放到此目录下:

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

PHP-FPM 配置文件启动顺序:php.ini → php-fpm.conf → www.conf文件

4、添加php-fpm启动项:

(1) 把php-fpm添加到/etc/init.d目录下:
/root/php-7.2.12/sapi/fpm/init.d.php-fpm 这个路径指向了一个脚本模版,包含了用于启动、停止、重启 PHP-FPM 的服务。

将该脚本添加到/etc/init.d/下,可以使用系统命令管理php-fpm进程:

cp /root/php-7.2.12/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
service php-fpm start

查看端口占用情况(php占用9000端口):

(2) 把php的bin目录添加到环境变量:
将 PHP 的 bin 目录添加到环境变量中,确保在系统的任何位置都可以直接运行 PHP 相关的命令。

echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
source /etc/profile

5.Nginx关联php:

(1) 为什么需要关联:

Nginx与PHP独立安装,Nginx占用80端口,PHP-FPM占用9000端口。Nginx处理静态页面 (.html),php处理动态页面(.php)。

(2) 创建php脚本:

cd /usr/local/nginx/html/

vim demo.php

<?phpecho 'hello php!';
?>

直接在浏览器中,访问IP地址/demo.php,会自动弹出下载,说明nginx不具备解析php代码的功能。

(3) 修改nginx配置文件:

更改配置文件,使nginx将.php文件交给php-fpm解析。

nginx.conf文件,主要由三部分组成:

http {

        server { }

        server {

                location { }

        }

}

一个nginx.conf文件只有一个http区块,代表一个http请求;server定义了一个虚拟服务器的配置;location 用于定义如何响应特定的请求 URI。

worker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {# 监听端口listen 80;# 域名,localhost代表本机server_name localhost;# 任意请求location / {root html;# 响应定义的默认首页index index.html index.htm;}# 添加PHP文件支持location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;# php执行脚本的完整路径fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}# 当访问遇到错误时,返回50x.html页面给用户error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/297479.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GraalVM运行模式和企业级应用

文章目录 GraalVM运行模式JIT模式AOT模式 GraalVM的问题和解决方案GraalVM企业级应用传统架构的问题Serverless架构函数计算Serverless应用场景Serverless应用 GraalVM内存参数 GraalVM运行模式 JIT模式 JIT&#xff08; Just-In-Time &#xff09;模式 &#xff0c;即时编译模…

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型…

【Linux】SSH协议应用

SSH协议 SSH简介实现OpenSSH ssh中的四个文件~/.ssh文件路径实验解析 SSH 简介 SSH&#xff08;secure shell&#xff09;只是一种协议&#xff0c;存在多种实现&#xff0c;既有商业实现&#xff0c;也有开源实现。本文针对的实现是OpenSSH&#xff0c;它是自由软件&#xf…

2024年腾讯云4核8G服务器性能可以满足哪些使用场景?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

运筹学经典问题(八):CVRP和VRP-TW

文章目录 问题描述问题建模决策变量数学建模基于容量的消除子环的约束 &#xff08;load-based SECs&#xff09; CVRP完整的数学模型加上时间窗限制的CVRP 问题描述 给定一个图&#xff0c;图上的点代表客户&#xff0c;边代表客户之间的路线&#xff0c;边的权重代表客户之间…

学透Spring Boot — 004. Spring Boot Starter机制和自动配置机制

如果你项目中一直用的是 Spring Boot&#xff0c;那么恭喜你没有经历过用 Spring 手动集成其它框架的痛苦。 都说 Spring Boot 大大简化了 Spring 框架开发 Web 应用的难度&#xff0c;这里我们通过配置 Hibernate 的两种方式来深刻体会这一点&#xff1a; 使用 Spring 框架集…

MySQL 导入库/建表时/出现乱码

问题描述&#xff1a; 新建不久的项目在使用Navicat for MySQL进行查看数据&#xff0c;发现表中注释的部分乱码&#xff0c;但是项目中获取的数据使用不会。 猜测因为是数据库编码和项目中使用的不一样&#xff0c;又因为项目的连接语句定义了需要编码&#xff0c;故项目运行…

基于向量数据库搭建自己的搜索引擎

前言【基于chatbot】 厌倦了商业搜索引擎搜索引擎没完没了的广告&#xff0c;很多时候&#xff0c;只是需要精准高效地检索信息&#xff0c;而不是和商业广告“斗智斗勇”。以前主要是借助爬虫工具&#xff0c;而随着技术的进步&#xff0c;现在有了更多更方便的解决方案&…

AcWing-游戏

1388. 游戏 - AcWing题库 所需知识&#xff1a;博弈论&#xff0c;区间dp 由于双方都采取最优的策略来取数字&#xff0c;所以结果为确定的&#xff0c;有可能会有多个不同的过程&#xff0c;但是我们只需要关注最终结果就行了。 方法一&#xff1a; 定义dp[i][j] 表示区间…

Loss【1】:Focal Loss

系列文章目录 文章目录 系列文章目录前言1. 什么是 Focal Loss2. 逐过程解析 Focal Loss3. Focal Loss 的 PyTorch 实现总结 前言 类别不平衡是一个在目标检测领域被广泛讨论的问题&#xff0c;因为目标数量的多少在数据集中能很直观的体现。同时&#xff0c;在分割中这也是一…

理解pytorch的广播语义

目录 什么是广播运算 广播的条件 示例 示例1 示例2 示例3 补1 示例4 原位运算 示例5 参与广播运算的两个tensor&#xff0c;必须是从右向左对齐 总结规律 两个tensor可以做广播运算的条件&#xff1a; 两个可以互相广播的tensor运算的步骤&#xff1a; 例子&#x…

[C#]OpenCvSharp改变图像的对比度和亮度

目的 访问像素值mat.At<T>(y,x) 用0初始化矩阵Mat.Zeros 饱和操作SaturateCast.ToByte 亮度和对比度调整 g(x)αf(x)β 用α(>0)和β一般称作增益(gain)和偏置(bias)&#xff0c;分别控制对比度和亮度 把f(x)看成源图像像素&#xff0c;把g(x)看成输出图像像素…

蓝桥杯—DS1302

目录 1.管脚 2.时序&官方提供的读写函数 3.如何使用读写函数 4.如何在数码管中显示在DS1302中读取出的数据&#xff1f; 1.管脚 2.时序&官方提供的读写函数 /* # DS1302代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行…

如何锁定鼠标光标在水平、垂直或45度对角线模式下移动 - 鼠标水平垂直移动锁定器简易教程

在我们进行精细工作例如如创建图标和图形设计时&#xff0c;通常需要我们对鼠标移动进行精确控制。一旦向左或向右轻微移动&#xff0c;都可能导致设计出错。若出现不必要的错误&#xff0c;我们极有可能不得不重新开始&#xff0c;这会令人感到非常沮丧。这种情况下&#xff0…

RabbitMQ3.x之九_Docker中安装RabbitMQ

RabbitMQ3.x之_Docker中安装RabbitMQ 文章目录 RabbitMQ3.x之_Docker中安装RabbitMQ1. 官网2. 安装1 .拉取镜像2. 运行容器 3. 访问 1. 官网 rabbitmq - Official Image | Docker Hub 2. 安装 1 .拉取镜像 docker pull rabbitmq:3.13.0-management2. 运行容器 # latest Rabb…

单元测试 mockito(二)

1.返回指定值 2.void返回值指定插桩 3.插桩的两种方式 when(obj.someMethod()).thenXxx():其中obj可以是mock对象 doXxx().wien(obj).someMethod():其中obj可以是mock/spy对象 spy对象在没有插桩时是调用真实方法的,写在when中会导致先执行一次原方法,达不到mock的目的&#x…

模块化编程:AMD 和 CMD 的魅力

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

2024 年最新使用 Wechaty 开源框架搭建部署微信机器人(微信群智能客服案例)

读取联系人信息 获取当前机器人账号全部联系人信息 bot.on(ready, async () > {console.log("机器人准备完毕&#xff01;&#xff01;&#xff01;")let contactList await bot.Contact.findAll()for (let index 0; index < contactList.length; index) {…

RabbitMQ Tutorial

参考API : Overview (RabbitMQ Java Client 5.20.0 API) 参考文档: RabbitMQ: One broker to queue them all | RabbitMQ 目录 结构 Hello World consumer producer 创建连接API解析 创建连接工厂 生产者生产消息 消费者消费消息 队列声明 工作队列Work Queues 公平…

gpt国内怎么用?最新版本来了

claude 3 opus面世后&#xff0c;这几天已经有许多应用&#xff0c;而其精确以及从不偷懒&#xff08;截止到2024年3月11日还没有偷懒&#xff09;的个性&#xff0c;也使得我们可以用它来首次完成各种需要多轮对话的尝试。 今天我们想要进行的一项尝试就是—— 如何从一个不知…