25.liunx学习

https://www.cnblogs.com/pyyu/artitles/9313587.html  linux安装
https://www.cnblogs.com/pyyu/p/9276851.html  linux命令学习大全
https://www.cnblogs.com/pyyu/p/9213237.html  Linux之文档与目录结构学习
https://www.cnblogs.com/pyyu/p/9314206.html  linuxShell基本命令学习
https://www.cnblogs.com/pyyu/p/9355477.html  linux用户管理
https://www.cnblogs.com/pyyu/articles/9365054.html  linux常用服务安装部署
https://www.cnblogs.com/pyyu/articles/9460649.html  linux vim使用
https://www.cnblogs.com/pyyu/p/9467289.html   mysql+centos7+主从复制

今日内容:

端口:

端口概念:
0——65535
银行的端口,不同的端口对应不饿欧诺个的业务

8000 自定义的django端口 9000 8080 8001
3306 mysql
80 web服务端口, 浏览器的默认找80
443 https + http + ssl 加密技术,对http通信加密
6379 redis默认端口
23 telnet
22 ssh端口,我们远程连接的协议就是ssh(远程加密传输协议)
远程连接服务器的知识:
ssh命令,通过ssh+ip+端口,找到我们的服务器,对应找到22端口的ssh协议

ipconfig 这是看windows的ip
ip addr show 查看linux的ip
通过ssh命令。通过root账户登录192.168.13.98这台机器
ssh [email protected]


在公司中也就是给你一个服务器的ip,自己连接

linxu的多个用户,多终端的概念

linux 的终端概念
termeinel

linux有7个终端
f1-f7 f1是图形化界面


远程终端:使用ssh 进行连接

w:命令查看linux终端信息
xshell 3 个终端 
vmware 2个终端

用户&环境变量:

whoami: 查看当前用户
pwd:查看密码文件
linux节本命令:其实就是一堆英文缩写,使用linux系统的熟练度,就是看你命令掌握了多少
ip addr show
ls  查看linux文件夹信息 list缩写
    linux 白色的是普通文件;蓝色的是文件夹
cat 查看linux文件
cd change 目录 更改目录
touch 创建普通文本
touch ni test1 test2
mkdir 创建文件夹
pwd print work 目录   打印当前工作目录(我在那?)

vi linux底下的文本编辑器 notepad++
1.vi 文件, 此时进入了一个命令模式,需要你输入i字母,插入指令
2.在编辑器模式下,可以输入一堆字符串
3.当代码写完了, 按下esc回到命令模式。按下: 输入w q !
    :wq! write 写去quit 退出!强制退出
    :q! 不保存退出

mv 移动指令 move
    1.移动文件、文件夹到别的目录
    2.改名 mv 旧名字 新名字
    
rm 删除 remove 指令   删除命令,在服务器上慎用

rm 文件名 删除文件的命令 

rm 文件名* 支持通配符

