如何搭建LNMP架构

news2024/11/9 0:03:44

目录

一、什么是LNMP

Linux系统

Apache服务 

Nginx服务

MySQL数据库

PHP服务

二、搭建LNMP

安装Nginx服务

第一步 关闭防火墙和安全机制

第二步 安装依赖环境

第三步 创建运行用户

第四步 解压服务包

第五步 编译安装

第六步 编译

第八步 添加 Nginx 系统服务

第九步 赋权并启动服务

安装MySQL服务

第一步 安装MySQL依赖环境

第二步 创建运行用户

第三步 解压相关服务包

第四步 编译安装

第五步 编译

第六步 修改MySQL配置文件

第七步 更改文件属性

第八步 设置路径环境变量

第九步 初始化数据库

第十步 添加MySQL系统服务

第十一步 修改MySQL密码

第十二步 登录一下进行测试

安装PHP服务环境

第一步 安装环境依赖包

第二步 解压相关服务包

第三步 编译安装

第四步 编译

第五步 路径优化

第六步 调整配置文件

第七步 更改配置文件

第八步 调整服务配置文件

第九步 更改配置文件内容

第十步 调整扩展配置文件

第十一步 启动php-fpm

第十二步 配置Nginx支持PHP解析

第十三步 重启服务

第十四步 编辑测试页内容

第十五步 进入浏览器测试访问


一、什么是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文档的脚本语言
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统

LNMP平台就是 Linux、 Ngnix、 My SQL、PHP的组合架构,需要 Linux服务器、MysαL数据库、PHP解析环境
Ngnix特长:高并发,低资源,处理静态网络访问请求非常强
Apache:静态处理和动态处理都可以做,更适合做动态处理
Nginx将动态资源请求交给PHP当中的fpm处理动态请求
PHP主配置文件:php.ini
Nginx将动态资源分配给FPM或Apache

Linux系统

Linux,全称GNU/Linux,是一种类似Unix的操作系统,可以免费使用,自由传播。它是一个基于POSIX的多用户、多任务、多线程、多CPU的操作系统。随着互联网的发展,Linux得到了全世界软件爱好者、组织和公司的支持。除了在服务器方面保持强劲的发展势头,在个人电脑和嵌入式系统方面也取得了长足的进步。用户不仅可以直观地获得操作系统的实现机制,还可以根据自己的需求对Linux进行修改和改进,使其最大限度地适应用户的需求

Apache服务 

是​​使用最广泛的 Web 服务器软件。Apache 是​​由 Apache Software Foundation 开发和维护的,它是一个免费提供的开源软件。它占全球所有网络服务器的 67%。它快速,可靠,安全。它可以通过使用扩展和模块进行高度定制,以满足许多不同环境的需求。大多数 WordPress 托管服务提供商使用 Apache 作为其 Web 服务器软件。但是,WordPress 也可以在其他 Web 服务器软件上运行。

Nginx服务

nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

nginx专为性能优先而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。

MySQL数据库

MySQL是一个关系型数据库管理系统由瑞士MySQL AB公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统 ) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

PHP服务

PHP是一种通用开源脚本语言,主要应用于Web开发,它可以与HTML一起使用或独立使用。PHP有很多的优点,例如易于学习,易于使用,跨平台运行等。

PHP服务是一种能够在服务器端运行PHP脚本的服务。它具有以下几个方面的优点:

 高效性

PHP服务通过在服务器端运行PHP脚本,能够实现高效率和快速的网页响应,提升了网站的访问速度,进而提升了客户的满意度。

 安全性

PHP服务对于保证服务器端的安全性非常重要。它通过限制不必要的权限和保护程序的稳定性来确保系统安全。同时,在PHP脚本执行的过程中,用户数据也可以被加密和保护,从而确保用户隐私信息的安全性。

 节省时间和成本

PHP服务可以快速地释放应用程序的资源,同时也可以减少了服务器需要的硬件资源,从而大大节省时间和成本。

 可扩展性

PHP服务还具有相对应的可扩展性,这意味着它很容易与其他服务进行整合,例如云计算技术,数据库服务等。

 易于管理和维护

PHP服务开发和维护相对容易,这是因为PHP本身就非常简单易用。开发人员只需要熟悉PHP相关技术和知识,就能够快速地开发和维护网站和应用程序。

