一、企业级架构之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/bash

tar -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/bash

tar -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=forking

ExecStart=/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 quit

PrivateTmp=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.gz

cd 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-zts

make && 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

<?php
    echo '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;

        }

    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理-10-控制单元的设计

10. 控制单元的设计 文章目录 10. 控制单元的设计10.1 组合逻辑设计10.1.1 CU外特性10.1.2 微操作的节拍安排10.1.3 组合逻辑设计步骤 10.2 微程序设计10.2.1 微程序设计思想10.2.2 微指令格式10.2.3 毫微程序设计10.2.4 微程序设计举例 完结撒花 本笔记参考哈工大刘宏伟老师的…

最新社交相亲系统源码PHP

最新社交相亲系统源码PHP 安装环境&#xff1a; php7.2 mysql 5.7 框架&#xff1a; 后端thinkphp6 前端&#xff1a;jquery layui PC 移动端响应式 线上案例&#xff1a;https://cjr.oemsun.com/ 主要页面及功能预览 首页 相亲资料详情页 红娘跟进记录 海报、一键复制分…

Cisco ACI Simulator 6.0(5h) - ACI 模拟器

Cisco ACI Simulator 6.0(5h) - ACI 模拟器 Application Centric Infrastructure (ACI) Simulator Software 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-acisim-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…

【核弹级安全事件】XZ Utils库中发现秘密后门,影响主要Linux发行版,软件供应链安全大事件

Red Hat 发布了一份“紧急安全警报”&#xff0c;警告称两款流行的数据压缩库XZ Utils&#xff08;先前称为LZMA Utils&#xff09;的两个版本已被植入恶意代码后门&#xff0c;这些代码旨在允许未授权的远程访问。 此次软件供应链攻击被追踪为CVE-2024-3094&#xff0c;其CVS…

卡奥斯工业互联网平台分析

一、 背景 卡奥斯是海尔推出的具有中国自主知识产权、全球首家引入用户全流程参与体验的工业互联网平台。其核心是大规模定制模式&#xff0c;通过持续与用户交互&#xff0c;将硬件体验变为场景体验&#xff0c;将用户由被动的购买者变为参与者、创造者&#xff0c;将企业由原…

Vue3配置router路由步骤

Vue3配置router路由步骤 首先创建一个vue3的项目 先检查一下router的版本&#xff0c;可以在pakage.json里面查看&#xff0c;也可以你直接在终端输入 npm list vue-router如果版本比较低的话&#xff0c;先升级一下 vue3的话&#xff0c;用以下命令 npm install vue-route…

C语言TCP服务器模型 : select + 多线程与双循环单线程阻塞服务器的比较

观察到的实验现象: 启动三个客户端: 使用双循环阻塞服务器:只能accept后等待收发,同时只能与一个客户端建立连接,必须等已连接的客户端多次收发 明确断开后才能与下个客户端连接 使用IO多路复用select:可以同时接收所有的连接请求,并且连接状态一直是存活的,直到客户端关闭连…

Kubesphere 自动化部署失败报错

Kubesphere 自动化部署在 push tag 阶段失败报错 git push http://****:****github.com/****/devops-java-sample.git --tags --ipv4 remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/get-started/g…

Netty是什么

一、Netty介绍 1、Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用以快速开发高性能、高可靠性的网络IO程序。 2、Netty主要针对在TCP协议下&#xff0c;面向Clients端的高并发应用&#xff0c;或者Peer-to-Peer场景下的大量数据持续传输的应用。 3、Netty本质是…

银行数字化转型导师坚鹏:银行数字化转型给分行带来的8大价值

银行数字化转型给分行带来的8大价值 银行数字化转型对不仅对总行产生了深远影响、给总行带来了新质生产力&#xff0c;对分行也会产生重要价值&#xff0c;银行数字化转型导师坚鹏从以下8个方面进行详细分析&#xff0c;相信能够给您带来重要启发&#xff0c;从而加速银行分行…

【并发编程系列】使用 CompletableFuture 实现并发任务处理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

[C#]OpenCvSharp利用MatchTemplate实现多目标匹配

【效果展示】 原图 模板图 匹配结果&#xff1a; 【实现部分代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using…

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…

从零起步:开启你的IT职业之旅

简介&#xff1a; 信息技术&#xff08;IT&#xff09;行业以其快速发展和广阔的就业前景吸引着全球众多职场新人。但对于零基础的求职者而言&#xff0c;挺进这一行业似乎是条充满挑战的道路。进入IT行业可能看起来是一项艰巨的挑战&#xff0c;尤其是对于那些没有任何相关经…

伪造靶机之iptables

伪造禁ping、网络不可达、主机不可达、协议、端口的命令 iptables -A INPUT -p icmp --icmp-type echo-request -j DROP iptables -A INPUT -s 172.18.6.89 -p icmp -j REJECT --reject-with icmp-net-unreachable iptables -A INPUT -s 172.18.6.89 -p icmp -j REJECT --re…

【Canavs与艺术】绘制蓝白绶带大卫之星勋章

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>用Canvas绘制蓝白绶带大卫之星勋章</title><style type&quo…

Python如何解决“滑动拼图”验证码(8)

前言 本文是该专栏的第67篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,或多或少都会接触到一些需要解决验证码才能正常获取数据的平台。 在本专栏之前的文章中,笔者有详细介绍通过python来解决多种“验证码”(点选验证,图文验证,滑块验证,滑块…

网络协议——VRRP(虚拟路由冗余协议)原理与配置

1. VRRP概述 单网关出现故障后下联业务中断&#xff0c;配置两个及以上的网关时由于IP地址冲突&#xff0c;导致通讯时断时续甚至通信中断。VRRP组播类的网络层协议 2. 协议版本 VRRP v2: 支持认证,仅适用于IPv4网络 VRRP v3: 不支持认证&#xff0c; 适用于IPv4和IPv6两种网…

【Leetcode笔记】102.二叉树的层序遍历

目录 知识点Leetcode代码&#xff1a;ACM模式代码&#xff1a; 知识点 vector、queue容器的操作 对vector<int> vec;做插入元素操作&#xff1a;vec.push_back(x)。对queue<TreeNode*> que;做插入元素操作&#xff1a;que.push(root);。队列有四个常用的操作&…

【Python系列】 yaml中写入数据

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…