Linux

Day76~77

2023-06-13/14

项目相关

ps -ef | grep tomcat		#查看tomcat的相关进程
kill -9 pid 				#杀死进程
cd 目录路径		 			 #直接进入目录,可以在第一步查看进程的时候,知道tomcat在哪个目录
tail -f 日志文件名			#监控日志信息

一、概念

1_内核和发行版本

内核:操作系统
发行版:操作系统+一些捆版的软件

在这里插入图片描述

2_常见的发行版

  • RedHat:在中国和北美比较流行。
  • CentOS:社区版本,免费使用,免费升级补丁,但是不保证不会出问题。
  • Ubuntu:界面漂亮,适合个人桌面用户使用。
  • Debian: 高级用户(使用起来有一定的难度)。
  • SuSE:欧洲比较流行

3_Linux于Windows的不同

  1. Linux严格区分大小写
  2. Linux中所有内容都以文件形式保存,包括硬件.
  3. Linux不靠拓展名区分文件类型:
    • 压缩包:

      ".gz","*.bz2","*.tar",".bz2","*.tgz"等
      
    • 二进制软件包:“*.rpm”

    • 网页文件:

      "*.html","*.php"
      
    • 脚本文件:“*.sh”

    • 配置文件:“*.conf”

  4. Windows下的程序不能直接在Linux中安装和运行

4_可视化界面&字符界面区别

字符界面(Command Line Interface, CLI)的优势包括:

  1. 效率高:字符界面通常使用命令行指令完成操作,可以通过键盘输入快速执行任务,适合熟悉命令行操作的用户。
  2. 资源消耗低:字符界面不需要大量的图形资源和内存消耗,适用于资源受限的环境或远程登录操作。
  3. 自动化和批处理:字符界面可以使用脚本语言编写自动化任务或批处理脚本,方便批量操作和自动化任务的执行。
  4. 字符界面减少了出错,被攻击的可能性

可视化界面(Graphical User Interface, GUI)的优势包括:

  1. 直观易用:可视化界面通过图形化的方式呈现信息和操作界面,更直观易懂,对于不熟悉命令行的用户更友好。
  2. 多媒体支持:可视化界面可以支持图像、音频、视频等多媒体元素的展示和操作,提供更丰富的用户体验。
  3. 可视化操作:可视化界面提供了鼠标、触摸屏等交互方式,可以通过直接点击、拖拽等操作完成任务,更符合一般用户的操作习惯。

5_Linux系统目录

在这里插入图片描述

1. /- 根

  • 每一个文件和目录从根目录开始。
  • 只有root用户具有该目录下的写权限。请注意,/root是root用户的主目录,这与/不一样

2、/bin中 - 用户二进制文件

  • 包含二进制可执行文件。
  • 在单用户模式下,你需要使用的常见Linux命令都位于此目录下。系统的所有用户使用的命令都设在这里。
  • 例如:ps、ls、ping、grep、cp

3、/sbin目录 - 系统二进制文件

  • 就像/bin,/sbin同样也包含二进制可执行文件。
  • 但是,在这个目录下的linux命令通常由系统管理员使用,对系统进行维护。例如:iptables、reboot、fdisk、ifconfig、swapon命令

4、/etc - 配置文件

  • 包含所有程序所需的配置文件。
  • 也包含了用于启动/停止单个程序的启动和关闭shell脚本。例如:/etc/resolv.conf、/etc/logrotate.conf
  • hosts:设备名称(或域名)到ip地址的解析,相当于本地存在的dns功能。

5、/usr - 用户程序**

  • 包含二进制文件、库文件、文档和二级程序的源代码。
  • /usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。
  • /usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。
  • /usr/lib中包含了/usr/bin和/usr/sbin用到的库。
  • /usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中。

6、/dev - 设备文件

  • 包含设备文件。
  • 这些包括终端设备、USB或连接到系统的任何设备。例如:/dev/tty1、/dev/usbmon0

7、/proc - 进程信息

  • 包含系统进程的相关信息。
  • 这是一个虚拟的文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid}目录中包含的与特定pid相关的信息。
  • 这是一个虚拟的文件系统,系统资源以文本信息形式存在。例如:/proc/uptime

8、/var - 变量文件

  • var代表变量文件。
  • 这个目录下可以找到内容可能增长的文件。
  • 这包括 - 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

9、/tmp - 临时文件

  • 包含系统和用户创建的临时文件。
  • 当系统重新启动时,这个目录下的文件都将被删除。

