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

Linux——Shell脚本和Nginx反向代理服务器

1. Linux中的shell脚本【了解】

1.1 什么是shell

Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁

Shell 既是一种命令语言,有是一种程序设计语言

Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务

Ken Thompson 的 sh 是第一种 Unix Shell ,Windows Explorer 是一个典型的图形界面Shell

shell就是用户与linux交换的一款语言

1.2 后缀

.sh linux系统脚本的后缀

.bat windows系统脚本的后缀

1.3 编写第一个shell

#!/bin/bash
# echo 表示输出
echo "hello world"

#!/bin/bash 头文件

运行该脚本: ./路径/脚本名.sh

在这里插入图片描述

使用 ls -l命令可以查看该文件的权限

在这里插入图片描述

第一个字符:- :表示文件 d:表示目录 l:快捷方式

后面的字符三个为一组

rw-:这三个字符,表示当前创建文件的用户具有的权限

r–:这三个字符,表示当前创建该文件的用户所在的组成员具有的权限

r–:这三个字符,表示其他用户具有的权限

r:read 读 数字4

w:write 写 数字2

x:execute 执行 数字1

修改权限:

chmod u+rwx g+rwx o+rwx 文件名【增加权限】

chmod u-rwx g-rwx o-rwx 文件名【减权限】

我们也可以通过数字修改权限:chmod 735 文件

1.4 变量 弱语言

#!/bin/bash
name="lay"
echo "姓名:${name}"
echo "姓名:"${name}

1.5 Shell 传递参数

执行shell脚本时可以传递参数值

#!/bin/bash
name="lay"
echo "姓名:${name}"
echo "第一个参数值:$1"
echo "第二个参数值:$2"

执行脚本: ./脚本名 传递的参数值 值2

即使不传值也不会报错,没有下标越界的错误提示

1.6 Shell数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与PHP相似)

与大部分编译语言类似,数组元素的下标由0开始

Shell数组用 括号来表示,元素用 空格符号分隔开,语法格式如下:

array_name=(value1 value2 .... valuen)

关联数组–map集合

Bash支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素

关联数组使用declare命令来声明,语法格式如下:

declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")

-A 选项就是用于声明一个关联数组

关联数组的键是唯一的

1.7 Shell 基本运算符

算术运算符

