跳到主要内容Linux 基本使用与 Java 程序部署指南 | 极客日志Javajava
Linux 基本使用与 Java 程序部署指南
Linux 环境搭建、常用命令操作、JDK 与 MySQL 配置及 Web 项目打包部署流程。涵盖云服务器选购、终端连接、文件管理、进程查看及 Spring Boot 多环境配置等关键步骤。
性能调优7 浏览 Linux 环境搭建
环境搭建方式
主要有四种:
- 直接安装在物理机上。但是 Linux 桌面使用起来非常不友好。所以不建议。
- 使用虚拟机软件,将 Linux 搭建在虚拟机上。但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug,会导致环境上出现各种莫名其妙的问题,比较折腾。
- 使用 WSL(Windows Subsystem for Linux)。这个是 Windows 近几年开发的新功能,在 Windows 系统内集成了一个 Linux。但是目前这个技术还不够成熟。
- 使用云服务器,可以直接在腾讯云、阿里云或华为云等服务器厂商处直接购买一个云服务器。
学生认证通常可申请免费云服务器资源,大家自行搜索即可。
我的操作系统选择是 Ubuntu 22.04 LTS。后续的内容也是使用 Ubuntu 演示。
使用云服务器
不同厂商做的页面不同,我们以阿里云为例:
购买服务器之后点击控制台进入自己的服务器界面。

第一次使用服务器先重置密码:

记住自己的公网 IP:

在这个环节我们最重要的是得到三个信息:
- 服务器的外网 IP
- 服务器的管理员账户(固定为 root)
- 管理员账户密码(在网站上设置的)
这三个信息是我们登陆到 Linux 上的必要条件
使用终端软件连接到 Linux
有很多软件可以完成远程和主机相互链接的功能,我们使用 Xshell。
下载安装过程不涉及复杂配置,基本上一路 next,所以大家自行下载即可。
首先新建连接:

名称自拟,主机是公网 IP

在登陆提示符这里输入账号密码:

