当前位置: 首页 > news >正文

通过shell脚本分析部署nginx网络服务

通过shell脚本分析部署nginx网络服务

1.接收用户部署的服务名称

[root@localhost xzy]# vim 1.sh
[root@localhost xzy]# chmod +x 1.sh
[root@localhost xzy]# ./1.sh

2.判断服务是否安装

已安装;自定义网站配置路径为/www;并创建共享目录和网页文件;重启服务

没有安装;安装对应的软件包

#!/bin/bash# 1. 接收用户部署的服务名称
read -p "请输入您部署的服务名称: " service_name
service_name=$(echo $service_name | tr -d '\b')  # 去除退格键# 判断 Nginx 是否已安装
if command -v nginx &> /dev/null
thenecho "Nginx 已经安装。"# 2. 自定义网站配置echo "自定义网站配置路径为 /www。"# 创建共享目录和网页文件sudo mkdir -p /www/htmlif [ $? -eq 0 ]; thenecho "共享目录 /www/html 创建成功。"elseecho "创建共享目录 /www/html 失败,请检查权限。"exit 1fisudo echo "<html><head><title>$service_name</title></head><body><h1>Welcome to $service_name</h1></body></html>" > /www/html/index.htmlif [ $? -eq 0 ]; thenecho "网页文件 /www/html/index.html 创建成功。"elseecho "创建网页文件 /www/html/index.html 失败,请检查权限。"exit 1fi# 确保配置目录存在if [ -d /etc/nginx/sites-available ]; thenecho "配置目录 /etc/nginx/sites-available 已存在。"elsesudo mkdir -p /etc/nginx/sites-availableif [ $? -ne 0 ]; thenecho "创建配置目录 /etc/nginx/sites-available 失败,请检查权限。"exit 1fiecho "配置目录 /etc/nginx/sites-available 创建成功。"fiif [ -d /etc/nginx/sites-enabled ]; thenecho "配置目录 /etc/nginx/sites-enabled 已存在。"elsesudo mkdir -p /etc/nginx/sites-enabledif [ $? -ne 0 ]; thenecho "创建配置目录 /etc/nginx/sites-enabled 失败,请检查权限。"exit 1fiecho "配置目录 /etc/nginx/sites-enabled 创建成功。"fi# 配置 Nginx 以使用自定义路径sudo tee /etc/nginx/sites-available/$service_name.conf <<EOF
server {listen 80;server_name localhost;location / {root /www/html;index index.html;}
}
EOFif [ $? -eq 0 ]; thenecho "Nginx 配置文件 /etc/nginx/sites-available/$service_name.conf 创建成功。"elseecho "创建 Nginx 配置文件 /etc/nginx/sites-available/$service_name.conf 失败,请检查路径。"exit 1fi# 创建符号链接使配置生效sudo ln -sf /etc/nginx/sites-available/$service_name.conf /etc/nginx/sites-enabled/if [ $? -eq 0 ]; thenecho "符号链接创建成功。"elseecho "创建符号链接失败,请检查路径。"exit 1fi# 重启 Nginx 服务sudo systemctl restart nginx.serviceecho "已重启 Nginx 服务。"# 3. 测试 Nginx 服务是否成功运行if sudo systemctl status nginx.service | grep -q "active (running)"; thenecho "Nginx 服务已成功启动。"echo "可以通过浏览器访问地址 http://localhost 来查看您的网站。"elseecho "Nginx 服务没有成功启动。"echo "----------- 配置文件内容如下 -----------"sudo cat /etc/nginx/sites-available/$service_name.conffi
else# 2. 没有安装 Nginx,安装对应的软件包echo "Nginx 未安装,开始安装 Nginx。"sudo yum install nginx -y # 判断安装是否成功if command -v nginx &> /dev/nullthenecho "Nginx 安装完成。"# 创建共享目录和网页文件sudo mkdir -p /www/htmlif [ $? -eq 0 ]; thenecho "共享目录 /www/html 创建成功。"elseecho "创建共享目录 /www/html 失败,请检查权限。"exit 1fisudo echo "<html><head><title>$service_name</title></head><body><h1>Welcome to $service_name</h1></body></html>" > /www/html/index.htmlif [ $? -eq 0 ]; thenecho "网页文件 /www/html/index.html 创建成功。"elseecho "创建网页文件 /www/html/index.html 失败,请检查权限。"exit 1fi# 确保配置目录存在if [ -d /etc/nginx/sites-available ]; thenecho "配置目录 /etc/nginx/sites-available 已存在。"elsesudo mkdir -p /etc/nginx/sites-availableif [ $? -ne 0 ]; thenecho "创建配置目录 /etc/nginx/sites-available 失败,请检查权限。"exit 1fiecho "配置目录 /etc/nginx/sites-available 创建成功。"fiif [ -d /etc/nginx/sites-enabled ]; thenecho "配置目录 /etc/nginx/sites-enabled 已存在。"elsesudo mkdir -p /etc/nginx/sites-enabledif [ $? -ne 0 ]; thenecho "创建配置目录 /etc/nginx/sites-enabled 失败,请检查权限。"exit 1fiecho "配置目录 /etc/nginx/sites-enabled 创建成功。"fi# 自定义网站配置sudo tee /etc/nginx/sites-available/$service_name.conf <<EOF
server {listen 80;server_name localhost;location / {root /www/html;index index.html;}
}
EOFif [ $? -eq 0 ]; thenecho "Nginx 配置文件 /etc/nginx/sites-available/$service_name.conf 创建成功。"elseecho "创建 Nginx 配置文件 /etc/nginx/sites-available/$service_name.conf 失败,请检查路径。"exit 1fi# 创建符号链接使配置生效sudo ln -sf /etc/nginx/sites-available/$service_name.conf /etc/nginx/sites-enabled/if [ $? -eq 0 ]; thenecho "符号链接创建成功。"elseecho "创建符号链接失败,请检查路径。"exit 1fi# 启动 Nginx 服务sudo systemctl start nginx.serviceecho "已启动 Nginx 服务。"# 3. 测试 Nginx 服务是否成功运行if sudo systemctl status nginx.service | grep -q "active (running)"; thenecho "Nginx 服务已成功启动。"echo "可以通过浏览器访问地址 http://localhost 来查看您的网站。"elseecho "Nginx 服务没有成功启动。"echo "----------- 配置文件内容如下 -----------"sudo cat /etc/nginx/sites-available/$service_name.conffielseecho "Nginx 安装失败,请检查您的网络连接和 YUM 源配置。"fi
fi