原生Bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk和expr。expr最常用

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加(注意使用的是反引号 *`* 而不是单引号 *'*):

#!/bin/bash
a=100
b=20
c=`expr $a / $b`
echo "c==$c"

关系运算符

a=10
b=20
#
if [ $a -eq $b ]
thenecho "$a -eq $b : a 等于 b"
elseecho "$a -eq $b: a 不等于 b"
fi

等于:eq

不等于:ne

大于:gt

大于等于:ge

小于:lt

小于等于:le

布尔运算符

if [ $a -lt 100 -a $b -gt 15 ]
thenecho "$a 小于 100 且 $b 大于 15 : 返回 true"
elseecho "$a 小于 100 且 $b 大于 15 : 返回 false"
fi

if

then

else

fi:结束

1.8 控制语句

if语句 for语句

a=10
b=20
if [ $a -eq $b ]
thenecho "a 等于 b"
elif [ $a -gt $b ]
thenecho "a 大于 b"
elif [ $a -lt $b ]
thenecho "a 小于 b"
elseecho "没有符合的条件"
fi

for

for var in item1 item2 ... itemN
docommand1command2...commandN
done

2. Nginx反向代理服务器

2.1 什么是nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。并发能力: 50,000 C语言编写的

2.2 为什么使用nginx

在这里插入图片描述

2.3 有哪些企业使用nginx

京东 淘宝 12306 新浪等

2.4 安装nginx

nginx可以独立安装在一台服务器,也可以和项目在同一个服务器

1. 安装nginx的依赖插件

yum  install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载nginx

源码:先编译——>后安装
下载地址:https://nginx.org/en/download.html

在这里插入图片描述

创建一个目录作为nginx的安装路径

mkdir /usr/nginx

将下载的nginx压缩包拖拽到/usr/app目录下

解压

tar -zxvf nginx-1.26.1.tar.gz

进入解压后的目录

cd nginx-1.26.1

指定nginx的安装路径

 ./configure --prefix=/usr/nginx

编译和安装nginx

make install

nginx目录结构

在这里插入图片描述

启动nginx

nginx  启动
nginx -s stop  关闭
nginx -s reload 重新加载配置文件

在这里插入图片描述

防火墙放行80端口

 firewall-cmd --add-port=80/tcp --zone=public --premanent

重启防火墙

 systemctl restart firewalld

访问nginx80

http://nginx所在的ip:nginx的端口/

在这里插入图片描述

2.5 nginx配置文件修改

切换到/usr/nginx/conf目录下,打开nginx.conf配置文件进行修改

#user  nobody; 
#工作的线程数
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {# 每个工作对象允许的连接数worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#模仿配置server {listen 81;server_name localhost;location /{root static;index main.html;}}#gzip  on;server {listen       80; # 监听的端口号server_name  localhost; # 监听的主机名.域名#charset koi8-r;#access_log  logs/host.access.log  main;# 资源/ location / {root   html; #根目录index  index.html main.html; # 资源}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}
}
#模仿配置server {listen 81;server_name localhost;location /{root static;index main.html;}}

listen:监听的端口号,需要防火墙放行该端口号

server_name: 监听的主机名.域名

location /{} :资源

location /{

​ root static; //根目录,需要在nginx中创建根目录static

​ index main.html; //资源,加载该资源

}

  • 重新加载
../sbin/nginx -s reload

相关文章:

Linux——Shell脚本和Nginx反向代理服务器

1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell 既是一种命令语言,有是一种程序设计语言 Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问…...

pyspark使用 graphframes创建和查询图的方法

1、安装graphframes的步骤 1.1 查看 spark 和 scala版本 在终端输入: spark-shell --version 查看spark 和scala版本 1.2 在maven库中下载对应版本的graphframes https://mvnrepository.com/artifact/graphframes/graphframes 我这里需要的是spark 2.4 scala 2.…...

【web】-flask-简单的计算题(不简单)

打开页面是这样的 初步思路,打开F12,查看头,都发现了这个表达式的base64加密字符串。编写脚本提交答案,发现不对; 无奈点开source发现源代码,是flask,初始化表达式,获取提交的表达式&#xff0…...

Apache Sqoop

Apache Sqoop是一个开源工具,用于在Apache Hadoop和关系型数据库(如MySQL、Oracle、PostgreSQL等)之间进行数据的批量传输。其主要功能包括: 1. 数据导入:从关系型数据库(如MySQL、Oracle等)中将…...

【Python】TensorFlow介绍与实战

TensorFlow介绍与使用 1. 前言 在人工智能领域的快速发展中,深度学习框架的选择至关重要。TensorFlow 以其灵活性和强大的社区支持,成为了许多研究者和开发者的首选。本文将进一步扩展对 TensorFlow 的介绍,包括其优势、应用场景以及在最新…...

第100+16步 ChatGPT学习:R实现Xgboost分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言,不想学Python咯。 答曰:可!用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了,就帮各位搬运一下吧。 二、R代码实现Xgboost分类 &#xff08…...

【操作系统】定时器(Timer)的实现

这里写目录标题 定时器一、定时器是什么二、标准库中的定时器三、实现定时器 定时器 一、定时器是什么 定时器也是软件开发中的⼀个重要组件.类似于⼀个"闹钟".达到⼀个设定的时间之后,就执行某个指定 好的代码. 定时器是⼀种实际开发中⾮常常用的组件. ⽐如⽹络通…...

鸿蒙Navigation路由能力汇总

基本使用步骤: 1、新增配置文件router_map: 2、在moudle.json5中添加刚才新增的router_map配置: 3、使用方法: 属性汇总: https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-compone…...

​1:1公有云能力整体输出,腾讯云“七剑”下云端

【全球云观察 | 科技热点关注】 曾几何时,云计算技术的兴起,为千行万业的数字化创新带来了诸多新机遇,同时也催生了新产业新业态新模式,激发出高质量发展的科技新动能。很显然,如今的云创新已成为高质量发…...

【iOS】APP仿写——网易云音乐

网易云音乐 启动页发现定时器控制轮播图UIButtonConfiguration 发现换头像 我的总结 启动页 这里我的启动页是使用Xcode自带的启动功能,将图片放置在LaunchScreen中即可。这里也可以通过定时器控制,来实现启动的效果 效果图: 这里放一篇大…...

react 快速入门思维导图

在掌握了react中一下的几个步骤和语法,基本上就可以熟练的使用react了。 1、组件的使用。react创建组件主要是类组件和函数式组件,类组件有生命周期,而函数式组件没有。 2、jsx语法。react主要使用jsx语法,需要使用babel和webpa…...

微软研究人员为电子表格应用开发了专用人工智能LLM

微软的 Copilot 生成式人工智能助手现已成为该公司许多软件应用程序的一部分。其中包括 Excel 电子表格应用程序,用户可以在其中输入文本提示来帮助处理某些选项。微软的一组研究人员一直在研究一种新的人工智能大型语言模型,这种模型是专门为 Excel、Go…...

[算法题]两个链表的第一个公共结点

题目链接: 两个链表的第一个公共结点 图示: 两个链表如果长度一致, 那么两人同时一人走一步, 如果存在公共结点, 迟早会相遇, 但是如果长度不一致单存在公共结点, 两人同时一人走一步不会相遇, 此时定义两个变量, node1 和 node2, 这两个变量分别从 x1 和 x2 开始走, 当其走完…...

MySQL事务管理(上)

目录 前言 CURD不加控制,会有什么问题? CURD满足什么属性,能解决上述问题? 事务 什么是事务? 为什么会出现事务 事务的版本支持 事务提交方式 查看事务提交方式 改变 MySQL 的自动提交模式: 事务常见操作方式 前…...

HTML2048小游戏

源代码在效果图后面 效果图 源代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2048 Game&l…...

为 android编译 luajit库、 交叉编译

时间&#xff1a;20200719 本机环境&#xff1a;iMac2017 macOS11.4 参考: 官方的文档&#xff1a;Use the NDK with other build systems 写在前边&#xff1a;交叉编译跟普通编译类似&#xff0c;无非是利用特殊的编译器、链接器生成动态或静态库; make 本质上是按照 Make…...

【音视频】音频重采样

文章目录 前言音频重采样的基本概念音频重采样的原因1. 设备兼容性2. 文件大小和带宽3. 音质优化4. 标准化和规范5. 多媒体同步6. 降低处理负载重采样的注意事项 总结 前言 音频重采样是指将音频文件的采样率转换成另一种采样率的过程。这在音频处理和传输中是一个常见且重要的…...

卷积神经网络学习问题总结

问题一&#xff1a; 深度学习中的损失函数和应用场景 回归任务&#xff1a; 均方误差函数&#xff08;MSE&#xff09;适用于回归任务&#xff0c;如预测房价、预测股票价格等。 import torch.nn as nn loss_fn nn.MSELoss() 分类任务&#xff1a; 交叉熵损失函数&…...

嵌入式面试总结

C语言中struct和union的区别 struct和union都是常见的复合结构。 结构体和联合体虽然都是由多个不同的数据类型成员组成的&#xff0c;但不同之处在于联合体中所有成员共用一块地址空间&#xff0c;即联合体只存放了一个被选中的成员&#xff0c;结构体中所有成员占用空间是累…...

超简单安装指定版本的clickhouse

超简单安装指定版本的clickhouse 命令执行shell脚本 idea连接 命令执行 参考官网 # 下载脚本 wget https://raw.githubusercontent.com/183461750/doc-record/d988dced891d70b23c153a3bbfecee67902a3757/middleware/data/clickhouse/clickhouse-install.sh # 执行安装脚本(中…...

FlowUs横向对比几款笔记应用的优势所在

FlowUs作为一个本土化的生产力工具&#xff0c;在中国市场的环境下相对于Notion有其独特的优势&#xff0c;尤其是在稳定性和模板适应性方面。 尽管Notion在笔记和生产力工具领域享有极高的声誉&#xff0c;拥有着诸多创新功能和强大的生态系统&#xff0c;但它并不一定适合每…...

收银系统源码-千呼新零售收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…...

从Catalog说到拜义父-《分析模式》漫谈11

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的Preface&#xff08;前言&#xff09;有这么一句&#xff1a; This book is thus a catalog, rather than a book to be read from cover to cover. 2004&am…...

Qt判定鼠标是否在该多边形的线条上

要判断鼠标是否在由QPainterPath或一系列QPointF点定义的多边形的线条上&#xff0c;你可以使用以下步骤&#xff1a; 获取鼠标当前位置&#xff1a;在鼠标事件中&#xff0c;使用QMouseEvent的pos()方法获取鼠标的当前位置。 检查点与线段的距离&#xff1a;遍历多边形的每条…...

【笔记:3D航路规划算法】一、随机搜索锚点(python实现,讲解思路)

目录 关键概念3D路径规划算法1. A*算法2. 快速随机锚点1. 初始化&#xff1a;2. 实例化搜索算法&#xff1a;3. 路径生成&#xff1a;4. 绘制图像&#xff1a; 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、…...

ubuntu如何彻底卸载android studio?

最新版的ubuntu已经使用snap进行软件管理了&#xff0c;我用snap-store安装android studio以后&#xff0c;在安装plugin的时候强制退出后&#xff0c;直接再也进不去了&#xff0c;启动就报错。 先后进行了如下操作依然不行&#xff1a; 1 重装snap-store和android studio都…...

使用Windows Linux 子系统安装 Tensorflow,并使用GPU环境

在Microsoft Store商店安装Ubuntu 20.04 使用 nvidia-smi 命令查看GPU信息&#xff0c;查看支持的CUDA版本&#xff0c;这里最高支持11.7 安装cuda工具集 进入官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer&#xff0c;现在对应版本&#xff0c;点击 配置平台&…...

C++案例三:猜数字游戏

文章目录 介绍代码说明设置随机种子生成随机数猜测循环完整代码运行效果介绍 猜数字游戏是一个经典的编程练习,通过这个案例可以学习到基本的输入输出、随机数生成、条件判断和循环结构。 代码说明 设置随机种子 std::srand(static_cast<unsigned int>(std::time(nu…...

LNMP架构部署及应用

部署LNMP架构流程 1.安装Nginx&#xff08;上传软件包&#xff0c;执行脚本&#xff09; yum -y install pcre-devel zlib-devel gcc gcc useradd -M -s /sbin/nologin nginx tar zxf nginx-1.12.0.tar.gz cd nginx-1.12.0 ./configure --prefix/usr/local/nginx --usernginx…...

【医学影像】X86+FPGA:支持AI医学影像设备应用的工控主板,赋能CT、MRI、X线、超声等医学影像设备

支持AI医学影像设备应用的工控主板 在我国人口老龄化问题不断加剧&#xff0c;对影像诊断需求持续增长&#xff0c;和国家利好高端医学影像市场发展的系列法规和政策接连出台的大环境下&#xff0c;AI医学影像设备产业迎来发展黄金期。紧跟发展大势&#xff0c;基于12/13代 In…...

深圳专业网站建设制作价格/佛山百度推广公司

当你发布一个应用之后&#xff0c;(取决于具体的发布时间)可能没过几个月 Android 系统就发布了一个新版本。这对你的应用意味着什么&#xff0c;所有东西都不能用了&#xff1f; 别担心&#xff0c;向前兼容是 Android 非常关注的事情。用户在升级到新版 Android 的时候&…...

苏州市城市建设局网站/搜索引擎排名优化是什么意思

今天我们继续来学习PERFORMANCE MONITORING AND STATISTICS&#xff08;性能监测与统计&#xff09;&#xff0c;今天学习的是什么命令呢&#xff0c;那就是dmidecode&#xff08;通过BIOS查看硬件信息&#xff09; Ready Go!!! 老规矩 dmidecode --help -d&#xff1a;(def…...

当当网网站建设方案/站长工具seo推广

&#xff08;一&#xff09;Spring IoC 重要概念 1、控制反转&#xff08;Inversion of control&#xff09;&#xff1a; 控制反转是一种通过描述&#xff08;在java中通过xml或者注解&#xff09;并通过第三方去产生或获取特定对象的方式。 控制反转IoC(Inversion of Control…...

南昌做企业网站/六种常见的网站类型

用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server&#xff0c;但你又不想去安装 Apache、Nginx 等这类功能较复杂的 HTTP 服务程序时。这时可以使用 Python 内建的 SimpleHTTPServer 模块快速搭建一个简单的 HTTP 服务器。 SimpleHTTPServer 模块可以把你…...

深圳发布稳增长措施/seo关键字优化技巧

前端小伙伴们有没有遇到过这样的场景&#xff0c;iviewUI组件库中select双向绑定数据时&#xff0c;修改了绑定值&#xff0c;但是页面中渲染的值还是之前的值&#xff0c;不管是去打印还是使用vue插件去查看变量&#xff0c;均显示绑定值已修改&#xff0c;可是页面始终显示修…...

网站设计到底做多宽/搭建一个app平台要多少钱

2018年12月更新(12个月后)&#xff1a;原始字符串文字(在琥珀色列表中)不会进入JDK 12。看看这里的批评。Java的未来版本可能存在(10个或更多)。从2018年1月开始参见JEPS 8196004 :(“JEP”是“JDK增强计划”)JEP草案&#xff1a;原始字符串文字将一种新的文字(原始字符串文字)…...