Linux 常用命令
ls
语法:ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
• -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
• -d 将目录象文件一样显示,而不是显示其下的文件。如:ls -d 指定目录
• -k 以 k 字节的形式表示文件的大小。ls -alk 指定文件
• -l 列出文件的详细信息。
• -r 对目录反向排序。
• -t 以时间排序。
• -R 列出所有子目录下的文件。(递归)
pwd
cd
Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
使用 tab 键补全
我们敲的所有的 Linux 命令,都可以使用 tab 键来尝试补全,加快效率。
使用 ctrl + c 重新输入
如果命令或者目录敲错了,可以 ctrl + c 取消当前的命令
touch
语法:touch [选项]… 文件…
功能:touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
cat
语法:cat [选项] [文件]
功能:查看目标文件的内容
mkdir
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 'dirname'的目录
常用选项:
• -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录。
rm
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
• -f 即使文件属性为只读 (即写保护),亦直接删除
• -i 删除前逐一询问确认
• -r 删除目录及其下所有文件
重要注意事项:
千万不要直接运行 rm -rf / , 尤其是在公司的生产服务器上
cp
语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
• -f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
• -i 或 --interactive 覆盖文件之前先询问用户
• -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
• -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
mv
语法:mv [选项] 源文件或目录 目标文件或目录
功能:
- 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
常用选项
• -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
• -i:若目标文件 (destination) 已经存在时,就会询问是否覆盖
tail
语法:tail [必要参数] [选择参数] [文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
• -f 循环读取
• -n<行数> 显示行数
vim
vim 是一个知名的文本编辑器。使用 vim 可以进行文本编辑了。vim 就相当于 Windows 的记事本。只不过功能比记事本强大一些。
- 进入插入模式
vim 打开文件后默认是普通模式。普通模式下键盘的按键表示一些特殊功能的快捷键。(例如按下 j 并不是输入字母'j',而是表示光标往下移动一行)。需要进入插入模式才能进行文本编辑。
使用 i 键可以进入到插入模式。(左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了。
- 保存
在插入模式下不能保存文件,需要先回到 普通模式。按下 Esc 回到普通模式。
在普通模式下输入 :w ,再按下回车,即可保存文件。
- 退出
在插入模式下不能退出,需要先回到 普通模式。
退出时,分以下情况:
① 文件未修改:输入 :q ,再按下回车,即可退出
② 文件修改并保存:使用 :wq 同时执行保存和退出。
③ 文件修改,但不希望保存:使用 :q! 进行强制退出
grep
语法:grep [参数]… [文件]…
功能:用于查找文件中是否包含指定字符串,并显示对应的行.
选项:
• -n<行数> 显示的行数
• -w 全字匹配。要求整个单词都完全相同的结果才能匹配出来,而不仅仅是一个单词的一部分。
• -r 递归查找。可以搜索多级目录下的所有文件。
• --color 高亮查找到的结果
• --include 指定查找某些文件
• --exclude 指定排除某些文件
ps
语法:ps [参数]…
功能:用于查看当前系统上运行的进程
选项:
• a 显示一个终端的所有进程
• u 以用户为主的格式来显示程序状况
• x 显示所有程序,不止是会话中的进程
• e 显示所有进程,包括系统守护进程
• f 显示完整格式输出
netstat
语法:netstat [参数]…
功能:查看系统上的网络状态。
选项:
• -a 显示所有正在或不在侦听的套接字
• -n 显示数字形式地址而不是去解析主机、端口或用户名
• -p 显示套接字所属进程的 PID 和名称
搭建 java 部署环境
apt
apt(Advanced Packaging Tool),Linux 软件包管理工具。用于在 Ubuntu、Debian 和相关 Linux 发行版上安装、更新、删除和管理 deb 软件包。
大多数 apt 命令必须以具有 sudo 权限的用户身份运行
remove 命令将卸载给定的软件包,但可能会留下一些配置文件。如果要删除包含所有配置文件的软件包,请使用 purge 而不是 remove
apt remove 和 apt purge 的区别
• apt remove 删除包的二进制文件,它留下了残留的配置文件.
• apt purge 删除与包相关的所有内容,包括配置文件.
如果弄乱了程序的配置,希望从系统中完全清除它的痕迹再重新开始,可以使用 apt purge
通常使用 apt remove 就足够了。
JDK
apt list | grep "jdk"
sudo apt install openjdk-17-jdk
MYSQL
apt list | grep "mysql-server"
sudo apt install mysql-server
MySQL 安全设置
默认的 MySQL 设置是不安全的,MySQL 安装提供了一个安全脚本,用于解决不太安全的默认选项。
sudo mysql_secure_installation
我们应该需要给 Mysql 设置一个自定义的密码,保证安全:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '***';
部署 web 项目到 Linux
什么是部署
工作中涉及到的'环境'
• 开发环境:开发人员写代码用的机器。
• 测试环境:测试人员测试程序使用的机器。
• 生产环境 (线上环境):最终项目发布时所使用的机器。对稳定性要求很高。
把程序安装到生产环境上,这个过程称为'部署'。也叫'上线'。
一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到。
换句话说,如果程序有 BUG,这个 BUG 也就被千千万万的用户看到了。
部署过程至关重要,属于程序开发中最重要的一环。一旦部署出现问题,极有可能导致严重的事故 (服务器不可用之类的)。
为了防止部署出错,一般公司内部都有一些自动化部署工具 (如 Jenkins 等)。当前我们先使用手工部署的方式来完成部署
环境配置
程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境
数据准备
按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构。
程序配置文件修改
实际工作中,开发环境,测试环境以及生产环境的配置都是不一样的
比如 mysql 的用户名和密码
我们可以针对不同的环境,设置不同的配置
多平台文件配置
针对不同平台创建不同的配置文件,要求名字为 application-XXX.yml 或者 application-XXX.properties
以下以 application-XXX.yml 为例:
spring:
profiles:
active: @profile.name@
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: [email protected]
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
logging:
file:
name: spring-blog.log
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.name>dev</profile.name>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profile.name>prod</profile.name>
</properties>
</profile>
</profiles>
此时我们只需要在 mvn 选项中选择就可以决定使用哪个配置文件了。
构建项目并打包
- 如果 Test 代码中有与环境配置相关的操作 (比如数据库相关的操作), 打包会失败,点击下图①处的图标,可以跳过测试
- 点击 clean->package
上传 jar 包运行程序
直接拖动打包好的 jar 包到 Xshell 窗口即可:
咱们通过访问自己的服务器公网 IP 来检验自己的程序是否可以正常运行:
杀死进程
先找到所有正在运行的含 java 的进程,使用进程号杀死进程。
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online