测试工程师(小姑娘),找出程序bug的人,和开发相爱相杀
对于初创型的小公司,陌陌公司刚起步,交友,用户量很少,网站并发数也很低
开发架构不能太复杂,必须招来一个专业的运维,并且可能会影响开发进度,开发难度
选择网站的黄金架构LNMP
(Linux+Nginx+Mysql+PHP/Perl/Python)
windows,mysql(突然嗝屁)
centos系统,您真硬核呀...
ubunt系统
你又一个window电脑,让你再安装一个操作系统去学习,你会用什么安装方案?
1.买一台硬件服务器,必须得有一个机器
(开发你得考虑,程序在机器上运行,消耗的内存,cpu等资源,IO吞吐量是否正常)
2.在这个机器上安装操作系统
告诉我,你的笔记本外观有什么?
笔记本的内部有什么?(对于系统速度的提升,优化都是扯淡,花钱就能解决所有的问题,先从硬件角度考虑)
一个纯python后台的应用,odoo,写的一平台,性能测试预计有5W的并发
由于新业务来到,并发超过5W了,后台吃撑不住了,出现大量的500报错
单纯的用uwsgi+odoo,运行的后台
常见的状态码,statuscode有哪些
服务器是在网络中对外提供服务的,一个超强性能的计算机(更稳定,更安全,安装linux系统)
区别在于数据的安全性。
1.你们家中所用的水资源、电力资源,煤气资源,从哪来的
我们百姓都是花钱,从水厂,电厂,煤气厂,按量购买的资源
水厂、电厂等,将所有的水利资源,电力资源,集中到了一起,进行按量贩卖
计算机角度:
阿里,腾讯,华为等公司,购买了大量的实体服务器,组成了一个超大的计算机资源池,然后按量贩卖
在阿里云的后台,50元/月购买1G1核50G磁盘的服务器
对于初创型公司(路飞学城):
8台阿里云
本金比较少,购买云服务器即可,(数据并不安全,你的数据都掌握在别人的手里)
对于中等规模公司,马蜂窝,知乎等:
购买自己的硬件服务器(服务器价格也不低),需要运行在零度、无尘、无湿度的一个环境(防止服务器发热,防止短路,静电)
中等公司会把自己的服务器,托管在一个专业的机房中心(世纪互联,有自己的园区,专门打造服务器运行环境的)外面的公司,就得花钱租赁机器托管的位置
大型公司,BAT,苹果公司,特别有钱
云上贵州,买了一块地,打造了一个数据中心(苹果公司的服务器都在这了)
uptime命令,检查服务器运行了多久,3700days
一个公司的技术栈架构外企,500强的外企收费版的技术栈:java+oralce+jquery+svn+mencached+redhat(收费版的linux,考rhcerhca资格证书)省钱的技术栈,开源的技术栈:java+python+jquery+git+redis+centos(免费版的redhat)服务器环境是dell28台硬件服务器,dellpoweredgerR720型号通过vmwareesxi虚拟化技术,创建出了260+个数的linux系统windows+vmwareworkstation(个人学习版,性能较弱,N多个虚拟机)云服务器(阿里云,腾讯云)
自然灾害,云服务器
物理服务器(自己购买一台实体的计算机,安装linux系统)
服务器是按照厚度收管理费的,机器厚度以U为单位
知道什么是服务器之后,就得开始学习什么是Linux了
机器就是一堆冷冰冰的硬件
需要安装操作系统之后,才有灵魂
python操作linux的模块是什么?
os模块
subprocess
老王学习python,在cmd里面写入了一段代码print("隔壁的小孩长得越来越像我...")
↓
交给python翻译官
解释成机器码
机器认识这一段话的作用,开始执行,然后输出给用户
用户在命令行敲下lscdmkdir这些linux的命令,计算机也是不认识的
shell(linux下的bash脚本语言的解释器,翻译官)
翻译给机器,去执行
闭源的缺点
1.危险性
王小贝开发出了一个crm系统,收费的闭源软件,卖给我用,50元/月
长久的人天服务,持续的要对这个项目进行优化
小贝在源码中嵌入了time.sleep(2.8)
可能在源码中,嵌入恶意代码,远程发送给他自己的机器
2.如果小贝突然不做程序了,crm没人可维护了,我是不是可能会造成重大损失。。
开源特点
1.透明性,你在github下载django源代码,全世界那么多人都在用,能够发现更多的问题
2.开源程序,是由诸多程序员共同维护
3.程序的优质性更高
Linus是坐着的姓名,这人不单开发了操作系统,git也是他开发的
linux是系统的名字
发行版是什么意思?
手机,就是一个名词
各个厂家,针对手机做了定制,开发出了华为手机,苹果手机,oppo手机
linux也是一个操作系统的吗名词,
各家公司针对linux源码做了一些定时,开发出了不同版本的linux系统
1.redhat红帽子系统,收费,全世界用的最多的系统
2.centos,全世界用的第二多的服务端操作系统,和redhat用法一模一样,名字不一样而已,免费
3.ubuntu用在个人电脑,开发环境使用,以及物联网领域
4.suse,德国linux,数据安全性很强
1.准备好vmware软件,根据博客,或是视频学习安装流程
【网络连接方式】
桥接,好比所有人都在25期教室,公用这个教室的局域网段192.168.11.0~192.168.11.255
教室内有60个同学,插上了网线,所有人都是192.168.11.x系列的ip,自动分配一个
虚拟机选择桥接之后,就好比教室又来了一个同学,插上线了网线,公用宿主机网段的ip
60个人都装了一个虚拟机,用的是桥接60*3=180个
都选择桥接,可能会遇见什么问题,就是ip不够用了,可能会造成ip冲突
虚拟机选择桥接,可以在局域网内的其他同学通信
【NAT】
网络地址转换,基于你宿主机的网卡,在机器内部生成一个私有的局域网
虚拟机选择NAT的话,只能和自己的私有局域网段通信了,以及和宿主机通信,和教室内的其他同学,就无法通信了
【仅主机模式】
单机模式,虚拟机只能和宿主机通信,没什么用
图形化是linux安装了名为gnonne的软件
进入到linux界面后,可以输入ifconfig命令查看网络ip地址
1.确保你的服务器,正确的获取到了ip地址ifconfig#查看到讲师的机器ip是192.168.178.1342.安装远程连接工具windows点的同学,安装xshell或者secureCRT或者这2个软件其实也就是封装了ssh命令而已用macos的同学,直接使用ssh命令即可sshroot@192.168.178.134ip地址,标识了计算机在网络中的地址信息
123.206.16.61这是一个公网的ip地址段,全世界都可以访问的
192.168.178.134这是一个局域网的地址段,只有局域网内可以访问
127.0.0.1,本地回环地址,用于测试机器内部间通信的一个ip,只能自己和自己玩的地址
django程序启动在127.0.0.1:8000
0.0.0.0这个地址,表示注册绑定一台机器,所有的ip地址
由于一台服务器可能存在多个网卡,比如
linux机器的2个ip
网卡1:192.168.178.134
网卡2:193.168.178.140
此时我启动django,python3manage.pyrunserver
默认启动在127.0.0.1:8000windows机器能访问到吗?答案是不能
那我启动在python3manage.pyrunserver192.168.178.134:8000
windows怎么访问?直接访问192.168.178.134:8000地址即可
这样启动,192.168.178.140用户就无法访问到django了
所以在服务器上启动项目,一般都直接使用0.0.0.0地址,能够同时注册在
这2个ip上,
如此启动python3manage.pyrunserver0.0.0.0:8000
用户访问192.168.178.134:8000
或者
193.168.178.140:8000都可以了
port端口的概念,常见端口是?
一个端口对应一个服务
8080------自定义用的端口
3306---mysql默认端口
6379---redis默认端口
22-----用于远程连接服务器用的端口22
服务器端口----------银行的窗口银行的1号窗口---取钱2号窗口----办理贷款3号窗口---存款linux命令提示符linux命令语法如下
[root@bogon~]#ls/tmp#这个命令表示,我要查看/tmp这个目录下的内容#第二个简单的命令#rm命令-f参数(强制性删除)/tmp/oldboy.txtrm-f/tmp/oldboy.txt简单的命令敲打
[root@bogon~]#cd/home#目录切换,切换到/home文件夹下[root@bogonhome]#pwd#我在哪,能够输出当前所在的绝对路径[root@bogonhome]#pwd/home[root@bogonhome]#whoami#我是谁root[root@bogonpyyu]#pwd/home/pyyu#linux的路径写法,如此linux的文件系统目录结构windows的目录
windows的目录结构,是反斜杠的目录分隔符是C:\D:\E:\这种多个盘符的形式,可能存在多个目录顶点linux的目录
只有一个根目录/例如/home#根目录下有一个home文件夹/s25#根目录下有一个s25文件夹#根目录下有2个同级的文件夹,男同学和女同学/s25/男同学/小明.txt/s25/女同学文件目录增删改查操作linux命令的语法
命令可选参数你要操作的对象修改linux支持文件的命令
exportLC_ALL=zh_CN.UTF-8#设置linux一个全局的中文变量增
1.创建一个普通文本文件语法是touch文件名[root@bogontmp]#touchmusic.txt2.创建一个隐藏的文件,创建一个隐藏的singer.txttouch.singer.txt#创建隐藏文件3.创建一个文件夹,名字叫做s25[root@bogontmp]#mkdirs254.创建一个递归的文件夹,如/s25/男同学/s25/女同学mkdir-p/s25/男同学/s25/女同学#-p参数是创建文件夹及其父文件夹5.创建一个递归的文件夹,如/s25new/男同学/s25new/女同学mkdir-p/s25new/{男同学,女同学}#创建一个/s25文件夹,且创建2个平级的文件夹删
rm命令,是remove的缩写,删除文件或是文件夹#语法是rm文件/文件夹#删除文件/文件夹比如rmtest.txt#删除文件,默认有让用户确认删除的提示rm-ftest.txt#强制删除文件,不需要提示确认rm-r文件夹名#递归删除文件夹,及其内部的文件#提问,如何强制性删除文件夹,以及其内部的资料#这是一个危险的命令!!!!请理解后慎用!!!#这是一个危险的命令!!!!请理解后慎用!!!#这是一个危险的命令!!!!请理解后慎用!!!rm-rf/*#叫做删库到跑路,准备被打死吧。。。。万万不得敲。。。。rm-rf/*#叫做删库到跑路,准备被打死吧。。。。万万不得敲。。。。rm-rf./*#强制性删除当前目录下的所有内容改
cd/home#切换到/home目录下ls.#查看相对的home目录下有什么内容查
2.开启centos虚拟机,查看动态ip地址(今日分配到的ip地址)
今日ip:192.168.178.134
3.使用xshell远程连接上centos系统
sshroot@192.168.178.1344.准备开始学习新命令操作
获取ip的步骤如下
1.vim编辑网卡配置文件,修改如下参数[root@s25linuxtmp]#cd/etc/sysconfig/network-scripts/vim修改此文件,找到如下参数,改为yesONBOOT="yes"2.确保vmware正确选择了桥接或是NAT,且已经连接上了3.命令重启网络设置systemctlstopNetworkManager#关闭无线网络服务systemctlrestartnetwork #重启有线网服务#这2个命令执行都没有任何提示,表示正确的重启了网络配置4.此时查看ip地址是否存在了ipaddrshowLinux常用命令mkdirmkdir感谢老铁的花花感谢老铁送上的飞机mkdir-p斗鱼/lol虎牙/王者农药tree树的意思,以树状图显示文件目录的层级结构
案例
[root@s25linuxtmp]#echo"感谢老铁送上的奥力给"感谢老铁送上的奥力给#linux在命令行的变量赋值,是临时生效的#输出变量的值#定义变量,中间有空格name="感谢老铁送上的飞机"#输出变量的值[root@s25linuxtmp]#echo$name感谢老铁送上的飞机PATH变量PATH就是定义一些常用的软件可执行命令的目录,放入系统中,可以快捷的查询,而不需要每次都输入绝对路径
windows
linux
1.vim需要单独安装的yuminstalvim-y#安装2.vim打开一个不存在的文件,默认会创建此文件#用vim写一个python脚本,#vim的使用流程第一步:vimfirst.py,此时会进入命令模式,按下字母i,进入编辑模式第二步:想要退出编辑模式,按下键盘的esc,回到命令模式第三部:此时输入shfit+冒号,输入一个英文的冒号,进入底线命令模式第四步:输入:wq!,write写入内容,quit退出vim!强制性的操作:wq!强制保存写入退出vim:q!强制不保存内容,直接退出3.此时可以查看一下文件内容[root@s25linuxtmp]#catfirst.py#!coding:utf-8print("你看这个灯,它又大又量")4.如何执行这个脚本?pythonfisr.py#即可执行脚本文件了cat命令cat猫,用这个只猫瞄一眼文件的内容
cat文件名[root@s25linuxtmp]#catfirst.pyprint("你看这个灯,它又大又量")#读取内容,且显示行号cat-n文件名#利用cat写入文件内容,写一首诗[root@s25linuxtmp]#cat>>second.py<
1.echo输出一个字符串,内容不在屏幕上打印,写入到一个文件中[root@s25linuxtmp]#echo"左手跟我一起画个龙">迪斯科.txt[root@s25linuxtmp]#echo"左手跟我一起画个龙">迪斯科.txt[root@s25linuxtmp]#echo"左手跟我一起画个龙">迪斯科.txt[root@s25linuxtmp]#echo"左手跟我一起画个龙">迪斯科.txt[root@s25linuxtmp]#echo"左手跟我一起画个龙">迪斯科.txt[root@s25linuxtmp]#[root@s25linuxtmp]#[root@s25linuxtmp]#cat-n迪斯科.txt1 左手跟我一起画个龙2.追加写入文件内容[root@s25linuxtmp]#echo"右手和我划一道彩虹">>迪斯科.txtcp命令拷贝
#对于配置文件的修改,或者是代码文件的修改,防止突然写错了,复制一份#复制文件[root@s25linuxtmp]#cp木兰诗.txt新_木兰诗.txt#复制文件夹,复制文件夹需要添加-r递归复制参数[root@s25linuxtmp]#cp-ranew_amv命令mv命令可以移动文件,文件夹的路径
mv命令也能够进行重命名
1.重命名的功能语法是mv旧文件名新文件名[root@s25linuxtmp]#mv木兰诗.txtnew_木兰诗.txt2.移动位置语法mv你要移动的文件或是文件夹移动之后的目录名(如果文件夹存在,则移动,不存在是改名)案例mvtest.txtb#移动test.txt文件到b文件夹下(b文件夹得存在)alias别名命令为什么rm命令默认会有一个让用户确认删除的动作呢?
解答是因为rm的-i参数作用alias#直接输入可以查看当前系统的别名案例1.给系统添加一个别名当你敲下start就是在执行后面的长串命令,很方便aliasstart="python3/home/mysite/manager.pyrunserver0.0.0.0:8000"find命令可以用于搜索机器上所有的资料,按照文件名字搜索,linux一切皆文件
语法find你要从哪找-type你要的文件类型是什么-size你要的文件内容多大-name你要的内容名字是什么-typef是找普通文本文件-typed是找文件夹类型-name是指定文件的名字内容#在系统上全局搜索,所有的.txt文件find/-name"*.txt"#指定在etc目录下,进行局部搜索,一个网卡配置文件,网卡名字是以ifcfg开头的,文本类型文件find/etc-typef-name"ifcfg*"案例2
cat文件|grep"你想要的内容"#用法二1.找出linux的用户信息文件,中有关pyyu的行信息/etc/passwdcat[root@s25linuxtmp]#cat/etc/passwd|grep"pyyu"pyyu:x:1000:1000:pyyu:/home/pyyu:/bin/bashhead、tail命令head和tail都是能够读取文件内容的语法是head文件名#默认从文件的前10行看head/etc/passwd#默认看前10行head-3/etc/passwd#查看文件的前3行tail文件名#默认从文件的后10行看tail-2/etc/passwd#查看文件的后2行tail命令的实时监控用法,可以用于检测线上的日志文件,检测用户的请求信息tail-f文件名#实时刷新文件内容tail-f/tmp/test.txt#能够检测文件内容的变化如何查看文件的,中间20行-30行的内容,今天的作业练习scp命令在2台linux机器(macos)之间,通过网络安全的传输文件,文件夹
scp命令语法是环境准备,准备2台linux机器
确保两台机器能够通信
机器1:192.168.178.134
机器2:192.168.178.235
1.安装此工具yuminstalllrzsz-y2.安装好lrzsz之后,就存在了2个命令一个是rz一个是szrz#直接输入rz命令,能够蹦出一个弹窗,接收windows的资料sz文件#发送linux的一个文件,发给windows某个位置,也是出现一个弹窗du命令用法du【参数】【文件或目录】-s显示总计-h以k,M,G为单位显示,可读性强案例
统计/var/log/文件夹大小du-sh/var/log/#显示当前目录下所有文件的大小[root@s25linuxtmp]#du-h./*vim命令的用法1.vim文件名#此时进入命令模式,你敲击键盘的动作都会被识别是一个vim的命令,比如a,i,o进入插入模式2.但凡进入插入模式之后,敲击键盘的动作就会被识别为是普通的字符串了3.按下esc退出编辑模式之后,又进入命令模式了4.输入:wq!保存vim的写入内容,然后退出vim,结束操作在命令模式下,常用的指令$快速移动到行尾0快速移动到光标的行首x删除光标所在的字符gg移动到文件的第一行G移动到文件的最后一行/string你要从文件开头寻找的内容,例如/to找出文件中所有的to字符,按下n键,跳转到下一个匹配的字符string从文件的第行,向上搜索字符串信息%找到括号的另一半yy复制光标当前行3yy复制光标后3行p打印yy所复制的内容dd删除光标所在行4dd删除光标向下的4行内容dG删除光标当前行,到行尾的所有内容u就是撤销上一次的动作如何快速的复制,打印生成多行内容例如按下9999yy就是复制9999行,然后按下p打印,就能够快速的复制N多行了...底线命令模式下:wq!:q!不保存退出:数字快速的定位到某一行:setnu显示vim的行号top命令windows的任务管理器见过吧
能够显示动态的进程信息
cpu、内存,网络,磁盘io等使用情况,也就是一个资源管理器
那么linux的资源管理器就是top命令
kill进程的id号如果遇见卡死的进程,杀不掉,就发送-9强制的信号kill-9pidnetstat命令查看linux的网络端口情况
语法如下常用的参数组合-t-n-u-l-p[root@s25linuxtmp]#netstat-tunlp#显示机器所有的tcp、udp的所有端口连接情况#例如验证服务器80端口是否存在netstat-tunlp|grep80#过滤3306端口是否存在netstat-tunlp|grep3306#过滤ssh服务是否正常[root@s25linuxtmp]#netstat-tunlp|grepsshtcp000.0.0.0:220.0.0.0:*LISTEN1147/sshdtcp600:::22:::*LISTEN1147/sshd#有些公司为了保护服务器安全,更改了默认的远程连接端口#ssh端口26674ip是123.206.16.61账号是xiaohu密码是xiaohu666#我怎么登陆服务器呢?用如下的命令去连接服务器ssh-p26674xiaohu@123.206.16.61ssh-p22root@192.168.178.134root@192.168.178.134'spassword:grep是支持正则表达式的
1.打开vmware虚拟机,通过ipaddrshow命令查看今日的ip地址
2.通过xshell远程连接linux机器,因为xshell远程终端更好用
对于一个qq群而言,有哪些角色划分,权利的划分群主-----qq群里面,权利最大,想干嘛就干嘛,可以随意的拉人,踢人等等----相当于皇帝----相当于linux的root用户管理员---他是root赋予的临时的超级权限-在用皇帝的身份狐假虎威---钦差大人---linux系统中的sudo命令--尚方宝剑吃瓜群众---权利最低的,基本上只能够在自己的家目录,进行增删改查,其他目录,权限都很低-----linux的普通用户系统创建了用户,同时会创建一个同名的组
例如
useraddcaixukun#创建普通用户caixukun,系统会在/etc/passwd文件中,增加一行用户信息且同时创建了一个用户组也叫caixukun,存放在/etc/group文件中id命令查看用户的账户信息的命令
idroot[root@s25linuxtmp]#idrootuid=0(root)gid=0(root)组=0(root)idcaixukun[root@s25linuxtmp]#idcaixukunuid=1004(caixukun)gid=1004(caixukun)组=1004(caixukun)组的概念对于技术部门,运维需要分配的单个用户的权限太散,太多,人太多了。。。
【权限控制,其实控制的就是,不同的组,不同用户,针对不同的文件夹,文件,操作的权限的不同】
比如说
mysql的默认数据存放路径,如/var/lib/mysql/*那么这个mysql的数据文件,以及所有的文件夹,是属于哪个组,哪个用户管理呢?比如说有一个文件-rw-r--r--.1rootroot02月1708:52mysql.log前端组
后端组,权利稍微大一点。
运维组,对于服务器操作权限很大,可以使用root的权限
测试部门
安全部门
DB部门
运维都得对上述的人,进行权限控制,对于服务器的操作权限
因此引入组的概念,针对整个组管理,就方便多了,
root为什么叫root,是因为系统提出了UID的概念,用户id号,用户id为0的就是系统的超级用户
普通用户由root用户创建,默认的UID是从1000开始进行累计,权利很低
默认用户家目录都在/home例如/home/pyyu//home/alex//home/wupeiqi/用户管理的命令添加删除用户,注意的是,涉及到权限的修改,只能用root去操作,其他人基本上没权限
[root@s25linux~]#ll/tmp总用量4drwxr-xr-x.2rootroot62月1711:00hehe#文件夹解读它的信息drwxr-xr-x拆分如下dd代表是一个文件夹rwxuser是root,root可以读写执行r-xgroup也是root,root组里的成员,可以读,执行r-xothers权限是读,执行#文件的权限,必须顺序是rwx,没有权限则写一个-号-rw-r--r--.1pyyupyyu23282月1709:15pwd.txt#文件#解读如上的权限-开头是-号,就是普通的文本类型rw-user是pyyu,pyyu这个用户权限是可读、可写,不可执行r--group是pyyu,只读r--此时peiqi这个用户对于pwd.txt这个文件,权限就是只读的对于文件的rwx
rcat,more,less,head,等读取文件内容的操作wvim,echo,等写入内容的操作x可以执行的脚本,例如bash,python等脚本,文件会变成绿色对于文件夹的rwx
rls查看文件夹内容w允许在文件夹中创建文件等操作x允许cd进入此文件夹chmod命令总结chmod可以更改文件的权限,更改针对user,group,other的权限修改,例如chmodu+rfile.txt#给文件的user,添加读的权限chmodg-xfile.txt#给文件的group组权限,去掉可执行chmodo+r,o+w,o+xfile.txt#给文件的other身份,最大的权限,读写执行chmod000file.txt#给与文件最低的权限,任何人不得读写执行chownchangeowner缩写
更改文件的拥有者,user
chown新的属主file.txtchgrp更改文件的拥有组,group
changegroup缩写
chgrp新的属组file.txt软连接windows的一个快捷方式而已
创建命令ln-s目标文件绝对路径软连接绝对路径[root@s25linuxtmp]#ln-s/tmp/test.txt/opt/t.txt#给/tmp/test.txt创建一个快捷方式,放在/opt/t.txt这里删除快捷方式,删除软连接是不会影响源文件的windows下装另一个qq在D:\qq\qq.exe,发送快捷方式到桌面打包、压缩、解压缩也就是linux的tar命令
打包,不节省空间
压缩,节省磁盘空间
语法tar命令功能参数-z调用gzip命令,对文件压缩,加上这个参数,才会节省磁盘空间-x解包,拆快递-v显示整个过程-f必须写在参数结尾,指定压缩文件的名字-c打包,收拾快递压缩文件的后缀,本没有意义,只是告诉别人,这个文件是用什么命令压缩/解压缩*.gzgzip命令解压缩*.tar用tar命令解压缩*.xz用xz命令解压*.zip用unzip命令解压案例1:打包/opt/目录下所有的内容,打包生成tar包allopt.tar
第一步:打包opt下所有内容[root@s25linuxopt]#tar-cvfallopt.tar./*第二步:解包这个tar包[root@s25linuxopt]#tar-xvfallopt.tar./案例2:打包,且压缩/opt目录下所有内容,生成tar.gz包allopt.tar.gz
第一步:打包,且压缩,就是加一个-z参数即可[root@s25linuxopt]#tar-zcvfallopt.tar.gz./*第二步:解压缩,常见的*.tar.gz,也有人会缩写成*.tgz,都可以如此的去解压缩[root@s25linuxopt]#tar-zxvfallopt.tar.gz./疑问:必须先打包再压缩吗?能对一个文件夹直接压缩吗?解答:打包,压缩是一体的,是调用tar命令,加上-z参数,自动就压缩了tar-zcvfdir.tar.gz./testdir/#压缩此文件夹,放入到一个压缩文件dir.tar.gz中.gz是压缩的常见后缀格式防火墙用于控制服务器的出/入流量
防止恶意流量攻击服务器,保护服务器的端口等服务。
在学习阶段是直接关闭的,专业的运维人员需要学习iptables软件的一些指令
云服务器,默认都有一个硬件防火墙,以及软件防火墙(iptables、firewalld)我在服务器上,运行了django服务,如果开启了防火墙服务器,且没有自定义规则,默认是拒绝所有外来流量,导致我们windows无法访问到linux运行的django等程序1.清空防火墙规则iptables-F#清空防火墙规则2.关闭防火墙的服务systemctlstopfirewalld#关闭防火墙服务systemctldisablefirewalld#禁止防火墙开机自启DNS域名解析什么是dns解析?
域名查找命令nslookupwww.pythonav.cn#寻找dns对应关系浏览器输入url之后,是怎么解析的?发生了什么事?
浏览器里面输入www.pythonav.com发生了什么
crontab-e#编辑定时任务配置文件crontab-l#查看定时任务的规则定时任务,注意的是,几号,和星期几不得共用案例
1.每分钟,将一句话,追加写入到一个文件中第一步:crontab-e#打开配置文件写入如下内容,用的是vim编辑器命令*****/usr/bin/echo"有人问王思聪,钱是万能的吗?王思聪答:钱是万达的">>/tmp/wsc.txt2.检查定时任务crontab-l定时任务的语法规则*****命令的绝对路径分时日月周3,5****#每小时的第3,第5分钟执行命令152-5***¥每天的2点一刻,3点一刻,4点一刻,5点一刻,执行命令每天8.30上班3008***去上班每天12下班回家睡觉0000***回家睡觉定时任务语法练习
#每分钟执行一次命令*****命令的绝对路径分时日月周#每小时的3,15分钟执行命令*****命令的绝对路径分时日月周3,15****命令#在上午8-11点的第3和第15分钟执行*****命令的绝对路径分时日月周3,158-11***#每晚9:30执行命令*****命令的绝对路径分时日月周3021***#每周六、日的下午1:30执行命令*****命令的绝对路径分时日月周3013**6,7#每周一到周五的凌晨1点,清空/tmp目录的所有文件,注意执行的命令请用绝对路径,否则会执行失败*****命令的绝对路径分时日月周01**1-5/usr/bin/rm-rf/tmp/*#每晚的零点重启nginx00***/usr/bin/systemctlrestartnginx#每月的1,10,22日的4:45重启nginx*****分时日月周4541,10,22**/usr/bin/systemctlrestartnginx#每个星期一的上午8点到11点的第3到15分钟执行命令*****分时日月周3-158-11**1命令绝对路径记住一句话,服务器上操作,用绝对路径,基本不会出错了,除非手误,单词写错了。。。。能用绝对路径,别用相对路径!linux软件包管理windows的软件管理,安装文件的后缀*.exemacos的应用程序安装后缀*.dmglinux的二进制软件包都是*.rpm格式的软件的依赖关系
pipinstallflask#仅仅就安装了flask模块吗?肯定不是,会安装一堆依赖的模块,比如jinja2等模块那么在linux平台,一个软件想要正确的运行,也得解决系统的开环库环境,解决依赖关系linux平台的软件安装形式,有3个
配置笔记
yum源的默认仓库文件夹是/etc/yum.repos.d/,只有在这个目录第一层的*.repo结尾的文件,才会被yum读取
linux安装软件有哪些方式?
1.下载lol可执行安装文件lol.ext2.双击安装,首次应该是指定lol的安装位置3.下一步开始安装,lol会检查系统的微软的基础游戏运行组件,如果缺少某组件,游戏会安装失败(缺少什么就安装什么即可),如果微软的开发环境正常,则正常安装4.直到游戏安装完毕,生成可执行的游戏执行程序5.进入游戏安装目录,开始使用linux平台安装软件,也是这个过程,只不过用命令行代替了点点的操作创建django项目,linux运行django注意你的python3版本,和django的版本,是否合适!!
讲师机环境
python3.6.9
django选择用1.11.25
linux编译安装软件的步骤1.获取软件的源代码,去官网下载最新的,或者指定版本2.解压缩源代码3.进入源代码目录,开始编译三部曲,指定安装路径,make,makeinstall4.软件编译安装结束后,配置PATH环境变量,能够便捷的访问命令virtualenv虚拟环境工具需要用虚拟环境的背景
小公司,服务器环境可能没那么严格(本地开发人员+测试环境+线上环境)
大公司,(本地环境+测试环境+预生产环境+线上环境)
Pythonweb开发组
如何解决环境问题?
在这里,是看一下
在windows开发一个项目,pip3安装了很多的模块,最终该项目才可以运行,比如crm代码
代码上传到一个新的服务器,是一个空的环境,还得在部署一遍,比如crm代码
vue前后端分离的部署,难度会+1
virtualenvwrapper是吧,那个是virtualenv的升级版,用哪个都一样,都是创建多个虚拟环境
virtualenv不支持查看所有虚拟环境,virtualenvwrapper支持,是lsvirtualenv命令
让你的django在linux上,支持并发形式启动,支持多进程,多线程,乃至于协程的一个C语言编写的高性能工具
目前你所学的linux技能对crm的进程进行管理,启停ps-ef|greppython3ps-ef|grepuwsgi#检查uwsgi的进程,确认django是否存活,假如检测到pid是5999停止uwsgi,kill-95999#检测uwsgi如果挂掉之后,自动帮你重启#使用supervisor这个python开发的进程管理工具,用它启动uwsgi之后,uwsgi进程挂掉后,自动会再启动比如,crm的部署技术栈nginx+uwsgi+django+mysql,我们可以手动的,单独启动每一个进程还可以通过supervisor一键启动这四个进程,进行批量管理,批量启停,很好用安装supervisor工具
1.使用yum命令即可直接安装[root@s25linux~]#yuminstallsupervisor-y2.生成supervisor的配置文件[root@s25linux~]#echo_supervisord_conf>/etc/supervisord.conf3.修改supervisor的配置文件,添加管理crm的任务vim/etc/supervisor.conf#再最底行,添加如下内容#[program:xx]是被管理的进程配置参数,xx是进程的名称[program:s25crm]command=写入启动uwsgi的命令;supervisor其实就是在帮你执行命令而已!autostart=true;在supervisord启动的时候也自动启动startsecs=10;启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒autorestart=true;程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启stopasgroup=true;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程killasgroup=true;默认为false,向进程组发送kill信号,包括子进程master--工头进程,主人进程--突然工头挂了..
worker---主进程突然挂了,工作进程就变为了僵尸进程,
worker
因此,杀死uwsgi,需要向这个进程组,发送终止信号,杀死一组进程
还不会的同学,,可认真听了~~~~
指的就是在nginx中,能够通过文件目录的不同,可以定义多个不同的网站
修改nginx的首页内容,你们信不信我,一分钟做出一个dnf(腾讯的游戏官网)的官网~相信的扣1,觉得我在吹牛皮的,扣21.如何修改nginx的首页地址,进入html目录下,找到index.html文件,默认读取的是这个文件[root@s25linuxhtml]#pwd/opt/tngx232/html[root@s25linuxhtml]#ls50x.htmlindex.html2.在自己的站点下,存放一些静态资料,如gif,jpg等[root@s25linuxhtml]#ls50x.html55kai.jpgindex.htmls25.htmlnginx的多站点功能修改hosts文件,强制写入域名对应关系,比较麻烦1.修改nginx.conf配置如下,定义2个server{}区域块即可第一个虚拟主机的配置
#目前这里是第一个server{}区域块,端口是85server{#定义该网站的端口listen85;#填写域名,没有就默认即可server_namelocalhost;#更改nginx的编码支持charsetutf-8;#access_loglogs/host.access.logmain;#access_log"pipe:rollbacklogs/host.access_loginterval=1dbaknum=7maxsize=2G"main;#nginx的域名匹配,所有的请求,都会进入到这里#例如192.168.178.140:85/lubenwei.jpg#192.168.178.140:85/menggededianhua.txtlocation/{#这个root参数,是定义该虚拟主机,资料存放路径的,可以自由修改#当用户访问192.168.178.140:85的时候,就返回该目录的资料root/s25python/;#index参数,用于定义nginx的首页文件名字,只要在/s25nginx目录下存在index.html文件即可indexindex.htmlindex.htm;}}第二个虚拟主机的配置
#这里就是上一个Server{}的标签闭合处了,,可以写入第二个server{}#注意,注意,server{}标签快,是平级的关系,不得嵌套,检查好你的花括号#这里是第二个虚拟主机的配置了server{listen89;server_name_;#nginx的域名匹配#当用户访问192.168.178.140:89的时候,返回该目录的内容location/{root/s25linux/;indexindex.html;}}改完配置文件后,分别创建2个站点的资源目录
讲道理,需要准备2台linux服务器192.168.178.134192.168.178.140考虑到咱们同学的笔记本,安装2个虚拟机会比较卡,因此决定用如下的方案,很巧妙,用到了nginx支持的多虚拟主机功能准备1台机器即可如192.168.178.140,基于端口的不同,运行不同的站点1.准备一台linux机器,安装好nginx之后,,修改nginx.conf如下,配置好2个server{}标签第一个server{}标签,用于反向代理的作用,修改nginx.conf如下
#第二个虚拟主机,作用是web站点功能,资源服务器,提供页面的server{listen90;server_name_;#当请求来到192.168.178.140:90的时候,就返回/s25proxy目录下的index.htmllocation/{root/s25proxy/;indexindex.html;}}创建资源文件夹,以及html页面内容[root@s25linuxconf]#cat/s25proxy/index.html
#第二个虚拟主机,作用是web站点功能,资源服务器,提供页面的server{listen90;server_name_;#当请求来到192.168.178.140:90的时候,就返回/s25proxy目录下的index.htmllocation/{root/s25lol/;indexindex.html;}}第三个server{}标签的作用,同样是返回资源页面,查看负载均衡效果的,95端口
#第三个server{}虚拟主机,作用是提供资源服务器的内容的server{listen95;server_name_;location/{root/s25dnf/;indexindex.html;}}此时分别准备2个资源服务器的内容
准备好/s25lol/index.html准备好/s25dnf/index.htmlnginx负载均衡算法1.默认是轮询机制,每台服务器处理一次2.加权轮询,修改nginx.conf如下,给与机器不同的权重upstreams25real_server{server192.168.178.140:90weight=4;server192.168.178.140:95weight=1;}day06今日内容对于pythonweb后端而言,linux学习阶段,部署是最锻炼你操作,以及对linux系统的熟悉程度的
supervisor+nginx+uwsgi+django+virtualenv+mariadb
crm是通过模板语言进行和前端通信的,前端代码写在后端中{{static.el}}如何停止supervisor以及uwsgi1.必须得先停止supervisor才可以停止uwsgipkill-9supervisor2.杀死uwsgipkill-9uwsgikill命令,是基于pid杀死进程,如kill5888pkill命令,是基于进程的名字杀死进程pkilluwsgicrm部署的史上最详细的流程部署笔记
vue打包之后,生成了dist静态文件夹,前端的静态文件,都在这里了,静态文件,都是丢给nginx直接去返回即可vue的dist静态文件,运行之后,能够立即看到路飞的首页内容了,此时还没有和后端的数据交互当你在前端的单页面应用中,点击课程列表,向后台发送ajax请求,提交postvue请求课程列表的post请求,应该是发给谁去处理的?答案是DRF后台去处理的注意在线上部署的架构图流程中,,django后台,是躲在了防火墙之后的,只能通过nginx反向代理去访问...路飞前后端分离部署的示意图,需要理解下
从前端搞起?还是后端搞起?
我是在配置node的环境,用于npmrunbuild对前端的vue代码,进行打包,这个还记得吗??
测试访问crm是否正常
测试访问路飞是否正常
通过用supervisor管理2个项目
1.使用supervisor启动crm项目,完成nginx+crm的部署
截图展示,supervisor管理路飞进程截图展示路飞的购物车页面,有数据即可day07redis学习五大数据类型,开发必会的技能老师的博客
1.redis如何在linux安装呢?-rpm包安装-yum自动化安装,在阿里的yum仓库中,有redis的软件包-源代码编译安装redis是内存性数据库,断电,数据丢失,进程重启,数据丢失
得配置redis的数据持久化,防止数据丢失
redis支持ms复制,读写分离,防止单点故障,数据丢失
什么是多实例就是机器上运行了多个redis相互独立的进程互不干扰的独立的数据库叫做多个redis数据库的实例,基于配置文件区分即可1.上午的最后一步,演示的是,当我们删除aof文件,或者是rdb,aof文件异常损坏,丢失,数据不也没了吗?操作笔记
如图是redis的多实例功能,且配置主从同步的图
从库挂掉,无所谓,重新再建立一个从库,加入主从复制即可,。,。你会发现,如此的手动切换复制关系,其实是很难受的,如果在夜里凌晨四点,redis主库突然挂了,你该怎么办?你媳妇愿意让你起来干活吗?
因此你该咋办?是不是得学点别的技术?你希望有什么东西能帮你不?
redis哨兵的工作原理:
1.准备3个主从复制的redis实例明天见~~~~感谢倾听
昨天的作业完成情况并不好,近10个同学没交
它不仅仅是个作业,也是一个任务,执行力是一个人很重要的表现....
不忘初心、方得始终!
本地开发环境--快速开发新功能---django2---等等新的模块
测试环境---测试代码
预生产环境---和线上服务器环境一模一样
线上环境服务器---部署代码
整个环境部署的问题,非常棘手,因此引入了容器技术,唰的一下,全部解决了
1.利用虚拟机的模板克隆功能,将整个机器的环境复制一份,再丢给第二个机器去使用
2.最好是使用docker去部署环境
1.查看本地机器,所有的镜像文件内容dockerimages2.查看docker正在运行的进程dockerps3.查看所有运行,以及挂掉的容器进程dockerps-a4.查看容器内的运行日志dockerlogs容器iddockerlogs-f容器id#实时刷新容器内的日志,例如检测nginx等日志信息5.查看容器内的端口转发情况dockerport容器id#查看容器的端口转发[root@s25linux~]#dockerport6155000/tcp->0.0.0.0:6000dockerfile手写一个dockerfile,运行出python的应用
腾讯课堂的极速版讲课,我会发给你们一个课堂的连接,即可观看~~~~休息20分钟
4:30继续开讲
愿意听就好~~谢谢,休息一会
细水长流,有任何linux的疑问,都可以来问我,互相学习,进步
github---托管程序员的代码
dockerhub----托管程序员编写的docker镜像
不同的配置文件,遵循的语法也不一样
yaml
语法规则大小写敏感使用缩进表示层级关系缩进时禁止tab键,只能空格缩进的空格数不重要,相同层级的元素左侧对其即可#表示注释行yaml支持的数据结构对象:键值对,也称作映射mapping哈希hashes字典dict冒号表示key:valuekey冒号后必须有数组:一组按次序排列的值,又称为序列sequence列表list短横线-list1纯量:单个不可再分的值对象:键值对pythonpython的字典套字典,数据结构表示如下
{ "s25":{ "男同学":["宝元","太白","马jj"], "女同学":["景女神","alex"] }}