10、/home - HOME目录

  • 所有用户用home目录来存储他们的个人档案。
  • 例如:/home/john、/home/nikita

11、/boot - 引导加载程序文件

  • 包含引导加载程序相关的文件。
  • 内核的initrd、vmlinux、grub文件位于/boot下。
  • 例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic

12、/lib - 系统库

  • 包含支持位于/bin和/sbin下的二进制文件的库文件.
  • 库文件名为 ld或lib.so.*
  • 例如:ld-2.11.1.so,libncurses.so.5.7

13、/opt - 可选的附加应用程序

  • opt代表可选的。
  • 包含从个别厂商的附加应用程序。
  • 附加应用程序应该安装在/opt/或者/opt/的子目录下。

14、/mnt - 挂载目录

  • 临时安装目录,系统管理员可以挂载文件系统。

15、/media - 可移动媒体设备

  • 用于挂载可移动设备的临时目录。
  • 举例来说,挂载CD-ROM的/media/cdrom,挂载软盘驱动器的/media/floppy;

16、/srv - 服务数据

  • srv代表服务。
  • 包含服务器特定服务相关的数据。
  • 例如,/srv/cvs包含cvs相关的数据。

二、常见命令

1_命令基本格式

1.1 命令提示符

[root@localhost ~]#

其中:

  • root:当前登陆用户
  • localhost:主机名
  • ~:当前所在目录(家目录)
    • 如果是root代表/root;
    • 如果是普通用户user1代表/home/user1
  • # : 超级用户的提示符#, 普通用户提示符$

1.2 命令格式

命令 [选项] [参数]

注意: 个别命令的使用不遵循次格式

​ 当有多个选项时,可以写在一起

​ 简化选项与完整选项

​ -a 等于 --all

1.3 查看目录ls

ls [选项] [文件或目录]

选项:
​	-a	显示所有文件,包括隐藏文件
​	-l	显示详细信息
​	-h	人性化显示文件大小

ls -a  :查看所有
ls -l  :查看详情
ls -h  :人性化查看详情,将文件大小计算成k,mb等显示

alias ll :看快捷方式

ll     :ls-l的缩写		     
ll -ah :查看当前目录所有文件,且显示文件大小

2_文件处理命令

2.1 查询所在目录位置:pwd

命令英文原意:print working directory

2.2 切换所在目录:cd

命令英文原意: change directory

cd [目录]

简化操作:

cd ~   :切换到用户目录(家目录)

cd     :切换到用户目录

cd -   :切换到上一个访问目录

cd ..  :切换到上一级目录

cd .   :切换到当前目录

2.3 创建文件:touch

touch 文件名						创建单个文件
touch 文件名 文件名 文件名 ...		创建多个文件

2.4 建立目录:mkdir

命令英文原意: make directories

mkdir -p [目录名]

	-p 递归创建	
	

mkdir  目录名	:创建目录
mkdir -p xx/yyy/zz	:创建多级目录

2.5 删除目录:rmdir

命令英文原意:remove empty directory

rmdir [目录名]    删除目录(目录为空时执行)

2.6 删除文件或目录:rm

命令英文原意:remove

rm -rf [文件或目录]


选项:
	-r		递归删除目录
	-f		强制


rm -r 目录	:递归文件夹 带提示
rm -f 文件	:删除文件
rm -rf 文件/文件夹	:递归删除,无提示