二、搭建LNMP

安装Nginx服务

第一步 关闭防火墙和安全机制

systemctl stop firewalld    #关闭防火墙
systemctl disable firewalld     #开机自动关闭防火墙
setenforce 0     #关闭安全机制

第二步 安装依赖环境

命令:yum -y install pcre-devel zlib-devel gcc gcc-c++ make

第三步 创建运行用户

命令:useradd -M -s /sbin/nologin nginx

第四步 解压服务包

命令:tar zxvf nginx-1.12.0.tar.gz -C /opt/

第五步 编译安装

命令:./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

第六步 编译

命令:make -j 4 && make install

第七步 优化路径

命令:ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

第八步 添加 Nginx 系统服务

第九步 赋权并启动服务

命令:chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

安装MySQL服务

第一步 安装MySQL依赖环境

命令:yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

第二步 创建运行用户

命令:useradd -M -s /sbin/nologin  mysql

第三步 解压相关服务包

命令:tar xzvf mysql-boost-5.7.20.tar.gz

第四步 编译安装

命令:cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

第五步 编译

命令:make -j 4 && make install

第六步 修改MySQL配置文件

内容:

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

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

第七步 更改文件属性

命令: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   #刷新配置文件

第九步 初始化数据库

命令:mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

第十步 添加MySQL系统服务

命令: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

安装PHP服务环境

第一步 安装环境依赖包

命令:yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

第二步 解压相关服务包

命令:tar xjvf php-7.1.10.tar.bz2

第三步 编译安装

命令:./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

第四步 编译

命令:make -j 4 && make install

第五步 路径优化

