传统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



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
运维 Cloud Native 安全
云原生技术:重塑现代IT架构的引擎
在当今数字化时代,企业正面临着前所未有的挑战与机遇。随着云计算技术的不断发展,云原生技术作为其核心驱动力之一,正在彻底改变企业的IT架构和运营模式。本文将深入探讨云原生技术的内涵、特点及其对企业数字化转型的影响,揭示其在现代IT架构中的核心地位和作用。同时,我们还将分析云原生技术面临的安全挑战,并展望未来的发展趋势,为企业在云原生领域的实践提供有益的参考。
|
2月前
|
人工智能 运维 虚拟化
完善多云平台软件体系,VMware再探索下一代企业IT架构
完善多云平台软件体系,VMware再探索下一代企业IT架构
|
13天前
|
Cloud Native Devops 持续交付
云原生技术:引领未来IT架构的变革
本文深入探讨了云原生技术的崛起,及其如何通过容器化、微服务架构和DevOps实践等核心原则,推动现代IT基础设施向更加敏捷、高效和可扩展的方向演进。通过分析云原生技术的发展趋势和挑战,揭示了其对业务模式、开发流程和文化的深远影响,为读者呈现了一个全面而深刻的云原生世界视角。
|
14天前
|
Kubernetes Cloud Native 持续交付
深入理解云原生技术及其在现代IT架构中的应用
【9月更文挑战第18天】云原生技术,作为推动企业数字化转型的引擎,正以它独特的魅力重塑着信息技术的未来。本文将带你一探究竟,从云原生的基础概念出发,逐步深入到其核心组件、设计理念以及如何在实际应用中发挥巨大作用。你将了解到容器化、微服务架构、持续集成与持续部署(CI/CD)等关键实践,并见证它们如何帮助企业构建更加灵活、高效和可靠的应用。
|
15天前
|
运维 Cloud Native Devops
云原生技术:重塑现代IT架构的新引擎
在当今数字化转型的浪潮中,云原生技术以其敏捷、高效和可扩展的特性,正引领着一场IT架构的革命。本文旨在深入探讨云原生的概念、核心组件及其在现代企业中的应用价值,揭示其如何助力企业实现更快的创新速度、更高的资源利用率以及更优的用户体验。不同于传统的云计算模式,云原生从一开始就为云环境量身打造,通过容器化、微服务、DevOps等关键技术,解锁了软件开发和运维的新范式。
|
25天前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的革新角色
随着数字化转型的浪潮席卷全球,企业对信息技术的需求日益增长。本文将探讨云原生技术如何推动现代IT架构的创新和优化,包括容器化、微服务架构、持续集成与持续部署(CI/CD)等核心概念。通过实际案例分析,我们将了解这些技术是如何帮助企业提升灵活性、加速产品上市时间并降低运营成本的。文章旨在为读者提供云原生技术的全面视角,揭示其在现代IT战略中不可或缺的地位。
|
2月前
|
Kubernetes Cloud Native 开发者
云原生技术在现代IT架构中的应用与挑战
【8月更文挑战第27天】 随着云计算的飞速发展,云原生技术已经成为推动企业数字化转型的重要力量。本文将深入探讨云原生技术的核心概念、优势以及在实际应用中遇到的挑战,并通过具体代码示例展示如何利用云原生技术优化IT架构。
|
2月前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:Ansible在现代IT架构中的应用与实践
【8月更文挑战第30天】随着信息技术的飞速发展,企业对运维效率和可靠性的要求日益增高。传统的手动运维方式已难以应对复杂多变的IT环境,自动化运维因此成为行业新宠。本文将深入探讨Ansible这一流行的自动化工具,如何通过其简洁的配置管理和强大的多节点部署能力,助力现代IT架构实现高效、可靠的运维管理。我们将从Ansible的核心概念入手,逐步解析其在配置管理、任务执行、应用部署等方面的实战应用,并结合代码示例,展示如何利用Ansible简化日常运维工作,提升运维质量和效率。无论你是运维新手还是资深专家,这篇文章都将为你提供宝贵的洞见和实操技巧。
|
2月前
|
运维 Kubernetes 监控
云原生时代的运维革新:Kubernetes 在现代 IT 架构中的角色
随着云计算的不断演进,传统的运维模式已逐渐不能满足快速迭代和弹性伸缩的需求。本文将深入探讨 Kubernetes 作为容器编排工具如何引领运维领域的变革,并展示其在现代 IT 架构中的应用价值。通过实例分析,我们将了解 Kubernetes 如何优化资源管理、自动化部署和提高系统可靠性,同时指出实践中可能遇到的挑战及应对策略。
|
2月前
|
弹性计算 运维 Kubernetes
云原生时代的运维革新:Kubernetes在现代IT架构中的角色
随着云计算的日益普及,传统运维模式逐渐不能满足现代企业的需求。本文将深入探讨Kubernetes如何在云原生时代重塑运维工作,包括自动化部署、弹性伸缩、服务发现等关键特性,以及它如何帮助企业实现敏捷性和效率的双重提升。
59 0
下一篇
无影云桌面