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的不同
- Linux严格区分大小写
- Linux中所有内容都以文件形式保存,包括硬件.
- Linux不靠拓展名区分文件类型:
-
压缩包:
".gz","*.bz2","*.tar",".bz2","*.tgz"等
-
二进制软件包:“*.rpm”
-
网页文件:
"*.html","*.php"
-
脚本文件:“*.sh”
-
配置文件:“*.conf”
-
- Windows下的程序不能直接在Linux中安装和运行
4_可视化界面&字符界面区别
字符界面(Command Line Interface, CLI)的优势包括:
- 效率高:字符界面通常使用命令行指令完成操作,可以通过键盘输入快速执行任务,适合熟悉命令行操作的用户。
- 资源消耗低:字符界面不需要大量的图形资源和内存消耗,适用于资源受限的环境或远程登录操作。
- 自动化和批处理:字符界面可以使用脚本语言编写自动化任务或批处理脚本,方便批量操作和自动化任务的执行。
- 字符界面减少了出错,被攻击的可能性
可视化界面(Graphical User Interface, GUI)的优势包括:
- 直观易用:可视化界面通过图形化的方式呈现信息和操作界面,更直观易懂,对于不熟悉命令行的用户更友好。
- 多媒体支持:可视化界面可以支持图像、音频、视频等多媒体元素的展示和操作,提供更丰富的用户体验。
- 可视化操作:可视化界面提供了鼠标、触摸屏等交互方式,可以通过直接点击、拖拽等操作完成任务,更符合一般用户的操作习惯。
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--
文件所有者(用户) 用户所属的用户组 其他用户
文件类型 | 所有者读写权限 | 所属组读写权限 | 其他人读写权限 | 硬链接次数 | 所属用户 | 所属用户组 | 文件大小 | 文件修改时间 | 文件名 |
---|---|---|---|---|---|---|---|---|---|
d | r-x | r-x | r-x | 18 | root | root | 237 | Jun 14 09:17 | … |
- | rw- | r– | r– | 1 | root | root | 129 | Dec 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