1.Linux的作用:
商业服务器基本都是linux的、开源软件都先支持linux、大数据分析,机器学习首选linux、整个互联网地基基本由linux支撑起来。如: 生活中的手机是基于linux二次开发的,还有路由器也是基于linux开发的。
2.Linux是什么:
linux是一个计算机操作系统,和Windows差不多,但是他没有可视化UI界面,都是由命令在终端进行操作。linux系统中没有exe安装程序,linux做区分大小写,一切皆文件。
3.Linux定制化软件:
linux本身是开源的,作用范围比较广,从基础基础开发成本会有点高,此时就有很多大牛根据业务需求做了二次开发,分了好多分支,根据业务需求安装对应的分支即可。常见的分支类:Ubuntu(有可视化软件)、CentOS等
4.Linux能做什么:
企业服务器、web服务器、数据存储软件、嵌入式开发
5.虚拟机软件和Xshell:
虚拟机软件概述: 通过软件模拟具有完整硬件系统所有功能且运行在一个完全隔离环境中的完整计算机系统,说白了就是通过软件技术 在自己计算机上安装另一个操作系统,而不影响原系统。
安装虚拟机软件:虚拟机软件常用的有两款,即:Virtualbox和vmware,这里我用Virtualbox ,
Virtualbox 下载地址:https://www.virtualbox.org/wiki/Downloads
Xshell面板 :跟终端一样,用于操作虚拟机,Xshell 下载地址(Win): https://www.xshell.com/zh
提示:windows安装虚拟机需要开启BIOS虚拟支持,os等不需要开启。
6.在本地虚拟机安装CentOS操作系统:
1.先到官网下载centos镜像文件,CentOS下载地址:https://www.centos.org/download/
2.点击Virtualbox新建按钮,新建一个虚拟机操作系统选centos,创建好后左边会看到新创建的虚拟机,选中新创建的虚拟机后点击顶部设置–储存–控制器(选择并配置下载好的centos镜像ios文件),之后点确认。
3.选中新建的centos虚拟机,点击启动,之后就是一些类似windows装系统的一些配置,如:选择系统语言,推荐使用英语等,配置项配置后继续点击左上角Done进行安装系统。
4.安装完后点击右下角reboot重启虚拟机,重启过程需要等待几秒中直至进入:localhost login: 出现。
5.登录虚拟机:在localhost login后面输入 root 后回车,之后在:password后面输入刚开始配置的开机密码后回车,此时会看到[root@localhost ~]# ,那么centos操作系统已经安装完成了。
7.云服务器:
本地计算机和云服务器区别在于是否有公网ip,如果自己的网路是固定ip,那么你也可以将你的电脑部署成服务器使用,市面上的服务器有两种,一种是租别人的,另一种是购买硬件,拉固定ip的网线,将服务器放到自己公司;如果是做测试或者更简单,那么还是推荐云服务器,云服务器(云服务器可以自己定制配置,而云主机定制性不高)常见购买平台有:
阿里云:https://www.aliyun.com,登录阿里云后台–产品–云服务器ECS–立即购买–选择配置后付款,服务器密码:zxcvbnm123456CYH
腾讯云:https://cloud.tencent.com,登录腾讯云后台–产品–云服务器–立即购买
网易蜂巢: https://c.163.com
8.Linux常用操作命令:
进入虚拟机,localhost login: root ; password: 123456
配置公网ip:
1.查看配置命令:ifconfig,输入命令回车后提示: command not found,原因是装的是server版本,缺少很多配置。
2.查看ip地址: ip addr ,这里会返回本地ip和一个enp0s3开头的东西,此时我们可以继续第三步来配置公网ip和内网ip。
3.编辑网络配置文件:vi /etc/sysconfig/network-scripts/ifcfg-xx,vi是linux内置的编辑器,/etc/sysconfig/network-scripts/ifcfg-XXX是网路配置文件,其yes中XXX表示某个网络,选中某个网络路径后回车,进入第四步:
4.按方向键可以移动光标位置,按i键进入inser插入,修改ONBOOT=yes进入第五步。
5.按ESC键进入命令模式,然后按冒号键,之后按wq回车,wq表示写入并退出。
6.重新启动网络服务:service network restart
7.重新查看ip,此时会看到inet: 10.0.2.15/24,这个就是内网ip,如果是远程服务器,可以看到公网ip,如下:
8.查看文件目录:ls;进入某个目录:cd 路径
9.新建文件命令:touch
安装资源:(安装net-tools,用来查看配置项)
1.安装资源:yum install XX ,其中XX表示资源名称。
2.这里会有提示选两次y后回车。
3.之后就可以使用ifconfig命令查看配置。
9.桥接网卡:
当需要外网访问虚拟机时,此时ip是不能被访问到的,需要设置网络,设置虚拟机网路–连接类型–桥接网卡。
替换默认源:
这里的源实际可以理解为包的远程仓库,类似npm,默认源一般都是国外的,下载速度比较慢,通常情况下会配置镜像从国内下载资源。推荐镜像:http://mirrors.163.com/.help/CentOS7-Base-163.repo
10.使用Xshell连接服务器:
桥接完网卡后可以通过XShell连接服务器,也可以使用真实的服务器做测试,打开Xshell后新建–输入对应的ip和名称及密码即可连接。
在Xshell中使用网易镜像安装Vim : Vim取代了vi编辑软件
1.查看linux版本:cat /etc/redhat-release
2.使用wget安装Vim,这里需要注意,需要先安装wget,命令:yum install wget
3.执行备份命令进行备份:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
4.进入/etc/yum.repos.d/目录:cd /etc/yum.repos.d/
5.执行命令下载Vim:wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
6.运行以下命令生成缓存:yum clean all 和 yum makecache
7.下载vim:yum install vim
8.测试vim: vim /etc/sysconfig/network-scripts/ifcfg-XX 按tab查看并补全XX部分后进入文件,和vi基本一样,只是对vi的加强版本,支持Xshell,语法高亮等。
11.SSH工具实现客户端和服务端交互:
Secure Shell安全外壳协议,是建立在应用层基础上的安全协议,专为远程登录会话和其他网络服务提供安全性的协议,需要服务端和客户端都要安装。
服务端SSH:
1.安装SSH服务: yum install openssh-server
2.启动SSH服务:service sshd start
3.查看进程是否启动:ps -ef命令用来查看所有进程,ps -ef |grep XXX用来查看XXX进程,如查看SSH则为:ps -ef |grep ssh
4.设置开机自启:chkconfig sshd on
提示:如果centos安装的是服务器端的linux系统,那么它默认有安装SSH。
客户端支持SSH:
客户端支持SSH有Xshell,Putty,secureCRT等工具,需要注意的是Linux平台需要安装openssh-clients,命令:yum install openssh-clients
在Xshell中SSH客户端连接SSH服务端:
1.ssh客户端连接ssh服务端命令:ssh root@192.168.0.110
2.这里确认连接后会要求输入服务器端密码,之后回车会看到连接成功的提示。
3.退出远程连接:输入 exit 命令后回车
SSH中config配置:
ssh中config一般是管理多个终端的,实际工作中运维可能管理多个机器,此时使用config管理就会方便的多;config存放的路径:~/.ssh/config,其中波浪号表示home目录,点号在Linux表示隐藏目录;config配置文件中关键字:Host(别名)、HostName(主机名)、Port(端口,ssh服务的默认端口是22)、User(用户名)、IdentifyFile(秘钥文件的路径)
1.进入到~/.ssh/目录下:cd ~/.ssh/
2.查看改文件下的文件:ls ;通过输出可以看到并没有config文件,此时需要新建一个config文件
3.新建一个config文件:touch config
4.再次执行ls查看ssh/目录先的文件列表可以发现有config
5.打开并编辑config文件: vim config
6.点击i进入输入模式:编辑文件如下:注意,多个虚拟机配置建议留一行空在配置,每个新的服务器配置都是以Host开始,下一个Host结束
7.按esc退出输入模式,再按冒号键并输入wq保存并退出
8.使用别名快捷连接某个服务器:ssh server1,server1为配置的别名
SSH安全免密码登录:ssh key
前面连接每次都要手动输入密码,使用ssh key可以免输入密码登录,
ssh key使用非对称加密方式生成公钥和私钥,私钥是需要存放到自己电脑上的,而公钥是存放到服务器上的。
私钥存放在本地:~/.ssh下
公钥可以对外开放,放在服务器的~/.ssh/authorized_keys
linux平台生成ssh key命令:ssh-keygen -t rsa(rsa可以是dsa,rsa和dsa是加密算法)
windows平台Xshell生成ssh key:
Xshell生成秘钥的位置:工具—用户秘钥管理者—生成—下一步—秘钥名称(我起:contoskey)—密码可以输入也可以不输入—点击继续—将生成的秘钥另存到本地—–另存后点击完成
使用公钥:在Xshell工具所有会话中右击服务器—-属性—连接—-用户身份验证—-勾选public key—-选中public key后左边设置,用户秘钥选择contoskey后确认
服务器配置私钥:输入命令cd ~/.ssh/进入home目录下,输入ls -al命令查看文件列表发现还没有authorized_keys文件(文件名固定),此时我们需要输入命令:touch authorized_keys新建这个文件;继续输入命令ls -al查看是否有此文件;继续输入命令vim authorized_keys打开此文件,敲击键盘i键,进入输入模式,将生成的秘钥用比机器打开复制里面的文本粘贴到authorized_keys文件中后按Esc键,按冒号键后输入wq回车
连接服务器:此时双击所有会话中的服务器就会免输入秘钥连接。
Linux平台生成ssh key:
1.进入home目录:cd ~/.ssh/
2.查看home目录下的文件属性: ll(ll是ls -l的别名)
3.生成ssh key: ssh-keygen -t rsa(-t rsa可以省略,默认采用rsa算法加密)
4.执行完上面步骤后会让输入文件名:这里我输入的是:contosservekey(需要注意的是,这个命名需要和下面命令中的命名一致)
5.接下来的两步是设置密码,可以直接回车跳过不设置
6.使用命令显示当前文件夹下所有文件和文件夹的详细信息:ls -al (文件显示其他命令:ls粗略显示不被隐藏的所有文件与文件夹、ls -a粗略显示文件夹下所有隐藏和不隐藏的文件、ls -l详细显示文件夹下所有不被隐藏的文件及文件夹)
6.其中contosservekey为私钥,contosservekey.pub为公钥
7.使用cat contosservekey.pub查看公钥,此时文本会暴露在终端,复制此文本进行下一步,插入到authorized_keys文件中
8.使用命令vim authorized_keys进入authorized_keys文件(这里可能会有之前配置的,没关系,换行插入新的即可)
9.输入命令将私钥加载到ssh服务:ssh-add ~/.ssh/contosservekey,这里如果报Could not open a connection to your authentication agent,那么输入命令:ssh-agent bash后再次输入命令ssh-add ~/.ssh/contosservekey提示:Identity added: /root/.ssh/contosservekey (/root/.ssh/contosservekey)即可,特别注意ssh-add ~/.ssh/contosservekey中contosservekey需要和生成的秘钥文件名相同。
10.免密登录:ssh root@自己的ip,将无需密码被登录
总结:上面配置的是同一个设备免密登录,如果想要实现a免密登录b,那么就需要将a上面生成的秘钥(公钥中文本复制并配置到b中的authorized_keys文件中)
ssh端口安全: ssh默认端口是22,这样很多不法分子就有可能破解服务器密码攻击服务器,这里推荐修改端口,这样不法分子想要连接服务器就更难点,安全性更高。
1.修改/etc/ssh/sshd_config配置文件:vim /etc/ssh/sshd_config,进入文件修改Port属性,这里需要注意,#号表示注释掉的,Port可以配置多个,多个就是监听多个端口。
2.重启ssh服务:service sshd restart
12.Linux基本命令:
Linux常用命令可以分为以下几类:
1.软件操作命令:
软件包管理器:yum
安装软件: yum install XXX
卸载软件:yum remove XXX
搜索软件: yum search XXX
清理缓存:yum clean packages
列出已安装: yum list
软件包信息: yum info XXX
2.服务器硬件资源和磁盘操作:
查看内存:free -m
查看硬盘:df -h
查看负载:w或者top
查看cup个数和核数:cat /proc/cpuinfo
格式化磁盘:fdisl
3.文件和文件夹操作命令:
根目录:/
家目录:/home
临时目录:/tmp
配置文件:/etc
用户程序:/usr
进入当前文件夹下某个文件夹: cd 文件夹名
进入当前文件夹外面文件夹: cd …/
查看目录下文件:ls
新建文件:touch 文件名
新建文件夹:mkdir 文件夹名(新建多层文件夹:mkdir -p file1/file2/file3, -p表示循环创建)
删除文件和目录:rm 文件名称 (删除文件夹需要在rm后面加-r,如:rm -r 文件夹名,这里需要一层一层的确认,如果不想确认,那么使用rm -rf 文件夹名,进行强制删除)
复制文件夹或文件:cp ./testfile ~/testfilecopy ,将当前文件testfile复制到~/目录下并命名为testfilecopy
移动文件夹或文件:mv ./testfile ~/ ,将当前文件夹下testfile文件移动到~/目录下
显示路径:pwd
4.系统用户操作命令:
除了touch新建文件外,vim也是可以新建文件的,其命令:vim 文件名。
删除某一行内容:小写模式下按两次d,大写模式下按一次D
撤销:按一下u键
复制某行内容:y进行赋值,p进行粘贴
移动光标到首行:gg, 移动光标到末行:G
vim读取文件实际是将文件加载到内存中,此时如果有个大于内存的文件,服务器就会被卡死,这时就不推荐直接使用vim打开文件,此时可以使用其他命令操作,如:
读取一个日志文件的末尾使用命令:tail;
从头部读取:head;
读取整个文件:cat;
分页读取:more;
可控分页:less;
搜索关键字:grep;
查找文件:find,如查找当前文件下所有文件:find . ;查找包含某一部分的文件:find . -name “test*” ,星号表示所有;
统计个数:wc
例如:
统计某个文件有多少行:cat testfile | wc -l
列出当前目录下子目录中一把文件:find . -type f
列出当前目录下所有近20天有更新过的文件:find . -ctime -20
列出、var/logs目录下更改时间在7日以前的普通文件,并在删除之前询问他们:find /var/logs -type f -mtime +7 -ok rm { };
文件解压:tar命令,将文件testfile压缩为testfile.tar:tar -cf testfile.tar testfile
显示testfile.tar文件: tar -tvf testfile.tar
解压testfile.tar文件:tar -xf testfile.tar
使用gz压缩:tar -czvf testfile.gz testfile
解压gz压缩testfile.gz文件:tar -xzvf testfile.gz
新增用户:
1.进入home目录:cd /home
2.查看当前文件:ll,可以看到总数可能为0,
3.添加一个新用户:useradd kuhai1
4.给kuhai1设置一个密码:passwd kuhai1,输入命令后这里会有两次密码输入
删除用户:
1.进入到home目录下:cd /home
2.删除用户kuhai1:userdel kuhai1
5.防火墙相关设置:
防火墙的作用:保护服务器安全,
1.安装防火墙:yum install firewalld
2.启动防火墙:service firewalld start
3.检查状态:service firewalld status
4.关闭或禁用防火墙:service firewalld stop/disable
5.查看防火墙相关软件:yum list |grep firewall
7.查看防火墙是否启动:ps -ef |grep firewall
8.重启防火墙:service firewalld restart
9.查看状态:service firewalld status
10.关闭防火墙:service firewalld stop
11.查看firewall-cmd(查看防火墙配置)版本号:firewall-cmd -version
12.查看防火墙区域:firewall-cmd –get-zones
13.查看防火墙默认区域:firewall-cmd –get-default-zone
14.列出防火墙所有区域详细配置:firewall-cmd –list-all-zone
15.查看ssh防火墙服务:firewall-cmd –query-service=ssh
16.删除ssh防火墙服务:firewall-cmd –remove-service=ssh
17.添加ssh防火墙服务:firewall-cmd –add-service=ssh
18.查看端口号22下的服务:firewall-cmd –query-port=22/tcp
19.给端口22添加服务:firewall-cmd –add-port=22/tcp
6.提权操作sudo和文件传输操作:
linux中最大的权限是777,其下图中:r表示可读,值为4;w表示可写,值为2;x表示可执行,值为1,例如-rw–r–r权限为:644
在非root用户下下载资源时,此时可能会提示没有权限,此时在下载资源命令前面加sudo,如:sudo yum install vim,操作服务器时建议非root用户操作。
下载资源:wget和curl
wget下载百度首页:wget https://www.baidu.com
curl下载百度首页: curl -o test.html http://www.baidu.com,-o后面是对文件重命名
将文件传到服务器:
linux系统使用scp,将test.html传到服务器:scp test.html root@192.168.0.106:/tmp/ ,回车输入密码即可(将test.html放到了服务器的tmp目录下了)
linux系统使用scp,将服务器tmp目录下的hello.js文件下载到本地服务器根目录下:scp root@139.196.161.18:/tmp/hello.js ./ ,回车输入密码
Xshell工具上传文件:Xshell上传下载文件时需要先安装lrzsz,执行命令:yum install lrzsz, 之后输入rz命令回车选择文件点确认即可。
Xshell工具下载文件:sz 文件名,如下载文件123 到本地:sz 123