@TOC
06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
一. NGINX和浏览器、网页的关系
nginx是一个web服务器
html语言编写网页
cd /usr/local/nginx html
cd html/ (注:存放网页路径)
思考:
1.网页和nginx的关系
nginx将网页发送给浏览器
2.浏览器和nginx的关系
浏览器问nginx要网页
nginx将网页发送给浏览器
3.浏览器和网页的关系
浏览器是能读懂网页的html,js,css代码,渲染出效果
web:网站
表单信息放到数据库里去,nginx只能访问静态页面,Python把信息传到数据库里。Python——》flask web后端——》user表
如何判断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
(注)脚本:
# 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
ip add 看的是私网IP
scp 远程copy
/usr/local/nginx/sbin/nginx 启动nginx
ps aux|grep nginx 查看nginx进程
搞一个自己的网站
1.购买一个云服务器--》阿里云或者腾讯云,华为云,亚马逊免费试用 --》学生版 10元/月
2.购买域名 5元/年
在哪里购买的云服务器,就在哪里买域名,方便备案
3.备案
如果不备案,不能正常的使用域名去访问
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 -->.zipgzip -->.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
压缩包上传
四. 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: 从成员名中删除开头的“/”
==查看压缩包里的内容==
==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年日历
压缩练习:
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年日历