🔥个人主页: 中草药
🔥专栏:【Java】登神长阶 史诗般的Java成神之路
一、Linux
简介
Linux 是一种开源的类 Unix 操作系统,广泛应用于服务器、移动设备、嵌入式系统等众多领域。它以稳定性、安全性和灵活性著称,拥有庞大的开源社区支持,这使得 Linux 不断发展并适应各种不同的需求。
Linux是一个树形目录结构
(一)文件与目录操作
ls(list)命令:用于列出目录中的文件和子目录
-a 列出目录下的所有文件,包括以.开头的隐含文件
-d 将目录像文件一样展示
-k 以k字节的形式表示文件的大小。ls -alk 指定文件
-l 列出文件的详细信息
-r 对目录反向排序
-t 以时间排序
-R 列出所有子目录下的文件
pwd(print working directory)命令:显示用户当前目录
cd(change directory)命令:用于切换当前工作目录。
cd..
则可以返回上一级目录。
cd - 访问最近访问的目录
mkdir(make directory)命令:用于创建新的目录。如mkdir new_folder
会在当前目录下创建名为 “new_folder” 的新目录。
rmdir(remove directory)命令:用于删除空目录。如果目录非空,则需要先删除目录中的文件才能使用该命令删除目录。
rm(remove)命令:用于删除文件或目录。使用rm -r
可以递归删除目录及其内容,要特别小心使用,因为删除的文件通常难以恢复。例如,rm -r old_folder
会删除 “old_folder” 目录及其内部所有文件和子目录。
cp(copy)命令:用于复制文件或目录。
-f 强行复制文件,无论目的文件或目录是否已经存在
-i 覆盖文件之前先询问用户
-r cp -r dir1 dir2
会递归复制 “dir1” 目录及其内容到 “dir2” 目录
mv(move)命令:既可以用于移动文件或目录,也可以用于重命名文件或目录。例如,mv file1 new_file1
会将 “file1” 重命名为 “new_file1”;mv file1 /home/user/dir1
会将 “file1” 移动到 “/home/user/dir1” 目录下。
tail(tail)命令:用于显示指定文件末尾的内容,不指定文件时,作为输入信息进行处理,常用于查看日志文件。
sz(Send Zmodem)命令:上传文件,于将文件从服务器端(本地 Linux 系统)发送到客户端
rz(Receive Zmodem)命令:下载文件,将文件从客户端上传到服务器端
(二)文件查看与编辑
cat(concatenate)命令:用于查看文件内容并将其输出到终端。例如,cat file.txt
会在屏幕上显示 “file.txt” 的内容。
less 命令:也是用于查看文件内容,但它提供了更多的交互功能,如可以上下滚动查看文件、搜索特定内容等。例如,less file.txt
进入查看模式,按 “q” 键退出。
vi/vim 编辑器:
普通模式(刚打开文件时默认模式,也叫命令模式)
插入模式(按 “i” 进入插入模式可进行文本输入)
末行模式(按 " : " 进入末行模式可进行保存、退出等操作)
退出:先回到普通模式,退出分以下情况
1、文件未修改时,输入 :q 执行退出
2、文件修改时,输入 :wq 同时执行保存退出
3、文件修改,但不保存,使用 :wq! 进行强制退出
grep 用于查找文件中是否包含指定字符串,并且显示对应的行
-n 显示的行数
-w 全字匹配
-r 递归查找
--color 高亮查找某些文件
--exclude 指定
ps 用于查看当前系统上运行的进程
a 显示一个终端的所有进程
u 以用户为主的格式来显示程序状况
(三)系统信息查看
uname(Unix name)命令:用于获取系统的基本信息。uname -a
可以显示系统的内核名称、主机名、内核版本等详细信息。
top 命令:实时动态地查看系统中各个进程的资源占用情况,包括 CPU、内存、进程 ID、用户等信息。按 “q” 键退出 top 查看界面。
df(disk free)命令:用于查看磁盘空间使用情况。df -h
会以人类可读的格式(如 KB、MB、GB 等)显示磁盘的总容量、已使用容量、可用容量等信息。
(四)用户与权限管理
useradd 命令:用于添加新用户。例如,useradd new_user
会创建一个名为 “new_user” 的新用户。
passwd 命令:用于设置用户密码。如passwd new_user
会提示输入并设置 “new_user” 的密码。
chmod(change mode)命令:用于改变文件或目录的权限。权限分为读(r - 4)、写(w - 2)、执行(x - 1)三种,通过不同的组合可以设置所有者、所属组和其他用户的权限。例如,chmod 755 file.txt
会给文件所有者设置读、写、执行权限(7 = 4 + 2 + 1),给所属组和其他用户设置读、执行权限(5 = 4 + 1)。
chown(change owner)命令:用于改变文件或目录的所有者。例如,chown user:group file.txt
会将 “file.txt” 的所有者改为 “user”,所属组改为 “group”。
二、搭建 java 部署环境
APT
APT(Advanced Package Tool)是 Debian 及其衍生发行版(如 Ubuntu)中用于软件包管理的工具集。它提供了一种方便、高效的方式来安装、升级、删除和管理软件包,以及处理软件包之间的依赖关系。
APT 常用命令
apt list 列出所有的软件包
apt list | grep "java" 输出所有包的列表,内容比较多,可以使用grep命令过滤输出
sudo apt-get update 更新软件包数据库
sudo su 切换root用户
sudo apt install package_name 安装软件包
sudo apt remove package_name 移除软件包
JDK
ubuntu@VM-24-3-ubuntu:-$ sudo apt-get update #更新软件包
Hit:1 http://mirrors.tencentyun.com/ubuntu jammy InRelease3 Hit:2 http://mirrors.tencentyun.com/ubuntu jammy-updates InRelease4 Hit:3 http://mirrors.tencentyun.com/ubuntu jammy-security InRelease5 Reading package lists... Done
Reading package lists... Done#查找jdk包
apt list |grep "jdk"#安装jdk
sudo apt install openjdk-17-jdkroot@hcss-ecs-0bb1:~# apt list |grep "jdk" #查找jdk
//...
openjdk-17-demo/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04 amd64
openjdk-17-demo/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04 i386
openjdk-17-doc/focal-updates,focal-updates,focal-security,focal-security
17.0.12+7-1ubuntu2~20.04 all
openjdk-17-jdk-headless/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04
amd64
openjdk-17-jdk-headless/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04
i386
openjdk-17-jdk/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04 amd64
openjdk-17-jdk/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04 i386
openjdk-17-jre-headless/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04
amd64
openjdk-17-jre-headless/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04
i386
openjdk-17-jre-zero/focal-updates,focal-security 17.0.12+7-1ubuntu2~20.04 amd64
//...
root@hcss-ecs-0bb1:~# sudo apt install openjdk-17-jdk #输⼊安装命令
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:ca-certificates-java openjdk-17-jdk-headless openjdk-17-jre openjdk-17-jreheadless
Suggested packages:openjdk-17-demo openjdk-17-source visualvm fonts-ipafont-gothic fontsipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:ca-certificates-java openjdk-17-jdk openjdk-17-jdk-headless openjdk-17-jre
openjdk-17-jre-headless
0 upgraded, 5 newly installed, 0 to remove and 183 not upgraded.
Need to get 117 MB of archives.
After this operation, 273 MB of additional disk space will be used
Do you want to continue? [Y/n] Y #输⼊Y继续下⼀步
Get:1 http://repo.huaweicloud.com/ubuntu focal-updates/universe amd64 openjdk-
17-jre-headless amd64 17.0.12+7-1ubuntu2~20.04 [43.7 MB]
Get:2 http://repo.huaweicloud.com/ubuntu focal-updates/main amd64 cacertificates-java all 20190405ubuntu1.1 [12.4 kB] //...
done.
done.
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
root@hcss-ecs-0bb1:~#
检验 java -version 验证是否安装成功
root@hcss-ecs-0bb1:~# java -version #查看jdk版本
openjdk version "17.0.12" 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu220.04, mixed mode,
sharing)
root@hcss-ecs-0bb1:~#
同理 通过相同的方式去安装mysql
部署 Web 项目到 Linux
工作中涉及到的“环境”
开发环境:开发人员写代码用的机器
测试环境:测试人员测试程序使用的机器
生产环境(线上环境):最终项目发布时所使用的机器,对稳定性要求很高
“部署” 通常是指将软件系统、应用程序、服务或相关的技术组件从开发环境或测试环境迁移并安装到生产环境(实际运行环境)的过程。这个过程涉及到多个方面,包括软件的安装、配置、初始化,以及确保其能够在目标环境中正常、稳定地运行。
构建项目并打包
在本地使用maven进行打包
上传 jar包 到服务器并运行
1、上传jar包
2、运行程序
nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
nohub:后台运行程序,用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行
语法格式:
nohup Command [ Arg … ] [ & ]
Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让命令在后台,终端退出后命令仍旧执行
比如:
nohup java -jar blog-0.0.1-SNAPSHOT.jar >/logs &
Linux 可以通过 > 把需要输出的内容写到指定的文件中,这样的操作称为重定向
3、开放端口号
如果外网需要访问该服务, 需要先服务器防火墙开放对应的端口号
本着服务器安全的原则,云服务器上的端口非必要不开启
比如常见的端口号:数据库3306,Redis6379,尽可能避免开放,而是采用其他方式连接,比如配置隧道的方式


3、验证程序
路是脚踏出来的,历史是人写出来的。人的每一步行动都在书写自己的历史。--吉鸿昌
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
以上,就是本期的全部内容啦,若有错误疏忽希望各位大佬及时指出💐
制作不易,希望能对各位提供微小的帮助,可否留下你免费的赞呢🌸