Java开发人员必备的linux学习大全(用户管理,基本操作,mysql、jdk等开发软件的安装,图文详解)
文章目录
- 1、Linux-CentOS7 分区
- 2、软件选择安装
- 3、VMtools
- 4、linux目录结构
- 5、远程连接
- 6、vi和vim的三种模式
- 7、关机&重启
- 8、用户管理
- 9、linux实操篇
- 10、组管理和权限管理
- 11、任务调度
- 12、linux的挂载
- 13、linux添加新分区
- 14 、查看磁盘情况
- 15、修改主机ip
- 16、进程管理
- 17、防火墙/服务管理
- 18、rpm包
- 19、yml
- 20、JavaEE开发环境搭建
- 21 linux关于软件安装的位置疑问
1、Linux-CentOS7 分区
2、软件选择安装
选择带有GUI的选项安装
3、VMtools
1、安装
2、直接黏贴命令在win和centos之间
可以从windows复制命令到linux中,快速复制粘贴
3、设置win和centos的共享文件夹
点击要共享的虚拟机,右键-> 设置 -> 选项 -> 共享文件夹
设置成总是启动,并且添加一个 本地共享文件夹的位置
4、测试
linux 系统中默认挂在VM tool共享文件夹的目录为 /mnt/hgfs
4、linux目录结构
linux的文件系统采用层级式的树状目录结构。在此结构中的最上层是根目录/ ,然后在此目录下在创建其他目录。
总结:在linux系统之间,一切对象皆文件
-
bin 存放二进制文件指令
-
sbin 存放管理员使用的系统管理程序
-
dev 存放系统设备
-
etc 存放配置文件文件
-
home 家目录 存放用户
-
lib 存放库文件
-
mnt 存放挂载设备
-
opt 安装的软件包
-
proc 存放内核
-
root root用户的一些文件
-
selinux 存放安全配置
-
tmp 临时文件
-
user 用户信息 user/local 存放安装后软件的目录
-
var
5、远程连接
1、远程登录
在连接前,linux必须开启22端口的sshd服务
2、远程上传下载
6、vi和vim的三种模式
1、正常模式
我们可以使用快捷键
可以上下左右移动光标 可以删除字符整行
2、插入模式/编辑模式
按下 i o a r等任何一个字母都可以加进入插入模式
3、命令行模式
可以输入命令保存 退出
:wq 保存退出
:q! 不保存退出
4、vim之快捷键
1、拷贝当前行
正常模式下,将光标移到需要复制的行 ,输入yy即完成赋值 输入p即完成粘贴 输入数字+yy即可赋值数字行(5yy即复制5行)
2、删除当前行
同复制命令,删除命令为dd 多行删除为数字+dd 即(5dd)删除5行
3、查找命令
在命令行模式下输入 /+搜索词 输入n切换到下一个
4、设置行号
在命令行模式 set nu 取消行号 set nonu
5、调到行首和行尾
直接在正常模式下 输入G调到行尾 输入gg 调到行首
6、撤销动作
在正常模式下输入 u
7、快速移动光标
第一步、显示行号
set nu
第二步、输入20
第三步、输入shift + g
7、关机&重启
1、shutdown
shutdown -h now: 立即关机
shutdown -h 1 : 表示1分钟后立即关机
shutdown -r now : 立即重启
halt:直接使用,等价于直接关机
reboot:重启系统
sync:把内存的数据同步到磁盘上
注:当我们关机或者重启时,都应该先执行以下sync指令,把内存中的数据加载到磁盘上`
2、用户的登录和注销
尽量使用普通用户登录,只有在需要的时候再转换到root用户
使用su切换到root用户
使用logout注销用户
注 :logout注销指令在图形运行级别无效,在运行级别3下有效`
8、用户管理
1、用户、组、家目录之间的关系
用户和用户组的对应关系有以下 4 种:
- 一对一:一个用户可以存在一个组中,是组中的唯一成员;
- 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
- 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
2、添加用户
1、基本语法
useradd [选项] 用户名
useradd -d 路径 用户名 强制给用户指定一个家目录
2、实际案例
添加的用户如何不指定则自己默认为一个组。
添加完的用户将自动在/home下自动生成一个目录
3、设置密码
使用 passwd 用户名
4、查看当前目录
使用 pwd
5、删除用户
1、删除用户,但是保存家目录
userdel xxx
2、删除用户,且删除家目录
userdel -r xxx
在删除用户时,我们一般不会将家目录删除掉
6、查询用户id
id 用户名
我们可以看到,没有指定组的情况下,用户创建时自己指定为一组
7、切换用户
su 用户名
8、查看当前用户
who am i
3、用户组
1、添加组
类似于角色,系统可以对有共性的多个用户进行统一管理
指令:groupadd 组名
2、删除组
groupdel 组名
不能删除非空组 ( 组内不能有用户 )
3、添加用户指定组
useradd -g 用户组 用户名
4、修改用户组
usermod -g 用户组 用户名
5、用户和组的相关文件
1、用户配置文件(用户信息) /etc/passwd
用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识符:组标识符:注释性描述:主目录:登录shell
Centos6用户id是从500开始 ,Centos7是从1000开始
2、组配置文件(组信息) /etc/group
组的配置文件,记录linux包含的组的信息
每行的含义:组名:口令:组标识符:组内用户列表
Centos6用户组id是从500开始 ,Centos7是从1000开始
3、口令配置文件(密码登录信息) /etc/shadow
密码都是经过加密的
9、linux实操篇
1、运行级别
一共有七个运行级别
0:关机
1:单用户(找回丢失密码)
2:多用户无网络服务
3:多用户有网络服务
4:保留
5:图形界面
6:系统重启
系统的运行级别配置文件 /etc/inittab
2、切换指定运行级别的指令
init [0 1 2 3 5 6]
3、ROOT密码丢失,如何找回
思路:进入单用户模式,修改密码
4、帮助指令
man 命令
help 命令
5、文件目录类
1、pwd指令
pwd:显示当前工作路径的绝对路径
2、ls指令
ls 【选项】 【目录或是文件】
ls -a 显示当前目录所有的文件和目录,包括隐藏的
ls -l 以列表的方式显示信息 (简写:ll)
3、cd指令
cd ~ 或者 cd 回到自己的家目录
cd … 回到当前目录的上一级目录
4、mkdir指令
mkdir指令用于创建目录
mkdir [选项] 要创建的目录
mkdir -p :创建多级目录(mkdir -p /home/animal/tiger)
5、rmdir指令
rmdir指令删除空目录
rmdir [选项] 要删除的空目录 (只能删除空目录)
rm -rf 目录/文件 删除一切文件或目录(包含非空目录)
6、 touch指令
touch 文件名 创建空文件
可以一次创建多文件
7、cp指令
cp指令拷贝文件到指定目录
cp [选项] source dest 只能拷贝文件
拷贝目录,不能拷贝复制到目标目录
cp -r source dest 将源目录夹整个拷贝到目标文件夹中
目标目录不存在,直接复制
目标目录存在,询问复制
\cp -r source dest 强制覆盖,不提示
8、rm指令
删除文件或者目录
rm [选项] 文件/目录
rm 文件名 提示删除
只能删除文件,不能删除目录
rm -f 文件名 强制删除,不提示
只能删除文件,不能删除目录
rm -r 文件夹名 递归询问删除文件夹
rm -rf 文件夹名 删除一切 (毁天灭地~~~从删库到跑路~~~)
9、mv指令
移动文件与目录或者重命名
mv oldFileName newFileName (重命名)
新文件/目录不存在的情况下,旧文件/目录更名成新文件/目录名
mv oldFilePath newFilePath(移动文件不改名)
mv oldFilePath newFilePath(移动文件并改名)
10、cat指令
查看文件内容,以只读的方式打开
cat 文件名
cat 文件名 -n 查看文件并带行号
cat -n /etc/profile |more 分页查看 使用空格键翻页
将查询结果使用管道重定向到more来输出
11、more指令
空格来制定下一页
12、 less指令
page up 上一页
page down 下一页
空格 下一页
13 、> 指令 和 >>指令
>输出重定向:会将文件覆盖
>> 追加:会追加文件
ls -l > 文件 功能描述:列表的内容写入到文件a.txt中(覆盖写)
ls -al >> 文件 功能描述:列表的内容追加到文件aa.txt的末尾(追加写)
cat 文件1 > 文件2 功能描述:将文件1的内容覆盖到文件2
echo “内容” >> 文件
14、echo指令
echo输出内容到控制台
15、head指令
head用于显示文件的开头部分内容。默认情况下head指令显示文件的前10行内容
head 文件名
head -n 5 文件名 查看前5行的内容
16、tail指令
tail指令用于输出文件中尾部的内容,默认情况下tail执行显示文件的后10行内容
tail 文件名
tail -n 5 文件名 查看后5行的内容
tail -f 文件 功能描述:实时追踪该文档的所有更新,工作中经常使用
6、ln指令
软链接也叫符号连接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
ln -s /root linkToRoot (ln 小写的L)
当我们使用pwd指令查看目录时,我们仍然看到的是软链接所在的目录
7 、history指令
history 查看已经执行过的历史指令
显示最近执行的10个
history 10
!405 执行历史记录为第405条的命令
8、时间日期类
date 指令 显示当前日期
date +%Y 显示当前年份
date +%m 显示当前月份
date “+%Y %m %d” 显示当前年月日
date “+%Y %m %d %H %M %S” 显示当前 年月日时分秒
date -s “2020-9-13 15:29:30” 设置日期时间
不写入bios 重启就会失效
9、日历类
cal 显示当前月份日历
cal 2020 显示2020年日历
10、搜索查找类
1、find 指令
find [搜索范围] [选项]
find /opt -name java 查找/home目录下的名称为hello的文件
find /opt -user root |head -n 5 按拥有者,查找/opt目录下,用户名称为root的文件
find / - size +20M 查找整个linux系统下大于20M的文件 (+n大于 ,-n小于 ,n等于)
find / -name.txt 查询 / 目录下,所有 .txt的文件
2、locate指令
updatedb 创建locate数据库
locate 文件名 快速定位文件的所在目录
3、grep指令
cat hello.txt | grep hello -in // -i 忽略大小写 -n 行数
4、压缩和解压缩之gzip
gzip/gunzip 指令
gzip 用于压缩文件 (压缩完文件后,原先的文件就消失了)
gunzip 用于解压的
5、压缩和解压缩之zip
zip [选项] xxx.zip 是用于压缩文件的
-r 递归压缩,即压缩目录
将home目录下的所有文件打包名称为mypackage
unzip [选项] xxx.zip 用于解压的(在项目打包发布中很有用)
-d <目录> :指定压解后的文件的存放目录
unzip -d /opt/test /opt/test/oldPackage/gzipFile.zip
将gzipFile.zip解压到 /opt/test文件夹下
6、压缩和解压缩之tar
应用案例
1、打包多个文件。将/home/a1.txt 和/home/a2.txt压缩成 a.tar.gz
[aaa@qq.com test]# tar -zcvf newFile.tar.gz 1.txt 2.txt 3.txt
2、将目录下所有文件打包
tar -zcvf allFile.tar.gz /opt/test/
3、将tar包解压缩
**tar -zxvf a.tar.gz**
4、将tar包压缩到指定目录下
tar -zxvf allFile.tar.gz -C ../test/
10、组管理和权限管理
1.文件/目录所有者
2、查看文件的所有者
当某个用户创建了一个文件后,这个文件所在组就是该用户所在的组
ls -ahl
3、修改文件所有者
chown -R 将要修改的文件名 需要修改的文件 /文件夹 将当前目录下所有文件的所有者修改
修改文件所有者
chown 用户名 文件名
修改目录所有者
chown -hR huanglejia:huanglejia test
4、组的创建
当我们创建一个文件时,默认会为文件指定当前用户为所属者和所属组
5、修改文件所在的组
[aaa@qq.com ~]# chgrp [-R] 所属组 文件名(目录名)
-R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。
实例
[aaa@qq.com opt]# chgrp huanglejia fileGroup
6、其他组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
7、权限详细介绍
文件/文件夹的类型
- 普通文件
d 目录
l 软链接
c 字符设备
b 块文件,硬盘
8、权限管理
- chmod 修改文件或者目录的权限
chmod u= rwx,g=rwx,o=rwx 文件名
文件初始权限
给文件赋予权限
[aaa@qq.com test]# chmod u-x,g+w a.txt
可以用户权限删除了’x‘执行权限,本组增加了’w‘权限
[aaa@qq.com test]# chmod a+x a.txt 所有用户添加读的权限
11、任务调度
crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似。
1、快速入门
- crontab -e
- */1 * * * * date /etc >> /tmp/to.txt
- 保存退出
- 每一分钟都会自动执行
2、任务调度的实例
案例1:每隔1分钟,将当前的日期信息,追加到/tmp/mydate文件中
3、相关指令
项目 | 含义 | 范围 |
---|---|---|
第一个"*" | 一小时当中的第几分钟(minute) | 0~59 |
第二个"*" | 一天当中的第几小时(hour) | 0~23 |
第三个"*" | 一个月当中的第几天(day) | 1~31 |
第四个"*" | 一年当中的第几个月(month) | 1~12 |
第五个"*" | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
在时间表示中,还有一些特殊符号需要学习,如表 3 所示。
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 |
,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次。比如"/10***命令",代表每隔 10 分钟就执行一次命令。 |
当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。知道了这 5 个时间字段的含义,我们多举几个时间的例子来熟悉一下时间字段,如下 所示。
时间 | 含义 |
---|---|
45 22 ***命 令 | 在 22 点 45 分执行命令 |
0 17 ** 1命令 | 在每周一的 17 点 0 分执行命令 |
0 5 1,15**命令 | 在每月 1 日和 15 日的凌晨 5 点 0 分执行命令 |
40 4 ** 1-5命令 | 在每周一到周五的凌晨 4 点 40 分执行命令 |
*/10 4 ***命令 | 在每天的凌晨 4 点,每隔 10 分钟执行一次命令 |
0 0 1,15 * 1命令 | 在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令 |
命令示例
命令 | 含义 |
---|---|
*/5 * * * * /bin/echo “11” >> /tmp/test | 让系统每隔 5 分钟就向 /tmp/test 文件中写入一行“11” |
5.5 * * 2 /sbin/shutdown -r now | 让系统在每周二的凌晨 5 点 05 分重启一次。 |
30.3 1,10,15 * * /root/sh/autobak.sh | 在每月 1 日、10 日、15 日的凌晨 3 点 30 分都定时执行日志备份脚本 autobak.sh。 |
12、linux的挂载
查看挂载情况
[aaa@qq.com tmp]# lsblk -f
查看挂载分区大小
[aaa@qq.com tmp]# lsblk
13、linux添加新分区
1、在vm中添加新硬盘 20g
2、重启
3、查看分区 lsblk
如果是第一次创建后,没有分区
4、分区
[aaa@qq.com /]# fdisk /dev/sdb
#m查看帮助 n创建新分区 w退出
命令(输入 m 获取帮助):n
Select (default p): 默认回车
分区号 (1-4,默认 1): 默认回车
起始 扇区 (2048-41943039,默认为 2048): 默认回车
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 默认回车
命令(输入 m 获取帮助):w
磁盘命令大全
5、格式化分区
[aaa@qq.com /]# mkfs -t ext4 /dev/sdb1
6、挂载 (如果重启则消失)
先创建需要挂载的目录
[aaa@qq.com /]# mkdir /newDisk
挂载分区
mount /dev/sdb1 /newdisk/
7、添加自动挂载
vi /etc/fstab
/dev/sdb1 /newdisk ext4 defaults 0 0
8、启动生效
mount -a 立刻生效
如果不想挂载到某个位置上,可以解挂
解挂载
umount /dev/sdb1
14 、查看磁盘情况
1、 查看系统整体磁盘情况查询
#磁盘过满可能会影响执行性能
[aaa@qq.com /]# df -lh
2、查询指定目录的磁盘占用情况
#du -h 目录
[aaa@qq.com /]# du -hs /opt
#dept代表文件夹层数
[aaa@qq.com /]# du -ach --max-dept=1 /opt
3、实用指令
1、统计/usr/local/mysql/文件夹下文件的个数
[aaa@qq.com mysql]# ls -l /usr/local/mysql/ | grep "^-" |wc -l
2、统计/home文件夹下目录的个数
[aaa@qq.com mysql]# ls -l /home | grep "^d" |wc -l
3、统计/opt文件夹下目录的个数,包括子文件夹里的目录
[aaa@qq.com home]# ls -lR /opt | grep "^d" |wc -l
4、统计/usr文件夹下文件的个数,包括子文件夹里的文件
[aaa@qq.com home]# ls -lR /usr | grep "^-" |wc -l
5、以树状显示这个指令
15、修改主机ip
查询ip
[aaa@qq.com /]# ip addr
[aaa@qq.com /]# ifconfig
可以看出我们的网卡名称为eth0
[aaa@qq.com /]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
设置静态/动态获取、ip地址、子网掩码、网关等信息
16、进程管理
1、什么是进程
进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。
这么讲很难理解,那我们换一种说法。程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合。而进程是正在执行中的程序。当程序被执行时,执行人的权限和属性,以及程序的代码都会被加载入内存,操作系统给这个进程分配一个 ID,称为 PID(进程 ID)。
也就是说,在操作系统中,所有可以执行的程序与命令都会产生进程。只是有些程序和命令非常简单,如 ls 命令、touch 命令等,它们在执行完后就会结束,相应的进程也就会终结,所以我们很难捕捉到这些进程。但是还有一些程和命令,比如 httpd 进程,启动之后就会一直驻留在系统当中,我们把这样的进程称作常驻内存进程。
2、查看系统执行的进程
[aaa@qq.com ~]# ps aux
#查看系统中所有的进程,使用 BS 操作系统格式
[aaa@qq.com ~]# ps -le
#查看系统中所有的进程,使用 Linux 标准命令格式
a:显示一个终端的所有进程,除会话引线外;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
-l:长格式显示更加详细的信息;
-e:显示所有进程;
ps
[aaa@qq.com test]# ps aux
[aaa@qq.com test]# ps -le
ps -le 命令输出信息
表头 | 含义 |
---|---|
F | 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限; |
S | 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致; |
UID | 运行此进程的用户的 ID; |
PID | 进程的 ID; |
PPID | 父进程的 ID; |
C | 该进程的 CPU 使用率,单位是百分比; |
PRI | 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行; |
NI | 进程的优先级,数值越小,该进程越早被执行; |
ADDR | 该进程在内存的哪个位置; |
SZ | 该进程占用多大内存; |
WCHAN | 该进程是否运行。"-"代表正在运行; |
TTY | 该进程由哪个终端产生; |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间; |
CMD | 产生此进程的命令名; |
3、终止进程kill和killall
kill 【选项】 进程号
kill 进程名称(支持通配符)
kill -9 进程号 (强制杀死)
1、踢掉某个非法的用户
ps -aux | grep 服务名 #找出进程id
kill 进程号 #杀死进程
2、终止远程登录服务sshd,在适当的时候再次重启sshd
ps -aux | grep sshd #找出进程id
kill 进程号 杀死进程
3、killall全部杀死
killall 服务名
4、强制杀死终端
ps -aux | grep bash
kill - 9 进程号
5、查看进程书
#显示进程以及id
[aaa@qq.com huanglejia]# pstree -p
#显示进程的所属用户
[aaa@qq.com huanglejia]# pstree -u
17、防火墙/服务管理
1、Centos6
1、查看当前防火墙的状态
service iptables status
2、关闭防火墙
service iptables stop
3、查看服务名
setup
ls /etc/init.d/
4、自启动
chkconfig功能说明:检查,设置系统的各种服务
语法:
chkconfig [--add][--del][--list][系统服务] 或
chkconfig [--level<等级代号>][系统服务][on/off/reset]
--add 添加服务
--del 删除服务
--list 查看各服务启动状态
给每个服务的各个运行级别设置自启动/关闭
1、查看服务
chkconfig --list
2 查看单个服务信息
chkconfig iptables --list
chkconfig --list | grep iptables
3关闭自启动
chkconfig --level 5 sshd off
4在所有模式下关闭/打开自启动
chkconfig 服务名 on/off
2、Centos7
在Centos7中使用firewall来代替ipables,但是iptables也可以继续安装使用,以下是firewall的操作命令
1、启动防火墙
systemctl start firewalld
2、查看防火墙的状态
systemctl status firewalld
3、关闭防火墙
systemctl stop firewalld
4、设置防火墙开机自启
systemctl enable firewalld.service
5、关闭防火墙开机启动(需先关闭防火墙)
systemctl disable firewalld.service
6、查看firewall的状态
firewall-cmd --state
7、查看防火墙规则
firewall-cmd --list-all
8、重新加载防火墙配置
firewall-cmd --reload
9、查看当前开放端口(允许任意IP访问)
firewall-cmd --zone=public --list-ports
10、开放指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
// --permanent为永久生效,没有此参数 服务器重启后配置失效
查看规则
11、移除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --reload
可以看到80端口已经被移除了
12 其他命令暂时用不到
查看允许指定IP访问端口的规则
firewall-cmd --zone=public --list-rich-rules
开放指定端口(只允许指定IP访问)
以“只允许192.168.1.1的主机连接3306端口”为例
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="3306" accept" --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
移除规则(只允许指定IP访问的端口)
以“移除只允许192.168.1.1的主机连接3306端口”为例
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="3306" accept" --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
移除默认的ssh服务
移除默认的ssh服务前,先确认是否已经额外开放了22端口,否则会导致无法使用ssh远程连接。
firewall-cmd --remove-service=ssh --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
查看某个端口是否开放
以检查80端口为例(yes:开放;no:未开放)
firewall-cmd --zone=public --query-port=80/tcp
TCP端口转发
# 允许防火墙伪装IP
firewall-cmd --add-masquerade
# 将本地80端口的流量转发到192.168.1.1的80端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.1:toport=80 --permanent
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
查看版本:firewall-cmd --version
查看帮助: firewall-cmd --help
查看状态: firewall-cmd --state
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
18、rpm包
rpm(RedHat Package Manager)软件包管理工具。类似于setup.exe
rpm -qa | grep 文件
示例
[aaa@qq.com test]# rpm -qa | grep firewalld
名称:firewalld
版本号:0.6.3-8
适用操作系统:el7_8.1
如果是noarch表示通用
rpm -qa //查询所有安装的包
rpm -qa | more //分页查看
rpm -qa | grep xxx //查找软件
rpm -qi 软件包 //查看版本号
rpm -ql 软件包 //查看所有的依赖文件安装位置
rpm -qf 文件 //查看文件所属的包
rpm -e 软件包 //删除软件包
rpm -ivh rpm包权路径名称 //安装rpm包
// i = install 安装
// v = verbose 提示
// h = hash 进度条
安装示例
首先找到firefox的安装rpm包,你需要挂载上安装centos的iso文件,然后到/media/下去找rpm
root# cd /Media/Centos_6.8/Packages/
root# ls -l firefox-45.0.1-1.el6.centos.x86_64.rpm
root# cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/
cd /opt/
rpm -ivh firefox
19、yml
1、介绍
yml是一个shell前端软件包管理器,基于RPM包管理,能够从指定改的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并一次安装所有依赖的软件包
2、yml的基本指令
yum list | grep 软件名 //查看yml服务器是否有该软件
yum install 软件名 //安装软件
安装firefox浏览器
[aaa@qq.com test]# yum install firefox
yum remove 软件名 //卸载软件
20、JavaEE开发环境搭建
1、搭建JDK
使用wget 远程下载或者从本地远程上传到服务器的/opt目录下
1、解压JDK
在**/opt**目录下解压jdk
tar -xzvf jdk-linux-x64.tar.gz
2、移动jdk
根据习惯,将JDK移动到 /usr/local/路径下
mv jdk1.8.0_131 /usr/local/
3、配置环境变量
打开配置文件添加配置
vim /etc/profile
在正常模式下输入G跳到行尾
插入配置语句
JAVA_HOME=/usr/local/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
4、刷新文件配置生效
source /etc/profice
5、测试
在当前路径下输入java 出现提示!成功
2、安装tomcat
1、解压tomcat
tar -zxvf apache-tomcat-9.0.39.jar.gz
2、移动路径
移动到/usr/local /tomcat/
3、启动服务
进入tomcat的bin目录,执行启动脚本
# cd apache-tomcat-9.0.39/bin
# ./startup.sh
4.测试
在浏览器中输入localhost:8080测试
3、安装Mysql
1、上传或者下载mysql安装包
下载
推荐使用清华的镜像,下载速度非常的快
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.21-el7-x86_64.tar.gz
上传
使用xftp等软件将下载好的tar包上传到/opt目录下
2、检查是否安装过mysql
ps:因为以前用yum安装过,所以先用yum卸载。如果不是此方式或者没安装过则跳过
[aaa@qq.com opt]# yum remove mysql
查看是否有mysql依赖
[aaa@qq.com /]# rpm -qa | grep mysql
如果有则卸载
//普通删除模式
rpm -e xxx(mysql_libs)
//强力删除模式,如果上述命令删除时,提示有依赖其他文件,则可以用该命令对其进行强力删除
rpm -e --nodeps xxx(mysql_libs)
3、检查是否有mariadb
[aaa@qq.com opt]# rpm -qa | grep mariadb
如果有则卸载
[aaa@qq.com opt]# rpm -e --nodeps mariadb-libs
[aaa@qq.com opt]# rpm -e --nodeps mariadb-devel-5.5.65-1.el7.x86_64
4、安装mysql依赖包
[aaa@qq.com opt]#yum install libaio
5、解压
进入/opt目录下将mysql文件解压
[aaa@qq.com opt]# cd /opt
[aaa@qq.com opt]# tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz
>我们查看一下是否解压好了
6、更名并移动
为了方便操作以及配置文件的更改我们将文件名重命名为mysql
[aaa@qq.com opt]# mv mysql-8.0.21-el7-x86_64 mysql
按照习惯,我们将文件移动到/usr/local目录下
[aaa@qq.com opt]# mv /opt/mysql/ /usr/local/
我们切换到usr/local/目录下查看mysql是否存在
[aaa@qq.com opt]# cd /usr/local/
[aaa@qq.com local]# ls
创建数据库文件存放的文件夹。这个文件夹将来存放每个数据库的库文件
[aaa@qq.com local]# cd mysql
[aaa@qq.com mysql]# mkdir mysqldb
7、mysql安装目录赋予权限
[aaa@qq.com mysql]# chmod -R 777 /usr/local/mysql/
8、创建mysql组和用户
创建组
[aaa@qq.com mysql]# groupadd mysql
创建用户(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限)
[aaa@qq.com mysql]# useradd -r -g mysql -s /bin/false mysql
将用户添加到组中
[aaa@qq.com mysql]# chown -R mysql:mysql ./
9、修改mysql配置文件
[aaa@qq.com mysql]# vi /etc/my.cnf
将里面的命令都删除掉,然后添加以下命令,保存并退出(如果有一定经验,可以在里面添加一些其他的配置)
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
10、安装mysql
进入mysql 安装目录下:
[aaa@qq.com mysql]# cd /usr/local/mysql/bin/
安装mysql,并记住初始化随机密码
rjH1VL1+YEfb
11、启动mysql服务
进入mysql.server服务目录下并启动服务
[aaa@qq.com bin]# cd /usr/local/mysql/support-files
[aaa@qq.com support-files]# ./mysql.server start
如果第一次启动,当初始化执行会有报错
此时不要担心,重新给mysql安装目录赋予一下权限后,再次执行
[aaa@qq.com support-files]# chmod -R 777 /usr/local/mysql
[aaa@qq.com support-files]# ./mysql.server start
12、将mysql添加到系统进程中
[aaa@qq.com bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
此时我们就可以使用服务进程操作mysql了
13、设置mysql自启动
[aaa@qq.com bin]# chmod +x /etc/init.d/mysqld
[aaa@qq.com bin]# systemctl enable mysqld
此时mysql自启动就已经设置好了
14、修改root用户登录密码
登录mysql
[aaa@qq.com bin]# cd /usr/local/mysql/bin/
[aaa@qq.com bin]# ./mysql -u root -p
执行后,输入我们初始化时记录下的随机密码,就会进入mysql
mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
15、设置允许远程登录
mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit
16、重启服务且测试
centos6与centos7的服务命令都支持
[aaa@qq.com bin]# systemctl restart mysql
[aaa@qq.com bin]# service mysql restart
1、查看mysql是否启动
[aaa@qq.com bin]# systemctl status mysql
2、查看防火墙开放端口
firewall-cmd --list-all
3、在防火墙中将3306端口开放
[aaa@qq.com bin]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[aaa@qq.com bin]# firewall-cmd --reload
//--permanent为永久生效,没有此参数 服务器重启后配置失效
4、在Navicat上测试连接
5、重启linux后测试自启动(可选)
[aaa@qq.com bin]# reboot
测试mysql服务是否自启动
测试远程访问
21 linux关于软件安装的位置疑问
Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的
/usr
:系统级的目录,可以理解为C:/Windows/
,/usr/lib
理解为C:/Windows/System32
。/usr/local
:用户级的程序目录,可以理解为C:/Progrem Files/
。用户自己编译的软件默认会安装到这个目录下。/opt
:用户级的程序目录,可以理解为D:/Software
,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf
掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
源码放哪里?/usr/src
:系统级的源码目录。/usr/local/src
:用户级的源码目录。