3.测试

判断服务是否成功运行;

已运行,访问网站

未运行,提示服务未启动,并显示自定义的配置文件内容

在这里插入图片描述

相关文章:

通过shell脚本分析部署nginx网络服务

通过shell脚本分析部署nginx网络服务 1.接收用户部署的服务名称 [rootlocalhost xzy]# vim 1.sh [rootlocalhost xzy]# chmod x 1.sh [rootlocalhost xzy]# ./1.sh2.判断服务是否安装 已安装&#xff1b;自定义网站配置路径为/www&#xff1b;并创建共享目录和网页文件&…...

Java基础——继承和多态

目录 一、继承 继承的定义&#xff1a; 继承的基本用法&#xff1a; 如何调用父类的方法&#xff1f; 二、多态 多态性的好处 多态中的强制类型转换&#xff1a; 包的命名规则——域名倒叙 一、继承 继承的定义&#xff1a; 继承是面向对象编程中的一种机制&#xff0c…...

长江存储嵌入式面试题及参考答案

构造函数、析构函数可以为虚函数吗,为什么? 构造函数最好不要是虚函数。原因如下: 从对象的生命周期角度来看,虚函数的调用是通过虚函数表(vtable)来实现的。而在构造函数执行的时候,对象还没有完全构造好,vtable 可能还没有被正确地初始化。如果构造函数是虚函数,在…...

WordPress设置自动更新CSS版本号

WordPress 通常会在引用 CSS 文件时添加版本号参数&#xff08;?verx.x.x&#xff09;。如果版本号未更新&#xff0c;浏览器可能继续加载旧的文件。 解决方法&#xff1a;确保你在 functions.php 文件中正确加载了 CSS 文件&#xff0c;并动态更新版本号。例如在functions.p…...

