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:
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地址
https://blog.csdn.net/dongfei2033/article/details/81124465这里还有一个虚拟机关于ip不显示的问题。
这个东西很麻烦,其中还包括子网掩码很多东西搞不懂,如果只是需要连接本机的ip,你直接该就行了。
关于下面图片里面的to就是你这次访问的路由,form你来的路由,next就是this.$router.push函数。
写完之后,需要打包上线。
前段:npm run build