LNMP原理及安装

news2024/11/14 11:00:43

LNMP:

  • 目前成熟的企业网站的应用模式之一,指的是一套协同工作的系统和相关软件能够提供静态页面服务,也可以提供动态web服务

LNMP的组成:

  • L  :表示linux系统,操作系统
  • N :表示nginx网站服务,前端,提供前端的静态页面服务。同时具有代理,转发的作用。 转发后端请求。转发到PHP。nginx没有处理动态资源的功能,他有可以支持转发动态请求的模块
  • M :表示mysql 关系型数据库,保存用户的账号和密码
  • P  :  表示PHP 动态页面的编程语言,负责解释动态网页文件,和nginx以及数据库协同工作。         PHP的主要作用就是web开发,前端开发

编译安装:

就是用二进制包,进行安装

和yum安装的区别:

  • yum安装只是安装了基础的服务模块,其他的模块要根使用,用户要于动重新添加。
  • 编译安装可以白由的指定需要的模块

       企业中: nginx mysql 都是编译安装。

LNMP安装:

关闭防火墙和安全机制

systemctl stop firewalld.service 
setenforce 0

1、安装 Nginx 服务

安装依赖环境

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

创建运行用户

useradd -M -s /sbin/nologin nginx

将nginx压缩包解压在opt目录下

tar zxvf nginx-1.22.0.tar.gz -C /opt/

配置安装路径

cd nginx-1.22.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

编译安装  ( -j 4  表示指定cpu核心数4个,提升处理速度 )

make -j 4 && make install

优化路径

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

添加 Nginx 系统服务

vim /lib/systemd/system/nginx.service
[Unit]       #这个部分定义了服务单元的元数据。
Description=nginx         #描述该服务单元的信息,描述为"nginx"。
After=network.target      #定义服务单元所依赖的其他单元,这里表示服务需要在网络加载完成之后启动
[Service]    #这个部分定义了服务的运行配置
Type=forking       #指定服务的类型,这里是forking,表示服务是一个后台进程(通常是fork出子进程)
PIDFile=/usr/local/nginx/logs/nginx.pid      #指定保存主进程ID的文件路径,Nginx将会把主进程ID写入这个文件,以便Systemd可以追踪和管理进程
ExecStart=/usr/local/nginx/sbin/nginx        #指定启动服务的命令。这里是启动Nginx的命令/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID         #指定重新加载配置的命令。当执行此命令时,Systemd将发送HUP信号给主进程,Nginx将重新加载配置文件
ExecStop=/bin/kill -s QUIT $MAINPID          #指定停止服务的命令。当执行此命令时,Systemd将发送QUIT信号给主进程,Nginx将优雅地停止服务
PrivateTmp=true     #将此项设置为true,表示为服务提供独立的临时目录
[Install]       #这个部分定义了服务的安装配置
WantedBy=multi-user.target     #指定服务所属的目标(target),这里是multi-user.target,表示服务在多用户模式下启动。

给该文件赋权并重启服务

chmod 777 /lib/systemd/system/nginx.service

systemctl start nginx.service

网页访问本机地址,网页能正常打开,说明nginx服务没有问题

 

2、安装mysql服务

安装依赖环境

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

创建运行用户

useradd -M -s /sbin/nologin  mysql

将mysql压缩包解压在opt目录下

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz

配置安装路径

cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \       #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \      #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \     #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \       #指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \    #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \     
-DWITH_INNOBASE_STORAGE_ENGINE=1 \    #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \     #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \    #安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \    #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \    #指定数据库文件的存储路径
-DWITH_BOOST=boost \    #指定boost的路径,
-DWITH_SYSTEMD=1     #生成便于systemctl管理的文件

编译安装前先清理内存

free -h   #查看内存
echo 1 > /proc/sys/vm/drop_caches

编译安装

make -j 4 && make install

修改mysql 配置文件

vim /etc/my.cnf
[client]                    
port = 3306
socket=/usr/local/mysql/mysql.sock
#在[client]节中
#port: 客户端连接MySQL服务器使用的端口号,默认为3306
#socket: 客户端连接MySQL服务器使用的Unix socket文件路径,默认为/tmp/mysql.sock。在该配置文件中指定的路径是/usr/local/mysql/mysql.sock