【Qt聊天室】客户端实现总结

目录 1. 项目概述 2. 功能实现 2.1 主窗口设计 2.2 功能性窗口 2.3 主界面功能实现 2.4 聊天界面功能实现 2.5 个人信息功能开发 2.6 用户信息界面设置功能 2.7 单聊与群聊 2.8 登录窗口 2.9 消息功能 3. 核心设计逻辑 3.1 核心类 3.2 前后端交互与DataCenter 4…...

服务器数据恢复—raid5阵列故障导致上层系统分区无法识别的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌DL380服务器&#xff0c;服务器中三块SAS硬盘组建了一组raid5阵列。服务器安装Windows Server操作系统&#xff0c;划分了3个分区&#xff0c;D分区存放数据库&#xff0c;E分区存放数据库备份。 服务器故障&#xff1a; RAID5阵列中有一…...

mysql bin log分析

centos7 部署collabora office (yum版 与 docker)_collabora office部署-CSDN博客 1.下载polardb的bin log文件 show binary logs; mysqlbinlog -u 用户名 -p -h 地址 --read-from-remote-server --raw mysql-bin.001768 mysqlbinlog --no-defaults --databasexxx --base64-…...

深入理解 Vue 3 中的 emit

深入理解 Vue 3 中的 emit 在 Vue 3 中&#xff0c;组件通信是开发中非常重要的一部分&#xff0c;其中通过 emit 实现父子组件通信是最常见的方式之一。emit 的作用是&#xff1a;子组件可以通过触发自定义事件将数据传递给父组件。 在本篇文章中&#xff0c;我们将从以下几…...

#lwIP 的 Raw API 使用指南

1. 简介 lwIP&#xff08;Lightweight IP&#xff09;是一个为嵌入式系统设计的开源轻量级 TCP/IP 协议栈。它旨在提供尽可能小的内存占用和高效的性能&#xff0c;适用于资源受限的设备&#xff0c;如物联网设备、路由器和工业控制系统。lwIP 支持多种协议&#xff0c;包括 I…...

Elasticsearch开启认证及kibana密码登陆

Elasticsearch不允许root用户运行,使用root用户为其创建一个用户es,为用户es配置密码,并切换到es用户。 adduser elastic passwd elastic su elasticElasticsearch(简称ES)是一个基于Lucene的搜索服务器。它提供了一个分布式、多用户能力的全文搜索引擎,基于RESTful web…...

【论文阅读】Large Language Models for Equivalent Mutant Detection: How Far Are We?

阅读笔记&#xff1a;Large Language Models for Equivalent Mutant Detection: How Far Are We? 1. 来源出处 本文发表于《ISSTA’24, September 16–20, 2024, Vienna, Austria》会议&#xff0c;由Zhao Tian, Honglin Shu, Dong Wang, Xuejie Cao, Yasutaka Kamei和Junji…...

vue2 面试题带答案,万字总结

1. 什么是 vue Vue 是一套用于构建用户界面的渐进式框架。Vue.js 的主要特点&#xff1a;渐进式框架、声明式渲染、组件化、响应式数据绑定等&#xff1b; 2、MVC 和 MVVM 区别 MVC 是模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)&#xff0c;控制器负责…...

git的常用用法(最简精华版)

一、工作区域&#xff08;工作区&#xff0c;暂存区&#xff0c;本地仓库&#xff09; 1、工作区 当前正在使用的文件 2、暂存区 已使用add命令提交的工作区的文件&#xff0c;会保存到暂存区 3、本地仓库 已使用commit命令提交的暂存区的文件&#xff0c;会保存到本地仓库。…...

哥德巴赫猜想渐行渐远

我现在的工作&#xff0c;表明经典分析可能出了问题&#xff0c;如此则连Vinogradov的三素数定理都不成立了&#xff0c;更别说基于L-函数方程的陈氏定理“12”了。事实上即使L-函数方程成立&#xff0c;由于我指出Siegel定理不成立&#xff0c;陈景润和张益唐的工作就不成立。…...

Spring Boot应用开发实战:构建高效、可维护的Web应用

