Linux - CentOS7

文章目录

    • Linux介绍
    • 虚拟机
      • 虚拟网络
    • 虚拟机/Linux安装(CentOS)
    • 远程连接工具
    • 常用命令
      • 磁盘管理
      • 文件管理
      • 系统管理
      • 用户管理
      • 网络通信
      • 防火墙管理
      • 文件权限
      • 文档管理
      • 备份压缩
    • vim编辑器
    • Linux 目录说明
    • rpm、yum和apt-get
    • 常用软件安装
      • 安装 Java
      • 安装 Maven
      • 安装 Tomcat
      • 安装 Nginx
      • 安装 MySQL

Linux介绍

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux不仅系统性能稳定,而且具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux 操作系统不仅仅是被网络运维人员当作服务器使用。
目前市面上较知名的发行版有:UbuntuRedHatCentOSDebianFedoraSuSEOpenSUSEArch LinuxSolusOS等。
Linux - CentOS7_第1张图片
国内开源镜像地址:

http://mirrors.163.com/
http://mirrors.sohu.com/
https://developer.aliyun.com/mirror/
http://mirrors.yun-idc.com/

虚拟机

虚拟机(Virtual Machine)指通过 **软件模拟 **的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。
目前常用的虚拟机软件有:VMware WorkstationVirtualBoxBochs

虚拟网络