[mysqld]
user = mysql    #MySQL服务器运行时的用户名,一般设置为mysql
basedir=/usr/local/mysql   #Mysql安装目录的路径
datadir=/usr/local/mysql/data    #存放Mysql数据文件的路径
port = 3306    #MySQL服务器监听的端口号,默认为3306
character-set-server=utf8   #MySQL服务器使用的默认字符集,这里设置为UTF-8编码(utf8)
pid-file = /usr/local/mysql/mysqld.pid   #保存MySQL服务器进程ID的文件路径,默认为/var/run/mysqld/mysqld.pid。在该配置文件中指定的路径是/usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock   #MySQL服务器监听的Unix socket文件路径,默认为/tmp/mysql.sock。在该配置文件中指定的路径是/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0   #MySQL服务器绑定的IP地址,默认为127.0.0.1,这里设置为0.0.0.0表示允许任何IP地址访问MySQL服务器
skip-name-resolve   #禁用DNS反向解析,可以提高性能,尤其是在有大量连接时
max_connections=2048   #MySQL服务器支持的最大并发连接数,默认为151,这里设置为2048
default-storage-engine=INNODB   #设置默认的存储引擎为InnoDB
max_allowed_packet=16M   #设置MySQL服务器接收的最大数据包大小,默认为4MB,这里设置为16MB
server-id = 1   #设置MySQL服务器的唯一ID,在主从复制设置中使用

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

更改mysql安装目录和配置文件的所有者和所在组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

设置路径环境变量并立即生效

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile

source /etc/profile

初始化数据库

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld

修改mysql 的登录密码

mysqladmin -u root -p password "123456"

授权远程登录

mysql -u root -p

grant all privileges on *.* to 'root'@'%' identified by '123456';
#授予root用户可以在所有终端远程登录,使用的密码是123456,并对所有数据库和所有表有操作权限

刷新权限

flush privileges;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目运行时出现:“listen EADDRINUSE: address already in use :::3002“

listen EADDRINUSE: address already in use :::3002 解决:查找对应 pid: netstat -ano PS C:\Users\admin\Desktop\chatgpt-web\service> netstat -ano 控制台输入:taskkill -f /pid 25420(抓图是别的进程) 结…

08. 容器间通信

目录 1、前言 2、容器间通信 2.1、通过IP地址进行通信 2.2、通过DNS Server进行通信 2.3、通过Joined方式通信 3、容器跨节点通信 3.1、通过容器在宿主机上的端口映射实现 3.2、通过Docker Overlay网络实现 4、小结 1、前言 上一篇《07.Docker网络通信模式》我们初步认…

LeetCode--HOT100题(17)

目录 题目描述:41. 缺失的第一个正数(困难)题目接口解题思路代码 PS: 题目描述:41. 缺失的第一个正数(困难) 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时…

harbor搭建

回到目录 Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务 通俗的讲,harbor是一个私人镜像存储服务器 1 下载安装 进入官网,下载一个离线安装包,harbor官网下载 这…

命令模式 Command Pattern 《游戏设计模式》学习笔记

对于一般的按键输入,我们通常这么做,直接if按了什么键,就执行相应的操作 在这里我们是将用户的输入和程序行为硬编码在一起,这是我们很自然就想到的最快的做法。 但是如果这是一个大型游戏,往往我们需要实现一个按键…

tinkerCAD案例:33. 在 Tinkercad 中使用标尺工具

在 Tinkercad 中使用标尺工具 Using the Ruler Tool in Tinkercad 在 Tinkercad 中使用标尺工具 Introduction: Using the Ruler Tool in Tinkercad 简介:在 Tinkercad 中使用标尺工具 For those that may not know Tinkercad is a web based 3D modeling tool.…

vue 浏览器右侧可拖拽小组件

目录 0. 使用场景 1. 动图示例 2. 实现方式 2.1 创建drag.js 2.2 使用v-drag 3. 结尾 0. 使用场景 很多网页在浏览器右侧有"导航"或者“智能助手”的悬浮小气泡框,比如我们的csdn☞ 作为页面友好型的引导标注,某些场景下这些小气泡可以…

