Linux
环境:
- VMware
- CentOS
1 linux简单介绍
1.1 常见操作系统
服务端操作系统 : linux、unix、windows server
单机操作系统 : windows(dos 、ucdos、win95、win98、win2000、xp、vista、win7、win8) MAC 、linux(ubuntu)
移动操作系统: Android、IOS 、Windows phone
1.2 linux操作系统介绍
Linux 简介:
- Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
- Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
- Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。
- Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 应用领域:
- 大部分服务端都采用linux ,JEE部署到服务器中
- 一些企业和学校采用linux研发和教学
- 很多嵌入式开发 用linux
- 云计算、大数据 是集群网 linux : centos
Linux组成为:
- linux内核(linus 团队管理)
- shell :用户与内核交互的接口
- 文件系统 : ext3、ext4 等 windows 有 fat32 、ntfs
- 第三方应用软件
1.3 Centos7环境搭建
VMware 15 pro安装:
下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
下载完成后,右键以管理员身份运行,安装过程中可能会遇到这样的情况。
此时需要重新启动电脑,然后再次点击安装包进行安装即可。
此后需要输入序列码:我这里先放一个,失效后自行百度搜索–>激活许可证:YC34H-6WWDK-085MQ-JYPNX-NZRA2
Centos7的下载安装:
1、Centos7的下载
虽然目前已经更新到 Centos8.x,但是实际最广泛的还是 Centos7.x,所以决定下载使用 Centos7。
进入 Centos 下载官网:http://isoredirect.centos.org/centos/7/isos/x86_64/
这里列举了很多镜像资源,随便点击一个下载:
1.4 在虚拟机安装Centos
1、新建一个虚拟机
创建新的虚拟机—典型—稍后安装操作系统—选择linux操作系统和选择Centos7 64 位
2、虚拟机创建完成之后,需要修改一些配置。
3、虚拟机需要注意:按下Ctrl + Alt,鼠标即可移出虚拟机聚焦。之后一直 Enter 即可,然后来到虚拟机配置页面。
4、虚拟机配置
-
设置语言,默认 English,直接点击 Continue
-
设置时区和时间
-
软件安装
-
设置安装位置
-
配置三个分区,/boot、swap 和 / 根分区
登录过程中可能会出现这样的界面,一步一步往下走会发现是帮助你新建了一个用户,不过我们还是使用 root 账户进行登录,密码即为之前设置的密码。
1.5 云服务器ECS
1.6 xftp和xshell下载
- 下载页面:https://www.netsarang.com/zh/xshell-download/
- 点击“免费授权页面”,获取,免费版本
查看自己的邮箱,会收到邮箱信息,点击进去就是自己的下载链接(建议翻墙)
1.7 linux网络连接三种方式
桥连接:Linux可以和其它的系统通信。但是可能造成ip冲突
NAT: 网络地址转换方式: linux可以访问外网,不会造成ip冲突。(常用)
主机模式: 你的 linux是一个独立的主机,不能访问外网
2 vmtools安装
使用 vmtools 来设置 windows 和 linux 的共享文件夹
- 先弹出
- 重新安装vmware tools
- 文件拷贝
- 安装
进入到opt目录:cd /opt
解压vmtools:tar -zxvf xxx.tar.gz
进入到解压目录:cd vmwarexx
安装:./vmware-install.pl(一直enter即可安装成功)
- 文件共享
共享文件夹在 centos 的 /mnt/hgfs/ 下
3 linux常用目录结构分析
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录
linux 的目录中有且只要一个根目录 /
linux 的各个目录存放的内容是规划好的,不能乱放文件。
linux 是以文件的形式管理我们的设备,因此 linux 系统,一切皆为文件。
/bin # 是Binary的缩写,这个目录存放最近常使用的命令
/sbin # s就是super user的意思,这里存放的是系统管理员使用的系统管理程序
/home # 存放普通用户的主目录,在linux中每一个用户都有自己的目录,一般目录名就是用户账号
/root # 该目录为系统管理员,也称作超级权限者的用户主目录
/boot # 存放的是启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/tmp # 这个目录是用来存放一些临时文件的。用完即丢的文件,可以放在这个目录下,安装包!
/mnt # 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载在此目录下
/media # linux系统会自动识别一些设备,例如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下
/opt # 这是给主机额外安装软件所摆放的目录,用户级的程序目录,可以理解为D:/Software
/usr # 类似于windows下的program files目录
/usr/local # 用户级的程序目录,可以理解为C:/Progrem Files/
/var # 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
/etc # 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
4 vi 和 vim 编辑器
所有的 Linux 系统都会内建 vi 文本编辑器,Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本
4.1 vi 和 vim 的三种常见模式
- 正常模式
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。
- 插入模式
在模式下,程序员可以输入内容,按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可
- 命令行模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
4.2 快捷键的使用(一般模式下)
拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(p)
删除当前行 dd , 删除当前行向下的 5 行 5dd
在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ]
设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]
使用快捷键到底文档的最末行[G]和最首行[gg]
在一个文件中输入 “hello” ,然后又撤销这个动作,再正常模式下输入 u
移动到指定行,行数+ shift+g || :n 移动到第几行
^ 移动到行首
$ 移动到行尾
5 常用命令
命令基本格式
[root@localhost ~]#
- []:这是提示符的分隔符号,没有特殊含义。
- root:显示的是当前的登录用户,超哥现在使用的是root 用户登录。
- @:分隔符号,没有特殊含义。
- localhost:当前系统的简写主机名(完整主机名是localhost.localdomain)。
- ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
- #:命令提示符。超级用户是#,普通用户是$
5.1 目录操作命令
pwd # 显示当前工作目录的绝对路径
ls [选项] [目录或是文件] # -a :显示当前目录所有的文件和目录,包括隐藏的 -l :以列表的方式显示信息
cd [参数] # 切换到指定目录 cd .. 回到当前目录的上一级目录
mkdir [选项] 要创建的目录 # 指令用于创建目录 -p :创建多级目录
rmdir [选项] 要删除的空目录 # 指令用于删除空目录 删除非空目录: rm -rf 要删除的目录 )
5.2 文件操作命令
touch 文件名称 # 指令用于创建空文件
cat [选项] 要查看的文件 # 查看文件内容,是以只读的方式打开 -n :显示行号 末尾加上 | more,分页预览
more 文件名 # 空格键:向下翻页。回车键:向下滚动一行。 b:向上翻页。/字符串:搜索指定的字符串。q:退出。
stat 文件名 # 查看文件详细信息
tail 文件 # 查看文件后 10 行内容
tail -n 5 文件 # 查看文件后 5 行内容,5 可以是任意行数
tail -f 文件 # 实时追踪该文档的所有更新,工作经常使用
head 文件 # 查看文件头 10 行内容
head -n 5 文件 # 查看文件头 5 行内容,5 可以是任意行数
ln -s [原文件或目录] [软链接名] # 给原文件创建一个软链接,相当于Windows的快捷方式
less 要查看的文件 # 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大。
5.3 目录和文件都可以操作的命令
cp [选项] source dest # 指令用于拷贝文件到指定目录 -r :递归复制整个文件夹
cp -r /root/bbb /root/ccc/ # 将整个文件夹复制到另一个文件夹 强制覆盖不提示的方法:复制之前加上 \cp
rm [选项] # 要删除的文件或目录 -r递归删除整个文件夹 -f强制删除不提示 -i交互删除,在删除之前会询问用户
mv oldNameFile newNameFile # 重命名
mv /temp/movefile /targetFolder # 移动文件
5.4 帮助命令
man 命令 # 显示联机帮助手册
info 命令 # 帮助信息是一套完整的资料
指令 --help # 绝大多数命令都可以使用“--help”选项来查看帮助
5.5 搜索命令
find /home -name hello.txt # 按文件名:根据名称查找/home 目录下的 hello.txt 文件
find /opt -user nobody # 按拥有者:查找/opt 目录下,用户名称为 nobody 的文件
find / -size +20M # 查找整个 linux 系统下大于 20m 的文件(+n 大于 -n 小于 n 等于)
find / -name *.txt # 查询 / 目录下,所有 .txt 的文件
grep [选项] "搜索内容" 文件名 # grep 的作用是在文件中提取和匹配符合条件的字符串行,-i忽略大小写,-n输出行号
5.6 压缩和解压命令
gzip 文件 # 压缩文件,只能将文件压缩为*.gz 文件,不会保留原来的文件
gunzip 文件.gz # 解压缩文件命令
zip [选项] XXX.zip # 压缩文件和目录的命令 -r 递归压缩,即压缩目录
unzip [选项] XXX.zip # 解压缩文件) -d<目录> 指定解压后文件的存放目录
tar [选项] XXX.tar.gz # 打包目录,压缩后的文件格式.tar.gz
tar -zcvf a.tar.gz a1.txt a2.txt # 将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
tar -zcvf myhome.tar.gz /home/ # 将/home 的文件夹 压缩成 myhome.tar.gz
tar -zxvf a.tar.gz # 将 a.tar.gz 解压到当前目录
tar -zxvf myhome.tar.gz -C /opt/ # 将 myhome.tar.gz 解压到 /opt/ 目录下(指定压缩到哪里的目录必须存在)
5.7 关机和重启命令
shutdown -h now # 表示立即关机
shutdown -h 1 # 表示 1 分钟后关机
shutdown -r now # 立即重启
halt # 就是直接使用,效果等价于关机
reboot # 就是直接使用,效果等价于关机
sync # 把内存的数据同步到磁盘
当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失
5.8 常用网络命令
ifconfig # 查看IP 地址的信息
vi /etc/sysconfig/network-scripts/ifcfg-exxx # 手工修改配置文件
systemctl restart network # 重启网络服务
rm -rf /etc/udev/rules.d/70-persistent-net.rul # 删除MaC 地址和UUID 绑定文件
ping IP # 向网络主机发送ICMP 请求
netstat -tul # 查看本机开启的端口
netstat -tulnp # 查看本机有哪些程序开启的端口
netstat -a # 查看所有连接
write user1 pts/1 # 向在pts/1(远程终端1)登录的user1 用户发送信息
5.3 系统痕迹命令
系统中有一些重要的痕迹日志文件,如/var/log/wtmp 、/var/run/utmp 、/var/log/btmp 、/var/log/lastlog 等日志文件
如果你用 vim 打开这些文件,你会发现这些文件是二进制乱码。
这是由于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误登录等重要的系统信息。
这些信息要是可以通过vim 打开,就能编辑,这样痕迹信息就不准确,所以这些重要的痕迹日志,只能通过对应的命令来进行查看。
w # 显示登录用户,和他正在做什么
who # 查看正在登陆的用户
last # 查看系统所有登陆过的用户信息
lastlog # 查看系统中所有用户最后一次的登陆时间的命令
lastb # 查看错误登陆的信息
5.4 重置(忘记)root密码
鼠标一定要点进去,不然像我一样狂按e也不会起作用,gif动画前面稍微有点漫长
- 引导界面输入e
- 输入init=/bin/sh 然后Ctrl+X(进入单用户模式)
- 光标闪烁处,输入mount -o remount,rw / 回车
- 在新的一行输入: passwd 回车之后 输入密码 确认密码
- 光标闪烁处输入:touch / .autorelabel (touch 和 / 后面有空格)
- 光标闪烁输入:exec /sbin/init(exec后面有空格)等待自动重启即可
6 用户管理
6.1 用户增删
useradd 用户名 # 添加用户 默认添加的用户在 /home目录
useradd -d 指定目录 用户名 # 添加时指定用户家目录
passwd 用户名 # 添加密码
usermod 用户名 # 修改已经添加的用户的信息
userdel [-r] 用户名 # 删除用户 -r: 在删除用户的同时删除用户的家目录
id - 用户名 # 查询用户信息 “-”不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量。
6.2 用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理。
groupadd 组名 # 增加组
groupdel 组名 # 删除组
useradd -g 用户组 用户名 # 增加用户时直接加上组
usermod -g 用户组 用户名 # 修改用户组
6.3 用户和组相关文件
- /etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
- /etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
7 网络配置
7.1 linux 网络环境配置
指定固定的 ip
- 直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网 ( 程 序 员 推 荐 ) , 编 辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 重启服务
service network restart
或者重启
设置主机名和hosts映射
设置主机名(使用主机名简化ip):
1、为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名
2、指令hostname : 查看主机名
3、修改文件 /etc/hostname 指定
4、修改后重启即可
设置hosts映射(通过主机名找到某个linux系统):
windows中修改:c:\windows\system32\drivers\etc\hosts 指定映射关系
linux中修改:/etc/hosts 指定映射关系
8 进程管理
1、在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。
2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。
3、每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux
终止进程 kill 和 killall
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
kill [选项] 进程号(功能描述:通过进程号杀死进程) (-9 :表示强迫进程立即停止)
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
服务(Service)管理
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程
service [start | stop | restart | reload | status] 服务名
在 CentOS7.0 后 不再使用 service ,而是 systemctl
查看防火墙状态:systemctl status firewalld
9 RPM 和 YUM
9.1 rpm
一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM扩展名的文件。
RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows的 setup.exe
这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。
rpm –ivh 包全名 # RPM 包安装
rpm –Uvh 包全名 # RPM 包升级
rpm -e --nodeps 包名 # 卸载
rpm –q 包名 # 查询软件包是否安装
rpm –qa|grep xx # 查询某个已安装的 rpm 列表
rpm 包名基本格式:
一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
- 名称:firefox
- 适用操作系统: el6.centos.x86_64
- 表示 centos6.x 的 64 位系统
- 如果是 i686、i386 表示 32 位系统,noarch 表示通用。
9.2 yum
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系
并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
yum list # 查询yum 源服务器上所有可安装的软件包列表
yum list 包名 # 查询yum 源服务器中是否包含某个软件包
yum -y install 包名 # 安装
yum -y update 包名 # 升级
yum remove 包名 # 卸载
10 搭建 JavaEE 环境
如果需要在 Linux 下进行 JavaEE 的开发,我们需要安装如下软件
10.1 jdk搭建(手动安装)
将该压缩包放到/usr/local/java目录下(java需要自己创建,名字自己随意取,见名知意),然后解压该压缩包,输入如下指令:
tar zxvf jdk-8u221-linux-x64.tar.gz
配置环境变量,输入以下指令进行配置:
vi /etc/profile
在文件尾部添加如下信息:
JAVA_HOME=/usr/local/java/jdk1.8.0_221
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
注意:JAVA_HOME=/usr/local/java/jdk1.8.0_221 此处等号右边的是自己的jdk实际解压目录。如果不是该目录则需要改成自己的实际目录,其他不变。
编辑完之后,保存并退出,然后输入以下指令,刷新环境配置使其生效
source /etc/profile
10.2 Tomcat环境搭建(手动安装)
将该压缩包放到/usr/local/tomcat目录下,解压到当前文件夹
更换文件名:mv apache-tomcat-9.0.35 tomcat9.0
修改配置文件:
#进入配置文件
cd /usr/local/tomcat/conf
#修改端口配置
vim server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
进入/usr/local/tomcat/tomcat9.0/bin/--------------->运行startup.sh文件
本机测试8080端口(温馨提示:防火墙是否关闭)
10.3 IDEA部署web项目到Linux服务器上
设置打包格式,war包
<artifactId>meyon_film</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
使用clean、install生成war包,使用package进行打包
maven配置,防止打包出错!
install出错,Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
<!-- 配置web.xml文件的配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定web.xml的路径 -->
<webXml>web\WEB-INF\web.xml</webXml>
<!-- 指定jsp、js、css的路径 -->
<warSourceDirectory>web</warSourceDirectory>
</configuration>
</plugin>
war包上传到linux
修改一些配置文件
- tomcat—>conf—>vim tomcat-users.xml
- 在Tomcat目录下 /conf/Catalina/localhost/ 下创建 manager.xml ,并在文件中添加以下内容:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
再次重启tomcat ./startup.sh
浏览器访问点击Manager App
nbhbfquqo.png" alt=“img” style=“zoom:67%;” />
修改一些配置文件
- tomcat—>conf—>vim tomcat-users.xml
- 在Tomcat目录下 /conf/Catalina/localhost/ 下创建 manager.xml ,并在文件中添加以下内容:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
再次重启tomcat ./startup.sh
浏览器访问点击Manager App