禁止: rm -rf /* 删除linux中所有文件

2.7 复制命令:cp

命令英文原意:copy

cp [选项] [原文件或目录] [目标目录]


选项:
	-r		复制目录



cp 源文件命 备份文件命
cp -r 源目录 目标目录

2.8 剪切或改名命令:mv

命令英文原意:move

mv [原文件或目录] [目标目录]


mv 源文件 目标文件目录	:剪切
mv 源文件 不存在的文件	:重命名
mv 源文件 文件夹/不存在的文件	:剪切重命名

3_文件搜索命令

3.1 命令搜索命令

3.1.1 whereis
whereis 命令名		#搜索命令所在路径及帮助文档所在位置

选项:
	-b		只查找可执行文件
	-m	值查找帮助文件

whereis 命令名	:搜索命令所在来的路径与帮助文档所在的位置
3.1.2 which
which 命令名		#搜索命令所在路径及别名

which 命令名:搜索命令所在路径与别名
3.1.3 环境变量path
PATH环境变量:定义的是系统搜索命令的路径

相当于window下的path

echo $PATH  : 查看环境变量

3.2 查找命令find

格式:find 搜索的目录 选项 文件名或其他

3.2.1 按文件名
#避免大范围搜索,会非常耗费系统资源

#find是在系统当中搜索符合条件的文件名.如果需要匹配,使用通配符匹配,通配符是完全匹配

find / -name install.log

find / -name install*.log

find /root -iname install.log   #按名字查询: 不区分大小写
3.2.2 按时间
find /var/log -mtime +10		#查找10天前修改的文件


-10		10天内修改文件
10		10天当天修改的文件
+10		10天前修改的文件

atime	文件访问时间
ctime	改变文件属性时间
mtime	修改文件时间
3.2.3 按文件大小
find  / -size 25k		#查找文件大小是25KB的文件,注意k是小写的.

-25k		小于25KB的文件
25k			等于25KB的文件
+25k		大于25KB的文件

find / -size 25M		#查找文件大小是25MB的文件,注意M是大写的.
3.2.4 按文件用户
find /root -user root   #按照所有者搜索
find /root -nouser  #查找没有所有者的文件

3.3 字符串搜索命令grep

查找文件内容

grep [选项] 字符串 文件名		#在文件当中匹配符合条件的字符串

选项:
	-i	忽略大小写
	-v	排除指定字符串


grep timezone anaconda-ks.cfg  #在anaconda-ks.cfg文件当中匹配timezone

经典使用:
ps -ef | grep java

把左边的查出来的结果,作为右边的查询范围,筛选出我们想要的进程

3.4 find grep 区别

find命令:在系统中搜索符合条件的文件名.

grep命令:在文件中搜索符合条件的字符串.

4_帮助命令

4.1 man

man ls		#查看ls的帮助

man 命令名		:查看帮助命令  f、b 键翻页  q退出

4.2 help

命令 --help		#获取命令选项的帮助

实例:
	ls --help

命令 --help		:简洁版帮助


但是不适用内部命令,如cd:

help cd

命令特殊时,使用

help 命令  比如: help cd

5_压缩与解压缩命令

5.1 .zip格式

先安装zip 软件
yum install zip  
yum install -y zip  : 不带确认的安装 

卸载: yum remove 
5.1.1 压缩zip
zip 压缩文件名 原文件		#压缩文件

zip -r 压缩文件名 原文件

zip 压缩文件名  原文件		#压缩文件
zip a.zip a.txt

zip -r 压缩文件名  原文件夹	#递归要是文件夹 【如果不指定递归压缩,仅仅是压缩文件夹】
zip -r bb.zip bb
5.1.2 解压unzip
unzip 压缩文件		#解压缩.zip文件

unzip 压缩文件名	;解压

5.2 .tar.gz格式

5.2.1 压缩tar -zcvf
tar -zcvf 压缩包名.tar.gz 源文件

选项:
	-z		压缩为.tar.gz格式
	-c		打包
	-v		显示过程
	-f		指定打包后的文件名

tar -zcvf learn.tar.gz learn	
5.2.2 解压tar -zxvf
tar -zxvf 压缩包名.tar.gz

选项:
    -z		压缩为.tar.gz格式
	-x		解压缩.tar.gz格式
	-v		显示过程
	-f		指定打包后的文件名

 

#加上-C表示解压到指定的目录
tar -zxvf 压缩包名.tar.gz -C 指定目录

6_关机和重启命令

6.1 shutdown

使用shutdown会在关机的时候帮我们保存数据

shutdown [选项] 时间

选项:
	-c		取消前一个关机命令
	-h		关机
	-r		重启


shutdown -c				:取消上一个关机命令
shutdown -h 时间		   :多少时间后关机
shutdown -h now			:马上关机
shutdown -f				:重启

6.2 其他关机命令,不安全

使用这三个命令不是特别安全,因为它们

不会帮我们保存数据.

6.2.1 halt
-n : 在关机前不做将记忆体资料写回硬盘的动作

-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里

-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令

-i : 在关机之前先把所有网络相关的装置先停止

-p : 当关机的时候,顺便做关闭电源(poweroff)的动作
6.2.2 poweroff

直接关闭电源关机,不保存数据

6.2.3 init 0
init 0	:关机
init 6	:重启
init 3	:切换字符界面
inti 5	:切换可视化界面

6.3 重启命令reboot init 6

6.4 退出命令 logout

7_ 监控命令

6.1 磁盘使用情况:df

df:用于显示磁盘的使用情况

df -h: 格式化显示输出磁盘使用情况

6.2 查看任务进程:top

在这里插入图片描述

6.3 查看内存占用:free

在这里插入图片描述

内存占用情况:

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。

6.4 查看操作历史:history

用于显示执行过的历史命令记录

6.5 在显示器输出内容:echo

6.6 文件内容查看命令

cat

整个文件的内容显示出来

tail

默认在屏幕上显示指定文件的末尾10行

参数:
	-f  显示文件最新追加的内容。
	-行数   在屏幕上显示指定文件的末尾参数设置的行数

tail -f tomcat日志文件

来进行查看日志

8_用户相关命令

w 用户名

在这里插入图片描述

命令输出:

USER		登陆的用户名
TTY			登陆终端
FROM		从哪个IP地址登陆
LOGIN@		登陆时间
IDLE		用户闲置时间
JCPU		指的是和该终端连接的所有进程占用时间.这个事件并不包括去后台作业的时间,但却包括当前正在运行的后台作业所占用时间;
PCPU		是指当前进程所占用的时间
WHAT		当前正在运行的命令

who 用户名

在这里插入图片描述

命令输出:
	用户名
	登陆终端
	登陆时间(登陆来源IP地址)

查询当前登陆和过去登陆的用户信息last

在这里插入图片描述

last命令默认时读取/var/log/wtmp文件数据
命令输出
	-用户名
	-登陆终端
	-登陆IP
	-登陆时间
	-退出时间(在线时间)

查看最后一次登陆时间:lastlog

在这里插入图片描述

lastlog命令默认时读取/var/log/lastlog文件内容

命令输出
	用户名
	登陆终端
	登陆IP
	最后一次登陆时间

三、Vi编辑器

1_编辑器的三种模式

  • 编辑模式(命令模式) :所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式
  • 输入模式:大部分机键动作都会理解为输入的字符
  • 末行模式:在末行模式,输入很多文件管理命令
模式之间的相互转换: 

编辑-->输入
	i:在光标所在字符前开始插入
	a:在光标所在字符后开始插入
	o:在光标所在行的下面另起一新行插入
	s:删除光标所在的字符并开始插入
	-----------------------------------------
	I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
	A:在光标所在你行的行尾开始插入
	O:在光标所在行的上面另起一行开始插入
	S:删除光标所在行并开始插入

输入模式-->编辑模式
	ESC(键盘左上方的按键)

编辑模式--->末行模式


末行模式:-->编辑模式
	ESC(键盘左上方的按键)(一次或者多次)

2_打开和关闭文件

#打开文件
vi  /path/to/file

#关闭文件
在末行模式下
wq: 保存退出
q!: 退出不保存

3_移动光标

#逐字符移动: 
	h:左移动
	l:右移动
	j:向下移动
	k:向上移动

#行内跳转:
	0:跳转到行首
	$: 跳转到行尾

#行间跳转;(末行模式)
	num: 跳转到某一行(末行模式)
	G: 跳转行最后一行(编辑模式)
	gg: 跳转到第一行(编辑模式)

4_翻屏操作

在编辑模式下:
ctrl+f 向下翻一页
ctrl+b 向上翻一页

5_删除命令

dd: 删除光标所在行 (编辑模式)
3dd:从光标行开始删除3行(编辑模式)
:1,4d 删除第一行到第四行(末行模式)

6_复制和粘贴命令

yy 复制光标所在行 (编辑模式)
2yy 从光标行开始复制2行(编辑模式)
p: 粘贴命令

7_查找

文件的查找:直接在命令行模式输入

/parttern 从前往后查找
?parttern 从后往前查找

n:  下一个匹配的字符串
N: 上一个匹配的字符串

/关键字   按n找下一个

#设置行号 
set number 或者 set nu

#取消行号
set nu!

8_奇怪的问题

在使用vi编辑器编辑内容的时候,如果突然将会话关闭,获取服务器挂了,等服务器或重新新增会话的时候,在进行编辑该文件就会出现下面的提示“要我们输入enter”

原因是:突然关闭会话,linux会帮我们在当前文件中创建出这个文件的swp文件,它是隐藏的,所以我们只需要将他删除掉就欧克了
在这里插入图片描述
在这里插入图片描述

四、系统服务管理

1_系统服务systemctl

systemctl是CentOS7的服务管理工具中主要的工具

#启动服务:
systemctl start <服务名>

#关闭服务:
systemctl stop <服务名>

#重启服务:
systemctl restart <服务名>

#查看服务状态:
systemctl status <服务名>

#添加开机启动项:
systemctl enable <服务名>

#禁止开机启动项:
systemctl disable <服务名>

#查看服务:
systemctl list-unit-files

2_进程查看:ps

用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。

在这里插入图片描述

ps -ef 显示出的结果:

    1.UID       用户ID
    2.PID        进程ID
    3.PPID      父进程ID
    4.C           CPU占用率
    5.STIME     开始时间
    6.TTY         开始此进程的TTY----终端设备
    7.TIME       此进程运行的总时间
    8.CMD       命令名

3_杀死进程kill

kill -9 pid

五、权限管理

1_用户管理

1.1 useradd

#创建用户 :
useradd [用户名]

#创建用户并分配一个组:
useradd -G [组名] [用户名] 

#查看系统用户:
cat /etc/passwd

1	用户名

2	用户的密码,用x替代

3	用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。

4	用户的gid,linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc/passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与shell的设置,然后再去检验密码是否正确,正确的话正常登录。

5	用户的账号说明解释

6	用户的家目录文件夹

7	用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。

在这里插入图片描述

1.2 groupadd

查看系统用户组:cat /etc/group

1.3 usermod

修改用户组属性

usermod -G [组名] [用户名]

1.4 userdel

删除用户:

-f:强制删除用户,即使用户已登录 
-r:删除与用户相关的所有文件。

1.5 groupdel


1.6 passwd

passwd 用户名

切换用户: su 用户名

2_文件基本权限

2.1 文件权限概述

  • 计算资源:(一切皆文件)

  • 权限:定义资源或服务的访问能力,称之为权限

  • 定义某一个特定的人资源或者服务的访问能力, 用户

  • 定义一类用户具有访问某个资源或服务的能力. 用户组(存放一些列用户的容器),同时用户组还拥有具有访问某个资源的权限

  • 定义一个资源的权限:

    • ① 用户具有该资源的权限(文件所有者,属主)

    • ② 用户组具有该资源的权限(属组)

    • ③ 其他用户(既不是属主,也不是属组)

    • 文件权限:

      • r, 可读 可以执行类似cat命令的操作
      • w, 可写 可以编辑或者删除此文件
      • x 可执行

2.2 文件权限表示

r读 w写 x执行

文件类型: - 文件

​ d 目录

​ l 软链接文件(超链接目录)是L不是i

-rw-r--r--

rw-			   			r--				  r--

文件所有者(用户)		用户所属的用户组		其他用户

在这里插入图片描述

文件类型所有者读写权限所属组读写权限其他人读写权限硬链接次数所属用户所属用户组文件大小文件修改时间文件名
dr-xr-xr-x18rootroot237Jun 14 09:17
-rw-r–r–1rootroot129Dec 29 2013.tcshrc

2.3修改文件权限 chmod

chmod [选项] 模式 文件名

选项
	-R		递归

模式
	字符模式:[guoa] [+-=] [rwx]
	权限模式:[mode=421]
2.3.1 字符模式
chmod [选项] 模式 文件名

选项:	-R	递归,用于给一个文件夹里的所有文件同一种权限
模式:[guoa] [+-=] [rwx]

g:  group
u:  user
o:  other
a:  all

+ 加一个权限
- 减少一个权限
= 给一个权限


#给当前用户添加指定文件的x执行权限
chmod u+x 文件

#给该文件用户组合其他人添加指定文件的w写的权限
chmod g+w,o+w 文件

#给该文件的当前用户,当前组,其他人 添加rwx可读可写可执行的权限
chmod a=rwx 文件
2.3.2 数字模式
chmod [选项] 模式 文件名
模式:[mode=421]


#权限的数字表示
--x 001
-w- 010
r-- 100
rwx 111 


0    ---	0
1    --x	1
2    -w-	2
3    -wx	3
4    r--	4
5    r-x	5
6    rw-	6
7    rwx	7



示例:
rwx  r-x   r-x
7	 5	   5

chmod 755 文件



aa.txt    --->
拥有者: 可读可写        rw- 6
所属组: 可读写执行  	 r-x 5
其他人: 可读可写可执行   rwx 7
chmod  657 aa.txt

3_sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行.

sudo的操作对象是系统命令

vi sudo
#实际修改的是/etc/sudoers文件



root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

%wheel ALL=(ALL) ALL
#%组名 被管理注解的地址=(可使用身份) 授权命令(绝对路径)

操作一下


useradd dafei
passwd  admin

#在vi sudo中的root ALL=(ALL) ALL下添加
dafei ALL = (ALL)  /usr/sbin/shutdown

切换到dafei用户后
使用sudo命令执行shutdown

sudo shutdown -h now

六、网络管理

1_网络中的基本概念

网络的基本概念

​ 1)ip地址:在网络通信中主机的标识符(好比手机号码)

​ 2)mac地址:主机的物理网卡的唯一标识符(好比身份证号码)

​ 3)子网掩码:用于区分主机的IP地址中的网络地址和主机地址,并由此确定该主机的IP地址的网段

​ 4)网关:就是一个网络中的主机连接到另一个网络的主机的关口

​ 5)DNS:域名解析服务器,把域名解析成对应的IP地址

2_防火墙

centos7的防火墙程序服务名为:firewalld


#防火墙配置命令:
firewall-cmd

#防火墙帮助:
firewall-cmd --help

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

#查看所有打开的端口:
firewall-cmd --zone=public --list-ports

#开启端口:
firewall-cmd --zone=public --add-port=端口号/tcp --permanent(--permanent参数为永久生效,不加则重启后失效)
firewall-cmd --zone=public --add-port=8080/tcp --permanent

#更新防火墙规则:
firewall-cmd --reload

#删除端口:
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

#关闭防火墙	
systemctl  stop firewalld
systemctl disable firewalld

3_ifcfg-eth解释

文件 /etc/sysconfig/network-scripts/ifcfg-eth0在/etc/sysconfig/network-script在这个目录下面,存放的是网络接口(网卡)的脚本文件(控制文件),ifcfg-eth0是默认的第一个网络接口,如果机器中有多网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg-eth3......(这里面的文件是相当重要的,涉及到网络能否正常工作)。



TYPE=Ethernet #网卡类型
DEVICE=eth0 #网卡接口名称
ONBOOT=yes #系统启动时是否自动加载
BOOTPROTO=static #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
IPADDR=192.168.1.11 #网卡IP地址,第三位数字要根据虚拟机的虚拟出来的一致,最后一位只能是0~255,不能是0,255,1(被宿主机霸占了)
NETMASK=255.255.255.0 #网卡网络地址
GATEWAY=192.168.1.1 #网卡网关地址,第三位数字要根据虚拟机的虚拟出来的一致
DNS1=8.8.8.8 #网卡DNS地址
BROADCAST=192.168.1.255 #网卡广播地址 



查看ip:
ip addr


TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.40.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.40.2"
DNS1="8.8.8.8"
BROADCAST="192.168.40.255"
ONBOOT="yes"



重启服务
systemctl restart network

六、软件安装

1_rpm

有安装包,知道依赖关系使用rpm

rpm 常用命令

#安装一个包 
rpm -ivh <包名>
rpm -ivh  --nodeps  <包名>  : 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。 
		  --force 即使覆盖属于其它包的文件也强迫安装 

#查询一个包是否被安装 
rpm -q <软件名>

#得到被安装的包的信息 
rpm -qi < 软件名> 

#列出该包中有哪些文件 
rpm -ql < 软件名> 

#列出服务器上的一个文件或目录属于哪一个RPM包 
rpm -qf <文件或目录名>

#列出所有被安装的rpm package 
rpm -qa 

#卸载一个包 
rpm -e <软件名>

2_yum

没安装包, 不知道依赖关系,使用yum

#1 配置一个自定义的仓库地址
	/etc/yum.repos.d
	local.repo

#2 安装命令
	yum install 

#3 查看软件包
	yum list |grep mysql
	yum list installed

#4 卸载软件包
	yum remove  

修改yum源

yum install wget -y

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

#更新系统软件,不执行
yum -y update

3_绿色软件

tomcat就是这种,直接解压就可以使用

4_源码编译安装

redis就是这种,从官网下载下来是源码,需要进行编译后就可以使用

七、项目部署

1_JDK安装

#1:将jdk拉入linux路径: 
/usr/local/software


#2:将jdk解压到指定的路径
cd  /usr/local/software
tar -zxvf jdk-11_linux-x64_bin.tar.gz  -C /usr/local


#3:备份配置环境变量文件
注意,设置前先备份,养成习惯
cp /etc/profile /etc/profile_bak



#5:修改配置环境变量文件
vi  /etc/profile 

在随便空白地方输入:
export JAVA_HOME=/usr/local/jdk-11    #设置java_home
export PATH=$JAVA_HOME/bin:$PATH   #设置环境变量, 跟window区别,是  :  分隔的

看清楚,大小写必须一致



#6:重写加载环境变量
source /etc/profile


#7:测试
java -version

看到这个结果表示安装成功

在这里插入图片描述

2_Tomcat安装

#1:将tomcat安装包拉入linux路径: 
/usr/local/software


#2:将tomcat解压到指定的路径
cd  /usr/local/software
cp  apache-tomcat-9.0.33.zip  /usr/local
cd  /usr/local
unzip apache-tomcat-9.0.33.zip
rm -rf apache-tomcat-9.0.33.zip


#3:切换到tomcat的 bin目录
cd /usr/local/apache-tomcat-9.0.33/bin 


#4:授权、执行tomcat启动命令
chmod 777 *.sh 
 ./startup.sh     #注意有点 的


#5:此时因为防火墙没有开辟8080端口,需要开通, 并重启
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload


#6:访问测试tomcat是否启动
http://192.168.18.131:8080/   #注意: 192.168.168.131 这个是自己的虚拟主机的ip





------------------------------------------------------------------------------------------

#7:观看tomcat运行日志
cd /usr/local/apache-tomcat-9.0.33/logs
tail -f catalina.out  #查看新增日志



#8:选中SecureCRT的连接会话拷贝一份
cd /usr/local/apache-tomcat-9.0.33/bin
 ./startup.sh 


#9:切换回到刚刚查看日志命令,可以看到日志打印


#10:tomcat 关闭

方式1: 
cd /usr/local/apache-tomcat-9.0.33/bin
 ./shutdown.sh



方式2:
ps -ef | grep java  #找到进程id
kill  进程id

3_MySQL5.7安装

0、进入mysql5.7目录
cd /usr/local/software/mysql5.7

1、先把postfix 和mariadb-libs卸载掉,不然的会有依赖包冲突:
[root@localhost]#  rpm -e postfix mariadb-libs

2、安装mysql的依赖net-tools和 perl
yum -y install net-tools perl

3、安装mysql-common包:
[root@localhost]#  rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm

4、安装mysql-libs包:
[root@localhost]# rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm

5、安装mysql-client包;
[root@localhost]# rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm

6、安装mysql-server包
[root@localhost]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

5、设置开机启动:
	[root@localhost]#  systemctl enable mysqld

6、启动MySql服务
	[root@localhost]#  systemctl start mysqld

7、由于MySQL5.7安装好后会给root用户分配一个临时密码,所以我们先查看临时密码
[root@localhost]#  grep 'temporary password' /var/log/mysqld.log
2018-06-01T19:40:08.341478Z 1 [Note] A temporary password is generated for root@localhost: Ct<pX.k7S(=w
冒号后面的就是root用户的临时密码:Ct<pX.k7S(=w

8、使用临时密码登录
	[root@localhost]#  mysql -u root -p
输入密码:Ct<pX.k7S(=w
	
9、设置root的密码
	mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qwe123!@#';
	mysql> exit
注意:mysql5.7增加了安全级别,密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。

10、用新密码登陆
	[root@localhost]#  mysql -u root -p
输入密码:Qwe123!@#

11、开放远程登录权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Qwe123!@#'  WITH GRANT OPTION;
	mysql> FLUSH PRIVILEGES;

12、开放mysql的3306端口
[root@localhost]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost]# firewall-cmd --reload

如果出现乱码:
在链接地址栏后添加useUnicode=true&characterEncoding=utf-8

4_Redis安装

最新稳定版: https://redis.io/download  官方提供的


#1:将redis安装包拉入linux路径:
/usr/local/software



#2:将redis解压到指定的路径
cd  /usr/local/software
 tar -zxvf redis-6.2.1.tar.gz -C /usr/local



#3:进入redis主目录
cd  /usr/local/redis-6.2.1/



#4.安装gcc编译器
yum install -y gcc



#6:编译redis
cd  /usr/local/redis-6.2.1/
make



#7:安装redis 服务
cd  /usr/local/redis-6.2.1/src
make install





#9:启动redis服务
/usr/local/redis-6.2.1/src/redis-server    /usr/local/redis-6.2.1/redis.conf



#10:验证启动是否成功:
ps -ef | grep redis   
查看是否有redis服务或者查看端口:    
netstat -tunpl | grep 6379



#8:修改配置文件redis.conf
vi /usr/local/redis-6.2.1/redis.conf    
将redis配置的 : daemonize:后台运行,值为yes | no 默认为no  
protected-mode yes  保护模式改为  no


#11:设置远程连接
vi /usr/local/redis-6.2.1/redis.conf    
注释掉	bind 127.0.0.1 ==> 改为  bind 0.0.0.0



#12:停掉redis, 重新启动
ps -ef | grep redis 
kill 进程号
/usr/local/redis-6.2.1/src/redis-server    /usr/local/redis-6.2.1/redis.conf



#13 : 防火墙开放6379
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload



#14:远程连接
firewall-cmd --reload

5_Ruoyi前后端项目部署

5.1 打包

后端

① 在RuoYi项目ruoyi-admin的pom.xml添加打包命令

方式1:
<plugin>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-maven-plugin</artifactId>

    <version>2.1.1.RELEASE</version>

    <configuration>

    	<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->

    </configuration>

    <executions>

        <execution>

            <goals>

            	<goal>repackage</goal>

            </goals>

        </execution>

    </executions>

</plugin>


方式2:
mvn clean package -Dmaven.test.skip=true

② 改数据库ip端口,数据库名,数据库账户/密码

​ ruoyi-admin----application-druid.yml

③ 改redis ip端口

​ ruoyi-admin----application.yml

④ 打包

​ ruoyi-admin–maven----Lifecycle—package

⑤ 到ruoyi-admin—target目录获取运行jar包

前端
#1>在vue.config.js 配置
//打包配置文件
np.exports = {
  assetsDir: 'static',
  parallel: false,
  publicPath: './',
};
默认情况下,使用vue-cli已经配置好了


#2>改动后端ip 端口
在vue.config.js 修改后端ip 地址


#3>命令行执行:
npm run build
//  查看项目下package.json 文件--scripts 配置的 build:prod
npm run build:prod


#4>在dist目录获取项目文件

ruoyi框架前端打包报错:“‘vue-cli-service’ 不是内部或外部命令,也不是可运行的

npm i -D @vue/cli-service

5.2 启动与部署

后端
#1>拷贝
将ruoyi-admin.jar 拷贝到  local/software


#2>使用java-jar 命令启动
cd  /usr/local/software
java -jar ruoyi-admin.jar


#3>使用服务器ip访问



#4>背后独立启动
nohup java -jar ruoyi-admin.jar &

nohup  输出日志在当前目录中
& 在Linux中意思是当前进程在后台运行
前端
真实部署
#1>将dist目录中文件拷贝到服务器

#2>启动配置Nginx 路径执行dist

#3>启动nginx服务器, 直接访问



```````````````````````````````````````````````````````````````````````````````````````````````
当前部署

没学nginx,就在本地(windows)启动

#1>启动
npm run dev
如果是新版本node.js启动前加:SET NODE_OPTIONS=--openssl-legacy-provider


---------------------------------------------------------------------

非要linux 部署也行,使用tomcat替换即可

#1>进入修改tomcat配置
cd /usr/local/apache-tomcat-9.0.33/conf

vi server.xml 
搜端口, 修改为80端口
搜Host标签,添加下面内容
<Context path="" docBase="/usr/local/software/dist"></Context>

#2>启动tomcat
cd /usr/local/apache-tomcat-9.0.33/bin
 ./startup.sh 


#3>访问
http://192.168.218.130

5.3 项目验证码报错问题

  • 报错

    • {“msg”:“Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException”,“code”:500}
  • 原因: 远程服务器少了字体:

  • 项目代码:

    • CaptchaConfig类中有代码:
      // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
      properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
      
  • 查看服务器字体:

    • fc-list
  • 安装服务器字体

    • #1>下载 Arial.ttf字体
      #2>将字体放置在指定目录
      	cd  /usr/share/fonts
          mkdir  myfonts
          将字体拖到指定位置
              
      #3>创建字体索引  直接按照顺序执行下面即可
          yum install mkfontscale  -y
          yum install fontconfig -y
          mkfontscale 
          mkfontdir 
          fc-cache -fv
      #4>重启服务器
      

6_Nginx操作

#安装
yum install nginx

#查看状态
systemctl status nginx

#开启服务
service nginx start

#重启服务
systemctl restart nginx

#配置 Nginx 开机自启动:
systemctl enable nginx

#关闭服务
systemctl stop nginx

#配置nginx
vi /etc/nginx/nginx.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值