Spring Boot应用开发实战:构建高效、可维护的Web应用 在当今快速迭代的软件开发环境中,Spring Boot凭借其“约定优于配置”的理念,迅速成为Java开发者构建微服务及Web应用的首选框架。它不仅简化了Spring应用的初始搭建以及开发过程,还通过自动配置、嵌入式服务器等特性,…...

keep-alive多级页面缓存实现

文章目录 keep-alive多级页面缓存实现只适用于页面是否缓存状态不变的情况对于上面的问题提供一种解决方案 keep-alive多级页面缓存实现 只适用于页面是否缓存状态不变的情况 网上有一种很普遍的教程&#xff0c;不使用keep-alive的include属性&#xff0c;而是通过在路由表中…...

ks 小程序sig3

前言 搞了app版的快手之后 &#xff08;被风控麻了&#xff09; 于是试下vx小程序版的 抓包调试 小程序抓包问题 网上很多教程&#xff0c; github也有开源的工具代码 自行搜索 因为我们需要调试代码&#xff0c;所以就用了下开源的工具 &#xff08;可以用chrome的F12功能&a…...

图论之构造完全图

题目 2398: 信息学奥赛一本通T1489-构造完全图 时间限制: 2s 内存限制: 192MB 提交: 16 解决: 9 题目描述 对于完全图 G&#xff0c;若有且仅有一棵最小生成树为 T&#xff0c;则称完全图 G 是树 T 扩展出的。 给你一棵树 T&#xff0c;找出 T 能扩展出的边权和最小的完全图 G…...

RDD触发算子:一些常用的触发算子(count、foreach、saveAsTextFile、first)

文章目录 1、count算子功能语法 2、foreach算子功能语法 3、saveAsTextFile算子功能语法 4、first算子功能语法举例 1、count算子 功能 统计RDD集合中元素的个数&#xff0c;返回一个int值 语法 def count(self) -> int2、foreach算子 功能 对RDD中每个元素调用一次参数中…...

搭建RAGFlow

RAGFlow 是一款基于深度文档理解构建的开源 RAG&#xff08;Retrieval-Augmented Generation&#xff09;引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程&#xff0c;结合大语言模型&#xff08;LLM&#xff09;针对用户各类不同的复杂格式数据提供可靠…...

css中的box-sizing,记录

border-box&#xff1a;最终高度为height&#xff0c;默认包含padding border等属性 content-box&#xff1a;box-sizing默认值&#xff0c;最终大小为heightpaddingborder 等...

使用useCallback引发对闭包的理解

一、先简单介绍一下闭包: 闭包是 JavaScript 中的重要概念&#xff0c;它指的是一个函数可以“记住”并访问其词法作用域&#xff0c;即使在这个函数的外部被执行。简单来说&#xff0c;闭包是由函数及其相关的环境组合而成的。 闭包的特性 函数内部可以访问外部变量: 闭包…...

gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突

一、将 vim 添加至右键 进入安装目录找到 vim91\install.exe 管理员权限执行 Install will do for you:1 Install .bat files to use Vim at the command line:2 Overwrite C:\Windows\vim.bat3 Overwrite C:\Windows\gvim.bat4 Overwrite C:\Windows\evim.bat…...

腾讯云-COS

COS 对象存储 是一种可扩展的云端数据存储服务。它适用于存储任意类型的文件&#xff0c;并且可以针对这些文件进行访问控制。 CORS 跨域资源共享 是一种机制&#xff0c;它使用额外的HTTP头来告诉浏览器允许一个域上的Web应用请求另一个域上的资源。当需要从一个域名下的网页向…...

蓝桥杯每日真题 - 第16天

题目&#xff1a;&#xff08;卡牌&#xff09; 题目描述&#xff08;13届 C&C B组C题&#xff09; 解题思路&#xff1a; 题目分析&#xff1a; 有 n 种卡牌&#xff0c;每种卡牌的现有数量为 a[i]&#xff0c;所需的最大数量为 b[i]&#xff0c;还有 m 张空白卡牌。 每…...

基因组之全局互作热图可视化

