
🎬 那我掉的头发算什么 :个人主页
🔥 个人专栏 : 《javaSE》《数据结构》《数据库》《javaEE》
⛺️待到苦尽甘来日

文章目录
Linux环境搭建
环境搭建方式
主要有四种:
- 直接安装在物理机上。但是 Linux 桌面使用起来非常不友好。所以不建议。【不推荐】。
- 使用虚拟机软件,将 Linux 搭建在虚拟机上。但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug,会导致环境上出现各种莫名其妙的问题,比较折腾。【非常不推荐】
- 使用 WSL(Windows Subsystem for Linux)。这个是 Windows 近几年开发的新功能,在 Windows 系统内集成了一个 Linux。但是目前这个技术还不够成熟。【暂时不推荐】。
- 使用云服务器,可以直接在 腾讯云,阿里云或华为云 等服务器厂商处直接购买一个云服务器。【推荐】
购买的时候作为在校学生,我们是可以白嫖服务器的使用权的,大家自行在网上搜索就好了!
我的操作系统选择是 Ubuntu 22.04 LTS。后续的内容也是使用Ubuntu演示。
使用云服务器
不同厂商做的页面不同,我们以阿里云为例:
购买服务器之后点击控制台进入自己的服务器界面

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

记住自己的公网IP:

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

名称自拟,主机是公网IP

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

最终出现这样的界面就算配置成功了:

Linux常用命令
ls
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
• -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
• -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls ‒d 指定目录
• -k 以 k 字节的形式表示文件的大小。ls ‒alk 指定文件
• -l 列出文件的详细信息。
• -r 对目录反向排序。
• -t 以时间排序。
• -R 列出所有子目录下的文件。(递归)


pwd
显示用户当前所在的目录:
跟目录是root:

cd
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下.
java
# 返回上级⽬录
cd ..
# 进⼊⽤⼾家⽬录
cd ~
# 返回最近访问⽬录
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 的记事本。只不过功能比记事本强大一些。

1)创建文件/打开文件
vim + 文件名
- 进入插入模式
vim 打开文件后默认是普通模式。普通模式下键盘的按键表示一些特殊功能的快捷键。(例如按下 j 并不
是输入字母 "j",而是表示光标往下移动一行)。需要进入插入模式才能进行文本编辑。
使用 i 键可以进入到插入模式。(左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了。
- 保存
在插入模式下不能保存文件,需要先回到 普通模式 。按下 Esc 回到普通模式。
在普通模式下输入 :w ,再按下回车,即可保存文件。
- 退出
在插入模式下不能退出,需要先回到 普通模式。
退出时,分以下情况:
① 文件未修改: 输入 :q ,再按下回车,即可退出
② 文件修改并保存: 使用 :wq 同时执行保存和退出。
③ 文件修改,但不希望保存: 使用 :wq! 进行强制退出
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
1.更新软件包

2.安装openjdk
java
#查找jdk包
apt list |grep "jdk"
#安装jdk
sudo apt install openjdk-17-jdk
看准了,别下载错了:

验证:

卸载:

MYSQL
安装MYSQL
java
#查找安装包
apt list |grep "mysql-server"
#安装mysql
sudo apt install mysql-server


MySQL安全设置
默认的 MySQL 设置是不安全的, MySQL 安装提供了⼀个安全脚本, ⽤于解决不太安全的默认选项.
java
sudo mysql_secure_installation
密码强度选择2,其他全是Y。
然后就可以直接连接数据库了:

我们应该需要给Mysql设置一个自定义的密码,保证安全:
java
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为例:

java
spring:
profiles:
active: @profile.name@
java
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: BITE@yyds.666
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
file:
name: spring-blog.log
java
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: hjk050723
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
file:
name: spring-blog.log
java
<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选项中选择就可以决定使用哪个配置文件了。
构建项目并打包
在本地使用maven进行打包
- 如果Test代码中有与环境配置相关的操作(比如数据库相关的操作), 打包会失败, 点击下图①处的图标, 可以跳过测试
- 点击clean->package

上传jar包运行程序
直接拖动打包好的jar包到Xshell窗口即可:

咱们通过访问自己的服务器公网IP来检验自己的程序是否可以正常运行:

杀死进程
先找到所有正在运行的含java的进程,使用进程号杀死进程。

以上就是本篇博客全部内容!