命令:ln -s /usr/local/php/bin/* /usr/local/bin/

第六步 调整配置文件

命令:cp /opt/php-7.1.10/php.ini-development /usr/local/php/php.ini

第七步 更改配置文件

第八步 调整服务配置文件

命令:cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf

第九步 更改配置文件内容

第十步 调整扩展配置文件

命令:cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

第十一步 启动php-fpm

命令:/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

第十二步 配置Nginx支持PHP解析

第十三步 重启服务

命令:systemctl restart nginx.service

第十四步 编辑测试页内容

命令:vim /usr/local/nginx/html/index.php

第十五步 进入浏览器测试访问

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

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

相关文章

leetcode63. 不同路径 II(动态规划-java)

不同路径 II leetcode63. 不同路径 II题目描述暴力递归代码演示动态规划代码演示 动态规划空间压缩 动态规划专题 leetcode63. 不同路径 II 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/unique-paths-ii 题目描述 一个…

自然图像中的字符识别:Chars74K 数据集

字符识别是 研究人员从计算机早期开始工作 视觉。随着当今相机的无所不在,应用 的自动字符识别比以往任何时候都更广泛。为 拉丁字母,这在很大程度上被认为是一个已解决的问题 受限情况,例如扫描文档的图像 包含常用字符字体和统一 背景。但是…

7.4_3B+树

特点:块内无序,块间有序(类比于分块查找) 这个性质是为了追求平衡 3)结点的子树个数与关键字个数相等 4)所有叶节点包含全部关键字及指向相应记录的指针,叶节点中将关键字按照大小顺序排列, 并且相邻叶节点…

Camera之android8.0以上HIDL与C++数据类型转换(三十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

rust 集合、错误处理、泛型、Trait、生命周期、包

集合组织特性相同的数据;泛型可以定义任何抽象数据类型;生命周期限制所有权的作用域范围;错误处理使程序更健壮。 集合 一组特性相同的数据集合,除了基本数据类型的元组、数组。rust 标准库提供了一些非常有用的数据结构。 Vec…

Redis从入门到精通【进阶篇】之高可用主从详解

文章目录 0.前言1.详解1.1 主从复制概述1.2 主从复制原理1.2.1.全量复制1.2.2.增量复制1.2.3.详细描述1.3 更深入理解1.4 常见面试题 2. 总结3. Redis从入门到精通系列文章 0.前言 Redis是一个高性能的键值存储系统,广泛应用于Web应用、缓存、消息队列等领域。在实…

C++【STL】之priority_queue学习

优先级队列 优先级队列priority_queue也是STL库中容器适配器的一种,常用于进行数据优先级的处理,说到这儿是不是发现有些熟悉,没错它和我们之前讲解的堆本质上就是一个东西,底层都是数组存储的完全二叉树,它在STL库中…

零基础速成simulink代码生成——DBC文件CAN报文+stateflow 5

零基础速成simulink代码生成——DBC文件CAN报文+stateflow 5 上一篇文章中,已经实现将dbc文件进行代码生成,这边我们要实现一个功能,添加多几个can报文分时发送,结合statflow简单实现这个功能。 添加报文 我们还是选用相同的can报文添加 选中所有的模块,ctrl+c。 ctrl+…

InvPT++:用于视觉场景理解的倒金字塔多任务Transformer

文章目录 InvPT: Inverted Pyramid Multi-Task Transformer for Visual Scene Understanding摘要本文方法整体结构InvPT EncoderTask-Specific Preliminary DecodersStructure of InvPT DecodeUP-Transformer BlockCross-Scale Self-Attention: Fusion Attention and Selective…

团体程序设计天梯赛-练习集L1篇⑦

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

ChatGPT | LangChain的文本切割方法对比

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! ChatGPT面向对话格式的文本理解很好,但如果要把网络上的文章让ChatGPT直接分析则会有格式的问题。文本清洗是个大课题,讲起来需要很多篇幅,优化起来前路漫…

学习C++的意义

文章目录 前言意义软件方法论的发展面向对象的程序设计宽泛的意义 C到C的升级ubuntu安装g编译器总结 前言 C是一种强大而广泛应用的编程语言,具有广泛的用途和应用领域。无论你是计算机科学专业的学生、自学编程的爱好者,还是想要进一步提升编程技能的专…

在linux系统中如何设置定时任务

前言: 在linux日常运维过程中我们常常需要在指定时间段自动停止或启动某个服务我们不可能人为的手动去执行,这时候我们就可以给对应的任务设置一个定时。后面我就可以将周期性的、规则的工作交给定时任务去完成。 **一次性任务:**顾名思义就是…

SAP CAP篇七:为CAP添加Fiori Launchpad入口 (Sandbox环境)

本文目录 本系列之前的文章在现有代码基础上继续增强增强app文件夹文件 package.json文件夹appconfig文件fioriSandboxConfig.json文件 fiori.html更新Srv中的UiIndexContentProviderFactory 再次检查代码运行效果代码库 (Gitcode) 本系列之前的文章 本系列之前的文章&#xf…

javaWeb之cookiesession

1 回顾 1.1 response对象 一次响应封装对象,由服务器创建。使用response对象将服务器需要的数据发送给浏览器。 将数据存放response对象中,tomcat从response对象获得数据,根据数据组织http响应,最后将http响应内容发送给浏览器&…

CTF-Show密码学:ZIP文件密码破解【暴力破解】

萌新 隐写23 题目内容: 文件的主人喜欢用生日做密码,而且还是个90后。 一、已知条件 在这个题目中,我们有以下已知条件: 文件的主人喜欢用生日做密码 - 这个条件告诉我们,密码可能是一个八位的纯数字密码&#xff0c…

windows服务器——部署PKI与证书服务

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 学习导图 一.PKI 概念 1.PKI体系能够实现的功能 二.公钥加密技术 1.公钥加…

股票量化系统QTYX选股框架实战案例集|大盘跳水,上涨趋势票抗跌-230621

前言 “实战案例个股画像”系列是和大家分享我基于QTYX的选股框架,在实战中选股的应用案例,和大家一起见证QTYX选股框架逐步完善的过程,帮助大家更好地理解QTYX选股框架精髓。 关于QTYX的使用攻略可以查看链接:QTYX使用攻略 首先要…

C++ 面向对象(2)——继承

C 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,您不需要重新编写新的数据成员和…

【Python】异常处理 ① ( 异常概念 | 异常处理 | 异常捕获 )

文章目录 一、Python 异常简介1、异常概念2、Python 异常示例 二、Python 异常处理1、异常处理简介2、代码实例 - 出现异常代码3、代码实例 - 出现异常并进行捕获处理 一、Python 异常简介 1、异常概念 Python 异常 是在程序运行过程中发生的错误或问题的表示 ; 出现异常可能会…