linux学习笔记
day1
黑客 linux unix windows 鼠标键盘 命令行 图形界面 命令 全栈开发工程师 自动化运维 #在公司的技术组里 都有哪些职位呢? 前端开发 前端小姐姐 UI做设计的小姐姐 后端开发 就是咱们这帮大佬 运维 背锅侠(背着黑锅,责任的大侠) 机房运维 负责服务器的上下架 桌面运维 专业修电脑 修打印机 系统管理员 负责liunux操作系统的维护 运维开发 linux + python 把平时自己手敲的linux命令,通过django Python啦。做一个web展示界面 武sir,cmdb运维自动平台,(资产管理平台) python + drf + django +mysql 代码发布平台 flask + git +jenkins 堡垒机 alex , 监控平台开发 zabbix + django + python 检测服务器硬件,软件,程序运行状态 架构师 精通网络 精通 xxx 语言,精通db boss提出要求,产品经理开始分析需求,提出方案,找后端开发,写代码,找前端写页面,找测试人员,测试代码 找运维人员,把代码打包,发给他,运维通过运维技术手段,上线代码-维持一个稳定的7*24小时运行的网站,且支持高并发的网站 shell linux操作系统 服务器的概念 笔记本的外观有什么? 电源 显示屏 外壳 触摸板 键盘 摄像头 电池 usb 网口 笔记本的内部? 硬盘 存储数据 内存条 redis数据运行在内存中 显卡 独立显卡 cpu 中央处理器 主板 风扇 散热管 网卡 声卡 输入设备 输出设备 鼠标键盘 音箱 显示器 服务器分类 硬件实体服务器 自建机房 机房托管(世纪互联) 托管其他公司的服务器 云服务器 linux只是个名字 不同的公司 对linux进行包装,扩展自己的命令,就出现了发行版 suse ubuntu redhat centos 在服务器上安装linux 1.服务器是什么?就是一个性能很强的计算机 2.安就完了呗,直接覆盖你笔记本的windows系统 3.双系统 windows+linux 要求你的硬件配置比较高 1 > 2 一对多 4.虚拟机, vmware workstation一个个人学习虚拟化软件 vmware workstation centos iso镜像文件 根据你的笔记本性能来决定,能装多少个linux 因为虚拟机是分散你的宿主机资源的 vmware esxi 企业版虚拟化 dell R710 26部实体服务器,有20个托管在世纪互联,6个有自建的机房,内网服务器 通过26台服务器,虚拟化出了 270+的linux操作系统 云服务器 ,5台阿里云,亚马逊云,华为云 pip install django 这个是从国外的python.org去下载django模块 很慢 顶多几百k pip install -i http://pypi.douban.com/simple ipython jupyter windows7 + vmware -centos -macos -windows 10 - vmware 释放鼠标 alt + ctrl python开发 就学数学 自己要进行逻辑开发 linux 就像学语文 做笔记,写文档,以后需求来了,看着文档去操作 背下来 linux发行版: centos 免费开源的 redhat 商业linux 收费的 收费资格认证 rhcsa 系统管理员 rhce 红帽认证工程师 8600+ rhca 红帽架构师 linux默认有一个root用户,密码 centos 服务器的网络地址 mac地址 物理网卡地址 身份证id ip地址地址 通过cmd命令行 输入 ipconfig 找到自己的ip地址 表示计算机在网络中的一个地址位置 ip 局域网私人的ip 0~255192.168.13.0 ~192.168.13.255 默认是桥接的上网方式 192.168.13.45 标识这讲师机的位置 192.168.13.25 ping 123.125.115.110 春生 123.125.115.110 ping 192.168.13.25 192.168.13.31 xx个同学 咱们装的linux机器 公网ip 全世界都能访问到的 https://www.baidu.com/ 通过dns(domain name server)解析成ip地址 电话簿就是存着 姓名 手机号 dns域名解析服务 (网络中的域名数据库) www.baidu.com 123.125.115.110 www.pythonav.cn 123.206.16.61 分配ip的方式 桥接 linux通过桥接的方式上网,也就是相当于教室里多了一个同学,插上了网线,它也会被交换机自动分配一个192.168.13.xx 192.168.13.xx 80+的同写,每个人装了一个linux,通过桥接上网,每个人的虚拟机也占了一个ip 160+ 当ip地址不够的话,就会出现ip冲突的问题 nat 为什么要有nat? 这个15期教室,交换机分配的地址只有 0~255个ip 仅主机host-only 你的linux只能和你自己的windows相同,其他人都无法访问 CBD,华贸中心 xx小区4号楼1单元202 表示小区房间号的门牌号 沙河华贸中心 xx小区4号楼1单元202 端口概念 0~65536 银行的窗口,对应不同的业务 服务器的端口,也对应不容的业务,服务,不可以冲突 8000 自定义的 django端口 9000 8080 8001 3306 mysql 80 http web服务端口,浏览器默认找80端口 443 https http + ssl 加密技术,对http通信加密 6379 redis默认端口 22 ssh端口 ,我们远程连接的协议,就是ssh(远程传输加密协议) 远程连接服务器的知识 ssh命令,通过ssh + ip + 端口,找到我的服务器 ,对应到 22端口的ssh协议 ipfconfig 这是看windows的ip ip addr show 查看linux的ip #通过ssh命令,通过root账户登录192.168.13.98这台机器 ssh root@192.168.13.98 在公司中,也就是给你一个服务器的ip,自己连接 ssh root@ip linux的多用户,多终端的概念 linux的终端概念 termrinel linux有7个终端 f1 ~ f7 7个终端,f1是图形化界面 远程终端 ssh 进行连接 w命令查看linux终端信息 xshlell 3个终端 vmware 2个终端 产品经理 架构师 boss 网络工程师 测试工程 测试开发 dba 公司最值钱的职位 数据管理员 mysql linux基本使用命令 输入linux命令,多用tab键去补全,用不着自己去记 linux的命令,其实就是一堆英文缩写 使用linux系统的熟练度,就是看你命令掌握了多少 ip addr show ls 查看linux文件夹信息 list缩写 linux 白色的是普通文件 蓝色的是目录,文件夹 pwd命令 print work 目录 打印当前工作目录 (我在哪?) mkdir 创建文件夹 mkdir 文件夹名 mkdir hanju huoying lol kele 创建多个文件夹 cat 查看linux 文本 cd change 目录 更改目录 touch 创建普通文本 touch 文件名 touch 文件1 文件2 文件3 vi linux底下的文本编辑器 notepad++ vi命令的用法 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安装好了之后,如何初始化服务器 防火墙1:iptables 第三方 防火墙2: selinux 系统自带的 1.关闭linux的防火墙(就是一堆安全机制的规则, 如同保安的贴墙上的那些规则,共享单车禁止入内) 因为后期我们去学习软件,学习nginx mysql redis ,为了学习的方便,关闭防火墙,允许所有的端口可以访问 iptables -F 清空防火墙规则 systemctl stop firewalld 关闭防火墙服务 systemctl disable firewalld 关闭防火墙开机自启的服务 2.关闭selinux ,此步骤,需要重启linux方可生效 vi /etc/selinux/config 找到 SELINUX=enforcing这一行 改成 SELINUX=disabled 配置linux的ip地址的方法 1.选择上网的方式,可以选择2种, 桥接 nat 2.选择了上网模式之后,可以通过命令管理网卡服务 这两条命令到底干什么了呢? 其实这两台命令,是重新读取一个文件中的配置,使得网络服务生效 1.进入网卡的工作目录 cd /etc/sysconfig/network-scripts/ 2.查看网卡配置文件 我的叫做ifcfg-ens33 vi ifcfg-ens33 找到ONBOOT=no这一行 ONBOOT=yes 使得下次开启机器,自动加载网络服务 systemctl stop network 停止网络服务 systemctl start network 开启网络服务, 软件架构 b/s 浏览器/服务器 c/s 客户端/服务端
day2
day104Linux笔记 今日linux博客地址: https://www.cnblogs.com/pyyu/p/9213237.html 文件目录管理 https://www.cnblogs.com/pyyu/articles/9314206.html linux基本命令讲解 内容回顾 服务器就是一个性能超强的计算机 linux是一个操作系统,centos7的发行版 linux命令是什么,就是一个可执行的二进制程序 python first.py python是解释文件中的代码 golang go run fitst.go golang去读取解释一个文件 go build fist.go 将first.go文件代码编译成一个可执行文件,fitst 这个命令 .java .rb(ruby) .c .exe(windows可执行文件) 增 touch 创建文本 mkdir 创建文件夹 vi 编辑文本的 删 rm 删除文件,文件夹 改 mv 改名-移动文件,文件夹 cd 更换目录 查 ls 查看文件夹内容 cat 读取文本文件内容 pwd 打印当前工作目录 ip addr show ip a ifconfig linux命令的学习 远程连接的操作 ip addr show ssh root@ip xshell 远程连接工具 linux文件目录结构 linux通过正斜杠区分目录 /var 存放经常变化的文件 /home 普通用户家目录 /home/xiaoliu 小刘同学的用户家目录 /etc 存放配置文件的目录 /etc/my.cnf mysql的配置文件,可以修改mysql的中文编码支持 /bin binary二进制 存放可执行文件,存放了一堆命令 /root 超级用户的家目录 /opt 存放第三方软件的目录 /opt/mysql /opt/nginx /opt/python3.6 settings.py django的功能性配置文件 useradd xiaoliu linux命令和参数 ls -la 命令 参数-l 以列表形式显示文件 -a 显示所有隐藏的文件 . 当前工作目录 .. 代表上一级工作目录 - 代表上一次的工作目录 ~ 当前用户家目录 linux以.开头的文件或者文件夹,都是隐藏的 mkdir -p 递归创建文件夹 mkdir ./s15/nvtongxue/{alex,wupeiqi,zhao} 一次性创建多个文件夹 rmdir 删除空的文件夹 rm -r 递归删除文件夹 慎重使用 慎重使用 慎重使用 rm -rf 炸弹命令,强制递归删除文件夹和文件且没有提示,,,删库到跑路, -r 递归删除 -f 强制删除 vmware虚拟机快照功能,在vmware软件中点击 可以拍下当前系统的状态,以便日后恢复 windows PATH 命令查找路径 windows用分号区分不同的path路径 当你在终端输入 python的时候,就去从path中寻找 C:\Users\Administrator\AppData\Local\Programs\Python\Python36; C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts; C:\Python27;E:\MySQL Server 5.6\bin; linux的环境变量 PATH 在linux上也装python3的时候 /opt/python36/bin/python3.6 [root@localhost /]# echo $PATH /usr/local/sbin: /usr/local/bin: /usr/sbin: /usr/bin: /root/bin: /opt/python36/bin/python3.6: /opt/nginx/bin/nginx 当我输入python3.6的时候,它会按照path的顺序,自上而下的查找python linux的绝对路径,相对路径 linux的绝对路径 只要从根目录开始的查找,就是绝对路径 /home/s15/nvtongxue/chaoge 绝对路径 我当前在nantongxue目录下 ../../s15/nvtongxue/juange 1.在/home/目录创建文件夹oldboy,进入oldboy创建helloLinux.txt cd /home mkdir oldboy cd oldboy touch helloLinux.txt 2.创建/tmp/chaogeLinux.txt,用绝对路径方式与相对路径两种方法 绝对路径 touch /tmp/chaogelinux.txt 相对路径的写法 cd tmp touch ./chaogelinux.txt 3.在/tmp/目录下创建chaogeDir目录 mkdir -p /tmp/chaogedir 4.查看linux PATH变量 echo $PATH 命令提示符 [root@localhost zhaoyining]# [用户名@主机名 当前的工作目录]用户身份提示符 普通用户的创建 useradd xiaogan 创建新用户xiaogan passwd xiaogan 给xiaogan改密码 ssh xiaogan@192.168.107.129 普通用户的身份提示符 $ root用户是 # 身份提示符 [xiaogan@localhost chaogedir]$ echo 命令 显示变量的值 显示当前的字符串 echo "赵一宁nb" > yining.txt python with open w 覆盖写入新内容 a 追加模式,从文件末写入新内容 > 重定向输出符, >> 重定向追加输出符 << 重定向写入符 cat filename.txt -n 查看文本内容 且显示行号 linux的文本编辑器 vi vim 有这2个常用的 vi 相当于记事本 不好用 vim 支持编程的文本编辑器 notepad++ vim filename.txt 进入命令模式后,可以输入各种命令 :set nu 显示行号 在光标所在行 yy 复制这一行 在光标所在行 dd 删除这一行 复制,删除多行 5yy 复制5行 5dd 删除5行 linux shebang 在脚本文件的第一行,写一个 #coding:utf8 #coding:utf8 print("你还") print("halo 我认得") more 用于查看大文件 linux的man手册 查看命令的帮助 拷贝命令 cp 文件1 文件2 cp -r 递归拷贝文件夹 linux查找文件的命令 find 语法 find 从哪找 找什么 find / -name -type 文件类型 f是文件 d是目录 find / -type -name 找到你服务器的/opt目录下的 settings.py find /opt -name settings.py windows 找文件 everything的软件 linux管道命令 符号 就是 | 可以将命令1的结果 传递给命令2 去执行 将cat命令的结果,丢给grep再次处理 cat settings.py | grep "STA*" grep命令 查找字符串的命令 #从settings.py中查找出 STA*开头的那一行 grep "STA*" settings.py #查找出除了 dqw*开头的一行,其他的内容,且输出行号 grep -v "dqw*" settings.py -n tail head 命令 head 默认显示前十行 head /etc/passwd head -5 显示前5行 tail /etc/passwd 默认显示后10行 tail -f 实时监控的命令 dns是什么?bind /etc/hosts 本地dns解析文件 www.s15baidu.com 192.168.121.11 root root密码 alias别名命令 alias rm='rm -i' 当你输入rm的时候,就是输入了 rm -i 当用户输入rm的时候,我就给它提示,你这个蠢货还是别用rm啦,球球你了 alias rm="echo 你这个蠢货还是别用rm啦,球球你了" 取消别名 unalias docker devops(运维开发,敏捷开发) scp 远程传输命令 语法 scp 你想传的东西 传输到的地方 传输自己的文件,给远程服务器 scp 自己的文件 root@ip:/opt/ 传输远程服务器的文件,到自己的本地 scp root@ip:/文件 /opt/文件 开发 10~15 精通python 精通mysql django 运维 10~15 精通linux 精通nginx docker tomcat.... 运维开发 13~18之间 熟悉python *args 位置参数,接收到一个元祖 **kwargs 关键词传参,接收一个字典 self 实例化当前对象 熟悉linux 精通python OOP编程 熟悉linux环境编程 (centos/redhat 7) 熟悉部署python程序通过nginx+uwsgi+virtualenv+supervirso 熟悉mysql curd,主从同步,权限分配 熟悉redis curd,redis主从数据同步,RDB,AOF数据持久化,redis哨兵,redis集群 熟悉nginx部署多虚拟主机,反向代理,负载均衡原理 熟悉docker使用,构建dockerfile编写镜像,搭建私有docker仓库 熟悉saltstack运维管理软件使用 熟悉ubuntu 查看linux文件夹大小的命令 ls -h du -h du -sh 查看文件夹大小的合计 linux查看时间 data 查看系统时间 如果时间不正确,进行时间同步 ntpdate -u ntp.aliyun.com wget下载资源的命令 linux如何与windows传输文件 通过一个lrzsz的工具包 #安装软件 yum install lrzsz -y #在线下载一个gif图片 wget http://pythonav.cn/av/girl2.gif #通过xshell传输到windows
day3
今日内容博客地址: https://www.cnblogs.com/pyyu/articles/9355477.html 今日内容: ifconfig 查询、设置网卡和ip等参数 ifup ens33 启动网卡 ifdown 关闭网卡 脚本命令,更简单的方式启动关闭网络 ip 符 systemctl restart/start/stop network qq群 群主 root 拥有至高无上的权利 管理员 是root用户给与他一些超级权限 渣渣 小白用户,只有自己基本的权限 创建普通用户 useradd 用户名 存放用户信息到 /etc/passwd passwd 用户名 给指定用户修改密码。如果不指定用户,修改当前登录的用户的密码 公司的技术组,可以定位到每个个人,也可以讲大家,分到不同的组里 user 个人 gourp 组的概念 前端组 mjj 后端组 村长 运维组 超哥 其他人的概念 mjj 村长 超哥 面试者,郑虎,还不属于我们公司,外来户, linux 命令 id命令 id root 查看root的用户id (uid) 以及组id(gid gourp id ) /etc/passwd 存放用户信息 /etc/group 存放用户组信息 通过id命令查看用户信息 id xiaobai 切换用户身份 root用户切换普通用户 不要密码 反之需要输入root密码 su - 用户名 注意 中间的 - 代表完全切换,连同环境变量都切换了 退出登录 exit logout xshell快捷键 ctrl + l 清屏 ctrl + d 退出登录 ctrl + shift + r 快速登录 linux命令提示符的变量 PS1变量 修改命令提示符,添加 绝对路径,和时间 PS1="[\u@\h \w \t]\$" 用户组添加 groupadd 用户组名 删除用户 userdel 用户名 用root身份去执行命令 sudo 编辑这个文件,写入一些配置 vi /etc/sudoers 找到这一行配置 ## Allow root to run any commands anywhere root ALL=(ALL) ALL zhaoyining ALL=(ALL) ALL visudo命令,提供语法检测,检测/etc/sudoers文件的编写语法 修改主机名 hostnamectl set-hostname s15nb 文件与目录权限篇 -rw-r--r--. 1 root root 712819 Dec 7 08:17 girl.gif 文件 drwxr-xr-x. 2 root root 6 Dec 26 20:49 nb 文件夹 权限相关 软连接数 属于哪个用户 属于哪个组 文件大小 日期 文件名 文件夹的权限 d rwx(user) r-x(group) r-x(others) root这个用户的 属于root组里的 既不是root用户,又不再root组的权限 - rw- r-- r-- d 代表文件夹 - 代表普通文件 r read 可读 w write 可写 x 可执行 - 代表没有权限 属主 属组 -rw-r--r--. 1 root root 28 Dec 26 20:57 zhaoyiningnibiewanshoujila 这个文件属主 root 属组 root 是什么类型文件 是 - 普通文件 权限是什么 rw-r--r-- 这个文件属主的权限是 rw- 这个文件的属组的权限是 r-- 其他人的权限是 r-- 对于普通文件的可读可写可执行 可读 cat vi more less head tail tac 可写 echo vi >重定向符号啦 可执行 二进制程序,可以运行的程序 文件夹的可读写执行 可读 ls 可写 在文件夹当中创建文件 可执行 cd r 可以对此目录执行ls列出所有文件 w 可以在这个目录创建文件 x 可以cd进入这个目录,或者查看详细信息 rwx对应 4+2+1 777 r 4 w 2 x 1 5(user)4(group)6 (other) 转化字母 r-xr--rw- 000 ------ 010 -----x--- rw-r----x 6 4 1 777 rwxrwxrwx 文件创建时间 Dec 26 20:57 文件大小 28 修改文件权限的命令 chmod change mode 缩写 -rw-r--r-- 普通文件,user rw- group r-- other r-- chmod u+ file -rwxr--r-- chmod g-r file -rw----r-- chmod o+w file -rw-r--rw- -rwxrwxrwx. 1 root root 0 Dec 26 21:41 123.txt chmod 531 123.txt -r-x-wx--x 123.txt 531 改变用户的属主 chown change owner 更改拥有者 chown 用户名 file 更改属组 chgrp 组名 file #软连接配置 ln命令 ln -s 目标文件绝对地址 快捷方式的绝对路径地址 ln -s /opt/cs.txt /home/cs.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 [root@s15fafafa home]# echo $PATH PATH变量只能添加目录,不能定位到文件 将某个文件地下所有内容,都加入环境变量 /usr/local/sbin :/usr/local/bin :/usr/sbin :/usr/bin :/root/bin #假设不用这个 :/opt/python36/bin/ 这才是正确的添加python环境变量 tar压缩解压命令 lrzsz 上传下载的小工具 xftp 文件传输工具 tar 命令 -c 压缩参数 -x 解压参数 -v 显示过程 -f 指定文件 这个参数要写在最后 语法 压缩文件 tar -cf 压缩文件名 想压缩的内容 解压文件 tar -xf 压缩文件名 查看网络端口 django运行后,会怎么样? 开通了一个端口 8000 产生了一个进程 产生日志 可能会出现一堆大黄页 linux一个程序运行后 ps -ef|grep 查看任务是否运行有进程 netstat -tunlp | grep 查看任务的端口是否启动 来自于同一台机器的三个ip 0.0.0.0 127.0.0.1 加上 192.168.12.13 ,暴露应用又在对外的ip地址,又暴露在自己的回环地址 127.0.0.1 本机回环地址 ,代表机器自己的内部一个ip,其他人访问不到,并且每个人都有自己的127.0.0.1 192.168.12.13 本地对外可以提供访问的 ip地址 ,每个人都不一样 python manage.py runserver 启动django python manage.py runserver 192.168.12.13 8000 在 192.168.12.13地址上启动 8000 端口提供访问 其他人访问地址192.168.12.13:8000 python manage.py runserver 默认启动在 127.0.0.1 8000 其他人访问不到你的django python manage.py runserver 0.0.0.0 8000 其他人可以访问 你的机器地址 192.168.12.13:8000 即可 如果你没有ifconfig 输入这个命令,安装一个软件 yum install net-tools -y 如果你发现你有些命令没有,在确保你没敲错的情况下,就是没安装这个命令 在你装机的时候,最小化安装,可能只有 500个软件 选择 web服务器软件包安装 1000个软件 如果你缺少命令,不要怕。缺什么装什么 yum 这个软件管理命令去安装 端口查看 netstat -tunlp |grep 8000 过滤出 django的8000端口是否存货 netstat [选项] -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况; -n或--numeric:直接使用ip地址,而不通过域名服务器; -l或--listening:显示监控中的服务器的Socket; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -a或--all:显示所有连线中的Socket; ps 命令查询进程 ps -ef |grep mysql ps -ef|grep nginx 杀死进程的命令 kill 命令 如果你kill一个进程,死活杀不死,就加上 -9 -9 强制终止信号(危险命令) 强制杀死进程,以及进程相关的依赖 kill -9 uwsgi kill -9 mysqld selinux 内置的防火墙 查询selinux状态 getenforce 暂时停止selinxu setenforce 0 永久关闭selinux 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 重启机器,使得selinx永久关闭 软件防火墙 iptables -F 清空规则 iptables -L 查看iptable防火墙规则 ,看到只有如下短短的三个链,就说明,没有规则了 关闭防火墙的需求,防止他影响你的服务访问 [root@s15fafafa ~]# iptables -L 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 停止防火墙服务 systemctl start/restart/stop firewalld systemctl disable firewalld #删除iptables的开机自启 修改linux的字符编码 1.编译字符编码的文件 vi /etc/locale.conf 写入如下变量 LANG="zh_CN.UTF-8" 2.读取这个文件,使得变量生效 source 读取命令,使得配置文件在系统中生效 source /etc/locale.conf 3.查看系统字符编码 echo $LANG #查看磁盘空间 df -h #tree以树状图显示文件目录结构 yum install tree -y #dns服务 bind软件,配置dns服务的 常见的互联网 dns服务器 8.8.8.8 谷歌的dns服务器 114.114.114.114 114dns服务器地址 223.5.5.5 223.6.6.6 阿里巴巴的dns服务器地址 119.29.29.29 腾讯的dns服务器地址 ..... linux dns配置文件是 /etc/resolv.conf [root@s15fafafa home]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 119.29.29.29 主dns nameserver 223.5.5.5 备dns /etc/hosts文件 本地dns强制解析的文件 [root@s15fafafa home]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.13.148 www.baidu.com dns解析顺序: 1./etc/hosts 2./etc/resolv.conf linux用于解析域名的命令 nslookup pythonav.cn linux的定时任务 crontab -l 查看任务 crontab -e 编辑任务 crontab的语法 分 时 日 月 周 命令 * * * * * 每一分钟 做这件事 #每分钟执行一次命令 * * * * * 命令 #每小时的3,15分钟执行命令 分 时 日 月 周 * * * * * 3,15 * * * * 命令 #在上午8-11点的第3和第15分钟执行 分 时 日 月 周 * * * * * 3,15 8-11 * * * 命令 #每晚9: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 * * * /usr/bin/systemctl restart nginx #每月的1,10,22日的4:45重启nginx 分 时 日 月 周 * * * * * 45 4 1,10,22 * * /usr/bin/systemctl restart nginx #每个星期一的上午8点到11点的第3和15分钟执行命令 分 时 日 月 周 * * * * * 3,15 8-11 * * 1 执行命令 windows软件包 exe可安装格式 msi 可执行安装文件 .zip 压缩格式 .rar 压缩包格式 linux软件包管理 linux软件格式分为 1.源码包格式 1.下载python3的源码包 2.解压缩源码包,切换目录 3.编译且安装 4.配置环境变量 5.使用python3 2.rpm二进制包格式(这种安装方式,需要手动解决依赖关系,有可能装一个mysql,装个俩小时) 1.下载软件的rpm格式包 2. rpm -ivh lrzsz.rpm 3.使用lrzsz工具 补充: 1.如果直接安装mysql5.6.rpm,依赖了很多其他的软件包,我就得一个一个解决依赖, 2.所以rpm安装方式,需要手动解决依赖关系,很麻烦,不建议使用 lrzsz这是软件包的名字 提供了命令是 rz 接收文件 sz 发送文件 3.yum安装方式 yum工具,自动的搜索下载rpm包,且安装,且解决依赖关系,自动处理下载其他的依赖rpm包 软件开发目录规范 lib 库文件 core 核心文件 bin 可执行文件 conf 配置文件 log 日志文件夹 readme 使用说明书 向用python的模块 pip3 install -i http://pypi.douban.com/simple flask 想用linux的软件,yum默认去从centos官网去下载 yum install yum源的仓库路径在 /etc/yum.repos.d/ 然后这个目录底下,只有 以 .repo结尾的文件,才会被识别为yum仓库 配置国内的yum源 1.在/etc/yum.repos.d/目录底下,定制我们自己的repo仓库文件 2.我们自己没有yum仓库,我们就去拿阿里巴巴的yum仓库 3.https://opsx.alibaba.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 再配置epel额外的仓库源,这个仓库里就存放了很多第三方软件,例如redis mysql nginx 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 nginx -y -y 一路都是默认yes 2.启动nginx 直接输入nginx命令 3.修改nginx主页面 ,文件名字叫做 index.html find / -name index.html 查找这个文件所在地 vim /usr/share/nginx/html/index.html 修改这个nginx首页文件 系统服务管理命令 只有通过yum安装的软件,默认才能使用这个命令管理 systemctl start/stop/restart 服务名 systemctl start/stop/restart mariadb systemctl start/stop/restart redis systemctl start/stop/restart nginx
day4
今日内容 https://www.cnblogs.com/pyyu/p/9015317.html 今日内容博客地址 1.编译安装python3 1.下载python3的源码 cd /opt yum install wget -y 安装wget命令 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 1.安装python3之前,环境依赖解决 通过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 2.解压缩源码包 下载好python3源码包之后 Python-3.6.2.tgz 解压缩、 tar命令可以解压缩 tgz格式 tar -xvf Python-3.6.2.tgz 3.切换源码包目录 cd Python-3.6.2 4.编译且安装 1.释放编译文件makefile,这makefile就是用来编译且安装的 ./configure --prefix=/opt/python36/ --prefix 指定软件的安装路径 2. 开始编译python3 make 3.编译且安装 (只有在这一步,才会生成/opt/python36) make install 4.配置python3.6的环境变量 1.配置软连接(注意,这个和PATH配置,二选一) ln -s 目标文件 软连接文件 ln -s /opt/python36/bin/python3.6 /usr/bin/python3 此时还没有pip ln -s /opt/python36/bin/pip3 /usr/bin/pip3 2.配置path环境变量 (二选一即可) echo $PATH查看环境变量 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin #这个变量赋值操作,只是临时生效,需要写入到文件,永久生效 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin #linux有一个全局个人配置文件 编辑这个文件,在最底行写入PATH vim /etc/profile 写入 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin 保存退出 读一下这个/etc/profile 使得生效 source /etc/profile 5.测试linux安装一个django, pip3 install django 6.创建django项目 django-admin startproject mysite 7.创建django的APP应用 django-admin startapp app01 8.编写视图函数,测试一个index视图 9.注意修改settings.py的allow_hosts,windows方可访问linux的django项目 yum工具 yum install nginx -y 如果你用yum命令,提示yum进程被锁定,无法使用 解决办法: ps -ef|grep yum 进程,这是说 有另一个进程也在用yum yum只能有一个进程使用 python 单击测试,mac,运行一个hello world 吞吐量 django 600 flask 1000+ tornado 异步非阻塞的框架 1800+ sanic 2800+ uvloop事件驱动 用在游戏接口领域 go net/http web服务器 6W+ python的虚拟环境 virtualenv 1.需求在linux服务器上,既可以有django2.0环境,也能运行django1.11.11环境 思路: 1.django2.0想要运行,我们得准备python解释器+pip3软件包管理 2.还想运行django1.11.11 python解释器+pip3 - 在编译安装一个python3.6??????? - pip3安装的模块,都放在/opt/python36/lib/python3.6/site-packages virtualenv 就是一个虚拟解释器 就是基于物理环境下的python解释器,虚拟/分身 出的 多个解释器 venv1 django2.0 venv2 django1.1 venv3 flask venv4 requests scrapy 安装virtualevn 1.下载virtualenv工具 通过物理环境的pip工具安装 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv 安装完成后你的linux就多了一个virtualenv命令 2.创建虚拟环境venv1 venv2 virtualenv --no-site-packages --python=python3 s15venv1 调用虚拟环境的命令 --no-site-packages 这是构建干净,隔离的模块的参数 --python=python3 这个参数是指定虚拟环境以哪一个物理解释器为基础的 最后一个是虚拟环境的名字 会创建这么一个文件夹 3.进入虚拟环境目录,激活虚拟环境 找到你的虚拟环境目录bin地下的activate文件 source myenv/s15venv1/bin/activate - 激活虚拟环境,原理就是修改了PATH变量,path是有顺序执行的 echo $PATH 检查环境变量 which python3 which pip3 检查虚拟环境是否正常 4.测试安装2个虚拟环境,venv1,venv2,并且运行2个django不同版本的项目 5.退出虚拟换的命令 deactivate vim编辑器, vimer vim程序员 保证本地开发环境和线上一致性的操作 解决方案: 1.通过命令保证环境的一致性,导出当前python环境的包 pip3 freeze > requirements.txt 这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。 可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表。 2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖 pip3 install -r requirements.txt 虚拟环境管理工具virtualenvwrapper 1.安装这个命令,必须得在物理解释器地下,注意!! pip3 install virtualenvwrapper 1.1 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意 ,请看这里 注意这里path的配置,需要将物理解释器的python,放在path最前面 echo $PATH 这里保持配置和我一样,将python3放在最前面 [root@localhost ~]# echo $PATH /opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin 2.修改环境变量,每次开机就加载这个virtualenvwrapper工具 vim ~/.bashrc #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.重新登录会话,使得这个配置生效 logout ssh .... 4.此时正确的话 virtualenvwrapper工具已经可以使用 提供了哪些命令? mkvirtualenv 虚拟环境名 #自动下载虚拟环境,且激活虚拟环境 workon 虚拟环境名 #激活虚拟环境 deactivate 退出虚拟环境 rmvirtualenv 删除虚拟环境 cdvirtualenv 进入当前已激活的虚拟环境所在的目录 cdsitepackages 进入当前激活的虚拟环境的,python包的目录 管理python虚拟环境的工具virtualenvwrapper
day5
今日内容 https://www.cnblogs.com/pyyu/p/9467289.html mysql博客 mysql (分支 mariadb) 1.安装mariadb -yum -源码编译安装 -下载rpm安装 yum和源码编译安装的区别? 1.路径区别-yum安装的软件是他自定义的,源码安装的软件./configure --preifx=软件安装的绝对路径 2.yum仓库的软件,版本可能比较低,而源码编译安装,版本可控 3.编译安装的软件,支持第三方功能扩展./configure 这里可以加上很多参数,定制功能 yum仓库的区别 1.阿里云的yum仓库 2.假设mysql官网,也会提供rpm包,源码包,以及yum源,供给下载 2.配置mariadb的官方yum源,用于自动下载mariadb的rpm软件包,自动安装 注意点:阿里云提供的yum仓库,和epel源仓库,它也有mariadb,但是版本可能会很低 这个是yum默认的mariadb的版本信息 mariadb x86_64 1:5.5.60-1.el7_5 base 8.9 M 那我们就得选用mariadb的官方yum源, 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.通过yum安装mariadb软件,安装mariadb服务端和客户端 (由于是国外镜像源,因此下载速度可能很慢) yum install MariaDB-server MariaDB-client -y 5.如果下载速度太慢,请删除 mariadb.repo,只是为了使用阿里云的yum源中的mariadb rm -rf /etc/yum.repos.d/Mariadb.repo 然后清空yum 缓存 yum clean all 6.使用阿里云的yum下载 mariadb (阿里云的mariadb包名是小写的,而官方的是大写的!!!!注意的) yum install mariadb-server mariadb -y 7.安装完成后,启动mariadb服务端 systemctl start/stop/restart/status mariadb systemctl enable mariadb 开机启动mariadb 8.mysql初始化 mysql_secure_installation 这条命令可以初始化mysql,删除匿名用户,设置root密码等等.... 9.设置mysql的中文编码支持,修改/etc/my.cnf 1. vi /etc/my.cnf 在[mysqld]中添加参数,使得mariadb服务端支持中文 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci 2.重启mariadb服务,读取my.cnf新配置 systemctl restart mariadb 3.登录数据库,查看字符编码 mysql -uroot -p 输入 \s 查看编码 10.mysql常用命令 desc 查看表结构 create database 数据库名 create table 表名 show create database 库名 查看如何创建db的 show create table 表名; 查看如何创建table结构的 #修改mysql的密码 set password = PASSWORD('redhat'); #创建mysql的普通用户,默认权限非常低 create user yining@'%' identified by 'yiningzhenshuai'; #查询mysql数据库中的用户信息 use mysql; select host,user,password from user; 11.给用户添加权限命令 grant all privileges on *.* to 账户@主机名 对所有库和所有表授权所有权限 grant all privileges on *.* to yining@'%'; 给yining用户授予所有权限 flush privileges; 刷新授权表 12.授予远程登录的权限命令 (root不能远程登录的问题??) grant all privileges on *.* to yining@'%'; 给yining用户授予所有权限 grant all privileges on *.* to root@'%' identified by 'redhat'; #给与root权限授予远程登录的命令 此时可以在windows登录linux的数据库 mysql -uyining -p -h 服务器的地址 连接服务器的mysql 13.学习mysql的数据备份与恢复 1.mysqldump -u root -p --all-databases > /data/AllMysql.dump 导出当前数据库的所有db,到一个文件中 2.登录mysql 导入数据 mysql -u root -p > source /data/AllMysql.dump 3.通过命令导入数据 mysql -uroot -p < /data/AllMysql.dump #在登录时候,导入数据文件,一样可以写入数据 配置文件的格式 *.conf *.cnf *.ini *.yml mysql的主从复制架构,需要准备两台机器,并且可以通信,安装好2个mysql,保持版本一致性 mysql -v 查看数据库版本 1.准备主库的配置文件 /etc/my.cnf 写入开启主库的参数 [mysqld] server-id=1 #标注 主库的身份id log-bin=s15mysql-bin #那个binlog的文件名 2.重启mairadb,读取配置文件 systemctl restart mariadb 3.查看主库的状态 mysql -uroot -p show master status; #这个命令可以查看 日志文件的名字,以及数据起始点 4.创建用于主从数据同步的账户 create user 'yuanhao'@'%' identified by 'yuanhaobuxitou'; 5.授予主从同步账号的,复制数据的权限 grant replication slave on *.* to 'yuanhao'@'%'; 6.进行数据库的锁表,防止数据写入 flush table with read lock; 7.将数据导出 mysqldump -u root -p --all-databases > /opt/zhucong.dump 8.然后将主库的数据,发送给从库 scp /opt/zhucong.dump root@从库:/opt/ 9.此时去从库的mysql上,登录,导入主库的数据,保持数据一致性 mysql -uroot -p source /opt/zhucong.dump 从库的配置 1.写入my.cnf,从库的身份信息 vi /etc/my.cnf [mysqld] server-id=10 2.检查一下主库和从库的 参数信息 show variables like 'server_id'; show variables like 'log_bin'; 3.通过一条命令,开启主从同步 change master to master_host='192.168.13.78', master_user='yuanhao', master_password='yuanhaobuxitou', master_log_file='s15mysql-bin.000001', master_log_pos=571; 4.开启从库的slave同步 start slave; 5.查看主从同步的状态 show slave status\G; 6.查看两条参数 ,确保主从正常 Slave_IO_Running: Yes Slave_SQL_Running: Yes redis 1.在linux安装redis 通过源码编译安装redis 1.下载源码包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis tar -zxf redis-4.0.10.tar.gz 3.进入redis源码,直接可以编译且安装 make && make install 4.可以指定配置文件启动redis vim /opt/redis-4.0.10/redis.conf 1.更改bind参数,让redis可以远程访问 bind 0.0.0.0 2.更改redis的默认端口 port 6380 3.使用redis的密码进行登录 requirepass 登录redis的密码 4.指定配置文件启动 redis-server redis.conf 5.通过新的端口和密码登录redis redis-cli -p 6380 登录后 auth 密码 redis还支持交互式的参数,登录数据库 redis-cli -p 6380 -a redis的密码 (这个不太安全) 6.通过登录redis,用命令查看redis的密码 config set requirepass 新的密码 #设置新密码 config get requirepass #获取当前的密码 过滤出文件的空白行和注释行 grep -v "^#" redis.conf | grep -v "^$"
day6
day07笔记 Linux 推荐的歌: 浪子回头 去年回顾 mariadb 1.yum安装 yum install mariadb-server mariadb -y 2.yum安装好之后,启动服务端,只有通过yum安装的软件才可以用systemctl systemctl start mariadb 3.数据库初始化 4.mysql -uroot -p redis 1.源码包安装redis 2.指定了/opt/redis/工作目录 3.启动redis服务端 redis-server redis.conf 4.redis.conf软件的配置文件作用? 给这个软件,指定开放/关闭一些功能 改redis端口 改redis密码 redis的安全模式 bind参数,指定redis启动的ip地址 杀死redis服务的方法 1.kill pid 2.pkill redis-server 根据服务名 杀死进程,可以杀死所有有关redis-server 1.在linux服务器上安装软件 分好几种: -yum安装 -配置yum源,配置163,清华,阿里云的yum源 -清空yum缓存 -生成新的yum缓存 -源码安装 -下载软件的源码压缩包 -解压缩,切换目录 -释放makefile,编译,编译安装 -rpm软件包安装 远程连接工具 xshell( ssh root@ip ) mac同学 ssh root@ip 今年所学 redis发布订阅 三个角色,提供的redis命令 1.发布者 publish 频道 消息 给频道发消息 2.订阅者 SUBSCRIBE 频道 订阅频道 PSUBSCRIBE 频道* 支持模糊匹配的订阅 3.频道 channel 频道名 自定义 redis持久化之RDB 1.在配置文件中添加参数,开启rdb功能 redis.conf 写入 port 6379 daemonize yes logfile /data/6379/redis.log dir /data/6379 dbfilename s15.rdb save 900 1 #rdb机制 每900秒 有1个修>改记录 save 300 10 #每300秒 10个修改 记录 save 60 10000 #每60秒内 10000修>改记录 2.开启redis服务端,测试rdb功能 redis-server redis.conf redis持久化之aof 1.开启aof功能,在redis.conf中添加参数 port 6379 daemonize yes logfile /data/6379/redis.log dir /data/6379 appendonly yes appendfsync everysec 2.启动redis服务端,指定aof功能,测试持久化数据 redis不重启之rdb数据切换到aof数据 1.准备rdb的redis服务端 redis-server s15-redis.conf (注明这是在rdb持久化模式下) 2.切换rdb到aof redis-cli 登录redis,然后通过命令,激活aof持久化 127.0.0.1:6379> CONFIG set appendonly yes #用命令激活aof持久化(临时生效,注意写入到配置文件) OK 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> CONFIG SET save "" #关闭rdb持久化 2.5 将aof操作,写入到配置文件,永久生效,下次重启后生效 port 6379 daemonize yes logfile /data/6379/redis.log dir /data/6379 #dbfilename s15.rdb #save 900 1 #save 300 10 #save 60 10000 appendonly yes appendfsync everysec 3.测试aof数据持久化 ,杀掉redis,重新启动 kill redis-server s15-redis.conf 4.写入数据,检查aof文件 redis的主从同步 1.检查redis数据库信息,主从状态的命令 redis-cli -p 6379 info 检查数据库信息 redis-cli -p 6379 info replication 检查数据库主从信息 1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制 redis-6379.conf port 6379 daemonize yes pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" dbfilename dump.rdb dir /data/6379 redis-6380.conf #通过命令快速生成配置文件 sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf slaveof 127.0.0.1 6379 #指明主库的身份ip 和端口 redis-6381.conf #通过命令快速生成配置文件 sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf slaveof 127.0.0.1 6379 2.启动三个数据库实例,检测redis主从同步方案 3.redis主从赋值,故障手动切换, 1.杀死6379的主库实例 kill 主库 2.手动切换主从身份 1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接 slaoveof no one 2.登录redis-6381 ,通过命令,生成新的主任 slaveof 127.0.0.1 6380 3.测试新的主从数据同步 redis哨兵 1.什么是哨兵呢?保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步 2.redis哨兵的安装配置 1. 准备三个redis数据库实例(三个配置文件,通过端口区分) [root@localhost redis-4.0.10]# redis-server redis-6379.conf [root@localhost redis-4.0.10]# redis-server redis-6380.conf [root@localhost redis-4.0.10]# redis-server redis-6381.conf 2.准备三个哨兵,准备三个哨兵的配置文件(仅仅是端口的不同26379,26380,26381) -rw-r--r-- 1 root root 227 Jan 2 18:44 redis-sentinel-26379.conf port 26379 dir /var/redis/data/ logfile "26379.log" sentinel monitor s15master 127.0.0.1 6379 2 sentinel down-after-milliseconds s15master 30000 sentinel parallel-syncs s15master 1 sentinel failover-timeout s15master 180000 daemonize yes -rw-r--r-- 1 root root 227 Jan 2 18:45 redis-sentinel-26380.conf 快速生成配置文件 sed "s/26379/26380/g" redis-sentinel-26379.conf > redis-sentinel-26380.conf -rw-r--r-- 1 root root 227 Jan 2 18:46 redis-sentinel-26381.conf sed "s/26379/26381/g" redis-sentinel-26379.conf > redis-sentinel-26381.conf 3.添加后台运行参数,使得三个哨兵进程,后台运行 [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf 4.启动三个哨兵 1003 redis-sentinel redis-sentinel-26379.conf 1007 redis-sentinel redis-sentinel-26380.conf 1008 redis-sentinel redis-sentinel-26381.conf 5.检查哨兵的通信状态 redis-cli -p 26379 info sentinel 查看结果如下之后,表示哨兵正常 [root@localhost redis-4.0.10]# redis-cli -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=s15master,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3 6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381的节点状态 kill 6379主节点 redis-cli -p 6380 info replication redis-cli -p 6381 info replication 如果切换的主从身份之后,(原理就是更改redis的配置文件,切换主从身份) 7.恢复6379节点的数据库,查看是否将6379添加为新的slave身份 redis-cluster安装配置 1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件 -rw-r--r-- 1 root root 151 Jan 2 19:26 redis-7000.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7001.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7002.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7003.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7004.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7005.conf 2.启动6个redis数据库实例 [root@localhost s15rediscluster]# redis-server redis-7000.conf [root@localhost s15rediscluster]# redis-server redis-7001.conf [root@localhost s15rediscluster]# redis-server redis-7002.conf [root@localhost s15rediscluster]# redis-server redis-7003.conf [root@localhost s15rediscluster]# redis-server redis-7004.conf [root@localhost s15rediscluster]# redis-server redis-7005.conf 3.配置ruby语言环境,脚本一键启动redis-cluster 1.下载ruby语言的源码包,编译安装 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz 2.解压缩 ./configure --prefix=/opt/ruby/ 释放makefile make && make install 编译且安装 3.下载安装ruby操作redis的模块包 wget http://rubygems.org/downloads/redis-3.3.0.gem 4.配置ruby的环境变量 echo $PATH vim /etc/profile 写入最底行 PATH=$PATH:/opt/ruby/bin/ 读取文件 source /etc/profile 5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令 一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配 /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 6.检查节点主从状态 redis-cli -p 7000 info replication 7.向redis集群写入数据,查看数据流向 redis-cli -p 7000 #这里会将key自动的重定向,放到某一个节点的slot槽位中 set name s15 set addr shahe nginx 入门学习 web服务器软件 windows IIS服务器 linux nginx apache 收费 lighthttp 公司的技术栈 收费版技术栈 apache web服务器 + java + tomcat应用服务器 + oracle + memcached + redhat 企业版linux + svn(代码管理工具) 开源的技术栈(路飞学城) nginx(负载均衡) + python(virtualenv) + uwsgi (python的应用服务器,启动了10个进程处理django drf 请求) + mysql (阿里云的rds主从复制) +redis的主从赋值 +git +vue前端代码服务器 +linux(阿里云的centos7) curl -I 网站域名 可以查看网站的响应头信息 查看网站用了什么服务器 1.yum解决编译nginx所需的依赖包,之后你的nginx就不会报错了 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 openssl openssl-devel -y 2.安装配置nginx软件,下载源代码 wget -c https://nginx.org/download/nginx-1.12.0.tar.gz 3.解压缩源码,编译且安装 tar -zxvf nginx-1.12.0.tar.gz 切换源码目录 ./configure --prefix=/opt/nginx112/ make && make install 4.进入nginx的工作目录 cd /opt/ngin112/ 5.查看gninx的工作目录 [root@localhost nginx112]# ls conf 配置文件目录 html 网页根目录,你的index.html就放在这里,然后通过域名访问 pythonav.cn/index.html html/index.html logs 日志 sbin 存放nginx可执行命令的 6.定制自己的nginx网站 修改/opt/nginx112/html/index.html 这是nginx网页根文件,清空内容写入自己的html标签 7.启动nginx服务器 /opt/nginx112/sbin/nginx 直接回车执行 8.检查nginx服务端口 ps -ef|grep nginx 9.通过windows访问nginx web服务 浏览器 访问http://192.168.13.79
day7
今日内容 nginx 1.编译安装配置完成 /opt/nginx11/html/index.html 这是网页的首页文件 2. nginx.conf主配置文件学习 ######################################如下 worker_processes 4; nginx工作进程数,根据cpu的核数定义 events { worker_connections 1024; #连接数 } #http区域块,定义nginx的核心web功能 http { include(关键字) mime.types(可修改的值); default_type application/octet-stream; #定义日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #开启访问日志功能的参数 access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; #保持长连接 keepalive_timeout 65; #支持图片 gif等等压缩,减少网络带宽 gzip on; #这个server标签 控制着nginx的虚拟主机(web站点) server { # 定义nginx的入口端口是80端口 listen 80; # 填写域名,没有域名就写ip地址 server_name www.s15rihan.com; # 定义编码 charset utf-8; # location定义网页的访问url #就代表 用户的请求 是 192.168.13.79/ location / { #root参数定义网页根目录 root html; #定义网页的首页文件,的名字的 index index.html index.htm; } #定义错误页面,客户端的错误,就会返回40x系列错误码 error_page 404 403 401 400 /404.html; #500系列错误代表后端代码出错 error_page 500 502 503 504 /50x.html; } #在另一个server{}的外面,写入新的虚拟主机2 server{ listen 80; server_name www.s15oumei.com; location / { root /opt/myserver/oumei; #定义虚拟主机的网页根目录 index index.html; } } } 3.准备两个虚拟主机的网页根目录内容 [root@localhost myserver]# tree /opt/myserver/ /opt/myserver/ ├── oumei │ └── index.html 写入自己的内容 └── rihan └── index.html 写入自己的内容 4.修改windows本地的测试域名 C:\Windows\System32\drivers\etc\hosts文件 写入如下内容 192.168.13.79 www.s15rihan.com 192.168.13.79 www.s15oumei.com 因为我们没有www.s15oumei.com 也没有 www.s15rihan.com ,因此要在本地搞一个测试域名, 不想改dns的话,就去阿里云去买一个域名~~~~~~~~~~~~~~~~~~~~~~ 5.然后在浏览器测试访问 两个不同的 web站点 www.s15rihan.com www.s15oumei.com nginx的访问日志功能 1.开启nginx.conf中的日志参数 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #开启访问日志功能的参数 access_log logs/access.log main; 2.检查access.log的日志信息 tail -f access.log nginx的拒绝访问功能 1.在nginx.conf中,添加参数 在server{}虚拟主机标签中,找到location 然后添加参数 #当赵一宁访问 192.168.13.79/ 的时候 location / { #拒绝参数是 deny #deny 写你想拒绝的IP地址 #deny还支持拒绝一整个网站 deny 192.168.13.33; root /opt/myserver/rihan; index index.html; } nginx的错误页面优化 1.修改nginx.conf 中的配置参数 这个s1540x.html存在 虚拟主机定义的网页根目录下 error_page 404 /s1540x.html; nginx反向代理 1.中间商 2.微商 3.二手贩子 4.黄牛 火车票 vpn就是正向代理 中国的用户,在自己机器上,使用了一个vpn的ip地址,然后通过这个vpn的IP地址和外接通信 nginx的反向代理功能(自带了反向代理的功能,天生的二道贩子) 1.实验环境准备 准备2个服务器,都安装好nginx软件 nginx1 192.168.13.79 作为web服务器 (理解为火车票售票点) nginx2 192.168.13.24 作为反向代理服务器 (黄牛) 用户 通过浏览器去访问 黄牛 (代理) 浏览器 访问 192.168.13.24 > 192.168.13.79 2.在反向代理服务器中添加配置 nginx负载均衡 集群的概念:一堆服务器做一件事 1.实验准备 准备三台计算机 nginx1 192.168.13.121 作为nginx负载均衡器 只要我访问这个负载均衡器,查看页面的结果,到底是来自于 nginx2 192.168.13.24 web服务,提供一个页面 nginx3 192.168.13.79 web服务,提供一个页面 2.先配置两个nginx web页面 192.168.13.24 准备一个 index.html 写入 你好,我是192.168.13.24机器 192.168.13.79 准备一个 index.html 写入 老了老弟,我是192.168.13.79 然后启动两个nginx web 服务 3.准备一个nginx负载均衡器 192.168.13.121机器上,修改nginx.conf 写入如下内容 定义一个负载均衡池,负载均衡的算法有 调度算法 概述 轮询 按时间顺序逐一分配到不同的后端服务器(默认) weight 加权轮询,weight值越大,分配到的访问几率越高 ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器 url_hash 按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器 least_conn 最少链接数,那个机器链接数少就分发 1.轮询(不做配置,默认轮询) 2.weight权重(优先级) 3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用 upstream s15webserver { ip_hash; server 192.168.13.79 ; server 192.168.13.24 ; } 然后在虚拟主机中添加 反向代理配置,将用户的请求,直接转发给 负载均衡池中的服务器 server { listen 80; #当我的请求来自于 192.168.13.121时,走这>个虚拟主机 server_name 192.168.13.121; #charset koi8-r; #access_log logs/host.access.log main; #核心配置,就在这,一条proxy_psss参数即可 location / { proxy_pass http://s15webserver; #root html; #index index.html index.htm; } } 4.启动负载均衡器的 nginx服务 5.在客户端windows中测试访问,负载均衡器 192.168.13.121 ,查看请求分发的结果
Great works are not done by strength, but by persistence!

浙公网安备 33010602011771号