MacBook触控板窗口管理 Swish for Mac

Swish for Mac是一款用于通过手势来控制mac应用窗口的软件,你可以通过这款软件在触控板上进行手势控制,你可以在使用前预设好不同手势的功能,然后就能直接通过这些手势让窗口按照你想要的方式进行变动了 Swish 支持 Haptick Feedback 震动反…

途乐证券|互联金融概念爆发,安硕信息“20cm”涨停,高伟达等大涨

互联金融概念4日盘中强势拉升,截至发稿,安硕信息“20cm”涨停,高伟达、卓创资讯、慧博云通涨超12%,恒银科技、极点软件亦涨停,指南针涨超9%,金证股份涨逾7%。 高伟达昨日在投资者互动平台表明,公…

Kubernetes客户端认证—— 基于ServiceAccount的JWTToken认证

1、概述 在 Kubernetes 官方手册中给出了 “用户” 的概念,Kubernetes 集群中存在的用户包括 “普通用户” 与 “ServiceAccount”, 但是 Kubernetes 没有普通用户的管理方式,通常只是将使用集群根证书签署的有效证书的用户都被视为合法用户。…

实现组件大小随窗口大小变化

暂时只学会用代码的方式,如果后续了解到在可视化界面的属性栏中可以设置会进而更新分享 组件界面和一些属性 一些布局属性 详细代码实现 详细代码 //从这里开始复制下面的代码!!!//第一步,定义控件自适应窗口类A…

恒盛策略:成交10天增10倍,“牛市旗手”太火了!TMT赛道股也重新活跃

A股商场周五上午高开,盘中大幅走强,但其后一度收窄涨幅,挨近上午收盘又从头有所回升。 作为“牛市旗手”,券商板块进一步上涨,成交额也进一步放量,上午半个交易日成交额现已打破900亿元,照此趋势…

由红黑树到map/set

文章目录 一.map/set 的封装思路1.封装思路2.红黑树节点调整3.map 和 set 的定义4.仿函数 KeyOfValue5.map/set 的插入 二.map/set 迭代器实现1.迭代器的定义2.解引用运算符重载3.成员访问运算符重载4.(不)等于运算符重载5.begin() 与 end()6. 运算符重载7.-- 运算符重载8.[ ]下…

公文,需要明确分工和流程,以确保公文的准时完成和质量保障

对于需要多人协作的公文,需要明确分工和流程,以确保公文的准时完成和质量保障。 具体来说,可以采取以下几个方面的工作: 1.明确分工:在多人协作的公文中,需要明确各自的职责和任务,合理分配工作…

Codeforces Round 881 (Div. 3)F1题解

文章目录 [Omsk Metro (simple version)](https://codeforces.com/contest/1843/problem/F1)问题分析1.分析如何知道根节点到某个结点的区间内是否存在一个子段和为k2.方法1使用树形DP来动态维护每个节点到根节点的最大子段和和最小子段和代码 Omsk Metro (simple version) 问题…

专业商城财务一体化-线上商城+进销存管理软件,批发零售全行业免费更新

订货流程繁琐?订单处理效率低?小程序商城与进销存系统不打通?数据需要手动输入同步?财务与的结算对账需要大量手工处理?零售批发从业者,如何你也有以上烦恼,可以看看进销存小程序订货商城&#…

软件设计师(六)结构化开发方法

结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。 分类说明结构化分析(SA)根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而…

Java错误小全

文章目录 NullPointer异常: 错误描述:当试图访问一个空引用对象的属性或调用空引用对象的方法时,会抛出NullPointer异常。 复现示例: String str null; System.out.println(str.length());解决方案:在使用对象之前&am…

JVM之两种垃圾判断方式

文章目录 一、所谓的垃圾二、引用计数器法三、可达性分析法GC Roots工作原理三色标记标记算法并发标记 一、所谓的垃圾 垃圾:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾 在堆里存放着几乎所有的 Java 对象实例,在…

linux环境下pip下载包的基础使用

内网环境如何使用pip安装包 1、能连接到外网的电脑先下载好对应的whl文件 使用命令: pip3 download pymysql -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com下载好的文件: 将whl文件上传到内网机器中进行安装 pip3 in…