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 客户端/服务端
View Code

 

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
View Code

 

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 8000192.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
View Code

 

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 
View Code

 

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 "^$"
View Code

 

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


    

    

    
View Code

 

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 ,查看请求分发的结果 
View Code

 

posted @ 2019-10-07 22:47  Mr_Yun  阅读(223)  评论(0)    收藏  举报