购买云服务(最接近公司环境)
获取了公网IP+重置了实例登陆密码之后我们就可以去本地使用Xshell远程连接我们的云服务器了,建议直接使用360一键下载,Xshell是用于我们在本地远程连接服务器的工具
除了下载xshell以外,我们还需要下载一个工具XFTP,这是配合winscp使用的文件上传工具,都直接去360下载安装即可,不需要自己再额外的去找,浪费时间
进行一些基础配置
ctrl + 滚轮 可以放大字体
傻瓜式(宝塔面板)
包套面板的安装教学:https://www.bt.cn/
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
下载完毕之后,就可以得到一个地址:宝塔的管理面板!
假如不知道下面的东西的话可以输命令/etc/init.d/bt default
部署的软件
这里就是一个端口开启的页面
放入网站进行访问!
比如tomcat就可以注解方法webapps目录下!
特殊的网站:开源项目,就按照自己的操作来
网站如果访问测试失效,就一定是防火墙,(Linux服务器,阿里云安全组面板!)
war 直接丢到tomcat即可
jar直接使用java -jar执行即可
命令式(原生)
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包
Kali linux:安全渗透测试使用!(有兴趣做安全的同学可以了解一下!
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
社会的生存法则;优胜劣汰!
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL +PHP)组合
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎
巴西联邦政府由于支持 Linux 而世界闻名
有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果
印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux
中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux
在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如:Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex
葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件
法国和德国同样开始逐步采用 Linux
开机会启动许多程序。它们在Windows叫做"服务"(service,在Windows中一开机就被自动开启运行提供基础服务的进程,在Windows中称为服务),在Linux就叫做"守护进程"(daemon,在Linux也有需要一开机就开启用来提供基础服务的进程,在Linux中称为守护进程)
即在Linux中服务不叫服务,叫守护进程
开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!
一般来说,用户的登录方式有三种:
最高权限账户为 root,可以操作一切!
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机
关机指令为:shutdown
- sync # 将数据由内存同步到硬盘中,在进行关机之前最好执行一次该命令,防止数据丢失
- shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
- shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
- shutdown –h now # 立马关机
- shutdown –h 20:25 # 系统会在今天20:25关机 ********** 有趣的定时关机操作 **********
- shutdown –h +10 # 十分钟后关机
- shutdown –r now # 系统立马重启
- shutdown –r +10 # 系统十分钟后重启
- reboot # 就是重启,等同于 shutdown –r now
- halt # 关闭系统,等同于shutdown –h now 和 poweroff
注意:在Linux OS中,只要执行了命令之后没有报错,就代表这条命令执行成功
记住两句话
在登陆远程服务器之后我们可以执行如下命令ls /
就可以查看根目录的所有文件
在Linux中,文件系统的结构是树状的
以下是对这些目录的解释:
①一些不要将东西存进去,也不要将里面的东西删除的文件夹
②一些用于挂载外部资源的文件夹(资源挂载之后也就可以像访问本地文件夹一样去这些文件夹中找到对应的挂载资源,访问其中的数据)
③一些我们最常用的文件夹
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录【比如tomcat的配置文件,Java的配置文件,我们都要存放在这个文件夹下】
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/opt:这是给主机额外安装软件所摆放的目录,比如你安装一个ORACLE数据库则就可以放到这个目录下,它默认是空的【Linux将安装系统软件的目录规定在这个文件夹下】
/root:该目录为系统管理员,也称作超级权限者的用户主目录【即root用户的/home目录下对应的文件夹,但是由于root用户权限最大,所以为了安全将它独立了出来】
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录【Linux将安装应用软件的目录规定在这个文件夹下】
/tmp:这个目录是用来存放一些临时文件的,即用来存放一些用完即丢的文件,可以放在这个目录下,比如应用的安装包!
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件
/www:存放服务器网站相关的资源,环境,网站的项目【这个是服务器里面才会有的,本地电脑安装的Linux OS是没有的,在安装了服务器需要的东西之后才会有这个文件夹】
④一些我们不常用/不会使用到的文件夹
绝对路径:路径的全称(从盘符开始到文件名称为止):C:\ProgramData\360safe\xxx.xx
相对路径:文件相对于当前用户所在位置的相对位置(从当前位置开始到文件名称为止),比如说我们现在已经在 360safe 目录下,那我们要访问的 xxx.xx 文件,对应我们的相对位置就是 /xxx.xx
cd : 切换目录命令! [change directory]
./ : 当前目录
cd .. : 返回上一级目录
就是查看当前所在的文件夹下,有哪些文件;由于Linux没有图形化界面,所以我们常常使用ls命令查看当前目录下的子文件夹和文件
在Linux中 ls 可能是最常被使用的 !
-a参数:all ,查看全部的文件,包括隐藏文件
-l 参数 列出所有的文件,包含文件的属性和权限,不包含隐藏文件
所有Linux可以组合使用!
相较于只能移除文件夹得rmdir命令,rm更加强大,可以直接删除指的得文件夹以及文件夹中的文件
-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录!
-i 互动,删除得时候询问你是否删除
rm -rf / #rm删除文件或文件夹,-r递归删除目录,-f删除的时候不弹出警告信息 ,/根目录
# 系统中所有的文件就被删除了,删库跑路就是这么操作的!
# 不要自己去执行 !!!
-f:force 强制执行,不询问
-p:递归执行
命令小结
1.绝对路径、相对路径
- cd : 切换目录命令! [change directory]
- ./ : 当前目录
- cd .. : 返回上一级目录
2.ls (列出目录)
- -a参数:all ,查看全部的文件,包括隐藏文件
- -l 参数 列出所有的文件,包含文件的属性和权限,不包含隐藏文件
3.cd 命令 切换目录
- cd 目录名
- 目录名分为两种:①Linux中**绝对路径都是以 / 开头**;②相对路径,**对于当前目录该如何寻找目标文件**,比如从当前位置回到上一层目录,然后进入其中某一个文件夹: .. /../)
4.pwd 显示当前用户所在的目录!
5.mkdir 创建一个目录
6.rmdir 删除目录
- 注意:rmdir只能移除目录,不能移除目录中的文件,要删除文件需要使用命令rm
- rmdir :移除目录/文件夹 [remove directory]
- rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 -p 参数即可
7.cp (复制文件或者目录)
- copy:拷贝
- 语法:cp 原来的地方 新的地方!
8.rm (移除文件或者目录)
- 相较于只能移除文件夹得rmdir命令,rm更加强大,可以直接删除指的得文件夹以及文件夹中的文件
- -f 忽略不存在的文件,不会出现警告,强制删除!
- -r 递归删除目录!
- -i 互动,删除得时候询问你是否删除
rm -rf / rm删除文件或文件夹,-r递归删除目录,-f删除的时候不弹出警告信息 ,/根目录
系统中所有的文件就被删除了,删库跑路就是这么操作的!
不要自己去执行 !!!
******* 我们平时最常用的删除语法为rm -rf 文件/文件夹名称 *******
9.mv 移动文件或者文件夹&重命名文件和文件夹
- 命令mv有两个功能:①移动文件 ②重命名文件
- -f 强制执行,不询问
- -u 只替换已经更新过的文件,即复制的双方A文件夹和B文件夹本来就是从A复制得到的B,使用-u参数就可以在下一次复制的时候只替换A中修改了的文件到B文件夹中,减少了没有修改的文件替换,节省了拷贝时间
ll
或ls –l
或ls -ll
或ls -al
命令来显示一个文件的属性以及文件所属的用户和组例如:实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等,即第一个字母标识文件类型:
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已
每个文件的属性由左边第一部分的10个字符来确定(如下图)
从左至右用 0-9 这些数字来表示
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限;第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户(所有者的不同组用户)拥有该文件的权限
其中
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限
在以上实例中,boot 文件是一个目录文件,属主和属组都为 root
chgrp:更改文件属组 [Change group]【一般不会更改】
chgrp [-R] 属组名 文件名
chown:更改文件属主,也可以同时更改文件属组【一般不会更改】
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chmod:更改文件9个属性(必须要掌握)【最常用】
我们经常遇到的问题:你没有权限操作此文件!此时我们就需要使用chmod命令修改权限,语法如下:
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字(常用的是数字),一种是符号
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwx rwx rwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
可读可写不可执行 :chmod 666(数字)/rw-(字母) ,所有用户对这个文件都是可读可写不可执行,6 = 4+2
可读可写可执行 :chmod 777(数字)/rwx(字母),所有用户对这个文件都是可读可写可执行,7 = 4+2+1
chomd 777 文件赋予所有用户可读可写可执行的权限!
注意:使用数字1、2、4就是在设置rwx中的一个权限,使用3、5、6、7就是在设置一个以上的权限,我们直接使用1-7的数字,Linux可以自动识别我们设置的是什么权限
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[- rwxrwx- - -]对应使用数字设置权限的命令为
chmod 770 filename # 770 =rwxrwx- - -
使用字母修改文件/文件夹的权限
对于文件属性,我们只需要看懂使用ls -ll
查询出来的数据,会修改对应的文件的操作权限即可,对于文件的属组和属主我们很少操作
即只要掌握下面两张图中的内容即可
对于要掌握的命令小结
1.chgrp:更改文件属组 [Change group]【一般不会更改】
- chgrp [-R] 属组名 文件名
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有
2.chown:更改文件属主,也可以同时更改文件属组【一般不会更改】
- chown [–R] 属主名 文件名
- chown [-R] 属主名:属组名 文件名
3.chmod:更改文件9个属性【重点掌握】
- chmod XXX filename --- [数字格式],数字取值为1-7直接的任何数字
- chmod u:XXX,g:XXX,o:XXX --- [字母形式修改],XXX 取r、w、x中的一个
ctrl + c 强制中断
我们会经常使用到文件查看!
Linux系统中使用以下命令来查看文件的内容:(全部掌握,高亮的是常用的命令)
cat 由文件的第一行开始显示文件的全部内容,用来读文章,或者读取配置文件啊,都使用cat名
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号! 看代码的时候,希望显示行号! 常用
more 一页一页的显示文件内容,只能向下翻页不能向上翻页(空格代表翻页,enter 代表向下看一行,在参看文件内容的时候我们可以输入 :f ,用来查看当前文件内容输出到哪一行了,即查看最后哦一行数据的行号)
less 与 more 类似,但是比 more 更好的是,他可以往前翻页! (空格下翻页,↑、↓键代表翻动页面!退出 的时候需要输入q 命令,才能退出来,查找字符串 /要查询的字符从当前光标位置向下查询,当前光标位置向上查询使用?要查询的字符串;使用了查找字符串之后我们可以使用n 来从当前第一个选中的匹配关键字继续搜寻下一个,N 上寻找!)
head 只看头几行 通过 -n 参数来控制显示几行!【很少用,可以方便我们快速读取大文件中的部分数据】
tail 只看尾巴几行 -n 参数 要查看几行!【很少用,可以方便我们快速读取大文件中的部分数据】
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp
Linux OS的网络配置文件都在路径/etc/sysconfig/network-scripts
中
在Windows查看IP配置的命令为ipconfig
,在Linux中查看IP配置的命令为ifconfig
- cat filename 查看当前目录下指定的文件名的文件内容,文件内容从第一行开始全部显示出来
- tac filename 效果和cat一样,只是它的文件内容从最后一行开始倒序输出
- nl filename 效果和cat一样,但是它会在每一行前面加上行号,对于查看代码和大文件很有用
- more filename 用于一页一页的查看文件的数据,如果文件内容不多直接全部显示,如果文件内容
多于一页就是分页我们可以使用空格翻页,也可以使用回车一行行的向下查看文件内容
在查看文件的时候输入 :f 就可以查看当前文件输入到了哪一行
- less filename 与 more 功能类似,但是比 more 更好的是,它可以往前翻页!
(空格下翻页,↑、↓键代表翻动页面!退出 的时候需要输入q 命令,才能退出来,
查找字符串 /要查询的字符从当前光标位置向下查询,当前光标位置向上查询
使用?要查询的字符串;使用了查找字符串之后我们可以使用n 来从当前
第一个选中的匹配关键字继续搜寻下一个,N 上寻找!)
- head -n 查看的行数 filename 只看头几行 通过 -n 参数来控制显示几行
【很少用,可以方便我们快速读取大文件中的部分数据】
- tail -n 查看的行数 filename 只看尾巴几行 -n 参数 要查看几行!
【很少用,可以方便我们快速读取大文件中的部分数据】
Linux的链接分为两种:硬链接、软链接!
硬链接:文件A—文件A的硬链接B,假设B是A的硬链接,那么它们两个指向了文件系统中的同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!【它的本质为创建多个链接指向磁盘上的同一个文件,只要没有将所有的硬链接和源文件都删除,这个文件就不会被真正的删除,而是只将其中我们指定指向它的那个文件链接删除了】
软链接:又叫符号链接, 类似Window下的快捷方式,删除的源文件,快捷方式也访问不了!
我们可以使用ln
命令创建链接
ln filename 硬链接名称
ln filename -s 软链接名称
我们可以使用命令touch
创建一个文件!
使用命令echo
可以输入字符串,也可以输入到文件中!
echo "字符串" >>filename
1.创建链接
- ln filename 硬链接名称 创建硬链接
- ln filename -s 软链接名称 创建软链接
2.创建文件
- touch filename 在当前文件夹下创建指定名称的文件,文件类型为默认类型
3.输入字符串
- echo "字符串" >>filename 输入字符串,也可以输入到文件中
Vim通过一些插件可以实现和IDE一样的功能!
Vim是从 vi 发展出来的一个文本编辑器,是vi的一个升级版,比如代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。尤其是Linux中,必须要会使用Vim(文本编辑器的功能本质:查看内容,编辑内容,保存内容!)
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方
vim 则可以说是程序开发者的一项很好用的工具
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在
连 vim 的官方网站 自己也说 vim 是一个程序开发工具而不是文字处理软件
vim 键盘图
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
开启vim的命令为vim filename
,如果文件存在直接使用vim打开这个文件,如果文件不存在就创建这个文件
vim的三种模式的作用分别是:
命令模式:用户刚刚启动 vi/vim,便进入了命令模式
进入命令模式之后,我们不能直接为新建的文件输入内容,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符,比如我们此时按下i,并不会输入一个字符,i被当作了一个命令;具体命令可以参考上面的vim 键盘图
以下是3个常用的vim命令
在输入模式中,可以使用以下按键:
底线命令模式
按ESC键可随时退出底线命令模式
- 命令行界面输入vim filename,使用vim编辑器打开指定文件名称的文件,如果文件存在就打开,不存在就新建
- 直接打开的vim 编辑器,它默认处于命令模式,我们可以输入 i/a/o 就会切换至输入模式,在输入模式我们
才能对文件内容进行修改;我们也可以直接输入 : 切换至底线命令模式,底线命令模式可以输入和
执行更多的vim命令命令模式只能使用一些基础的vim命令,比如文件保存和退出vim编辑器,我们就
需要进入底线命令模式
- 在命令模式下输入 i/a/o 就会进入输入模式之后,我们就可以对文件的内容进行修改 ,在修改完文件内容之后
我们就可以按下键盘上的ESC键退出输入模式,返回命令模式
- 在命令模式下输入 : 进入底线命令模式之后,我们可以在 : 后面输入vim命令进行执行,我们最常用的就是
w保存文件命令和q退出vim命令
小结vim编辑器
数字n+空格:将光标移动到这一行的第n个字符【n从0开始计数】
数字n+回车:将光标移动到第n行首【n从0开始计数】
G:移动到文件的最后一行
gg:移动到文件的第一行
/word:向光标之下寻找一个名称为 word 的字符串
?word:向光标之上寻找一个字符串名称为 word 的字符串
n:这个 n 是英文按键,代表重复前一个搜寻的动作
N:这个 N 是英文按键,与 n 刚好相反,为『反向』进行前一个搜寻动作
dd:删除一整行的数据
ndd:n 为数字,删除光标所在的行开始向下 n 行,例如 20dd 则是删除光标所在行开始计数的向下的 20 行
yy:复制光标所在行
nyy:复制光标所在的行开始向下 n 行,例如 20yy 则是复制光标所在行开始计数的向下的 20 行
p和P:p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行
u:复原前一个动作,相当于Windows中的撤销
[Ctrl]+r:重做上一个动作(常用),这个命令和u命令一起使用,可以实现向前和向后的两种方向的撤销,u命令是返回上一步,[Ctrl]+r是返回已经撤销的下一步
. :就是一个小数点,它的意思是重复上一步操作,比如上一步是粘贴,那么如果你还想要粘贴,直接按.即可,虽然按p/P也可以,但是在一些组合键面前,它就显得很方便了
只能使用权限最大的root用户进行添加
添加新的用户账号使用useradd命令,其语法:useradd 选项 用户名
参数说明:
选项:
-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组
-G 用户组,用户组 指定用户所属的附加组
-m 使用者目录/文件夹如果不存在,则自动创建
-s Shell文件 指定用户的登录Shell
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
用户名:
指定新账号的登录名
我们常用选项中的两个
根据上图的运行结果我们可以再思考以下Linux中一切皆文件这句话,我们新建用户就是创建了一个用户的文件夹,然后再去某一个指定的配置文件中配置用户的基本信息即可
那么我们去哪一个文件中配置用户信息呢?答案就是我们前面说的Linux OS的配置文件夹 /etc,这个文件夹中有一个文件passwd
可以发现,除了我们的root用户和刚刚创建的ming2用户,还有很多其他的其他用户
修改用户语法:usermod 选项 用户名
或记为 usermod 对应修改的内容 修改那个用户
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值
另外,有些系统可以使用选项:-l 新用户名,这个选项指定一个新的账号,即将原来的用户名改为新的用户名
比如修改用户名
所以在命令行界面我们就可以看到自己的用户名、登陆的主机的主机名、当前所在文件夹名称以及自己这个账户是超级用户,还是普通用户;超级用户对于拥有系统的所有权限
切换用户的命令为:su username
【su即super user,即我们的管理员,username是你的用户名】
从普通用户切换到root用户,还可以使用命令:sudo su
在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例
如:【su - root】
$表示普通用户
#表示超级用户,也就是root用户
修改主机名称
我们可以使用命令hostname 新主机名
,然后重新连接远程云服务器,就可以看到效果
但是这只是临时的,一旦重启服务器,就会丢失;要永久修改需要修改配置文件
我们一般通过root创建用户的时候!要配置密码!
Linux上输入密码是不会显示的,你正常输入就可以了,并不是系统的问题!
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令
指定和修改用户口令的Shell命令是passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式都为:passwd 选项 用户名
可使用的选项:【我们一般不用选项】
-l 锁定口令,即禁用账号
-u 口令解锁
-d 使账号无口令
-f 强迫用户下次登录时修改口令
如果是超级用户,可以用下列形式指定任何用户的口令:
passwd username #通过username指定要修改密码的用户名
New password:******* #输入新密码,这里在Linux中是没有显示的,它不会显示 *
Re-enter new password:******* #重复输入要设置的新密码
需要的主机号为超级用户的地址即服务器地址
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令
为用户指定空口令时,执行下列形式的命令:
passwd -d username
此命令将用户 username对应的用户的口令删除,这样这个用户下一次登录时,系统就不再允许该用户登录了,回到了刚创建账户没有密码的状态,Linux的用户必须要有密码才能登陆
passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:
passwd -l username
在公司中,你一般触及不到 root 用户!作为一个开发一般你拿不到!
这以上的基本命令,大家必须要掌握!但是自己玩的时候可以使用来学习!Linux是一个多用户的系统,所以我们掌握账户管理是很必要的
命令小结
1.添加用户:useradd 选项 用户名,选项参数一般就是-m(创建用户的主文件夹/home文件夹下的个人文件夹)
或-g(为用户分配用户组)
2.删除用户:userdel -r 用户名称`,带上参数-r 是让系统的删除这个用户的时候,将它的主文件夹也删除
如果不使用参数-r 系统是不会帮我们删除用户的主文件夹的,注意:用户删除之后是在/etc/passwd中信息
被删除了,但是在/home或者我们指定的文件夹下的主文件夹需要我们手动删除
3.修改用户:usermod 选项 用户名,选项中常用-l(修改用户名),-m(修改用户主文件夹的位置)
4.切换用户:
①root用户切换至普通用户:su username #不需要输入密码
②其他用户切换至root用户:sudo su #需要输入root账户的密码
③退出当前登陆的用户:exit #如果是从其他用户切换过来的,就会回到原账户,如果不是就直接注销登陆
④用户类别:$表示普通用户,#表示超级用户,也就是root用户
5.用户的密码设置:passwd 用户名【选项参数一般不用】
①用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用
②超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令
③普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,
如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令
6.锁定账户:passwd -l username,被锁定的账户不能再登陆服务器
7.解锁账户:passwd -u username,解锁直接的账户就可以正常登陆服务器了
命令:groupadd groupname
上面组信息最后的数字其实就是组的id,除了使用Linux默认为我们设置的id(1000之后排号,自增1),我们也可以自己设置一个与已经存在的组没有重复的id,比如设置一个id为520的组,指定组id的时候需要使用参数g,语法为:groupadd -g 指定的端口号 组名称
groupdel 用户组名称
修改用户组信息的时候需要添加参数表明我们要修改用户组的什么属性,我们常用的参数就两个
语法:groupmod 参数选项 新值 原组名称
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组
语法:newgrp 要切换的组名称
$ newgrp root
#即此时一个 $用户要将自己转到root用户组中,如果它有这个权限,就会成功,如果没有就会失败
一般用户的属组在创建用户的时候使用参数-G就为它指定了,后面很少会变动
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性
这个文件对所有用户都是可读的。它的内容类似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
1)"用户名"是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号( : ),因为冒号在这里是分隔符。
为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
2)“口令”一些系统中,存放着加密后的用户口令字。
虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
3)“用户标识号”是一个整数,系统内部用它来标识用户。
一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
4)“组标识号”字段记录的是用户所属的用户组。
它对应着/etc/group文件中的一条记录。
5)“注释性描述”字段记录着用户的一些个人情况。
例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
6)“主目录”,也就是用户的起始工作目录。
它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
8)系统中有一类用户称为伪用户(pseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
常见的伪用户如下所示:
- 伪 用 户 含 义
- bin 拥有可执行的用户命令文件
- sys 拥有系统文件
- adm 拥有帐户文件
- uucp UUCP使用
- lp lp或lpd子系统使用
- nobody NFS使用
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
"登录名"是与/etc/passwd文件中的登录名相一致的用户账号
"口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录
"最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日
"最小时间间隔"指的是两次修改口令之间所需的最小天数
"最大时间间隔"指的是口令保持有效的最大天数
"警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数
"不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数
"失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了
下面是/etc/shadow的一个例子:
# cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
- "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
- "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
- "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
- "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组
/etc/group文件的一个例子如下:
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
其实用户的组操作和用户操作大致相同,只是将userXXX改为groupXXX即可,参数选项有所不同,对应修改的文件有所不同,一个是/etc/passwd,一个是/etc/gruop
命令小结
1.新值用户组:groupadd -g 指定的端口号 组名称
2.删除用户组:groupdel 用户组名称
3.修改用户组:groupmod -g 新组id -n 新组名称 原组名
4.用户切换属组:newgrp 要切换的组名称
df:检查文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。它会列出整个服务器上所有 文件系统/磁盘 的磁盘使用量,类似于我们在Windows上打开"此电脑"的时候看到的场景
使用语法:df [参数选项] [目录或文件名]
选项参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
但是上面的存储数据是以字节为单位显示的,我们更加习惯使用K、M、G、T…显示磁盘空间,所以在查看的时候我们可以加上参数h,语法:df -h
通配符 * 来代表每个目录
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据
挂载:mount
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
卸载:umount -f [挂载位置] 强制卸载
umount [-fn] 装置文件名或挂载点
选项与参数:
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-n :不升级 /etc/mtab 情况下卸除。
命令小结
1.查看系统磁盘使用情况:df [参数选项] [目录或文件名]
2.对文件和目录磁盘使用的空间进行查看:du [-选项与参数] 文件或目录名称
3.挂载设备:mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
4.卸载设备:umount [-fn] 装置文件名或挂载点
命令:ps
,用于 查看当前系统中正在执行的所有进程的信息【很常用】
ps 的参数选项,可以使用ps -help all
/man -ps
查看参数使用方法和功能 :
-A :所有的进程均显示出来,与 -e 具有同样的效用
-a : 显示当前终端机(就是我们连接远程云服务器的这台电脑)开启运行的所有进程,包括其他用户的进程(TTY :进程启动时的终端设备)
-u :显示属于该用户的程序进程的信息,也可使用用户名称来指定
x :单独使用效果和-A相同,和-a联合使用可以列出一些更加详细的信息,比如开启这个进程的command
- au(x) 的输出格式 为:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
==============================
简单翻译上面的字段:
- USER :启动这些进程的用户
- PID:进程的进程ID
- %CPU :进程占用的CPU百分比
- %MEM :占用内存的百分比
- VSZ :该进程使用的虚拟內存量(KB)
- RSS :该进程占用的固定內存量(KB)(驻留中页的数量)
- TTY :进程启动时的终端设备
- STAT :进程的状态
- START :该进程被触发启动时间
- TIME :运行进程需要的累计CPU时间
- COMMAND:启动的程序名称
还有一些其他的字段:
- UID:启动这些进程的用户
- PID:进程的进程ID
- PPID:父进程的进程号(如果该进程是由另一个进程启动的)
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:启动的程序名称
ps -aux :将所有的进程信息全部打印
| :在Linux中这个符号叫做管道符,管道符左边命令的输出就会作为管道符右边命令的输入使用语法为 “命令A |命令 B”
grep:使用语法 “grep 被查找的字符串 文件名”
ps -aux | grep 进程名称/进程包含的字符串
使用这样一条组合命令,可以先将所有进程信息查询出来(ps -aux),然后将查询出来的进程信息作为grep查询的文本( | ),grep将会筛选出符合我们指定的字符串的进程的信息
比如查找MySQL相关进程就可以使用:ps -aux | grep mysql
查找Java相关进程就可以使用:ps -aux | grep java
对于我们来说,我们只要会使用ps -xxx(参数aux可选) | grep 想要过滤出来查看信息的进程名称
来查看想要查看的进程的信息即可
常用命令ps -ef
,用于查看父进程的信息,除了这个命令我们也可以使用pstree -参数选项
来查看父进程,使用树状结构查看效果更好一些(即使用进程树查看父进程的效果更好,所以推荐使用进程树)
pstree -pu #进程树,效果更好,相比于ps -ef,我们更应该优先使用这个命令
- p:显示父ID
- u:显示用户组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i3Flq0zc-1652546961475)(lunix.assets/image-20211017115108645.png)]
kill -9 进程的ID
,注意:-9这个参数起到强制结束进程的作用对于我们Java开发人员来说,Linux更偏向于常规的使用即可
Linux中一切皆文件,所以我们需要掌握文件的读、写和执行操作;又因为Linux是一个多用户的OS,所以我们还需要掌握文件的权限设置;即掌握文件的读、写、执行和权限控制
权限就衍生出来用户+用户组的概念,所以为了学习权限管理,我们学习了用户管理和用户组管理
除此之外,我们还需要会使用Linux这个OS,所以我们学习了Linux的磁盘管理和进程管理
小结上面的内容,就是我们需要掌握的基本Linux操作为:
命令小结
1.进程查看:我们只要会使用 ps -参数(aux任选) | grep 进程名称 来筛选出指定的进程信息进行查看即可
对于父进程的信息查看,我们更加推荐使用树结构进行查看,即使用命令 pstree -pu 来查看信息
2.结束进程:我们只要会使用 kill -9 进程ID 来强制结束某一个进程即可
在正常使用情况下我们不会去结束服务器本来就运行者的某一个进程,我们一般只会结束自己开的一些进程,
比如Java程序进程等
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。
启动之后一只存在、常驻内存的进程,一般被称作“服务”(service)。
1) 基本语法
systemctl start | stop | restart | status 服务名
2) 经验技巧
查看服务的方法:/usr/lib/systemd/system
[root@hadoop100 system]# pwd
/usr/lib/systemd/system
[root@hadoop100 init.d]# ls -al
-rw-r--r--. 1 root root 275 4 月 27 2018 abrt-ccpp.service
-rw-r--r--. 1 root root 380 4 月 27 2018 abrtd.service
-rw-r--r--. 1 root root 361 4 月 27 2018 abrt-oops.service
-rw-r--r--. 1 root root 266 4 月 27 2018 abrt-pstoreoops.service
-rw-r--r--. 1 root root 262 4 月 27 2018 abrt-vmcore.service
-rw-r--r--. 1 root root 311 4 月 27 2018 abrt-xorg.service
-rw-r--r--. 1 root root 751 4 月 11 2018 accounts-daemon.service
-rw-r--r--. 1 root root 527 3 月 25 2017 alsa-restore.service
-rw-r--r--. 1 root root 486 3 月 25 2017 alsa-state.service
3)案例实操
(1)查看防火墙服务的状态
[root@hadoop100 桌面]# systemctl status firewalld
(2)停止防火墙服务
[root@hadoop100 桌面]# systemctl stop firewalld
(3)启动防火墙服务
[root@hadoop100 桌面]# systemctl start firewalld
(4)重启防火墙服务
[root@hadoop100 桌面]# systemctl restart firewalld
1)基本语法
systemctl list-unit-files (功能描述:查看服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)
2)案例实操
(1)开启/关闭 iptables(防火墙)服务的自动启动
[root@hadoop100 桌面]# systemctl enable firewalld.service
[root@hadoop100 桌面]# systemctl disable firewalld.service
1)Linux 运行级别[CentOS 6],如图所示
2)CentOS7 的运行级别简化为:
multi-user.target 等价于原运行级别 3(多用户有网,无图形界面)
graphical.target 等价于原运行级别 5(多用户有网,有图形界面)
3) 查看当前运行级别:
systemctl get-default
4)修改当前运行级别
systemctl set-default TARGET.target (这里 TARGET 取 multi-user 或者 graphical)
1) 临时关闭防火墙
(1)查看防火墙状态
[root@hadoop100 桌面]# systemctl status firewalld
(2)临时关闭防火墙
[root@hadoop100 桌面]# systemctl stop firewalld
2)开机启动时关闭防火墙
(1)查看防火墙开机启动状态
[root@hadoop100 桌面]# systemctl enable firewalld.service
(2)设置开机时关闭防火墙
[root@hadoop100 桌面]# systemctl disable firewalld.service
在 linux 领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
1)基本语法
(1)sync (功能描述:将数据由内存同步到硬盘中)
(2)halt (功能描述:停机,关闭系统,但不断电)
(3)poweroff (功能描述:关机,断电)
(3)reboot (功能描述:就是重启,等同于 shutdown -r now)
(4)shutdown [选项] 时间
2) 经验技巧
Linux 系统中为了提高磁盘的读写效率,对磁盘采取了 “预读迟写”操作方式。当用户保存文件时,Linux 核心并不一定立即将保存数据写入物理磁盘中,而是将数据保存在缓冲区中,等缓冲区满时再写入磁盘,这种方式可以极大的提高磁盘写入数据的效率。但是,也带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导致数据丢失。使用 sync 指令可以立即将缓冲区的数据写入磁盘。
3)案例实操
(1)将数据由内存同步到硬盘中
[root@hadoop100 桌面]#sync
(2)重启
[root@hadoop100 桌面]# reboot
(3)停机(不断电)
[root@hadoop100 桌面]#halt
(4)计算机将在 1 分钟后关机,并且会显示在登录用户的当前屏幕中
[root@hadoop100 桌面]#shutdown -h 1 ‘This server will shutdown after 1 mins’
(5)立马关机(等同于 poweroff)
[root@hadoop100 桌面]# shutdown -h now
(6)系统立马重启(等同于 reboot)
[root@hadoop100 桌面]# shutdown -r now
1.检测当前系统是否存在Java环境:Java -version
#输出这个提示信息表示本地没有Java环境-bash: java: command not found
#如果有的话就需要卸载原来的Java环境,卸载命令:
- rpm -qa|grep jdk #查看本地安装的Java信息
- rpm -e --nodeps jdk程序名称 #卸载该Java环境
2.安装新的Java环境
命令:rpm -ivh rpm包名称
这个的话如果里面有jdk的话需要删除,因为这个jdk后期会出现问题
卸载演示
安装成功之后需要配置环境变量,这个和我们的Windows是一样的,在Windows中我们是在系统变量中进行的配置,在Linux中我们需要去配置文件中配置
经过前面的基本命令的学习,我们可以发现Linux OS的系统配置都在etc文件夹中,所以我们的Java的环境变量的配置也要去这个文件夹中进行配置
我们需要去/etc/profile
中去配置Linux OS的环境变量,Linux所有环境变量的配置都在这个文件中进行配置
验证是否成功
java -version
或者
java
javac
首先我们创建一个spring boot项目:book
测试这个项目是否搭建成功
注意:我们使用的是8081端口
将项目打成jar包
测试jar包是否能够正常使用
这个时候我们不能直接就去运行我们的jar包,因为远程云服务器的端口还没打开
我们可以先看看服务器的防火墙打开了哪些端口,命令为:firewall-cmd --list-ports
打开远程服务器上的端口我们需要使用命令设置防火墙开启该端口,命令:firewall-cmd --zone=public --add-port=端口号/tcp --permanent
,参数permanent表示永久开启这个端口,不加这个参数下次重启服务器的时候这个端口就又会被关闭
(这里呢我建议直接去宝塔面板打开,记得要去阿里云上面去配置一下子,不然登不上去)
Linux中防火墙规则更新之后需要重新为防火墙加载规则,命令:firewall-cmd --reload
重新加载防火墙规则之后再次查看防火墙打开的端口
注意:阿里云服务器除了需要在防火墙这个设置端口开放之外,还需要去阿里云控制面板中设置安全组,安全组的设置已经在第一篇Linux博客中讲过了,这里就不赘述了
运行jar包(如果是想以后台的方式执行的就可以使用nohop的方式执行)
本地访问远程服务器上的springboot项目
测试成功!
停止项目运行命令:CTRL+Z
上面的步骤就是一个网站发布的完整流程,以后我们开发的Javaweb项目、springboot项目和spring cloud项目都可以这样发布到远程服务器上运行
Linux服务器的防火墙关闭指定端口,命令:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
,参数permanent表示永久关闭这个端口,不加这个参数下次重启服务器的时候这个端口就又会被打开
什么是Linux中的rpm
- rpm是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来
的软件包管理
- RPM里面都包含可执行的二进制程序,这个程序和Windows的软件包中的.exe文件类似是可执行的;RPM包中
还包括程序运行时所需要的文件,这也和Windows的软件包类似,Windows的程序的运行,除了.exe文件以外,
也有其它的文件
- 一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是
软件包的依赖关系;依赖关系并不是Linux特有的,Windows操作系统中也是同样存在的;比如我们在Windows
系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9
命令小结
1.安装Java环境
1.检测当前系统是否存在Java环境:Java -version
#输出这个提示信息表示本地没有Java环境-bash: java: command not found
#如果有的话就需要卸载原来的Java环境,卸载命令:
- rpm -qa|grep jdk #查看本地安装的Java信息,即获得jdk程序名称
- rpm -e --nodeps jdk程序名称 #卸载该Java环境
2.安装新的Java环境
命令:rpm -ivh rpm包名称
2.发布一个Java项目,主要配置防火墙
- 我们可以先看看服务器的防火墙打开了哪些端口,命令为:firewall-cmd --list-ports
- 打开远程服务器上的端口我们需要使用命令设置防火墙开启该端口,
命令:firewall-cmd --zone=public --add-port=端口号/tcp --permanent,
参数permanent表示永久开启这个端口,不加这个参数下次重启服务器的时候这个端口就又会被关闭
- Linux中防火墙规则更新之后需要重新为防火墙加载规则,命令:firewall-cmd --reload
- Linux服务器的防火墙关闭指定端口,命令:
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent,
参数permanent表示永久关闭这个端口,不加这个参数下次重启服务器的时候这个端口就又会被打开
官网下载tomcat,apache-tomcat-9.0.39.tar.gz
解压这个文件,命令:tar zxvf .tar.gz压缩包名称
启动tomcat测试,和Windows中
和在Windows中一样,要启动tomcat,我们需要去bin文件夹中找startup,在Windows中后缀为.bat
,在Linux中后缀为.sh
进入bin文件夹,运行startup.sh
Linux中运行程序的命令为:./程序名称.后缀
,所以开启tomcat的命令为./startup.sh
注意开启防火墙的8080端口,并设置阿里云安全组,这两步做完之后我们就可以在本地访问远程服务器上运行在tomcat上的web程序了
防火墙常用命令:
# 查看firewall服务状态
systemctl status firewalld
# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone #作用域,我们设置的public,这样所有人都可以访问
--add-port=80/tcp #添加端口,格式为:端口/通讯协议,即要开放的端口
--permanent #永久生效,没有此参数重启后失效
下载宝塔面板
直接在宝塔面板上下载,然后再阿里云的服务器上开启8080端口即可
我们可以自己在阿里云上买一个域名,再将域名进行备案,并将买的域名和我们的公网IP进行解析映射,那么我们访问远程服务器的时候就可以使用我们自己买的域名了,而不用再使用IP地址,使用域名更便于我们自己记忆和使用
如果我们运行的项目是80(HTTP)/443(HTTPS)端口,我们就可以直接使用域名进行访问,如果我们运行的项目不是80或443,比如就是8080或9000这些端口,我们要么使用域名+端口号进行访问,要么使用Apache/Nginx做一下反向代理即可,使用反向代理只需要配置一下文件,很简单就能实现,推荐使用反向代理,如果想要上线自己的网站/博客,推荐使用反向代理
解压缩安装命令:tar zxvf .tar.gz压缩包名称
Linux中运行程序的命令为:./程序名称.后缀
开启端口供外部访问的固定5步
1.firewall-cmd --list-ports # 查看防火墙已经开启的端口是否包含我们想要开启的端口
2.firewall-cmd --zone=public --add-port=想要打开的端口号/tcp --permanent #打开端口
3.firewall-cmd --reload #重新加载防火墙规则,使得我们刚刚配置的端口打开规则生效
4.firewall-cmd --list-ports #再次查看,检查系统是否将我们指定的端口开启
5.设置阿里云安全组
yum安装是在线安装,所以使用yum安装的时候必须是在联网的情况下进行
注意:以下操作都是在CentOS 7中进行的,不同版本的CentOS的命令有所区别
安装我们的准备环境
yum -y install 包名称 #yum install为我们的yum安装命令,-y参数表示安装的时候所有的提示都是yes
#首先我们需要安装gcc环境
yum -y install gcc
#然后需要安装c++环境
yum -y install gcc-c++
#上面两条命令可以放在一行中执行
yum -y install gcc gcc-c++
以下命令参考docker官网:docker官网安装参考手册
卸载/清除以前安装的docker
当然我们现在就是root用户,所以前面的sudo可以不要
后面的步骤也都是跟着官方doc做
注意:上面的第二个圈圈起来的是叫我们安装镜像,但是docker提供的镜像是国外的,我们使用起来会很慢,推荐使用阿里云镜像:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装Docker CE
yum -y install docker-ce docker-ce-clil containerd.io
启动docker
systemctl start docker
测试
docker version #查看docker的客户端和服务端的版本
docker run hello-world
#运行docker的hello world程序,本地仓库没有这个镜像的时候就会去我们刚刚设置的阿里云仓库中
拉取hello world镜像
docker images #查看本地docker仓库有哪些镜像
使用yum安装的格式:yum install -y yum源
建议可以使用yum安装的就使用yum安装,yum安装是讲解的3种安装中最快的最好用的安装方式