【JavaEE】Linux基本使⽤和程序部署
目录
- 一、LInux环境搭建
- 二、LInux常见命令
- 2.1 ls 查看目录
- 2.2 pwd 显示当前所在目录
- 2.3 mkdir 创建目录
- 2.4 cd 进入目录
- 2.5 touch 创建文件
- 2.6 rm 删除目录
- 2.7 rz 上传文件
- 2.8 sz 下载文件
- 2.9 查看内容
- 2.9.1 cat 查看文件全部内容
- 2.9.2 more 按页查内容
- 2.9.3 less 查看
- 2.9.4 head 查看前 n 行
- 2.9.5 tail查看末尾 n 行
- 2.10 vim 编辑文件内容
- 2.11 grep 查找指定字符串
- 2.12 ps 查看当前系统的进程
- 2.13 netstat 查看系统上的⽹络状态
- 2.14 mv 复制文件
- 三、Linux ⽬录结构
- 四、搭建 java 环境
- 4.1 apt
- 4.2 安装JDK
- 4.3 安装MySQL
- 五、手工部署 Web 项目到 Linux
- 5.1 多平台文件配置
- 5.2 项目打包
- 5.3 上传 jar 包并运行
- 5.4 杀掉进程

一、LInux环境搭建
可以装LInux系统,可以使用虚拟机,还可以使用云服务器。
这里使用云服务器搭建。
- 直接在网上弄个云服务器,选操作系统/镜像选择 Ubuntu 的
- 记得自己的ip地址,用户名,密码
- 使用终端软件链接LInux,我用xshell
XShell 下的复制粘贴:
- 复制: ctrl + insert (有些需要配合 fn 来按)
- 粘贴: shift + insert
二、LInux常见命令
2.1 ls 查看目录
语法: ls [选项] [⽬录或⽂件]
功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。
常⽤选项:
- -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。
- -d 将⽬录象⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls ‒d 指定⽬录
- -k 以 k 字节的形式表⽰⽂件的⼤⼩。ls ‒alk 指定⽂件
- -l 列出⽂件的详细信息。
- -r 对⽬录反向排序。
- -t 以时间排序。
- -R 列出所有⼦⽬录下的⽂件。(递归)
2.2 pwd 显示当前所在目录
语法: pwd
功能:显⽰⽤⼾当前所在的⽬录
2.3 mkdir 创建目录
语法:mkdir [选项] dirname...
功能:在当前⽬录下创建⼀个名为 “dirname”的⽬录
常⽤选项:
- -p, --parents 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多级⽬录
2.4 cd 进入目录
Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件。
语法: cd ⽬录名
功能: 改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下。
cd ..
回到上一级目录
cd ~
回到最高一级目录
当我们使用要进入一个文件的时候,我们输入首字母按 Tab 键可以自动补齐。例如进入java目录,我们输入cd j
按下 Tab自动补齐为 cd java
2.5 touch 创建文件
语法: touch [选项]... ⽂件...
功能: touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者新建⼀个不存在的⽂件。
2.6 rm 删除目录
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除⽂件或⽬录
常⽤选项:
-f
即使⽂件属性为只读(即写保护),亦直接删除-i
删除前逐⼀询问确认-r
删除⽬录及其下所有⽂件
2.7 rz 上传文件
语法: rz
功能:上传文件
2.8 sz 下载文件
语法:sz 文件名
功能:下载云服务器上的文件到本地
2.9 查看内容
2.9.1 cat 查看文件全部内容
语法:cat [选项] [⽂件]
功能: 查看⽬标⽂件的全部内容
常⽤选项:
- -n 对输出的所有⾏编号
2.9.2 more 按页查内容
语法:more [选项] [⽂件]
功能: 按百分比查看⽬标⽂件的内容,Ctrl + c退出
2.9.3 less 查看
语法:less [选项] [⽂件]
功能: 按百分比查看⽬标⽂件的内容,:q 退出
2.9.4 head 查看前 n 行
语法:head [选项] [⽂件]
功能: 按百分比查看⽬标⽂件的内容,Ctrl+c退出
2.9.5 tail查看末尾 n 行
语法:tail [选项] [⽂件]
功能: 按百分比查看⽬标⽂件的内容,Ctrl+c退出
2.10 vim 编辑文件内容
vim 是⼀个知名的⽂本编辑器。使⽤ vim 可以进⾏⽂本编辑了。
vim 就相当于 Windows 的记事本。只不过功能⽐记事本强⼤⼀些。
- 创建⽂件/打开⽂件
1.1. 语法:vim [⽂件名]
- i 进⼊插⼊模式
vim 打开⽂件后默认是普通模式。普通模式下键盘的按键表⽰⼀些特殊功能的快捷键。(例如按下 j 并不是输⼊字⺟ “j” , ⽽是表⽰光标往下移动⼀⾏)。需要按 i 进⼊插⼊模式才能进⾏⽂本编辑。(左下⻆提⽰ --INSERT-- ) 然后就可以像记事本⼀样正常编辑了。 - 保存
在插⼊模式下不能保存⽂件, 需要先回到 普通模式。按下 Esc 回到普通模式。在普通模式下输⼊ :w , 再按下回⻋,即可保存⽂件。 - 退出
在插⼊模式下不能退出,需要先回到 普通模式。
退出时,分以下情况:
①⽂件未修改:输⼊ :q ,再按下回⻋,即可退出
②⽂件修改并保存: 使⽤ :wq 同时执⾏保存和退出.
③⽂件修改, 但不希望保存: 使⽤ :wq! 进⾏强制退出
操作命令(可组合使用):
- :w,保存
- :q,退出
- :q!,强制退出
2.11 grep 查找指定字符串
语法:grep [参数]... [⽂件]...
功能:⽤于查找⽂件中是否包含指定字符串, 并显⽰对应的⾏。
选项:
- -n<⾏数> 显⽰的⾏数
- -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, ⽽不仅仅是⼀个单词的⼀部分.
- -r 递归查找. 可以搜索多级⽬录下的所有⽂件.
- –color ⾼亮查找到的结果
- –include 指定查找某些⽂件
- –exclude 指定排除某些⽂件
2.12 ps 查看当前系统的进程
语法:ps [参数]...
功能:⽤于查看当前系统上运⾏的进程
选项:
- a 显⽰⼀个终端的所有进程
- u 以⽤⼾为主的格式来显⽰程序状况
- x 显⽰所有程序,不⽌是会话中的进程
- e 显⽰所有进程,包括系统守护进程
- f 显⽰完整格式输出
ps aux # 显⽰系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"
2.13 netstat 查看系统上的⽹络状态
语法:netstat [参数]...
功能:查看系统上的⽹络状态。
选项:
- -a 显⽰所有正在或不在侦听的套接字
- -n 显⽰数字形式地址⽽不是去解析主机、端⼝或⽤⼾名
- -p 显⽰套接字所属进程的PID和名称
netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端⼝号"
2.14 mv 复制文件
语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能:
- 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移
⾄⼀个新的⽬录中。 - 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬
录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。 - 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源
⽂件均移⾄⽬标⽬录中。
常⽤选项
- -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
- -i :若⽬标⽂件已经存在时,就会询问是否覆盖!
三、Linux ⽬录结构
Linux 是⼀个树形⽬录结构。
⼏个特殊的⽬录:
/
称为根⽬录.
称为当前⽬录..
称为当前⽬录的上级⽬录
绝对路径 vs 相对路径
- 形如: /usr/share/tomcat/logs/ 以
根⽬录
开头的,称为绝对路径 - 形如: ./logs 以
.
或者..
开头的,称为相对路径 - 使⽤ tab 键补全: 我们敲的所有的 Linux 命令,都可以使⽤ tab 键来尝试补全,加快效率
- 使⽤ ctrl + c 重新输⼊:如果命令或者⽬录敲错了,可以 ctrl + c 取消当前的命令,还有常见结束命令
:q
和:q!
和exit
四、搭建 java 环境
4.1 apt
apt 就相当于应用商店,只不过是在Ubuntu、Debian和相关Linux发⾏版上安装、更新、删除和管理deb软件包。
⼤多数apt命令必须以具有sudo权限的⽤⼾⾝份运⾏。
常用命令:
-
列出所有软件包
apt list
,可以使用grep筛选apt list | grep " "
-
更新软件包数据库
sudo apt-get update
-
安装软件包
sudo apt install package_name
-
移除软件包
sudo apt remove package_name
remove命令将卸载给定的软件包,但可能会留下⼀些配置⽂件。如果要删除包含所有配置⽂件的软件包,请使⽤purge⽽不是remove
4.2 安装JDK
#查找jdk包
apt list |grep "jdk"
#安装jdk
sudo apt install openjdk-17-jdk
使⽤ java -version 验证是否安装成功。
如果提⽰ “java 命令找不到” 则说明安装失败。
如果安装出错:
卸载OpenJDK
检查安装的是哪个OpenJDK
# dpkg --list | grep -i jdk
移除 openjdk包:
# apt-get purge openjdk*
卸载 OpenJDK 相关包:
# apt-get purge icedtea-* openjdk-*
检查所有 OpenJDK包是否都已卸载完毕:
# dpkg --list | grep -i jdk
4.3 安装MySQL
- 使⽤apt安装MySQL
#查找安装包
apt list |grep "mysql-server"
#安装mysql
sudo apt install mysql-server
- 查看MySQL状态
sudo systemctl status mysql
- MySQL 安装安全设置
默认的 MySQL 设置是不安全的, MySQL 安装提供了⼀个安全脚本, ⽤于解决不太安全的默认选项.
运⾏以下命令:sudo mysql_secure_installation
按照下面输入:
- 设置密码
连接mysql服务器sudo mysql
使⽤alter user 命令修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ' ';
如果出错了:
卸载MYSQL
#停⽌mysql
sudo systemctl stop mysql
#卸载mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
#删除 MySQL 配置⽂件和数据
sudo rm -rf /etc/mysql /var/lib/mysql
#清理残留⽂件和⽬录
sudo apt-get autoremove
sudo apt-get autoclean
#验证卸载结果
mysql --version
五、手工部署 Web 项目到 Linux
我们做项目一般有三个环境:
- 开发环境 dev
- 测试环境 test
- 生产环境 prod
5.1 多平台文件配置
在开发时候,我们开发环境与生产环境配置一般是不一样的。所以我们就要在配置文件中针对不同环境进行配置。
针对不同平台创建不同的配置⽂件,要求名字为application-XXX.yml或者application-XXX.properties。
要想让不同的配置文件生效,就在主配置文件中配置:想用什么就写配置文件名字 - 后面的名字 dev 、 prod
spring:profiles:active: prod
上面的方式也容易出错,我们还可以试用版Maven:
从Maven中读取环境配置变量:
<profiles><profile><id>dev</id><properties><profile.name>dev</profile.name></properties></profile><profile><id>prod</id><activation><activeByDefault>true</activeByDefault></activation><properties><profile.name>prod</profile.name></properties></profile>
</profiles>
修改 application.yml :
spring:profiles:active: @profile.name@
使用上面方法后就可以在Maven中勾选了:
5.2 项目打包
在本地使⽤maven进⾏打包:
- 如果Test代码中有与环境配置相关的操作(⽐如数据库相关的操作),打包会失败,点击下图图标1,可以跳过测试
- 点击clean->package
之后就可以看见 jar 包
5.3 上传 jar 包并运行
上传 jar 包:
直接拖动打好的jar包到xshell窗⼝即可完成⽂件的上传。
也可以通过命令:
- 上传⽂件:
sz filename
- 下载⽂件:
rz
- 安装lrzsz:
apt-get install lrzsz
运行程序:
nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
跟踪日志:tail -f filename
语法说明:
- nohup : 后台运⾏程序。⽤于在系统后台不挂断地运⾏命令,退出终端不会影响程序的运⾏。
- 语法格式:
nohup Command [ Arg … ] [ & ]
参数说明: -
- Command:要执⾏的命令。
-
- Arg:⼀些参数,可以指定输出⽂件
-
- &:让命令在后台执⾏,终端退出后命令仍旧执⾏
开放端⼝号
如果外⽹需要访问该服务,需要先服务器防⽕墙开放对应的端⼝号。
下面是腾讯云的操作:官方文件
- 进入防火墙页面:
- 创建模版:
5.4 杀掉进程
如果我们需要重启服务,或者重新部署等,都需要先停⽌之前的服务。
-
查看当前服务的进程
ps -ef|grep java
-
杀掉进程
kill -9 PID