传统IT架构---LNMP

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: LNMP 是一套技术的组合, L=Linux、 N=Nginx、 M=MySQL、 P=PHP

前两篇文章都是针对命令的讲解,肯定有疑问,那么多命令,该怎么应用?

比如,我想查看服务器cpu是什么牌子的,内存,磁盘多大等等

lscpu  free  lsblk  . . .

今天就讲一下 LNMP 架构,像一些视频网站,论坛,知名的博客等,都是基于此架构。

什么是LNMP?

LNMP 是一套技术的组合, L=Linux、 N=Nginx、 M=MySQL、 P=PHP

LNMP架构如何工作?

首先 Nginx 服务是不能处理动态请求,那么当用户发起动态请求时, Nginx 又是如何进行处理的。

当用户发起 http 请求,请求会被 Nginx 处理,如果是静态资源请求 Nginx 则直接返回,如果是动态请求 Nginx 则通过 fastcgi 协议转交给后端的 PHP 程序处理,具体如下图所示

比喻:

Nginx: 拉货的货车

FastCGI: 高速公路

php-fpm: 每个路道的收费站

wrapper: 搬货的师傅

systemctl start php-fpm: 管理整个高速工作所有的收费站

1.用户通过 http 协议发起请求,请求会先抵达 LNMP 架构中的 Nginx

2.Nginx 会根据用户的请求进行判断,这个判断是有 Location 进行完成

3.判断用户请求的是静态页面, Nginx 直接进行处理

4.判断用户请求的是动态页面, Nginx 会将该请求交给 fastcgi 协议下发

5.fastgi 会将请求交给 php-fpm 管理进程, php-fpm 管理进程接收到后会调用具体的工作进程 warrap

6.warrap 进程会调用 php 程序进行解析,如果只是解析代码 php 直接返回

7.如果有查询数据库操作,则由 php 连接数据库(用户 密码 IP)发起查询的操作

8.最终数据由 mysql->php->php-fpm->fastcgi->nginx->http->user

LNMP安装部署

创建统一用户

groupadd -g666 wwwuseradd -u666 -g666 -s /sbin/nologin -M www

配置Nginx源

[root@web01 ~ ]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

1)安装nginx

yum install nginx -y

2)配置虚拟用户

sed -i '/^user/c user www;' /etc/nginx/nginx.conf

3)启动并开机自启


systemctl start nginx systemctl enable nginx

安装php7.1

使用第三方源安装php

[root@web01 nginx]# yum remove php-mysql-5.4 php php-fpm php-common
[root@web01 nginx]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@web01 nginx]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@web01 nginx]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

1)配置启动用户位www

sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

2)启动php

systemctl start php-fpm

3) 开机自启

systemctl enable php-fpm

Nginx连接php

  1. 写入配置文件(写完重启服务)
[root@web01 ~ ]# vim /etc/nginx/conf.d/php.conf
server {
listen 80;                     # 监听端口 
server_name wp.oldboy.com;     # 域名hosts解析
location / {
root /code;                    # 存放代码位置
index index.php;         # 默认访问index.php
}
location ~ \.php$ {            # 匹配php结尾的
root /code;
fastcgi_pass 127.0.0.1:9000;   # php监听端口
# fastcgi语法 接口  nginx连接php
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 引入变量
include fastcgi_params;
}
}
  1. 创建代码目录
mkdir /code
  1. 创建php测试文件
[root@web01 /code ]# cat info.php
<?php
phpinfo();
?>
  1. 把域名写进windows hosts
    10.0.1.7 wp.oldboy.com

测试Nginx连接php是否成功

安装mariadb

yum install mariadb mariadb-server -y
  1. 启动并自启
systemctl start mariadb
systemctl enable mariadb
  1. 登录
[root@web01 ~ ]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 81
Server version: 5.5.64-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]>set password = password("oldboy123"); # 设置密码

测试Nginx连接数据库

  1. 在code下创建mysql.php
[root@web01 ~ ]# cat /code/mysql.php 
<?php
    $servername = "localhost";
    $username = "root";
    $password = "oldboy123";
    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);
    // 检测连接
    if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
    }
    echo "小哥哥,php可以连接MySQL...";
  ?>

2. 访问网页

获取wordpress源码包

  1. 配置博客
[root@web01 ~ ]# cat /etc/nginx/conf.d/wp.conf 
server {
listen 80;
server_name wp.oldboy.com;
location / {
index index.php;
root /code/wordpress;
}
location ~ \.php$ {
root /code/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
  1. 重载nginx
    systemctl reload nginx
  2. 下载wordpress
# 下载代码包
[root@web01 /code ]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
# 解压
[root@web01 /code ]# tar xf wordpress.zh_CN.tar.gz   
[root@web01 /code ]# ls
info.php  mysql.php  wordpress wordpress.zh_CN.tar.gz
# 授权 否则写博文提示权限不足
[root@web01 /code ]# chown -R www.www /code/wordpress
  1. 创建wordpress数据库
[root@web01 ~]# mysql -uroot -poldboy123 -e "create database wordpress;"
  1. 浏览器访问wordpress并部署

640.png



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
2月前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
2月前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的转型力量####
本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的关键作用与实践路径。通过具体案例分析,展示了云原生如何赋能企业实现更高效的资源利用、更快的迭代速度以及更强的系统稳定性,为读者提供了一套可借鉴的实施框架与策略。 ####
31 0
|
2月前
|
Cloud Native 持续交付 云计算
深入理解云原生技术及其在现代IT架构中的应用
在数字化浪潮的推动下,云原生技术已成为企业转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者探索云原生的核心概念、优势以及如何在企业中实现云原生架构。我们将一起揭开云原生的神秘面纱,了解它如何助力企业快速适应市场变化,提升业务的灵活性和创新能力。
|
2月前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
50 5
|
3月前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
2月前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
2月前
|
运维 Cloud Native Devops
云原生架构:重塑企业IT的未来####
随着数字化转型浪潮的汹涌,云原生架构凭借其高度灵活、可扩展和高效的特性,正逐步成为企业IT系统的核心。本文将深入探讨云原生架构的核心要素、技术优势以及如何引领企业实现业务创新与敏捷交付。 ####
|
2月前
|
Cloud Native 持续交付 云计算
云原生架构:重塑企业IT的未来####
本文深入探讨了云原生架构的兴起背景、核心理念、技术优势以及在现代企业IT系统中的应用实践。云原生架构以其高度的灵活性、可扩展性和敏捷性,正逐步成为企业数字化转型的关键驱动力。通过容器化、微服务、持续集成/持续部署(CI/CD)等关键技术,云原生架构能够加速软件开发周期,提升系统稳定性和运维效率,为企业带来前所未有的商业价值。 ####
52 0
|
2月前
|
机器学习/深度学习 运维 监控
智能运维在现代IT架构中的转型之路####
【10月更文挑战第29天】 本文旨在探讨智能运维(AIOps)如何成为现代IT架构不可或缺的一部分,通过分析其核心价值、关键技术及实践案例,揭示AIOps在提升系统稳定性、优化资源配置及加速故障响应中的关键作用。不同于传统运维模式的被动响应,智能运维强调预测性维护与自动化处理,为企业数字化转型提供强有力的技术支撑。 ####
87 0