引言 PlotHiC 是一个专为 Hi-C 数据可视化分析而设计的 Python 包。Hi-C 技术是一种能够检测染色体三维结构的实验方法&#xff0c;它能揭示 DNA 在细胞核内的三维组织结构。为了更好地展示和解释这些复杂的数据&#xff0c;PlotHiC[1] 可以帮助用户方便地绘制Hi-C 数据的热图。…...

基于Lora通讯加STM32空气质量检测WIFI通讯

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重&#xff0c;空气质量的监测与管理已经…...

STM32 极速入门第一天基础拓展 驱动i2c屏幕 ( 使用PlatformIO开发STM32单片机 )

输入输出模式解析 输出模式 在输出模式下&#xff0c;通常不需要设置上下拉电阻. 输出电平由 LL_GPIO_SetOutputPin 和 LL_GPIO_ResetOutputPin 函数直 接控制。 输入模式 在输入模式下&#xff0c;设置上下拉电阻是非常重要的. 输入引脚悬空时可能会导致不确定的电平&#xf…...

【WPF】Prism学习(五)

Prism Commands 1.错误处理&#xff08;Error Handling&#xff09; Prism 9 为所有的命令&#xff08;包含AsyncDelegateCommand&#xff09;提供了更好的错误处理。 避免用try/catch包装每一个方法根据不同遇到的异常类型来提供特定的逻辑处理可以在多个命令之间共享错误处…...

RabbitMQ的基本概念和入门

RabbitMQ 的基本概念和入门 RabbitMQ 是一款流行的开源消息队列中间件&#xff0c;实现了高级消息队列协议&#xff08;AMQP&#xff09;。它使用Erlang语言编写&#xff0c;具备高可用性、可扩展性和易用性等特点&#xff0c;广泛应用于各种分布式系统中。本文将详细介绍Rabb…...

深圳宝安网站建设学习网/最新国际新闻 大事件

Annotation:One2One JoinColumnxml:<many-to-one unique> 一般情况大致如下图中所设计&#xff0c;在一个表中设计另一个表的外键&#xff1b; 下图就是在 husband 表中 设计了 wife 的外键关联。 Husband 类&#xff1a; 1 package com.bjsxt.hibernate;2 3 import java…...

微信公众号制作网站/代发推广百度首页包收录

0.String&#xff1a;1.要了解String首先应知道JAVA内存结构基础; 内存结构和内存模型需要专题介绍。内存结构方法区(Method Area)&#xff0c;是各个线程共享的内存区域&#xff0c;它用于存储虚拟机加载的&#xff1a;类信息&#xff0b;普通常量&#xff0b;静态常量&#x…...

天津协会网站建设/网络营销推广方式包括

2019独角兽企业重金招聘Python工程师标准>>> API 包含了两个软件包&#xff0c;十二个接口和九个类。 软件包&#xff1a; javax.servlet 软件包&#xff1a; javax.servlet 所包含的接口&#xff1a;RequestDispatcher&#xff1b;Servlet&#xff1b;ServletConf…...

代做网站 猪八戒网/友情链接购买网站

1、获取数组最后一个位置的值 比较常规的是:$arr[count($arr)-1]; 貌似还有一个数组函数end();可以直接获取最后一个元素的值。相应的还有reset(),next(),current(),prev(); 本文转自 努力的C 51CTO博客&#xff0c;原文链接:http://blog.51cto.com/fulin0532/1966245...

免费网站空间域名/免费网站入口在哪

网络世界中时常会遇到这类滑稽的算命小程序&#xff0c;实现原理很简单&#xff0c;随便设计几个问题&#xff0c;根据玩家对每个问题的回答选择一条判断树中的路径&#xff08;如下图所示&#xff09;&#xff0c;结论就是路径终点对应的那个结点。 现在我们把结论从左到右顺序…...

电子商务网站建设大作业/优化网站性能

文章目录仅页面跳转主要文件目录activity_main.xmldemo.xmlMainActivityActivity_Demo运行页面跳转数据传输主要文件目录MainActivitySubActivityactivity_main.xmlsub.xml仅页面跳转主要文件目录 主要实现的功能就是点击按钮能够实现界面的跳转。 activity_main.xml 主界面&…...