VMware 为虚拟机的网络配置提供了以下4 种不同的模式: 桥接模式( Bridged) 、网络地址转换模式( NAT) 、主机模式( Host-Only ) 和定制模式( Custom) 。
VMware 虚拟交换机有特殊的命名规则, 格式为:VMnet +交换机编号, 并且默认有不同类型的网络和其相关联。例如, 其中**VMnet0 默认为桥接模式**, VMnet1默认为主机模式, VMnet8默认为NAT模式, 其余的虚拟交换机默认为定制模式`。但是上述默认类型也是可以进行修改的。

  1. 桥接模式:
    • .本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,虚拟机和主机位于VMnet0这个虚拟交换机的两端,这个交换机使得两端处在同一个网段中。即桥接模式下主机和虚拟机相当于同一个局域网中的两台电脑,虚拟机和宿主机处于同等地位。
    • 这种情况下主机和虚拟机要能够通讯,需要在同一个网段,这就需要手动配置虚拟系统的IP地址和子网掩码,保证虚拟机和宿主机处在同一网段中。虚拟机作为一台独立的主机可以与局域网中的任何一台电脑通信。
  2. 网络地址转换模式 :
    • 不需要任何手动的配置,虚拟系统处于虚拟的NAT网络中,虚拟机虚拟出了一个NAT服务器,使其虚拟网卡能够连接到Internet
    • VMnet8虚拟网卡的IP地址是在安装VMware时由系统指定生成的(动态的),虚拟机虚拟出来的NAT网络所处的网段和VMnet8虚拟网卡所处的网段是相同的,所以主机和虚拟机的两个虚拟网卡之间可以正常通信。
  3. 主机模式:
    • VMnet1是宿主机用于与Host-Only虚拟网络进行通信的虚拟网卡,但Host-Only网络没有NAT服务,所以虚拟网络是不能连接到外部的互联网的,虚拟机之间形成的虚拟网络是一个全封闭的网络,和外部的唯一联系就是虚拟机能够和主机进行通信。

虚拟机/Linux安装(CentOS)

Linux - CentOS7_第2张图片Linux - CentOS7_第3张图片Linux - CentOS7_第4张图片Linux - CentOS7_第5张图片

root - root centos - centos

远程连接工具

Xshell 6 + Xftp 6 官方下载地址
Linux - CentOS7_第6张图片

sudo apt-get install openssh-server -y deepin 系统需要安装 ssh 服务 xsheel 才能连接
# yum -y install lrzsz CentOS7系统上传和下载命令 : rz 打开上传窗口 sz 打开下载窗口

常用命令

官方参考地址
Linux 命令特点

  • 在Linux系统中,命令区分大小写。在命令行中,可以使用 Tab 键来自动补齐命令。
  • 利用向上或向下的光标键,可以翻查曾经执行过的历史命令,并可以再次执行。
  • 如果要在一个命令行上输入和执行多条命令,可以使用分号来分隔命令,如 cd /;ls
  • 断开一个长命令行,可以使用反斜杠 \,可以将一个较长的命令分成多行表达,增强命令的可读性。执行后,shell自动显示提示符 >,表示正在输入一个长命令,此时可继续在新行上输入命令的后续部分。

后台运行程序

  • 一个文本控制台或一个仿真终端在同一时刻只能运行一个程序或命令,在执行结束前,一般不能进行其他操作。此时可采用将程序在后台执行的方式,以释放控制台或终端,使其仍能进行其他操作。要使程序以后台方式执行,只需在要执行的命令后跟上一个 & 符号即可,如 find -name httpd.conf&

磁盘管理

  • cd : 切换目录
  • lllsll -als -a : 列出当前目录下目录及文件
  • mkdir [-mp] : 创建目录/文件夹 ,m : 配置权限 p : 递归创建多个目录
  • rmdir [-p] 目录名 : rmdir命令用于删除空目录,-p 同时删除父级目录
  • pwd : 显示当前目录

文件管理

  • mv : 移动或重命名 文件/文件夹
  • rm [-rf] : 删除文件、强制递归删除目录和文件 r : 递归删除 i : 互动模式 f : 忽略不存在的
  • touch : 创建空文件或将文件的最后修改时间改为当前时间
  • cat : 将整个文件的内容输出到控制台
  • more : 逐屏输出(按空格键往下翻页,回车键逐行显示,按 Q 键退出)
    • -num:这里的num是一个数字,用来指定分页显示时每页的行数。
    • +num:指定从文件的第num行开始显示。
  • less : 逐屏输出(按 pgUppgDn上下翻页,按Q退出,也可使用方向键控制移动)
    • less命令还支持在一个文本文件中进行快速查找。先按下斜杠键 /,再输入要查找的单词或字符。less命令会在文本文件中进行快速查找,并把找到的第一个搜索目标高亮度显示。
  • head / tail [-f] : 显示头10行/ 末尾10行 f : 动态打印信息
    • -n num:显示指定文件的前 num
    • -c num:显示指定文件的前 num 个字符
  • cp [-rf] : 文件或目录拷贝
    • -a:尽可能将文件状态、权限等属性照原状予以复制。
    • -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。
    • -i:如果目标文件或目录存在,提示是否覆盖已有的文件。
    • -R:递归复制目录,即包含目录下的各级子目录
  • find -name <文件名> : 查找文件
    • -name filename:查找指定名称的文件。
    • -user username:查找属于指定用户的文件。
    • -group grpname:查找属于指定组的文件。
    • -print:显示查找结果。
    • -type:查找指定类型的文件。文件类型有:b(块设备文件)、c(字符设备文件)、d(目录)、p(管道文件)、l(符号链接文件)、f(普通文件)。
  • locate : 在 linux 系统中搜索文件或目录,与 window 中的搜索一样。
    • -c : 只输出找到的数量
    • -i : 忽略大小写
    • -r : 使用基本正则表达式
  • grep命令用于查找文件中包含有指定字符串的行:grep [参数] 要查找的字符串 文件名
    • -c:对匹配的行计数。
    • -l:只显示包含匹配模式的文件名。
    • -n:每个匹配行只按照相对的行号显示。
    • -i:对匹配模式不区分大小写。
    • 在grep命令中,字符 ^ 表示行的开始,字符 $ 表示行的结尾。如果要查找的字符串中带有空格,可以用单引号或双引号括起来。
  • whereis : 查找文件,主要用于程序名的搜索
  • which : 搜索某个系统命令的设置,并返回第一个搜索结果
  • echo $PATH 可以 PATH 配置信息

系统管理

  • date -s [string] : 查看当前系统时间 / 修改
  • shutdown -h now : 关机 poweroff
  • reboot : 重启 shutdown -r now
  • ps [-ef | -aux] : 查看系统进程
  • kill [-9] pid : 杀死指定 pid 进程 / -9 强制杀掉
  • su : 切换用户
  • top : 动态显示系统运行负载情况 退出 ctrl + z
  • hostnamectl : 查询系统信息
  • who : 查看当前登录的所有用户信息
  • clear : 清屏
  • free :命令主要用来查看系统内存、虚拟内存的大小及占用情况
  • date : 命令可以用来查看系统当前的日期和时间

用户管理

  • useradd : 添加用户
  • userdel [-r home目录] : 删除用户及用户 家目录
  • passwd [用户] : 修改[当前 | 指定]用户密码

网络通信

  • ifconfig / ip addr : 查看系统 ip
  • netstat -nlp : 查看网络端口信息
  • ping : 检查网络地址/域名是否可以连通
  • wget 文件地址 : 下载文件
1. 网卡配置文件的前缀则以ifcfg开始,如ifcfg-ens33
2. 通过网卡配置文件配置网络:切换到存放着网卡的配置文件 (/etc/sysconfig/network-scripts)
3. 通过编辑该文件中的配置信息可以进行自定义静态网络配置
TYPE=Ethernet         # 设备类型 (默认即可)
BOOTPROTO=static      # 地址分配模式(静态IP 修改)
NAME=ens33            # 网卡名称 (默认即可)
ONBOOT=yes            # 是否启动 (自动启动 修改)
IPADDR=192.168.10.6   # IP地址 (自定义静态IP 新增)
NETMASK=255.255.255.0 # 子网掩码 (固定掩码 新增)
GATEWAY=192.168.10.2  # 网关地址 (固定网关 新增)
DNS1=192.168.10.2     # DNS地址 (固定DNS与网关一致即可 新增)

# NetworkManager是管理和监控网络设置的守护进程,设备即网络接口,连接是对网络接口的配置。
# 一个网络接口可以有多个连接配置,但同时只有一个连接配置生效
nmcli connection add con-name test type Ethernet ifname ens32 # 创建新连接配置test,IP通过DHCP自动获取 
nmcli connection delete test # 删除连接

# 创建新的连接配置test2,指定静态IP,不自动连接 
nmcli connection add con-name test2 ipv4.method manual ifname ens32 autoconnect no type Ethernet ipv4.addresses 192.168.10.100/24 gw4 192.168.10.1

# 参数说明
1. con-name:指定连接名字,没有特殊要求。
2. ipv4.methmod:指定获取IP地址的方式。
3. ifname:指定网卡设备名,也就是次配置所生效的网卡。
4. autoconnect:指定是否自动启动。
5. ipv4.addresses:指定IPv4地址。
6. gw4:指定网关。

# 启用 test 连接配置
nmcli connection up test
# 查看是否生效
nmcli device show ens32

防火墙管理

$ firewall-cmd --state  # 查看防火墙状态

$ systemctl stop firewalld # 关闭防火墙
$ systemctl start firewalld # 开启防火墙
$ systemctl restart firewalld # 重启防火墙
$ systemctl disable firewalld # 禁用防火墙

$ firewall-cmd --list-all # 查看防火墙规则
$ firewall-cmd --query-port=8080/tcp # 查看端口是否开放

$ firewall-cmd --permanent --add-port=3306/tcp     # 开放 3306 端口,永久生效
$ firewall-cmd --permanent --remove-port=3306/tcp  # 移除端口号

$ firewall-cmd --reload # 重新加载防火墙配置
$ firewall-cmd --zone=public --list-ports  # 查看所有开放的端口列表

文件权限

Linux - CentOS7_第7张图片Linux - CentOS7_第8张图片

  • chmod:变更权限
# 语法:
$ chmod [-R] xyz 文件或目录
# 选项与参数:
xyz : 数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的 read/write/**execute **权限。我们可以使用数字来代表各个权限,各权限的分数对照表如下: r : 4 w : 2 x : 1

$ chmod  777  .bashrc

还有一个改变权限的方法,使用对应的字母 u, g, o 来代表三种身份的权限!还有一个 a 表示 全部身份,而权限就可以写成 r , w, e

image.png

$ chmod u=rwx,g=rx,o=r  .bashrc
$ chmod  a+rw  .bashrc
  • chown [-R] user[:group] file : 修改文件所属用户:用户组
chown -R mysql:mysql /usr/local/mysql-5.7.18
  • chgrp 用户 文件名 :修改文件所属用户组
  • id 用户:查看用户所在组

文档管理

  • grep : 文本搜索,与其他查看命令组合使用 ps -aux | grep 8080 / cat centos.log | grep log
  • sort : 排序 cat centos.log | sort 管道可以多次使用
  • uniq : 去除重复行 cat centos.log | sort | uniq
  • wc : 统计行数、单词数、字符数 cat centos.log | wc

备份压缩

  • tar : 解压、压缩
    • 压缩指定文件: tar -zcvf centos.tar.gz centos.log centos2.log
    • 解压到指定目录:tar -zxvf centos.tar.gz -C /home/centos/tar

-zGzip 压缩或解压 -c 创建压缩文件 -v 显示压缩或解压的过程
-f 目标文件名 -x 解开压缩文件 -C 指定解压到的目录

  • zip : 压缩、解压
    • 压缩:zip centos.zip centos.log centos2.log
    • 解压:unzip centos.zip

vim编辑器

vim是一款编辑器,基于vi,对于开发者来说,vim 的用途非常广泛。但是,对于初学者来说,vim 又显得非常不友好,甚至连退出都不是那么简单。对于熟悉 vim 的人来说,这是一个非常好的工具。甚至可以不依赖鼠标就能完成所有的编辑工作。
它有三种模式:编辑模式、插入(输入)模式命令模式
Linux - CentOS7_第9张图片
编辑模式下的光标移动的说明

命令 说明
h或向左箭头键(←) 光标向左移动一个字符
j或向下箭头键(↓) 光标向下移动一个字符
k或向上箭头键(↑) 光标向上移动一个字符
l或向右箭头键(→) 光标向右移动一个字符
H 光标移动到屏幕最上方那一行的首字符处
M 光标移动到屏幕的中央那一行的首字符处
L 光标移动到屏幕的最下方那一行的首字符处
G 移动到文件的最后一行(常用)
$ 或功能键“End” 移动到这一行的末字符处(常用)
0或功能键“Home” 这是数字0:移动到这一行的首字符处(常用)
Ctrl + f 屏幕向下移动一页,相当于“Page Down”键
Ctrl + b 屏幕向上移动一页,相当于“Page Up”键
Ctrl + d 屏幕向下移动半页
Ctrl + u 屏幕向上移动半页
+ 光标移动到下一行的第一个非空格字符
- 光标移动到上一列的第一个非空格字符
gg 移动到文件的第一行,相当于1G(常用)
n n为数字。光标向下移动n行(常用)
n n表示数字,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符。
nG n为数字。移动到文件的第n行。例如输入20G则会移动到文件的第20行(可配合:set nu)
查找与替换
/word 向上寻找名称为word的字符串
?word n1与n2为数字。在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2!举例来说,在100~200行查找myweb并取代为MYWEB则输入“:100,200 s/myweb/MYWEB/g”(常用)
n 这个n是英文按键。代表重复前一个查找的动作。举例来说,如果刚刚我们执行/myweb去向下查找myweb这个字符串,则按下n后,会向下继续查找下一个名称为myweb的字符串。如果是执行?myweb,那么按下n则会向上继续查找名称为myweb的字符串
N 这个N是英文按键。与n刚好相反,为反向进行前一个查找动作。例如执行/myweb后,按下N则表示向上查找myweb / 使用/word配合n及N是非常有帮助的!可以让你重复地找到一些查找的关键词
:n1,n2 s/word1/word2/g n1与n2为数字。在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2!举例来说,在100~200行查找myweb并取代为MYWEB则输入“:100,200s/myweb/MYWEB/g”(常用)
:1,$ s/word1/word2/g 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用)
:1,$ s/word1/word2/gc 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2!且在取代前显示提示字符给用户确认(confirm)是否需要取代(常用)

删除、复制与粘贴

命令 说明
x, X 在一行字当中,x为向后删除一个字符(相当于“Del”键),X为向前删除一个字符(相当于Backspace,退格键)(常用)
nx n为数字,连续向后删除n个字符
dd 删除光标所在的那一整列(常用)
ndd n为数字。删除光标所在的向下n列(常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除光标所在处,到该行的最后一个字符
d0 那个是数字0,删除光标所在行的前一字符到该行的首个字符之间的所有字符
yy 复制光标所在的那一行(常用)
nyy n为数字。复制光标处向下n行,例如20yy是复制20行(常用)
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除10行,输入10cj
u 复原前一个动作(常用)
Ctrl+r 重做上一个动作(常用)
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复粘贴等动作,按下小数点就可以(常用)
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行(常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除10行,输入10cj
u 复原前一个动作(常用)
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为只读时,强制写入该档案。不过,到底能不能写入,还与你对该文件拥有的权限有关
:q 退出vim(常用)
:q! 若曾修改过文件,又不想储存,则使用“!”强制退出而不储存文件。注意一下,惊叹号(!)在vim当中,常常具有强制的意思
:wq 储存后离开,若为“:wq!”,则为强制储存后离开(常用)
ZZ 这是大写的Z。若文件没有更改,则不储存离开;若文件已经被更动过,则储存后离开
:w [filename] 将编辑的数据储存成另一个文件(类似另存为新文件)
:r [filename] 在编辑的数据中,读入另一个文件的数据,即将filename这个文件内容加到光标所在行的后面
:n1,n2 w [filename] 将n1到n2的内容储存成filename这个文件
:! command 暂时退出vim到命令列模式下执行command的显示结果。例如,“:! ls /home”即可在vim当中查看/home下面以ls输出的文件信息
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与:set nu相反,为取消行号
  • 进入输入模式:
    • a 在光标所在字符后插入
    • A 在光标所在行尾插入
    • i 在光标所在字符前插入
    • I 在光标所在行行首插入
    • o 在光标下插入新行
    • O 在光标上插入新行
  • 默认编辑模式-移动光标
    • 方向键头 (上下左右)
    • hjkl (上下左右)
    • Ggg (G 文档最后一行,gg 文档首行)
    • nG:n (到第 n 行)
    • 0$ (移至行首/行尾)
  • 默认编辑模式-删除命令
    • dd 和 ndd (dd删除光标所在行, 5dd 删除指定行数,从光标所在行开始计算)
    • x 和 nx 删除光标所在处后的字符
  • 替换
    • r 替换光标所在处字符
    • R 从光标所在处开始替换字符,按 ESC 结束
    • :%s/old/new/g : 全文替换指定字符串 old 要替换的字符 new 新的字符
    • :n1,n2s/old/new/g : 在一定范围内替换字符串 n1开始行号,n2 结束行号
  • 撤销与恢复命令
    • u (撤销上一步操作)
    • ctr+r (恢复)
  • 复制/剪切粘贴命令
    • yl/nyl 复制一个字符/指定个数字符
    • yy/nyy 复制一行
    • dd/ndd 剪切
    • p/P 光标所在之后/之前粘贴
  • 命令模式(ESC):
    • :set number/nu 设置行号
    • :set nonumber/nonu 取消行号
    • :w 保存文档
    • :w new_filename 另存为指定文件
    • :q 退出文档
    • :wq 保存且退出文档
    • :x 保存且退出文档
    • q! 不保存退出
    • :n 定位到 n
    • ZZ 快捷键,保存修改并退出
    • e! (恢复到文档的初始状态)
    • /string 搜索 string 信息,回车 按 n 定位到下一个匹配的信息前,搜索时忽略大小写 :set ic

Linux 目录说明

系统目录结构:ls / [-l]查看 根目录( / )下 的所有文件详细信息

  • /bin 常用的命令
  • /boot 启动时的使用的核心文件,连接文件以及镜像
  • /dev 外部设备,访问方式和文件的访问方式一致
  • /etc 系统管理所需的所有配置文件和子目录
  • /home 用户的主目录,每一个用户都会创建一个,root用户叫home,非root用户是以自己的登录名命名
  • /lib 系统最基本的动态连接共享库,几乎所有文件都会用到这个共享库
  • /media 把自动识别的设备挂载到这个目录下
  • /mnt 用户临时挂载别的文件系统
  • /opt 主机额外安装软件所摆放的目录,比如数据库
  • /root 超级权限者的用户主目录。
  • /sbin 系统管理员使用的系统管理程序
  • /srv 服务启动之后需要提取的数据
  • /sys 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建
  • /usr 软件安装目录,用户的很多应用程序和文件都放在这里,类似与windows下的program files目录
  • /var 这个目录中存放着在不断扩充着的东西,一般是将经常更改的东西放在这里,比如各种日志文件
  • 在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。
  • 在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 … 来表示。. :代表当前的目录,也可以使用 ./ 来表示;.. :代表上一层目录,也可以 …/ 来代表。

~ : 代表家目录 | root 目录

如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。

rpm、yum和apt-get

  • RPMRedhat Package Manager,就是 Redhat 的包管理器)是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。

    • 安装软件 : rpm -ivh package-name i : 安装 v : 显示安装的详细界面 h : 显示安装进度
    • 卸载软件 : rpm -e --nodeps gcc nodeps : 不考虑依赖关系 force : 强制处理
    • 查找软件是否安装 : rmp -qa | grep
  • Yum(全称为 Yellow dog Updater, Modified)Shell前端软件包管理器 。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

    • Yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
    • Yum的命令语法yum [options] [subcommand] [package ...]
      • options:可选
        • -h:显示帮助信息;
        • -y:对所有的提问都回答“yes”;
        • -c:指定配置文件;
        • -q:安静模式;
        • -v:详细模式;
        • -C:完全从缓存中运行,而不去下载或者更新任何头文件。
      • command:要进行的操作
        • install:安装rpm软件包;
        • update:更新rpm软件包;
        • remove:删除指定的rpm软件包;
        • list:显示软件包的信息;
        • search:检查软件包的信息;
        • info:显示指定的rpm软件包的描述信息和概要信息;
        • clean:清理yum过期的缓存;
        • deplist:显示rpm软件包的所有依赖关系。
    • package 操作的对象
$ yum install package1  		     #安装指定的安装包
$ yum update package1 			     #更新指定程序包
$ yum info package1 			       #显示安装包信息package1 
$ yum list installed java* 	    #显示所有已经安装和可以安装的程序包 
$ yum search string 			       #根据关键字string查找安装包
$ yum remove | erase package1 	 #删除程序包package1 | 不保留软件包的数据和配置文件
$ yum clean packages: 			     #清除缓存目录下的软件包
  • apt-get 包管理应用软件,由 apt-get 管理的软件包可以轻松做到一键安装卸载。在 Ubuntu\Deepin 系统中,经常使用,由于常常需要 root 权限来操作,所以搭配 sudo 更加方便。
$ sudo apt-get install XXX    # 一键安装软件包,这个指令会自动检测并安装依赖
$ sudo apt-get install -y XXX # 不需要重复地确认安装,所有交互都是 yes
$ sudo apt-get install -q XXX # 静默安装,当然也不是完全静默,会将低等级的log信息屏
$ sudo apt-get --reinstall install packagename # 修复或者安装最新版
$ sudo apt-get remove XXX     # remove仅仅卸载软件,但是并不卸载配置文件
$ sudo apt-get purge XXX	    # 卸载指令,同时卸载相应的配置文件
$ sudo apt-get autoremove			# 在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包,慎用
$ sudo apt-get update					# 将所有包的来源更新,也就是提取最新的包信息
$ sudo apt-cache search <key> # 查找包含部分 key 的软件包

yum提示Another app is currently holding the yum lock; waiting for it to exit…

$ kill -s 9 25960  # 强制杀死进程
$ ps aux|grep yum  # 查看yum 是否还存在

常用软件安装

安装 Java

$ java -version   # 查看linux 是否自带 java 
$ yum list installed | grep java  # 列出默认安装的所有 java 软件包
$ yum -y remove java-1.7.0* # 删除 java-1.7.0 开头的所有软件包 
$ yum -y erase java-1.8.0*  # 删除 java-1.8.0 开头的所有软件包,不保留软件包的数据和配置文件

官网下载对应的 JDK 版本压缩文件,使用 xftp 工具上传到 linux 系统中的 /usr/devtools

$ tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/myapp/java  # 解压 jdk8 到 myapp/java 目录下

配置 java 环境变量,编辑 vim /etc/profile 文件,在文件结尾处 G o 添加 如下配置:

export JAVA_HOME=/usr/myapp/java/jdk1.8.0_251

添加完毕后,ESC 退出编辑模式,ZZ 保存退出 , 执行 source /etc/profile 让修改信息生效,java -version 检测是否配置成功。 echo $PATH 可以查看环境变量 PATH 中的信息

安装 Maven

$ -zxvf apache-maven-3.6.1-bin.tar.gz -C ../myapp/maven  # 解压 maven 到 myapp/maven 目录下
$ cp settings.xml /usr/myapp/maven/apache-maven-3.6.1/conf # 复制 准备好的 setting.xml 替换默认的

修改 vim conf/settings.xml 配置文件,本地仓库地址改为 /usr/myapp/maven/mavenLocalRepository
修改 vim /etc/profile 添加 Maven 环境变量,:wq 保存退出

export MAVEN_HOME=/usr/myapp/maven/apache-maven-3.6.1

执行 source /etc/profile 让修改信息生效,mvn -version 验证是否配置成功。

安装 Tomcat

$ tar -zxvf apache-tomcat-8.5.43.tar.gz -C ../myapp/tomcat # 解压 tomcat 到 myapp/tomcat 目录下
$ firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp # 开放防火墙 8080 端口,永久生效
$ firewall-cmd --reload # 重启防火墙
$ firewall-cmd --zone=public --list-ports  # 查看所有开放的端口列表
$ netstat -nlp | grep 8080 # 查看8080 端口是否运行

进入 apache-tomcat-8.5.43/bin 目录,通过 sheel 脚本 ./start.sh 启动 tomcat , 在 宿主机 通过浏览器访问 http://192.168.25.128:8080/ 检查是否配置成功。
./start.sh && tail -f ../logs/catalina.out 启动并打印启动日志

设置 **Tomcat** 为系统服务,可以通过命令进行启动,就不用定位到对应的路径地址去启动和停止了,还可以设置为开机自启,这样更加方便

/usr/lib/systemd/system/ 目录下新建文件 tomcat.service , 填充如下内容:

[Unit] 
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target 
  
[Service] 
Type=forking 
Environment='JAVA_HOME=/usr/myapp/java/jdk1.8.0_251' 
Environment='CATALINA_PID=/usr/myapp/tomcat/apache-tomcat-8.5.43/bin/tomcat.pid' 
Environment='CATALINA_HOME=/usr/myapp/tomcat/apache-tomcat-8.5.43/' 
Environment='CATALINA_BASE=/usr/myapp/tomcat/apache-tomcat-8.5.43/' 
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' 
 
WorkingDirectory=/usr/myapp/tomcat/apache-tomcat-8.5.43/ 
 
ExecStart=/usr/myapp/tomcat/apache-tomcat-8.5.43/bin/startup.sh 
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true 
  
[Install] 
WantedBy=multi-user.target

到此配置就完成了,接下来我们就可以通过命令来操作 tomcat

$ systemctl start tomcat			# 开启 tomcat 服务
$ systemctl stop tomcat				# 停止 tomcat 服务
$ systemctl restart tomcat	  # 重启 tomcat 服务
$ systemctl status tomcat		  # 查看 tomcat 状态
$ systemctl enable tomcat	    # 设置 tomcat 跟随系统启动

安装 Nginx

$ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel # 安装 nginx 依赖
$ tar -zxvf nginx-1.18.0.tar.gz # 解压缩
$ cd nginx-1.18.0 # 进入 nginx 目录
$ ./configure --prefix=/usr/myapp/nginx # 文件检查
$ make && make install  # 执行安装
$ whereis nginx # 查看安装路径

nginx 常用命令

$ /nginx/sbin/nginx -t # 检测配置文件是否正确
$ /nginx/sbin/nginx # 载入配置文件
$ /nginx/sbin/nginx -s reload # 重启命令
$ /nginx/sbin/nginx -s stop | quit # 停止命令
$ ps -ef|grep nginx # 查看进程

配置防火墙,开启 80 端口

$ firewall-cmd --permanent --zone=public --add-port=80/tcp # 开放防火墙 80 端口,永久生效
$ firewall-cmd --reload # 重启防火墙
$ firewall-cmd --zone=public --list-ports  # 查看所有开放的端口列表

再宿主机浏览器上访问:http://192.168.25.128/ 看到 nginx 默认页面即配置成功

配置域名映射

编辑 nginx 的 nginx.conf 配置文件 ,添加 include vhost/*.conf 抽取配置文件到 vhost 文件夹下外部配置,减轻主配置文件压力。
在 vhost 下 新建一个 www.test.com.conf 文件,配置如下:

server {
    #监听端口    
    listen 80;
    #访问域名    
    server_name  www.test.com;
    #编码格式,若网页格式与此不同,将被自动转码    
    #charset koi8-r;
    #虚拟主机访问日志定义    
    access_log  /usr/myapp/nginx/logs/host.access.log  combined;
    #访问路径,可相对也可绝对路径
    root   /html;
    #首页文件。以下按顺序匹配    
    #index  index.html index.htm;
    #error_page 404 /404.html;
    #对URL进行匹配
    location / {
        #代理地址,如果遇到 server_name 请求则转发到当前指定地址
        proxy_pass http://127.0.0.1:8080;
        #跨越处理
        add_header Access-Control-Allow-Origin *;
   }
}

编辑 /etc/hosts 文件,添加自定义域名

127.0.0.1 www.test.com

浏览器访问 http://www.test.com/ 地址,则nginx 会自动代理到 http://127.0.0.1:8080 地址上。

安装 MySQL

$ yum list installed | grep mysql # 检测是否已安装 闭源的 mysql 
$ yum list installed | grep mariadb # 检测是否已安装 开源的 mysql 
$ yum remove mariadb* -y # 移除 mariadb 开头的所有软件包

$ tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/myapp # 解压 mysql 到 myapp 目录下
$ mv mysql-5.7.30-linux-glibc2.12-x86_64  mysql-5.7.30   # 修改文件夹名称

$ mkdir data     # 创建mysql数据存放目录
$ useradd mysql  # 创建 mysql 用户

# 初始化数据,执行后会生成一个 root 用户的临时密码,拷贝保存,后面需要用它登录修改密码 
$ ./mysqld --initialize --user=mysql
$ chown -R mysql:mysql ./  # 更改 mysql5.7.30 整个文件夹目录权限所属

$ ./mysqld_safe & # 启动服务,& 符号表示后台启动
$ ./mysql -uroot -p 临时密码 # 登录
$ set password = password('root'); # 修改密码
$ grant all privileges on *.* to root@'%' identified by 'root';  # 授权远程访问
$ flush privileges; # 刷新权限
$ exit; # 退出 mysql 客户端

设置 mysql 字符编码

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
port = 3306

basedir=/usr/myapp/mysql-5.7.30
datadir=/usr/myapp/mysql-5.7.30/data 

max_connections=200 

character-set-server=utf8
collation-server=utf8_general_ci

default-storage-engine=INNODB

设置 mysql 为系统服务,在 /usr/lib/systemd/system/ 目录下新建 mysql.service 配置文件, 填充如下内容

[Unit]
Description=MySQL Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/myapp/mysql-5.7.30/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

修改 mysql.service 所属用户组,保持和配置文件一致

chown -R mysql:mysql mysql.service 

使用命令操作 mysql 服务

systemctl start mysql   # 启动 MySQL 服务
systemctl stop mysql 	  # 停止 MySQL 服务
systemctl restart mysql # 重启 MySQL 服务
systemctl enable mysql  # 设置 MySQL 自启动

ps -ef|grep mysql # 查看MySQL是否自启动

$ show variables like 'char%'; # 查看修改后的字符编码

开放 mysql 3306 端口

$ firewall-cmd --permanent --zone=public --add-port=3306/tcp # 开放防火墙 3306 端口,永久生效
$ firewall-cmd --reload # 重启防火墙
$ firewall-cmd --zone=public --list-ports  # 查看所有开放的端口列表

你可能感兴趣的:(Linux)