【Linux】Linux基本使用和程序部署


🎬 那我掉的头发算什么个人主页
🔥 个人专栏 : 《javaSE》《数据结构》《数据库》《javaEE》

⛺️待到苦尽甘来日


文章目录

Linux环境搭建

环境搭建方式

主要有四种:

  1. 直接安装在物理机上。但是 Linux 桌面使用起来非常不友好。所以不建议。【不推荐】。
  2. 使用虚拟机软件,将 Linux 搭建在虚拟机上。但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug,会导致环境上出现各种莫名其妙的问题,比较折腾。【非常不推荐】
  3. 使用 WSL(Windows Subsystem for Linux)。这个是 Windows 近几年开发的新功能,在 Windows 系统内集成了一个 Linux。但是目前这个技术还不够成熟。【暂时不推荐】。
  4. 使用云服务器,可以直接在 腾讯云,阿里云或华为云 等服务器厂商处直接购买一个云服务器。【推荐】

购买的时候作为在校学生,我们是可以白嫖服务器的使用权的,大家自行在网上搜索就好了!

我的操作系统选择是 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 [选项] 源文件或目录 目标文件或目录

功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

常用选项

• -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

• -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

tail

语法: tail [必要参数] [选择参数] [文件]

功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

选项:

• -f 循环读取

• -n<行数> 显示行数

vim

vim 是一个知名的文本编辑器。使用 vim 可以进行文本编辑了。vim 就相当于 Windows 的记事本。只不过功能比记事本强大一些。

1)创建文件/打开文件

vim + 文件名

  1. 进入插入模式

vim 打开文件后默认是普通模式。普通模式下键盘的按键表示一些特殊功能的快捷键。(例如按下 j 并不

是输入字母 "j",而是表示光标往下移动一行)。需要进入插入模式才能进行文本编辑。

使用 i 键可以进入到插入模式。(左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了。

  1. 保存

在插入模式下不能保存文件,需要先回到 普通模式 。按下 Esc 回到普通模式。

在普通模式下输入 :w ,再按下回车,即可保存文件。

  1. 退出

在插入模式下不能退出,需要先回到 普通模式。

退出时,分以下情况:

① 文件未修改: 输入 :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进行打包

  1. 如果Test代码中有与环境配置相关的操作(比如数据库相关的操作), 打包会失败, 点击下图①处的图标, 可以跳过测试
  2. 点击clean->package

上传jar包运行程序

直接拖动打包好的jar包到Xshell窗口即可:

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

杀死进程

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

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

相关推荐
智能工业品检测-奇妙智能2 小时前
linux 安装 FFmpeg 和windows安装 FFmpeg
linux·windows·ffmpeg
明码2 小时前
Pathlib库
java·服务器·前端
袁煦丞 cpolar内网穿透实验室2 小时前
ansible批量自动化清理服务器日志+远程管理!cpolar 内网穿透实验室第 710 个成功挑战
服务器·自动化·ansible·远程工作·内网穿透·cpolar
LSL666_2 小时前
11 redis核心配置参数
数据库·redis·缓存
灰阳阳2 小时前
Docker-网络管理-命令入门
运维·docker·容器·eureka
江畔柳前堤2 小时前
XZ07_解决WORD中间单词间隔过大的问题
数据库·人工智能·线性代数·oracle·数据挖掘·word
灰阳阳2 小时前
Docker-容器相关命令解析
运维·docker·容器
thinkpad12345678902 小时前
Docker 安装(Ubuntu 22.04 / jammy)步骤总结 + 常见错误处理
服务器·ubuntu·docker
Elastic 中国社区官方博客3 小时前
SearchClaw:将 Elasticsearch 通过可组合技能引入 OpenClaw
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索