写点什么

06_Linux 基础 -NGINX 和浏览器、网页的关系 - 云服务器 ssh 登陆 - 安装 NGINX- 上传网页 - 压缩命令 -xz-gzip-bzip2-zip-tar- 配置 NGINX 服务器支持下载功能 - 备份脚本

作者:mycpen
  • 2022 年 9 月 02 日
    江苏
  • 本文字数:7388 字

    阅读完需:约 24 分钟

@[TOC](文章目录)

# 06_Linux 基础-NGINX 和浏览器、网页的关系-云服务器 ssh 登陆-安装 NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置 NGINX 服务器支持下载功能-备份脚本

---

## 一. NGINX 和浏览器、网页的关系

```bash

nginx 是一个 web 服务器

html 语言编写网页

cd /usr/local/nginx html

cd html/ (注:存放网页路径)

```

```

思考:

1.网页和 nginx 的关系

nginx 将网页发送给浏览器

2.浏览器和 nginx 的关系

浏览器问 nginx 要网页

nginx 将网页发送给浏览器

3.浏览器和网页的关系

浏览器是能读懂网页的 html,js,css 代码,渲染出效果

```

![image-20220423200516418](https://img-blog.csdnimg.cn/img_convert/b53a2f5d63b05f1fecb0018f3fc338da.png)

```

web:网站

表单信息放到数据库里去,nginx 只能访问静态页面,Python 把信息传到数据库里。Python——》flask web 后端——》user 表

```

```bash

如何判断 nginx 是否运行?

1.看进程

ps aux|grep nginx

2.看端口

netstat -anplut

```

```

项目组:

1.前端

2.后端

3.运维

4.测试

5.dba

6.项目经理

```

```

cd /usr/local/nginx/html/ 放网页

rz 只能传文件,不能传文件夹

```

---

## 二. 云服务器 ssh 登陆-安装 NGINX-上传网页

```

自己的虚拟机的 linux 系统里呢?(如何上传自己的网页到 linux 系统呢)

Xshell 连过去

自己的云服务器,如何上传自己的网页到云服务器呢?

1.xshell --》公网 ip(云服务器的公网 ip)106.54.83.86 (注:xshell 连接)

用户名 root --》密码是有个初始密码 (注:passwd 改密码)

2.自己去编译安装 nginx--》建议使用脚本安装-->启动 nignx

3.上传自己的网页到 nginx 的 html 目录下 (注:scp 或上传 Windows【中间环节】)

4.去访问 106.54.83.86

```

```bash

(注)脚本:

# cat onekey_install_nginx_v2.sh

#!/bin/bash

#1.下载 nginx 软件包

mkdir -p /nginx2

cd /nginx2

curl -O http://nginx.org/download/nginx-1.19.2.tar.gz

#2.解压,进入文件夹

tar xf nginx-1.19.2.tar.gz

cd nginx-1.19.2

#3.编译前的配置

#新建用户 sanchuang9

useradd sanchuang9

#安装 gcc 和 pcre-devel 软件包,因为 nginx 需要这些软件,解决软件的依赖关系

yum install gcc make pcre-devel zlib-devel -y

#配置 nginx,指定安装路径和启动 nginx 的用户名

./configure --prefix=/usr/local/nginx2 --user=sanchuang9

#4.编译

make

#5.编译安装

make install

#6.关闭防火墙服务和设置开机不要启动

service firewalld stop

systemctl disable firewalld

#7.修改 PATH 变量,方便可以直接使用 nginx

echo "PATH=$PATH:/usr/local/nginx2/sbin" >>/root/.bashrc

```

```bash

ip add 看的是私网 IP

scp 远程 copy

/usr/local/nginx/sbin/nginx 启动 nginx

ps aux|grep nginx 查看 nginx 进程

```

```

搞一个自己的网站

1.购买一个云服务器--》阿里云或者腾讯云,华为云,亚马逊免费试用 --》学生版 10 元/月

2.购买域名 5 元/年

在哪里购买的云服务器,就在哪里买域名,方便备案

3.备案

如果不备案,不能正常的使用域名去访问

```

```bash

cat /etc/centos-release 查看 centos 版本

```

---

## 三. 压缩命令-xz-gzip-bzip2-zip-tar-配置 NGINX 服务器支持下载功能

> 主要内容:压缩命令-tar(重点) 对文件和文件夹进行压缩

>

> ==tar -czf -->.tar.gz==

>

> ==tar cjf -->.tar.bz2==

>

> ==tar cJf -->.tar.xz==

>

> ==tar tf \*.tar.\*==

>

> ==tar xf \*.tar.\*==

>

> \# tar xf boot_log_passwd.tar.gz ==-C== /zhanghuayou/

>

> 压缩命令-xz-gzip-bzip2-zip:都只能对文件进行压缩

>

> zip -->.zip

>

> gzip -->.gz

>

> xz --->.xz

>

> bzip2 -->.bz2

>

> zip yum install zip unzip -y

>

> ==zip chenpeng.txt.zip chenpeng.txt==

>

> ==unzip passwd.zip==

>

> gzip

>

> ==gzip hosts==

>

> ==gunzip hosts.gz==

>

> ==zcat messages.gz==

>

> xz

>

> ==xz hosts==

>

> ==unxz hosts.xz==

>

> ==xzcat messages.xz==

>

> bzip2 yum install bzip2 -y

>

> ==bzip2 passwd==

>

> ==bunzip2 passwd.bz2==

>

> ==bzcat passwd.bz2==

>

> 配置 nginx 服务器支持下载功能

### 压缩命令-xz-gzip-bzip2-zip-tar

```

为什么要打压缩包?

备份的时候,能节约空间

网络传送的时候,能节约时间

```

```

windows 里有哪些解压缩软件?

winrar

7z

好压

快压

Zip

```

```

windows 里的.rar 压缩文件传递到 linux 里,是否能打开

sc.rar (注:rar 解压不了,linux 里没这个软件,需要安装才有)

sc.zip -->linux 默认支持

windows 能解压 linux 里的所有的压缩文件

```

```

nginx-1.19.2.tar.gz linux 里的压缩文件

压缩文件红色的,可执行文件绿色的

```

### zip

> zip

>

> zip 只能对文件进行压缩,不能对文件夹进行压缩

>

> yum install zip unzip -y ==(注:zip 需要安装)==

>

> zip 打压缩包

>

> unzip 解压的

> \# ==zip chenpeng.txt.zip chenpeng.txt== (注:==用法==)

>

> 压缩后的文件 源文件

>

> [root@sanchuang-linux lianxi]# zip passwd.zip passwd

>

> adding: passwd (deflated 61%) (注:deflated 压缩,泄气)

>

>

>

> ll -h 看大小

>

> passwd.zip

>

> \# ==unzip passwd.zip 解压==

>

> Archive: passwd.zip

>

> inflating: passwd

>

> \# ls

>

> passwd passwd.zip

>

> ==zip 的缺点:有源文件和新文件==

### gzip

> gzip

>

> gzip 可以直接在源文件上压缩,后缀名是.gz (注:与 zip 的区别,理解为 zip 的升级版)

>

> ==(注:gzip 不需要安装)==

>

> hosts passwd passwd.zip

> \# ==gzip hosts (用法)== gzip + 源文件

>

> \# ls

>

> hosts.gz passwd passwd.zip

>

>

>

> \# ==gunzip hosts.gz (解压)==

>

>

>

> \# ==zcat messages.gz (查看压缩文件)==

### xz

> xz ==(注:xz 不需要安装)==

>

> https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.11.tar.xz

> \# ==xz hosts (用法)==

>

> \# ls

>

> hosts.xz passwd passwd.zip

>

>

>

> \# ==unxz hosts.xz (解压)==

>

> \# ls

>

> hosts passwd passwd.zip

>

>

>

> \# ==xzcat messages.xz (查看压缩文件)==

>

> gz 与 xz 比较,xz 效果好

>

> 推荐使用 xz

### bzip2

> bzip2 ==(注:bzip2 需要安装)==

>

> yum install bzip2 -y

> \# ==bzip2 passwd (用法)==

>

> passwd.bz2

>

>

>

> \# ==bunzip2 passwd.bz2 (解压)==

>

> passwd

>

>

>

> \# ==bzcat passwd.bz2 (查看压缩文件)==

> zip -->.zip

>

> gzip -->.gz

>

> xz --->.xz

>

> bzip2 -->.bz2

### tar

```

tar -->兼并了 gzip,xz,bzip2

tarball -->使用 tar 命令打的压缩包--》归档文件--》压缩文件--》一个压缩包里可以包含很多的文件

tar 是可以对文件和文件夹进行压缩的

Compressed TAR Archive [compressed 压缩的 archive 归档]

https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.11.tar.xz

http://nginx.org/download/nginx-1.19.2.tar.gz

mysql-8.0.21-linux-glibc2.12-i686.tar.xz

https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.46.tar.bz2

```

### 配置 NGINX 服务器支持下载功能

> (autoindex auto 自动 index 索引)

>

> \# cd /usr/local/nginx/conf/ ==(注:配置目录)==

>

> \#

>

> \# vim nginx.conf ==(注 2:修改配置文件)即加上 autoindex on;这一行==

>

> location / {

>

> root html; (注 4:指定 nginx 的存放网页的目录为 html--》网页根目录)

>

> index index.html index.htm; (注 5:配置 nginx 服务器支持的首页为 index.html 或者 index.htm index.html 的优先级要高,没有 index.html 的时候,就会去查找 index.htm)

>

> ==autoindex on; (注 3:添加配置,让 nginx 支持显示文件夹里的内容)==

>

> }

>

> \# /usr/local/nginx/sbin/nginx -s reload 重新加载 nginx

![image-20220423202600884](https://img-blog.csdnimg.cn/img_convert/fc4b0158f5cf4cc6c6be3200e98288f6.png)

![image-20220423202613795](https://img-blog.csdnimg.cn/img_convert/ceae87290868074d97a5fc03006fb6c0.png)

压缩包上传

---

## 四. tar 命令

> tar 命令

>

> 用途:制作归档文件、释放归档文件

>

> 格式:tar [选项]... 归档文件名 源文件或目录

>

> tar [选项]... 归档文件名 [-C 目标目录]

>

> 常用命令选项

>

> -c:创建 .tar 格式的包文件 create

>

> -x:解开.tar 格式的包文件 extract 提取

>

> -v:输出详细信息 verbose 冗余的

>

> -f:表示使用归档文件 file

>

> -t:列表查看包内的文件 list

>

> 常用命令选项

>

> -C:解包时进入指定的目标文件夹

>

> ==-z:调用 gzip 程序进行压缩或解压==

>

> ==-j:调用 bzip2 程序进行压缩或解==

>

> ==-J:调用 xz 程序进行压缩或解压==

> \=\=\= ==(经典组合)==

>

> ==创建压缩包==

>

> ==tar -czf -->.tar.gz==

>

> ==tar cjf -->.tar.bz2==

>

> ==tar cJf -->.tar.xz==

>

> ==创建压缩包到指定的路径 使用绝对路径==

>

> \# tar czf /zhanghuayou/passwd.tar.gz ==/etc/passwd==

>

> tar: 从成员名中删除开头的“/”

![image-20220423202847149](https://img-blog.csdnimg.cn/img_convert/2dbb477a32027feb5f6f6501c52370c8.png)

> ==查看压缩包里的内容==

>

> ==tar tf \*.tar.\*==

> ==解压--》默认解压到当前目录==

>

> ==tar xf \*.tar.\*==

>

> ==-C 解压到指定的路径==

>

> \# tar xf boot_log_passwd.tar.gz ==-C== /zhanghuayou/

> \# mkdir tar

>

> \# cd tar

>

> \# ls

>

> \# tar czf passwd.tar.gz ==/etc/passwd==

>

> ==tar: 从成员名中删除开头的“/”==

>

> \# ls

>

> passwd.tar.gz

>

> \# tar tf passwd.tar.gz

>

> ==etc/passwd (注:/ 没有了)==

>

> [root@sanchuang-linux tar]# ls

>

> passwd.tar.gz

>

> \# tar xf passwd.tar.gz

>

> \# ls

>

> ==etc== passwd.tar.gz ==(注 2:解压后是文件夹 etc,没有“/”)==

>

> \# cd etc/

>

> \# ls

>

> passwd

>

> \#

> ==给文件夹打压缩包==

>

> \# tar cJf boot.tar.xz /boot

>

> \# tar czf boot.tar.gz /boot

>

> \# tar cjf boot.tar.bz2 /boot

>

>

>

> \# ==time tar czf boot.tar.gz /boot (注:压缩命令前接 time 可以看时间)==

>

> tar: 从成员名中删除开头的“/”

>

>

>

> real 0m8.467s

>

> user 0m6.851s

>

> sys 0m2.226s

>

>

>

> \#

>

> ==(注:↓接 v 可以看过程,信息输出。一般写脚本不接 v)==

>

> \# tar czvf boot_log_passwd.tar.gz /boot /var/log /etc/passwd ==(注:文件和目录)==

>

> \# tar czf boot_log_passwd.tar.gz /boot /var/log /etc/passwd

>

> tar: 从成员名中删除开头的“/”

>

> tar: 从硬连接目标中删除开头的“/”

>

> \#

>

>

>

> ==后面打包的文件如果压缩文件的名字一样,会覆盖==

---

## 五. 压缩练习-备份脚本

> 主要内容:

>

> 排错多个文件 exclude 排除 ==(难点)==

>

> \# tar ==--exclude==\=/boot/{grub2,efi,loader} ==-czvf== no_grub_boot.tar.gz /boot

>

> \# ==date +%Y%m%d%H%M%S==

>

> 20200924170954

>

> 当前的日期往后面推 10 天

>

> \# ==date -d "10 days"==

>

> 如何得到命令的执行结果赋值给变量

>

> ==方法 1:==

>

> ctime=$(date +%F)

>

> ==方法 2:反引号==

>

> ctime=\`date +%F\`

>

> 命令的嵌套

>

> ==设置时间 -s==

>

> \# ==date -s '2020-10-10' (注:调时间)==

>

> \# date -s =='2020-10-10 9:53:00' (注:指定小时分钟秒)==

>

> \# ==cal 看日历== calendar(日历)

>

> \# ==cal 2020== 看 2020 年日历

---

```bash

压缩练习:

1.在 windows 里使用 winrar 软件压缩 2 个文件,一个是.rar 格式的文件,一个是.zip 的文件,具体压缩那个文件,你自己定义

2.将文件传输到 linux 系统的/lianxi 目录下,尝试解压.zip 的文件

# unzip

3.复制/etc/passwd 文件到/lianxi 目录下,将/lianxi 目录下的 passwd 文件压缩成 passwd.xz

# cp /etc/passwd . # xz passwd

4.复制/etc/ssh/sshd_config 文件到/lianxi 目录下,然后进行压缩为 sshd_config.gz

# cp /etc/ssh/sshd_config . # gzip sshd_config

5.查看 passwd.xz 里的内容,查看 sshd_config.gz 里的内容

# xzcat passwd.xz # zcat sshd_config.gz

6.新建文件夹/backup_sc,然后复制/lianxi 下的 passwd.xz 和 sshd_config.gz 到/backup_sc 目录里

7.到/backup_sc 目录里解压 passwd.xz 和 sshd_config.gz 文件

8.将/lianxi 下的 sshd_config.gz 传到 windows 系统里看是否可以解压?

```

> 练习 8:

>

> 1.创建一个目录在/lianxi 下叫 tar

>

> \# mkdir /lianxi/tar

>

> 2.进入 tar 目录,复制/etc/hosts 文件和/etc/passwd 到 tar 目录下

>

> \# cd /lianxi/tar # cp /etc/hosts . # cp /etc/passwd .

>

> 3.复制/boot 目录到 tar 目录下

>

> \# cp /boot . -r

>

> 4.将当前目录下的 boot 目录打包放在/lianxi/tar 目录下叫 boot.tar.gz

>

> \# tar czf boot.tar.gz boot

>

> 5.查看 boot.tar.gz 文件里的内容

>

> \# tar tf boot.tar.gz

>

> 6.将 hosts 文件和 passwd 文件打包放到 host_passwd.tar.bz2 文件

>

> \# tar cjf host_passwd.tar.bz2 hosts passwd

>

> 7.查看 host_passwd.tar.bz2 文件里的内容

>

> \# tar tf host_passwd.tar.bz2

>

> 8.将/boot/目录和/etc/passwd、/var/log 目录备份到/lianxi 目录下叫 boot_pw_log.tar.xz

>

> \# tar cJf /lianxi/boot_pw_log.tar.xz /boot /etc/passwd /var/log

>

> 9.新建/bak 目录,然后将/lianxi 目录下的 boot_pw_log.tar.xz 解压到/bak 目录下

>

> \# mkdir -p /bak # tar xf boot_pw_log.tar.xz -C /bak

>

> 10.将/boot 目录下的除 grub2 目录以外的所有文件都备份到/bak 目录下叫 no-grub.tar.gz

>

> tar czvf --exclude ==(难点)==

>

> \# tar ==--exclude=/boot/grub2 -czvf== no_grub_boot.tar.gz /boot

>

> centos8 里的 (注:==--exclude=/boot/grub2 -czvf 前后不能错,grub2 不能接/,-czvf -不能省略==)

>

> \# tar ==--exclude=/boot/grub2 -czvf== no_grub_boot.tar.gz /boot

>

> centos7 里的

>

> \# tar czvf no_grub2_boot.tar.gz /boot ==--exclude=/boot/grub2==

>

> 排错多个文件 exclude 排除 ==(难点)==

>

> \# tar ==--exclude==\=/boot/{grub2,efi,loader} ==-czvf== no_grub_boot.tar.gz /boot

>

> (注:目录结构 {} 表示多个)

```

练习:

编写一个脚本实现备份/var/log 目录下的所有文件到/bak 目录下,要求文件名是包含当天日期,精确到秒,文件名例如:2013-6-6-2_30_20-log.tar.gz。同时要求删除/bak 目录下七天前的备份文件,只保留最近 7 天的文件。

```

> 需求分析:

>

> ==年月日小时分钟秒==

>

> ==时间戳:年月日小时分钟秒==

>

> 获得当前的日期 date

>

> %Y year ==(注:年)==

>

> %m month (01..12) ==(注:月)==

>

> %M minute (00..59) ==(注:分钟)==

>

> %d day of month (e.g., 01) ==(注:日)==

>

> %H hour (00..23) ==(注:小时)==

>

> %S second (00..60) ==(注:秒)==

>

> %F full date; same as %Y-%m-%d ==(注:年月日)==

>

>

>

> \# ==date +%Y%m%d%H%M%S==

>

> 20200924170954

>

> \# ==date +%Y-%m-%d%H%M%S==

>

> 2020-09-24171008

>

> \# ==date +%Y-%m-%d_%H_%M_%S==

>

> 2020-09-24_17_10_31

>

> \#

>

>

>

> 当前的日期往后面推 10 天 ==(推迟时间)==

>

> \# ==date -d "10 days"==

>

> 2020 年 10 月 04 日 星期日 17:21:27 CST

>

> \# ==date -d 10days==

>

> 2020 年 10 月 04 日 星期日 17:21:37 CST

>

> \#

>

>

>

> \# ==date -d 10hours==

>

> 2020 年 09 月 25 日 星期五 03:22:13 CST

>

> \#

> 如何得到命令的执行结果赋值给变量

>

> ==方法 1:$( ) (更好,因为可以嵌套)==

>

> ctime=$(date +%F)

>

> ==方法 2:反引号 (不能嵌套)==

>

> ctime=\`date +%F\`

>

> \# ==ctime=$(date +%F)==

>

> \# echo $ctime

>

> 2020-09-24

>

> \# ==sctime=\`date +%F\`==

>

> \# echo $sctime

>

> 2020-09-24

>

> \#

>

> \# ==touch $(date +%F).txt==

>

> \# sg=zhanghuayou

>

> \# echo $sg

>

> zhanghuayou

>

> \# echo $sg1

>

> (注:该行输出为空)

>

> \# echo ==${sg}==1

>

> zhanghuayou==1==

>

> \#

>

>

>

> 删除/bak 目录下七天前的备份文件

>

> find /bak -type f -mtime +7 -name "*.tar.gz" -exec rm -rf {} \;

>

> 脚本名字:

>

> backup_log.sh

> 命令的嵌套

>

> \# which mkdir

>

> /usr/bin/mkdir

>

> \# rpm -qf /usr/bin/mkdir

>

> coreutils-8.30-6.el8_1.1.x86_64

>

> \# softname\===$(rpm -qf $(which mkdir)) (注:$( ) 好,可以嵌套)==

>

> \# echo $softname

>

> ==coreutils-8.30-6.el8_1.1.x86_64==

>

> \# softname2\===\`rpm -qf \`which mkdir\`\`==

>

> ==rpm:未给出要查询的参数==

>

> ==mkdir: 缺少操作数==

>

> 请尝试执行 "mkdir --help" 来获取更多信息。

>

> \#

---

> 编写一个脚本实现==备份==/var/log 目录下的所有文件到/bak 目录下,要求文件名是包含当天日期,精确到秒,文件名例如:2013-6-6-2_30_20-log==.tar.gz==。同时要求删除/bak 目录下七天前的备份文件,只保留最近 7 天的文件。

>

> ==通过文件名知道使用 tar 命令,而不是 cp==

> \# mkdir /lianxi/9_25

>

> \# cd /lianxi/9_25

>

> \# vim backup_log.sh

>

> \#!/bin/bash

>

>

>

> \#获得当前的时间,精确到秒

>

> ctime=$(date +%Y%m%d%H%M%S)

>

>

>

> \#备份

>

> mkdir -p /bak

>

> tar czf /bak/${ctime}-log.tar.gz /var/log

>

>

>

> \#删除 7 天前的==备份文件==,只保留最近的 7 天内的文件

>

> find /bak -type f -mtime +7 ==-name “*log.tar.gz”== -exec rm -rf {} \;

> 怎么验证删除 7 天前的文件?

>

> 答:调时间

>

> ==设置时间 -s==

>

> \# date

>

> 2020 年 09 月 25 日 星期五 09:53:18 CST

>

> \# ==date -s '2020-10-10' (注:调时间)==

>

> 2020 年 10 月 10 日 星期六 00:00:00 CST

>

> \#

>

> \# date -s =='2020-10-10 9:53:00' (注:指定小时分钟秒)==

>

> 2020 年 10 月 10 日 星期六 09:53:00 CST

>

> \#

>

> \# date -s '2020-9-25 9:55:00'

>

> 2020 年 09 月 25 日 星期五 09:55:00 CST

>

> \#

> \# ==cal 看日历== calendar(日历)

>

> \# ==cal 2020== 看 2020 年日历

>

> ![image-20220423204712463](https://img-blog.csdnimg.cn/img_convert/a684dc45b46a24f2a7befb4787bc011b.png)

>

> ![image-20220423204723137](https://img-blog.csdnimg.cn/img_convert/40b7ed492d303a58bbb29617559c02a5.png)

>

>

---

发布于: 刚刚阅读数: 2
用户头像

mycpen

关注

还未添加个人签名 2020.12.08 加入

还未添加个人简介

评论

发布
暂无评论
06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本_Linux_mycpen_InfoQ写作社区