# 这是mysql默认数据文件
rm -rf /var/lib/mysql/*

# 环境变量
linux 环境变量 path
/opt/python36/bin/python3.6
在linux上安装python3的时候
echo "$PATH" 查看环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin/python3.6:/opt/nginx/bin/niginx
当我们输入python3.6的时候,他会按照顺序,自上而下查找

# linux的绝对路径,相对路劲
只要从根目录开始的查找,就是绝对路径
不是从根目录开始的都是相对路径
# mkdir -p /tmp/temp  -p地轨创建
# [root@localhost ~]#   用户身份提示符
用户名  主机名  工作目录
# useradd  xiaoming 创建用户
# passwd   1234    创建密码
普通用户是$ ,root用户是#

# echo "woshishui" > ../../test.text  将内容写入文件
python with open
w 覆盖写入
a 追加写入
# > 重定向输出符
# >> 重定向追加输出符
# << 重定向写入符
# cat ../../test.text -n  查看文本内容, -n 换行
# cat >> kun.txt << EOF
adfsafsdf
EOF   必须使用这个结束

vi:

# 文件
vi 相当于记事本 不好用
vim  支持编程的记事本编辑器, notepad++
vim filename.txt 进入命令行模式后,可以输入各种命令
set nu 显示行号
yy 复制   n yy  复制下面的n行
dd 删除   n dd  删除下面的n行
G  跳转到文件尾部:
gg 跳转到文件开始
o 下一行
在脚本文件的第一行会被认为是,帮助文档。
cat 看多之后全部输出,不适合长文本
more 查看长文本, b上翻页, 空格下翻
linux的man手册 查看命令的帮助

cp:

# 拷贝移动
cp settiongs.py settings.bak 拷贝文件  -r递归拷贝,目录
cp 要拷贝的文件  输出的文件
mv settiongs.py old.py   移动,改名

find:

# 查找文件命令
everything window找文件的app
find / -name settings.py   
find / -type f -name *.py
find 从哪找 找什么
# 管道命令 |  可以将命令一的结果给命令二执行
grep "STA"  settings.py
cat settiongs.py | grep "STA"  查找STA开头的内容,并显示
grep -v "STA*" settings -n   查找除了STA开头的内容,并显示行号
# head命令
head -2 t.sh 查看头两行, 不写-2默认前十行
# tail命令
tail -2 t.sh 查看后两行, 不写-2默认后十行
tail -f settings.py  -f 动态监听,可以查看实时写入数据

alias:

# dns 是什么? bind
/etc/hosts   本地dns解析文件
www.s15baidu.com  192.168.121.11
# alias  别名命令
alias rm='rm -i'   当你输入了rm的时候就等于输入了rm -i
alias rm=rm   改变命令别名,十分恐怖,有人改了这个你不知道,直接把库删了,就完了
unalias rm   取消这个快捷方式
alias rm="echo 不能使用rm"
docker devops 运维开发,敏捷开发
# which   rm  输出rm命令的根目录
# whereis rm  输出rm可能出现的所有目录
# who  查看登录过得用户  w也可以

scp:

# 远程传输
scp [email protected]:/tmp/yuan.txt /opt/  将远程文件传输到本地172.20.163.39的opt目录下
scp t.sh [email protected]:/opt/    传入文件t.sh到远程172.20.163.39

查看文件大小:

# 查看文件大小
ls -lh 查看文件大小
du -h  查看文件大小
du -sh /var/log 统计log文件的总大小

top:

# 进程
top 动态查看进程
free -m  查看硬盘的大小
# 加锁
chattr +a t.sh  加锁
lsattr t.sh  查看文件隐藏属性
chattr -a t.sh  去锁
# 查看时间
date  查看时间
ntpdate -u ntp.aliyun.com  同步时间

wget:

# 爬虫
wget 地址  下载资源命令
# window 和 linux传入文件的东西
yun install lrzsz -y
reboot命令用于重启机器
poweroff用于关闭系统
开发 
运维
运维开发
熟悉python OOP编程
熟悉linux环境编程(centos.redhat 7)
熟悉部署python程序通过niginx+uwsigi+virtualenv+supervirso
熟悉mysql curd 主从同步,权限分配
熟悉redis curd redis主从数据同步,RDB,AOF数据持久化
熟悉niginx部署多虚拟主机,反向代理,负载均衡
熟悉docker使用,构建dockerfile编写镜像,搭建私有docker仓库
熟悉saltstack运维管理软件使用
熟悉ubantu

今日内容:

https://www.cnblogs.com/pyyu/p/9355477.html

ifconfig 查询,设置网卡和ip参数
ifup ens33  启动网卡
idown 关闭网卡
systemctl restart/start/stop newwork  网卡网络
useradd  用户名  存放用户信息到/etc/passwd
passwd  用户名 设置修改,密码, 如果不指定用户,默认当前用户

id:

id root  查看root用户的uid和ugroup
/etc/passwd 存放用户信息 
/etc/group  存放用户组
# 通过id命令查看用户信息

root用户切换普通用户不需要密码,普通用户切换root用户需要知道密码
# 切换用户身份
su  - xiaoming  切换用户  中间的-代表连同环境也切换

xshell快捷键
ctrl +l 清屏
ctrl +d 退出登录
ctrl + shift + r 快速登录

userdel:

# 修改命令提示符,添加绝对路劲,和时间
$PS1="[\u@\h \w \t]\$"

# groupadd命令  用户组添加
groupadd 用户名

# 删除用户
userdel xiaobao  未删除家目录

grep xiaobai /etc/passwd

userdel -rf xiaobai  直接强制删除用户,包括家目录

sudo:

# /etc/sudoers
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
当权限不够的时候去/etc/sudoers 将自己的用户加上,就可以了
sudo ls /etc/passwd

用root身份去执行命令 sudo
编辑这个文件,写入一些配置 vi /etc/sudoers
找到这一行配置

# ALLOW ROOT TO RUN ANY COMMADND ASYWHERE
root   all=(all)     all
xiaoming   all=(all)   all

visudo命令,提供语法检测,写错之后会提供提示

# 修改主机名:
hostnamectl set-hostname s15nb
重新登陆就改了

文件目录权限:

# 显示所有文件
ls -la
drwxr-xr-x.  3        root    root    18       Dec 13 23:54    .cache
drwxr-xr-x.  3        root    root    18       Dec 13 23:54    .config
权限类型     软连接数   用户    组     文件大小    日期           文件名

user/owner 文件使用者,文件属于哪个用户
group 属组,文件属于哪个组
others 既不是user,也不再group,就是other,其他人

# 文件夹的权限:
d   rwx              r-x                r-x
    root这个用户     属于root组里的      既不是root用户,又不在root组的权限
d 代表文件夹
- 代表普通文件

r 可读
w write 可写
x 可执行

-rw-r--r--. 1 root root 72 Dec 18 18:15 t.sh
这个文件属主 root
属组 root
是什么类型文件  是  -  普通文件
权限是什么  rw-r--r--
    这个文件的属主的权限是rw-
    这个文件的属组的权限是r--
    其他用户的权限是r--
#   
对于普通文件的可读可写可执行
可读 cat vi more less head tail tac
可写 echo vi  >  重定向符号
可执行  二进制文件,可运行的程序

#
r 可以对目录执行ls列出所有文件
w 可以在这个目录创建文件
x 可以cd进入这个目录,或者查看详细信息

# 
文件创建时间Dec 18 18:15
文件大小 72

# 修改文件的权限
r 4
w 2
x 1
sudo chomd 777 t.sh

# 更改属主
chown xiaoming t.sh

# 更改组
chgrp xiaoming t.sh

-rw-r--r--   
普通文件,root 可读可写,group 可读,others 可读

# id  查看自己的分组
# chmod o+w  t.sh

软连接:

# ln命令
ln -s 目标文件绝对地址 快捷方式的绝对路劲
sudo ls -s /home/xiaoming/a.txt /home/a.txt

py3 /opt/python36/bin/python3.6
python的时候,就去path中去找

# 将python3.6的解释器,添加快捷方式到 /usr/local/sbin/python3.6
# 当我们输入python的时候
ln -s /opt/python36/bin/python3.6  /usr/local/sbin/

# 软连接和path添加二选一,即可,都添加会出现问题

echo $PATH
PATH变量只能添加目录,不能添加到指定文件
将某个文件县的所有内容,都加入环境变量
/usr/local/bin:/bin
:/usr/bin:/usr/local/sbin
:/usr/sbin
:/home/xiaoming/.local/bin
:/home/xiaoming/bin
# 假设不适用这个
:/opt/python36/bin  这才是正确的添加python环境变量方式

压缩:

# tar 压缩解压命令
lrzsz  上传下载小工具
xftp  文件传输工具

tar 命令
-c 压缩参数
-x 解压参数
-v 显示过程
-f 指定文件    这个参数写在最后

语法:
# 压缩文件
tar -cf 压缩文件名  想压缩的内容
# 解压文件
tar -xf 压缩文件名
# gzip 压缩

网络端口:

# django运行之后,会咋么样?
开通一个端口 8000
等待连接
产生一个进程
产生日志
可能出现一堆大黄页

linux一个程序运行后
# 进程查看
ps -ef | grep  22查看任务是否运行有进程
# 端口查看
netstat -tunlp | grep  查看任务的端口号是否启动
# 
来自同一台机器的三个ip
0.0.0.0  127.0.0.1和172.20.22.12;暴露应用又在对外的ip地址,又暴露在自己的回环地址
127.0.0.1  本地回环地址,代表机器自己的内部一个ip,其他人访问不到,并且每个人都有自己127.0.0.1
172.20.22.12  本地对外可以提供访问的ip地址,每个人都不一样
# 
python manage.py runserver 启动django
python manage.py runserver  172.20.22.12:8000 在172.20.22.12地址上启动800端口提供访问
其他人访问地址172.20.22.12:8000
# 
python manage.py runserver 默认启动在127.0.0.1:8000 
其他人访问不到你的项目
# 
python manage.py runserver  0.0.0.0:8000
其他人可以访问,你的ip+端口就可以了
#
如果您没有ifconfig
输入这个命令,安装一个:yum install net-tools -y
# 如果你发现你没有命令,在确保你没有敲错代码的情况下,就是没有安装这个命令
在你装机的时候,最小化安装包,可能只有500个软件
选择web服务软件安装,1000个软件
如果缺少命令,不要怕,缺啥就安装啥

yum 这个软件管理命令安装

进程ps:

ps 命令用于查看系统中的进程状态,格式为ps [参数]
ps  命令常用参数
-a     显示所有进程
-u     用户以及其他详细信息
-x    显示没有控制终端的进程
ps -ef 
ps -aux  两个命令差不多,下面全一些
# 杀死进程
kill 进程号(PID)
#  查询
ps -ef | grep python 显示python相关的进程
root       1042      1  0 17:34 ?        00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
xiaoming   1779   1451  0 19:58 pts/0    00:00:00 python python.py
xiaoming   1832   1785  0 19:59 pts/1    00:00:00 grep --color=auto python
# kill 命令, 如果你kill一个进程,死活杀不死,就加上-9   
-9 强制杀死进程,以及相关的依赖(为什么杀不死就是因为其他东西在用)
kill -9 mysql
kill -9 redis

防火墙:

# selinux 内置的防火墙
# 查询selinux状态
getenforce
# 暂时停止selinux
setenforce 0
# 永久关闭
vi /etc/selinux/conf
#     enforcing - SELinux security policy is enforced.   开启
#     permissive - SELinux prints warnings instead of enforcing.   临时关闭
#     disabled - No SELinux policy is loaded.   永久关闭
修改如下行
SELINUX=enforcing
重启机器,使得selinux永久关闭

# 软件防火墙
iptables -F  清空规则
iptables -L   查看规则
查看iptables防火墙规则,看到只有如下三个,就说明,没有规则了
关闭防火墙需求,防止他影响你的其他服务访问
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

# 停止防火墙服务
systemtcl start/restart/stop firewalld
# 删除iptables的开机自启动
systentcl disable firewalld  

字符编码:

# linux的字符编码:
# 查看字符编码:
echo $LANG
# 修改linux的字符编码
1.编辑字符编码的文件
/etc/locale.conf
写入如下变量
LANG=zh_CN.UTF-8
2.读取这个文件,使得变量生效
source  读取命令
source /etc/locale.conf   
3.查看系统字符编码

df显示磁盘分区可用空间:

df -h 查看磁盘空间命令

tree:

tree ./  当前目录树状结构

如果没有的话就yum install tree -y

grep:

grep命令  是一个过滤命令
- v  取反
grep "^#"  redis.conf   显示redis.conf 文件 所有的注释行
grep -v  "^#"  redis.conf   显示redis.conf 文件 所有的非注释行
grep -v  "^#"  redis.conf | grep -v "^$"  同时去掉空行,里面是正则匹配

sed替换:

sed 's/xiaoming/make/g'  name.conf   将name.conf文件中的xiaoming全部替换成make

> & >>

> 覆盖写入     类似python稳健操作中的w模式
>> 追加写入    类似python稳健操作中的a模式
touch a.txt
[xiaoming@localhost ~]$ echo "hello" > a.txt 
[xiaoming@localhost ~]$ cat a.txt 
hello
[xiaoming@localhost ~]$ echo "hello" >> a.txt 
[xiaoming@localhost ~]$ 
[xiaoming@localhost ~]$ cat a.txt 
hello
hello
[xiaoming@localhost ~]$ echo "hello" > a.txt 
[xiaoming@localhost ~]$ cat a.txt 
hello

kill&pkill:

kill  进程号
pkill  进程最后面的名字

dns:

bind软件,配置dns服务的
常见的互联网 dns服务器
8.8.8.8 谷歌
114.114.114.114  114dns服务器地址
223.6.6.6 阿里巴巴的dns服务器地址
119.29.29.29  腾讯

# linux dns配置文件 /etc/resolv.conf
[xiaoming@localhost ~]$ cat /etc/resolv.conf
# Generated by NetworkManger
nameserver 119.29.29.29  主dns
nameserver 233.5.5.5  备用dns

# /etc/hosts文件 本地dns强制解析的文件
[root@localhost /]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
119.29.29.29 www.baidu.com

# dns解析顺序
1./etc/hosts
2./etc/resolv.conf

linux用于解析域名的命令
# nslookup

定时任务:

crontab  -l  查看定时任务
crontab  -e 编辑定时任务
crontab  -r  删除定时任务

在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
vim /etc/crontab
[root@localhost /]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
分 时 日 月 周

# crontab的语法:
crontab (选项)(参数)
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。

1 查看计划任务的执行:tail -f /var/log/cron
2 写计划任务时,命令必须加上绝对路径,否则会出现这种情况:从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,比如* * * * * reboot就会出现这种情况,需要将reboot写成/usr/sbin/reboot
3.  计划任务执行的命令 是否存在,软件是否安装  
4. 确保crontab服务运行  

* * * * * /usr/bin/echo "你好" >> /home/a.txt    必须使用绝对路劲

# 作业
所有命令一定要用绝对路径来写!
#每分钟执行一次命令
* * * * * 命令
#每小时的3,15分组执行命令
3,15 * * * * 命令
#在上午8-11点的第3和第15分钟执行
3,15 8-11 * * * 命令
#每晚21:30执行命令
30 21 * * * 命令
#没周六、日的1:30执行命令
30 1 * * 6,0 命令
#每周一到周五的凌晨1点,清空/tmp目录的所有文件
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
#每晚的21:30重启nginx
30 21 * * * /opt/nginx/sbin/nginx -s reload
#每月的1,10,22日的4:45重启nginx
45 4 1,1,10,22 * * /opt/nginx/sbin/nginx -s reload
#每个星期一的上午8点到11点的第3和15分钟执行命令
3,15 8-11 * * 1 command

linux软件包管理:

window软件包
    .exe可执行格式
    msi可执行安装文件
    .zip 压缩格式
    .rar 压缩格式
linux  软件包管理
linux 软件格式分为

1.源码包格式
    1.下载python3的源码包
    2.解压缩源码包,切换目录
    3.编译且安装
    4.配置环境变量
    5.使用python3
2.rpm二进制包格式
    1.下载软件的rpm格式包
    2.rpm -ivh lrzsz
    3.使用lrzsz工具
    
    补充:
    1.如果直接安装mysql15.6 rpm。依赖了很多的其他的软件包,我们得手动解决依赖
    2.所以rpm安装方式,需要手动解决依赖关系,很麻烦,不建议使用
    
lrzsz这是软件包的名字
提供的命令是
rz 接收文件
sz 发送文件

3.yum安装方式
yum工具,自定搜索下载rpm包,且安装,且解决依赖关系,自动处理下载其他的依赖rpm包

# 软件开发目录规范
lib 库文件
core 核心文件
bin 可执行文件
log 日志文件
readme 使用说明

和使用python的模块
pip3 install -i http://pypi.douban.com/simple flask

# 使用linux的软件,yum默认区centos官网去下载
yun istall 
yum源的仓库路径在:
/etc/yum.repos.d/
这个目录地下,只有以.repo结尾的文件,才会被识别为yum仓库

# 配置国内的yum源
1.在/etc/yum.repos.d/目录地下,定制我们自己的repo的仓库
2.我们自己没有yum仓库,去找阿里巴巴的yum仓库
3.https://developer.aliyun.com/mirror  阿里巴巴的镜像站
4.下载阿里巴巴的yum仓库文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget下载文件之后,-O 参数 ,指定放到某个目录下,且改名
5.清楚yum缓存  yum clean all
6.生成新的yum缓存  yum makecache


# 发现centos的镜像源没有一些软件,额外配置一个仓库,里面入了很多第三方的软件,例如mysyl,redis,niginx
1.在配置epel额外的仓库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.最好在生成yum缓存
yum makecache
3.随心所欲的使用 yum工具

# yum 实例用法
yum安装nginx web  服务器软件
1.yum install niginx -y     -y 一路都是yes
2.启动niginx
直接输入niginx
3.修改nginx主页面,文件名字叫做index.html
find / -name index.html  查找文件所在地
修改 这个index.html 随意显示一句话

系统服务管理命令
只用通过yum安装的软件,默认才能使用这个命令管理器

systemtcl stop/restart/start nginx   关闭服务进程
kill  进程号
    

作业:

作业:
1.Linux下的uid、gid是什么?
    id 用户名   查看用户的id身份
    uid: 用户id,用来表示每一个用户的唯一标识
    gid: 组id,用来表示每一个用户组的唯一标识
2.如何切换用户?
    su - xiaoming
3. 创建删除用户   在/etc/passwd文件下
    创建:useradd 用户名  passwd 用户名 
    删除:userdel 用户名   删除用户记录  从/etc/passwd文件下
         userdel -rf 用户名  强制删除用户及其家目录
4.怎么使用root身份执行命令
    编辑/etc/sudoers
    visude 可以直接修改,检测语法
    前面加上sudo,如果不管用就去修改/etc/sudoers文件
    sudo ls t.sh
5.linxu文件权限有哪些?
    r:可读  4
    w:可写  2 
    x:可执行  1
    -:没有权限  0
6.请说出755,740分别是什么权限?
    755: 属主rwx:可读可写可执行, 属组: r-x: 可读,可执行, 其他用户: r-x: 可读,可执行,
    740: 属主rwx:可读可写可执行, 属组: r--: 可读, 其他用户: ---: 无任何权限
7.修改文件权限只有属主可读可写可执行
    chmod u+r u+w u+x  t.sh
8.如何修改文件的属主和属组
    属主:chown xiaoming(用户名)  t.sh    
    属组:chgrp xiaoming(组名) t.sh
9.请解压oldboy.tar.gz
    oldboy.
    tar.gz 这个文件有两层压缩后缀,一个是tar一个是gzip
    我们得一层一层的解压,先去掉.gz后缀,在去掉.tar后缀
    tar -zxf oldboy.tar.gz
    -xf 解压
    
    -x  解压
    -f 指定某个压缩文件
    -z 就是调用gzip去解压文件
    -c 压缩
    -C 制定解压的目录
    
    tar -cf   ./test/a.tar  a.txt     将当前目录下的a.txt压缩到,test目录下,名字是a.tar
    tar -xf   a.tar  -C /home/       将a.tar解压内容,放入/home/目录下
10.压缩/tmp/下的所有内容oldbody.tar.gz
    tar -zcf oldbody.tar.gz tmp/*
11.如何查看linux端口号?
    netstat -tunlp |grep 端口号
12.如何杀死进程号8888
    kill 8888 or kill -9 8888
13.如何关闭iptables?
    systenctl          stop firewalld
    系统服务管理命令    
                     disable   禁用
14.查看linux的dns文件?
    cat /etc/resolv.conf
15.linux解析dns的命令是什么?
    nslookup
16.写一个定时任务,每周3的凌晨1点,压缩/var/log/下的所有文件为 log.tar.gz?
    crontab -l 查看定时任务
    crontab -e 编写定时任务
    crontab -r 删除定时任务
    在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
    vim /etc/crontab   编辑编写的定时任务
    0 1 * * 3  /usr/bin/tar -zcf log.tar.gz /var/log/* 
17.如何安装mysql-5.6.rpm?
    rpm -ivh mysql-5.6.rpm
    yum install mysql-5.6.rpm -y
18.如何安装nginx?
    yum install nginx -y
    启动:nginx
    关闭:systemctl stop nginx
19.如何配置yum epel源,用文字描述?
    epel源是干什么的?
    仓库:第三方包的仓库,存放的是rpm格式的软件包
    1.备份yum源?
        mkdir repo_dir
        mv *.repo repo_dir
    2.下载阿里云repo文件。
        wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    3.清楚缓存和再次缓存
        yum clean all
        yum makecache
        便于日后yum生成新的yun缓存
    4.扩展软件源
        yum install -y epel-release
20.centos7用什么命令管理服务?
    systemctl restart/start/stop
    centos6 用的是 service系统服务管理命令
21.如何给linux添加一个dns服务器记录?
    vi /etc/resolv/conf
    添加一个
    nameserver x.x.x.x
    
    # 错了
    vim /etc/hosts   强制解析本地的dns服务,自己和自己玩
    添加 ip 域名
22.每个月5,15, 25 的晚上5点50分重启niginx?
    50 17 5,15,25 * *  /usr/bin/systemctl restart nginx
    50 17 5,15,25 * *  /usr/bin/nginx -s reload
23.每周3到周5的深夜11点,备份/var/log/ 到 vmtp/?
    0 23 * * 3-5 /usr/bin/cp -r /var/log/*  /vmtp/    # -r递归拷贝
24.每天早上6.30清空/tmp/内容?
    30 6 * * * /usr/bin/rm -rf /tmp/*
25.每个星期三的下午6点到8点的第5,15分钟执行命令command?
    5,15 18-20 * * 3 /usr/bin/command
26.查看mysql的端口状态?
    netstat -tunlp | grep mysql
    vim /etc/my.cnf   编辑mysql的配置文件
27.如何查看nginx的进程?
    ps -aux | grep nginx
28.如何杀死nginx进程?
    systemctl stop nginx
    kill -9 nginx的pid

path:

系统的环境变量配置文件
 vim /etc/profile
 # linux有一个全局个人配置文件  /etc/profile
            将PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin/
            加入到这个文件的最后一行即可
source /etc/profile

今日内容:

1.编译安装python3

https://www.cnblogs.com/pyyu/articles/9365054.html

- 下载python3源码包
cd opt
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
    # 如果没有wget 则 yum install wget -y
    1.安装python前的库环境,非常重要
    通过yum 安装工具包,自动处理依赖关系,每个软件通过空格分隔
    # 提前安装工具包,以后就少了很多莫名其秒的报错
    yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
- 解压缩源码包
    下载好python3源码包之后
    python-3.6.taz
    解压缩
    tar命令可以解压缩tgz格式
    tar -xvf python-3.6.tgz
- 切换源码包目录
    cd python-3.6
- 编译且安装
    1.释放编译文件makefile,这个makefile就是用来编译且安装的
        ./configure --perfix=/opt/python36/
         -- perfix 指定软件的安装目录
    2.开始编译python3
        make
    3.编译且安装(之一在这一步,才会生成/opt/python36/)
        make install 
    4.配置环境变量
        1.配置软连接,其实解释windows的快捷方式
            # 将python3.6的解释器,添加快捷方式到 /usr/local/sbin/python3.6
            # 当我们输入python的时候
            # ln -s 目标文件(就是我们自己的程序) 软连接文件(就是你把软连接放到哪里)理解为windows可以是, -s后的第一个参数是实际的.exe文件, 第二个参数就是我们把快捷方式创建到哪里,比如:桌面上
            ln -s /opt/python36/bin/python3.6  /usr/local/sbin/
        2.配置环境变量(PACH)二选一即可
            echo $PATH 查看环境变量
            /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
            加上自己的python bin目录,但是这个变量操作符,只是临时的,须要写入文件中,永久生效
            PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin/
            # linux有一个全局个人配置文件  /etc/profile
            将PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin/
            加入到这个文件的最后一行即可
            # source /etc/profile
        3.下载django
            pip3 install -i https://www.pypi.douban.com/dimple django
            # 这个时候可能会装不上,是因为linux的内置防火墙问题,输入下面的命令临时关闭
           # selinux 内置的防火墙
            # 暂时停止selinux
            setenforce 0
        4.新建django项目
            django-admin startproject mysite
            cd mysite
            python manage.py runserver 0.0.0.0 :8000 启动
            # 这个时候使用window浏览器访问的时候还是会出现问题,因为settings中的ALLOW_HOSTS=【*】没有配置 
            vim /opt/python36/settings  修改
            # 新建app
            django-admin startapp app01 or python manage.py startapp
            
        5.tree mysite/ 查看django项目目录结构        
           yum install tree -y
        6.查找django文件    
            find / django
            
如果你的yum命令,提示yum进程被锁定,无法使用
解决办法:ps -ef | grep yum 进程,这是首有另一个进程在使用域名
yum是单进程的,不能再下载其他的东西的时候使用,yum只能有一个

python
吞吐量
django 600
flask  1000+
tornado  异步非阻塞的框架 1800+
sanic 2800+ uvlopp事件驱动 用在游戏接口领域

go
net/http web服务器 6W+

2.python的虚拟环境 virtralenv

1.需求在linux服务器上,既可以有django2.0环境,也能运行django1.11环境
思路:
    1.django2.0想要运行,我们得准备python解释器+pip3软件包管理
    2.还想运行django1.11,python解释器+pip3
        - 再安装一个python3.6?????
        - pip3 安装的模块,都放在哪里/opt/python36/lib/python3.6/site-package
    virtualenv 就是一个虚拟解释器
    基于物理环境下的python解释器,虚拟/分身出的多个解释器
2.安装virtualenv
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
    安装完成之后就多出一个virtualenv命令
3.创建独立运行环境-命名
    mkdir myenv
    cd myenv
    virtualenv --no-site-packages --python=python3  venv #得到独立第三方包的环境,并且指定解释器是python3
    # --no-site-packages 这是构建干净,隔离的模块参数
    # --python=python3  这个参数是指定虚拟环境以哪个物理解释器为基础的
    # venv 这个可以随便起名,就是你创建的虚拟环境的名称
4.激活虚拟环境source
    进入你的虚拟环境的bin目录中,找到这个虚拟环境的actinvate文件
    第三步执行完成之后会出现一个venv/bin文件夹,里面有activate
    # 激活虚拟环境,原理就是修改PATH变量,path是有顺序执行的
    echo $PATH
    which python3
    which pip3  检查虚拟环境是否正常
    
    source activate  # 激活虚拟环境
    deactivate  # 退出虚拟环境
5.测试安装两个虚拟幻境,venv1,venv2,并运行2个djagno不同版本的项目

6.虚拟与物理对比
    # 这个时候pip list查看安装过的包发现虚拟环境很干净
    # 这个时候可以创建多个虚拟环境,每个虚拟环境使用不同的django版本创建项目
7.装包
    保证本地开发环境和线上一样的
    1.到处当前线上的包
        pip3 freeze > requirements.txt
        他会将当前虚拟环境的安装的包生成一个文件
    2.将requirements.txt拿到我们得项目
        pip3 install -r requirements.txt
        快速安装和线上相同的包

3.管理python虚拟环境的工具virtualenvwrapper

引子:为什么会出现这么一个工具呢?因为安装好virtualenv之后我们可以在任何目录创建虚拟环境,创建多了之后可能会不知道到底在哪里。还有就是你正env1中写代码,但是这时候env2线上出问题了,每次都要切换source acticate 和 deactivate很麻烦,所以才有了这个管理工具。
1.安装
    pip3 install virtualenvwrapper
    find /opt/*  virtualenv  查找
2.修改环境变量,每次开机就加在这个virtualenvwrapper工具
    # 修改文件,这个文件是用户在登陆的时候,就读取这个文件
    vim ~/.bashrc
    # 写入以下两行代码 export 读取shell变量用的
    export WORKON_HOME=~/Envs   #设置virtualenv的统一管理目录
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的参数,生成干净隔绝的环境
    
    # 绝对要记住下面的路径是你自己的,需要改成自己的,不要粘贴过去找不到会报错
    export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3     #指定python解释器
    source /opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
3.刷新一下
    读取文件,使得生效,此时已经可以使用virtalenvwrapper
    source ~/.bashrc
4.创建env虚拟环境
    mkvirtualenv  # 自动下载虚拟环境,并创建
    mkvirtualenv   djangoenv1
5.切换虚拟环境
    workon  可以直接列出所有的虚拟环境
    workon djangoenv1
6.手动推出虚拟环境
    deactivate
7.删除虚拟环境,首先要退出虚拟环境
    rmvirtualenv djangoenv1
8.列出所有的虚拟环境
    lsvirtualenv
    列举所有的环境。
    cdvirtualenv
    导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。
    cdsitepackages
    和上面的类似,但是是直接进入到 site-packages 目录中。
    lssitepackages
    显示 site-packages 目录中的内容。
    
9.在每个虚拟环境中
    which python3  如果发现使用的不是当前虚拟环境下的python3就说明出错了
    需要修改vim /etc/profile 中的PATH, 将自己/opt/python36/bin这一句移到,最前面。之后删除错误的虚拟环境,重新创建,之后进行测试,看第十步。
10.注意这里的path,要将物理解释器的python,方在path最前面
    PATH = /opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:

1577257214568

vim编辑器:

vimer https://www.cnblogs.com/pyyu/articles/9460649.html linux vim使用

移动光标:

w(e)  移动光标到下一个单词
b    移动到光标上一个单词
数字0  移动到本行开头
$    移动光标到本行结尾
H    移动光标到屏幕首行
M    移动到光标到屏幕的中间一行
L    移动光标到屏幕的尾行
gg    移动光标到文档的首行
G    移动光标到文档尾行
ctrl + f  下一页
ctrl + b  上一页

`.  移动光标到上一次的修改行

查找:

/chaoge     在整篇文档中搜索chaoge字符串,向下查找
?chaoge     在整篇文档中搜索chaoge字符串,向上查找

*        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
#        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处

gd        找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上

%    找到括号的另一半!!

删除复制黏贴:

yy    拷贝光标所在行
dd    删除光标所在行
D     删除当前光标到行尾的内容
dG    删除当前行到文档尾部的内容
p     粘贴yy所复制的内容
x   删除光标所在的字符
u     撤销上一步的操作

3yy    拷贝光标所在的3行
5dd    删除光标所在5行

底线命令:

在命令模式下输入冒号(英文的:),就进入了底线命令模式,在底线命令模式下可以输入单个或多个字符的命令,常用命令有:
:q!     强制退出
:wq!    强制写入退出
:set nu 显示行号
:数字  调到数字那行
随时按下esc可以退出底线命令模式

:! command    暂时离开vim指令模式,执行command的结果
例如  :!ip a    临时看一下ip信息,然后可以回到vim

:set nu    显示vim行号
:set nonu    取消行号

mariadb&mysql:

https://www.cnblogs.com/pyyu/p/9467289.html

其实就是名字不懂,都是mysql
mysql(分支mariadb)
1.安装mariadb
    - yum
    - 源码编译安装
    - 下载rpm安装
    yum和源码编译安装区别?
        1.路径区别yum安装的软件是它自定义的,源码安装的软件./configure -- prefix=软件安装的绝对路径
        2.yum安装的软件,版本可能比较低,而源码编译安装,版本可控
        3.编译安装的软件,支持第三方功能扩展./configure 这里可以加上很多参数,定制功能
    - yum仓库的区别:
        1.阿里云的yum仓库
        2.假设mysql官网,也会提供rpm包,源码包,以及yum源,供给下载
2.安装mariadb的官网yum源,用于手动下载mariadb的rpm软件包,自动安装
    注意点:阿里云提供的yum仓库,和epel源仓库,它也有mariadb,但是版本比较低
    比如阿里云提高的版本是:5.5.60-1.el7_5
    我们需要高版本的就需要选用mariadb的官方的源
3.配置管的mariadb的yum源,手动创建mariadb.repo仓库文件
    touch /etc/yum.repos.d/mariadb.repo
    然后写入如下内容:
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
4.centos7安装Mariadb
    yum install MariaDB-server MariaDB-client -y
5.如果下载速度太慢,请删除mariadb.repo,只是为了使用阿里云yum中的mariadb
    rm -rf /etc/yum.repos.d/mariadb.repo
    yum clean all
6.使用阿里云的yum下载 mariadb(阿里云的mariadb是小写的,他官网的是大写的)
    yum install mariadb-setver mariadb -y
7.启动
    systemctl start/stop/restart/ mariadb   
    systemctl enable mariadb  #设置开机启动
8.确保mariadb服务器启动后,执行命令初始化 
    mysql_secure_installation  这条命令可以初始化mysql,删除匿名用户,设置root密码等等。。。
9.设置mysql的中文版码格式,修改/etc/my.cnf
    1 
        \s 可以查看mysql的详细信息,比如:字符集
        vim /etc/my.cnf
        [mysqld]  看到这个东西,加上下面两行,使其支持中文
            character-set-server=utf8
            collation-server=utf8_general_ci
    2 
        重启mariadb服务,读取my.cnf新配置
        systemctl restart mariadb
    3    
        输入 \s 查看编码
10.mysql常用命令
    desc 表明  查看表结果
    create database 数据库名
    create table 表明
    show create table  表名称  查看如何创建表
    show create database 数据库名  查看如何创建数据库的
    # 修改mysql的密码
    set password = PASSWORD("redhat");
    # 创建mysql的普通用户, 默认非常低
    create user xiaoming@'%' identified by "xiaoming"
    # 查询mysql数据库中的用户信息
    use mysql;
    select host,user,passwod from user;
11.给用户添加权限
    grant all privileges on *.* to 账户@主句;  对所有的库和所有的表授权所有权限
    grant all privileges on *.* to xiaoming@'%'; 给小明授权所有权限
    #刷新权限
    flush privileges;
12.授予远程登录的权限    (root不能远程登录的问题??)
     grant all privileges on *.* to xiaoming@'%';
    
    # 给予root用户权限授予远程登录的命令
    grant all privileges on *.* to root@'%' identified by 'xiaoming';
    
    此时可以再windows登录linux的数据库
    mysql -u xiaoming -p -h 192.20.178.32
13.学习mysql的数据备份与恢复
    # 登出mysql,备份导出
    mysqldump -u root -p --all-databases > /tmp/db.dump 导出所有文件db,到另一个目录文件下
    mysqldump -uroot -proot --databases db1 db2 > /tmp/db.dump   到处指定的库
    # 登录状态,导入数据恢复
    mysql -u xiaoming -p 
    source /tmp/db.dump   恢复数据
    # 登录状态,第二种恢复数据的方式
    mysql -uroot -p < /tmp/db.dump    
补充:
    配置文件格式
        *.conf
        *.cnf
        *.ini
        *.ymi

mysql主从复制:

mysql的主从复制架构
mysql的主从复制架构,需要准备两台机器,并且可以通信,安装好连个mysql,保持版本一致
mysql -V 查看版本号
1.
# 停止mysql
systemctl stop mariadb
# 修改配置文件
vim /etc/my.cnf
#修改内容
#解释:server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin 
  [mysqld]
  server-id=1     # 标注 主库的身份id
  log-bin=mysql-bin    # 那个binlog的文件名
2.
#重启mariadb
systemctl start mariadb
3.
mysql -V 查看版本号
# 查看主库的状态
mysql -uroot -p
show master status;  # 这个命令查看主库的二进制文件的日志信息,从库配置是会用到

scp  /etc/yum.repos.d/* [email protected]:/etc/yum.repos.d/

4.主库设置从库的配置参数
    # 这些操作是在主库中进行的
    1. 新建用于主从同步的用户小明,允许登录的从库是'172.202.22.21'
        create user 'xiaoming'@'172.202.22.21' identified by 'xiaoming';
    2. 给从库账号授权,说明给chaoge从库复制的权限,在192.168.178.130机器上复制
        grant replication slave on *.* to 'xiaoming'@'172.202.22.21';
    3.实现对主数据库锁表只读,防止数据写入,数据复制失败
        flush table with read lock;  加锁
         unlock tables;  解锁
    4.将数据导出
        mysqldump -uroot -p --all-datebases > /opt/all.dump
        scpr /opt/all.dump [email protected]:/opt/   将备份数据传到从库服务器 
    5.在从库中进行数据导入
        source /opt/all.dump;
        show databses;  查看数据十分复制成功
    6.
        show master status; 查看数据库(主库)状态
5.从库的配置
    1.设置server-id值并关闭binlog功能参数
        数据库的server-id在主从复制体系内是唯一的,Slave的server-id要与主库和其他从库不同,并且注释掉Slave的binlog参数。
    2.因此修改Slave的/etc/my.cnf,写入
        [mysqld]
        server-id=3   # 这里的id必须是和主库的id不同,注释掉log-bin那一行,从库不需要
    3.重启数据库
        systemctl restart mariadb
    4.检查Slava从数据库的各项参数
        show variables like 'log_bin';   # 显示二进制log文件的状态
        主库是:ON, 从库OFF
        show variables like 'server_id';
    # 这个时候会出现一个问题,登录的从库的时候,会发现,原本没有设置密码但是现在有了,原因是导入了主库的所有数据之后,把主库的密码也导过来的,直接使用主库的密码登录
    5.开启主从同步
        配置复制的参数,Slave从库连接Master主库的配置
        mysql > change master to master_host='主库的ip',
        master_user='主库的用户名',
        master_password='主库的密码',
        master_log_file='主库的呢个/etc/my.cnf 中的log-bin的值',
        master_log_pos='主库show master status;结果中的呢个节点数字';
    6.启动从库的同步开关,测试主从复制的情况
        start slave;
    7.查看复制状态
        show slave status\G;    
        主要是显示中的:
        Slave_IO_Running:Yes;  yes就是对的 ,如果是no,就执行第六步
        Slave_SQL_Running:Yes;
    # 当配置完这些后就可以在将主库的锁解掉,之后我们在主库中进行的创建、更改、删除(数据、表、库)等操作,都会在从库中赋值一份出来。
    8.tip:  这一步也是很关键的,我们需要将从库设置为只读操作(root用户之外的用户只读,root是个变态,默认拥有所以权限,限制不了)
        注意此处还未配置从库的只读模式,只需在slave服务器上配置/etc/my.cnf,加上以下配置,并且在slave上创建普通用户,使用普通用户主从同步即可达到只读的效果,如果用root用户,无法达到readonly,这是一个坑
        [mysqld]
        character-set-server=utf8
        collation-server=utf8_general_ci
        log-error=/var/log/mysqld.log
        server-id=3
        read-only=true
        [client]
        default-character-set=utf8
        [mysql]
        default-character-set=utf8

redis:

https://www.cnblogs.com/pyyu/p/9843950.html

1.安装 https://www.cnblogs.com/pyyu/p/9467279.html
    yum安装:建议学习完成之后使用,
        yum install redis -y, 不要使用systemtcl
        netstat -tunlp | grep redis
    编码安装:建议学习使用
        1.下载源码包
            wget http://download.redis.io/releases/redis-4.0.10.tar.gz
        2.解压
            tar -zxf redis-4.0.10.tar.gz
        3.进入redis源码,直接可以编译安装
            cd redis-4.0.10
            make && mkinstall   # 编译且安装
        4.可以指定配置文件启动redis
            grep -v  "^#"  redis.conf | grep -v "^$"  过滤空行和注释行
            # 下面我写的每一行是一句
            注意:每次修改文件前需要杀死redis进程,之后再修改配置文件
            ps -ef | grep redis
            kill redid_pid   关闭redis
            vim redis-4.0.10/redis.conf
            
            0.设置后台启动
            修改daemonize no   将no 改为yes 就可以使redis后台运行
            redsi-server redis.conf   通过配置文件启动redis
            这个时候使用windows的python脚本连接这个redis发现连不上
            #  想要其他人访问你的redis 
            ps -ef | grep redis
            kill redid_pid   关闭redis
            之后修改vim redis.conf, 内容如下:
            
            1. 修改redis.conf中bind参数,让redis可以远程访问
                bind 127.0.0.1  默认是这个,只能本机方位,改为0.0.0.0 让所有人访问
            2.修改redis.conf中port端口,防止黑客攻击
                port 6379 给为 6377 随意改一个端口,不想让别人知道
            3.修改redis.conf中 requirepass,设置redis密码,防止黑客攻击
                设置redis的密码进行登录验证
                redis.conf 中 requirepass 默认是被注释了的 随便设置一个值requirepass 1  这个1就是我的密码
                redsi-server redis.conf   通过这个配置文件启动,配置文件中设置了很多我们需要的参数
            4.通过新的端口和密码登录redis
                redis-cli -p 6377 
                登录后 
                auth 密码
                redis还支持交互式的参数,登录数据库
                redis-cli -p 6377  -a 1   这种方式不安全,其他人可以使用history命令,获取你的密码
2.

redis持久化&发布订阅:

1.redis发布订阅
    - 三个角色
        订阅者
        发送者
        接受者
        ip a  也可以显示ip地址
    - 订阅命令
        redis中的命令,连个redis-cli窗口
        PUBLISH channel 频道内容   # 发布消息
        SUBSCRIBE channel     # 订阅频道
        # 支持正则匹配的发布模式
        PUBLISH python12 频道内容   # 发布消息
        SUBSCRIBE python*     # 订阅频道

redis持久化:

https://www.cnblogs.com/pyyu/p/10009493.html

1.redis持久化
    touch myredis.conf    可以自定义redis的配置文件
    vim myredis.conf
    # 写入下面内容
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379              #定义持久化文件存储位置
    bind 10.0.0.10  127.0.0.1    #redis绑定地址
    requirepass xiaoming            #redis登录密码
    # 换件持久化存储文件夹
    mkdir -r data/6379    # 没这个是启动不了redis,或者报错
    redis-cli myredis.conf   # 使用自己的配置文件
    修改完成配置文件之后一定要重启redis服务,kill -9 redis_pid ,systemctl restart redis
2.RDB持久化
    # RDB(持久化)
    内存数据保存到磁盘
    在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
    优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现
    rdb通过再redis中使用save命令触发 rdb
    # rdb配置参数:
    dir /data/6379/
    dbfilename  dbmp.rdb
    # 每过900秒 有1个操作就进行持久化
    save 900秒  1个修改类的操作
    save 300秒  10个操作
    save 60秒  10000个操作
    ####################################################
    # 在myredis.conf 中加一行
    filename myredis.rdb
    重启redis,kill -9 redis_pid,  systemctl restart redis
    这个时候data/6379还没有.rdb文件。
    set name alex
    save     使用save 触发持久化操作
    # 之后head data/6379/myredis.rdb就有内容了,但是你看不懂乱码
    # 主要就是通过配置文件,以及save命令触发才能生效
3.AOP在持久化
    - 开启aof功能
    
        # AOF持久化配置,两条参数 vim myredis.conf
        appendonly yes
        appendfsync  always    总是修改类的操作
                     everysec   每秒做一次持久化
                     no     依赖于系统自带的缓存大小机制
4.redis 持久化方式有哪些?有什么区别?
    rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
    aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog

redis不重启rdb数据切换到aof:

1.准备rdb的redis服务端
    redis-server myreids.conf(这是在rdb持久化模式下)
    备份rdb持久化的文件
2.切换rdb到aof
    redis-cli   登录redis,通过命令,激活aof持久化
    127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能(临时生效)
    OK
    127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
    OK
    
3.测试aof数据持久化
    将aof操作,写入配置文件中,永久生效,下次kiil 掉进程,重启生效
4.写入数据,测试文件
    使用tail -f appendonly.aof 实时动态监控文件变化

RDB和AOF参数:

其中配置文件中尽量不要出现中文,有时候出现错误无法排查,莫名其妙。

# 公用参数
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379              #定义持久化文件存储位置
bind 10.0.0.10  127.0.0.1    #redis绑定地址
requirepass redhat            #redis登录密码
save 900 1                    #rdb机制 每900秒 有1个修改记录
save 300 10                    #每300秒        10个修改记录
save 60  10000                #每60秒内        10000修改记录
# 公用参数

# RDB参数
dbfilename  dbmp.rdb        #rdb持久化文件
# RDB参数

# AOF参数
appendonly yes
appendfsync  always    总是修改类的操作
             everysec   每秒做一次持久化
             no     依赖于系统自带的缓存大小机制
# AOF参数

redis主从复制:

https://www.cnblogs.com/pyyu/p/9515937.html

# 一主两从,其实就是让从库读取主库生成的.rdb文件,以达到数据同步功能
1.创建三个配置文件
    touch redis-1.conf
    touch redis-2.conf
    touch redis-3.conf
    # 写入配置文件
    vim redis-1.conf
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379              #定义持久化文件存储位置
    bind 10.0.0.10  127.0.0.1    #redis绑定地址
    filename  myreids.rdb       #rdb持久化文件
    # 通过命令快速替换写入配置文件
    sed 's/6379/6380/' redis-1.conf > redis-2.conf   # 将redis-1.conf里面的6379改成6380写入redis-2.conf (其中替换只是临时的,不会改变redis-1.conf文件内容,但是>写入是持久的会在redis-2.conf写入改变后的真实内容)
2.创建文件夹
    mkdir -p /data/{6380,6381}   # 快速创建文件夹  -p  如果文件存在就使用原来的
    flushdb  # redis清库命令
    # 记住下面的命令都是危险操作,尤其是第二个,很危险,可能会杀死其他人的同名进程,是你丢了工作。
    kill redis_pid or pkill  redis-server   # 支持使用名字杀死进程
3. 配置主从配置
    vim redis-2.conf
    加上一行slaveof 127.0.0.1 6379   # 指定隶属的主机端口
    vim redis-3.conf
    加上一行slaveof 127.0.0.1 6379
    
    redic-cli -p 6379 info    # 查看详细信息,其中每一#注释就是一个字典的key
    redic-cli -p 6379 info  Replication   # 查看Replication这个key的值
4.redis主从复制,手动进行主从复制故障切换
    # 加入主库6379端口故障挂了,我们从两个从库中选取一个作为主库进行写操作
    kill redis_6379_pid
    1.进入redis-cli -p 6380
    info replication  # 查看状态信息
    2.解除自身隶属关系
        slaveof no one    # 解除关系
    3.将6381设置为6380的从库
        redis-cli -p 6381
        slaveof no one    # 解除关系
        slaveof 127.0.0.1 6380
    4.这个时候再检查6380,和6381的关系
        info replication  # 查看状态信息

    

redis哨兵:

https://www.cnblogs.com/pyyu/p/9718679.html

# Redis-Sentinel
不时的监控redis是否良好运行,如果节点不可达就会对节点进行下线标识
如果被标识的是主节点,sentinel就会和其他的sentinel节点“协商”,如果其他节点也人为主节点不可达,就会选举一个sentinel节点来完成自动故障转义
在master-slave进行切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

1.什么是哨兵呢?保护redis主从集群,正常运转,当主库挂了之后,自动从从库中挑选新的主库,进行同步
2.多个哨兵之间是通过我们上边学到的发布订阅实现的,多个哨兵同时监听同一个频道,来实现通信
3.redis哨兵的安装配置
    我们测试三个哨兵
    1.准备三个redis数据库实例(三个配置文件,通过端口区分)
        redis-server redis-1.conf
        redis-server redis-2.conf
        redis-server redis-3.conf
    2.准备三个哨兵配置文件
        touch redis-sentinel-26379.conf
        vim redis-sentinel-26379.conf
        
        # 写入下面内容
        port 26379  
        dir /var/redis/data/
        logfile "26379.log"
        sentinel monitor myredis(自己定义,就是在哨兵文件中给主库起一个别名,主库需要设置) 127.0.0.1 6379 2(这个参数的意思是几个哨兵同意可以换主人)
        sentinel down-after-milliseconds myredis 30000
        sentinel parallel-syncs myredis 1
        sentinel failover-timeout myredis 180000
        
        # 内容
        prot 26379
        dir /var/redis/data/
        logfile "26379.log"
        sentinel moitor myredis 127.0.0.1 6379 2
        sentinel dowm-after-milliseconds myreids 300000
        sentinel parallel-syncs myredis 1
        sentinel failover-timeout myreids 1800000

        # 快速生成其他两个配置文件(仅仅只是配置文件端口的不同)
        sed 's/26379/26380/g' redis-sentinel-26379.conf > redis-sentinel-26380.conf

        sed 's/26379/26381/g' redis-sentinel-26379.conf > redis-sentinel-26381.conf
    3.添加后台运行参数,使得哨兵服务进程在后台运行
        echo "daemonize yes" >> redis-sentinel-26379.conf
        echo "daemonize yes" >> redis-sentinel-26380.conf
        echo "daemonize yes" >> redis-sentinel-26381.conf
     4.启动redis-sentinel
        redis-sentinel redis-sentinel-26379.conf   # 启动
        sed -i 's/mymaster/myredis/g' redis-sentinel-26379.conf   # -i参数直接更改文件
        ps -ef | grep sentinel  # 查看哨兵进程起来没有
     5.查看哨兵的通信信息
        redis-sentinel -p 26379 info sentinel
        # Sentinel
        sentinel_masters:1
        sentinel_tilt:0
        sentinel_running_scripts:0
        sentinel_scripts_queue_length:0
        sentinel_simulate_failure_flags:0
        master0:name=mymaster,status=ok,address=192.168.119.10:6379,slaves=2,sentinels=3    
        #看到最后一条信息正确即成功了哨兵,哨兵主节点名字叫做mymaster,状态ok,监控地址是192.168.119.10:6379,有两个从节点,3个哨兵
     # 进行测试哨兵是否真的可以起作用   
     6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381状态
        redis-cli -p 6380 info replication
        redis-cli -p 6381 info replication
        redis-cli -p 63791 info replication
        kill 6379主节点
        如果切换主从身份之后,(原理就是更爱redis的配置文件,切换主从身份)
     7.恢复6379节点的数据库,查看是否将6379添加为新的从节点数据库
        redis-server redis-1.conf
        redis-cli -p 6379
        redis-cli -p 6379 info replication  # 6379端口主从信息
        # Replication
        role:master
        connected_slaves:1
        slave0:ip=127.0.0.1,port=6381,state=online,offset=41814,lag=1
        

redis_cluster安装配置:

1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}.conf
    # 创建文件夹
    mkdir s15rediscluster
    cd s15rediscluster
    touch redis-7000.conf
    # 编辑配置文件
    vim redis-7000.conf
    # 加上下面的东西
    port 7000
    daemonize yes
    dir "/opt/redis/data"
    logfile "7000.log"
    dbfilename "dump-7000.rdb"
    cluster-enabled yes   #开启集群模式
    cluster-config-file nodes-7000.conf  #集群内部的配置文件
    
    # 穿件目录
    mkdir -p /opt/redis/data
    # 生成5个配置文件
    sed 's/7000/7001/g' redis-7000.conf > redis-7001.conf
    sed 's/7000/7002/g' redis-7000.conf > redis-7002.conf
    sed 's/7000/7003/g' redis-7000.conf > redis-7003.conf
    sed 's/7000/7004/g' redis-7000.conf > redis-7004.conf
    sed 's/7000/7005/g' redis-7000.conf > redis-7005.conf
    
    # 启动6个redis实例
    redis-server redis-7000.conf
    redis-server redis-7001.conf
    redis-server redis-7002.conf
    redis-server redis-7003.conf
    redis-server redis-7004.conf
    redis-server redis-7005.conf
    
    # ps -ef | grep redis
2.配置ruby环境
    - 下载ruby源码包
        wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
    - 解压
        tar -xvf ruby-2.3.1.tar.gz
    - 释放makefile文件      
        ./configure --prefix=/opt/ruby/  # 指定ruby安装到哪里
        等出现makefile文件出现
    - 编译
        make && make install   # 编译安装
    - 
        cd /otp/ruby/
    - 配置ruby的环境变量
        echo $PATH
        vim /etc/profile
        写入最低行
        PAHT=$PATH:/opt/ruby/bin/
        wq!退出
        
        source /etc/profile   重新加载一下
        
    - 下载安装ruby操作redis的软件
        wget http://rubygems.org/downloads/redis-3.3.0.gem
         /opt/ruby/bin/gem install -l redis-3.3.0.gem
         
         find /opt -name redis-trib.rb
         

软件安装总结:

1.在linux服务器上安装软件
    分好几种:
        -yum安装
            - 配置yum源,配置163,清华,阿里云的yum源
            - 清空yum缓存
            - 生成新的yum缓存
        - 源码安装:
            - 下载软件的源码压缩包
            - 解压切换目录
            - 释放makefile,编译,安装
        - rpm 软件包安装
2.mariadb
    1.yum安装
        yum install mariadb-server mariadb -y
    2.安装好之后,启动服务端,只有通过yum安装的软件才能使用systemctl管理
        systemctl start mariadb
        如果这一步不启动的话,或报错:找不到mysql.sock文件
    3.数据库初始化
    4.mysql -uroot -p 
 3.redid
    1.源码包安装redis
    2.指定了/opt/redis/工作目录
    3.qidongredis服务端
        redis-server redis.conf  指定配置文件,
    4.软件的配置文件作用
        给这个软件,指定开发、关闭一些功能
        改redis端口
        改redis面
        redis的安全模式
        bing参数,指定redis启动的ip地址

1577155727728


1577152138713

https://blog.csdn.net/dongfei2033/article/details/81124465这里还有一个虚拟机关于ip不显示的问题。

1576463445891

这个东西很麻烦,其中还包括子网掩码很多东西搞不懂,如果只是需要连接本机的ip,你直接该就行了。

1576463356080

关于下面图片里面的to就是你这次访问的路由,form你来的路由,next就是this.$router.push函数。

1576465513644

写完之后,需要打包上线。
前段:npm run build  

猜你喜欢

转载自www.cnblogs.com/liuzhanghao/p/12105493.html
今日推荐