当前位置: 首页 > news >正文

Linux基础使用和程序部署

目录

1.Linux

 1.2 Linux的环境搭配

 1.2.1 使用云服务器

1.2.2使用终端软件连接到Linux

 1.3. Linux 常用命令

    1. ls:列出当前目录中的文件和子目

2.pwd:显示当前工作目录的路径

3.cd:改变工作目录,将当前的工作目录改变到指定目录下

 4.touch:创建空文件或更新文件的时间戳

 5.cat:查看目标文件的内容

6.mkdir:创建新目录

7.rm:删除文件/目录

8.cp:复制文件或者目录

9.mv:移动或重命名文件或目录

10.head/tail:显示文件的前几行或后几行

11.vim:文本编辑

12.grep:查找指定字符串,并显示对应的行

13.ps:查看当前系统上运行的进程

14.netstat:查看系统上的网络状态

2.部署Web项目到Linux

2.1环境配置

2.2 构建项⽬并打包

 2.3上传Jar包到服务器,并运行

 2.4开放端口号

 2.5 验证程序

2.6常见的问题:

2.7 结束进程

总结:


1.Linux

Linux的优势: 

  1. 开源(意味着免费)
  2. 稳定 (Linux可以运行很多年,都不会发生重大问题)
  3. 安全(Linux只有管理员或者特定用户才能访问Linux内核)
  4. 自由(不会被加强商业产品和服务)
  5. 社区支持(Linux在全球社区都非常活跃和使用广泛,有很多志愿者在线帮大家解决问题)

下面重点学习Linux的基础命令和项目部署 

 1.2 Linux的环境搭配

主要有四种:

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

 1.2.1 使用云服务器

 云服务器的好处:

        使用云服务器不仅环境搭建简单,避免折腾,同时还有一个最大的好处,部署在云服务器上的项目可以直接被外网访问到,这个时候就和一个公司发布一个正式的网站没有任何区别.也就能让我们自己写的程序真的去给别人去使用.

1.2.2使用终端软件连接到Linux

所谓终端软件就是一类工具软件,可以和远程的主机建立网络连接,从而对主机进行一些操作

 下面就拿 XShell 终端软件举例吧

 第一步:下载安装 XShell

下载地址:家庭/学校免费 - NetSarang Website

第二步:使用XShell 登录主机

在XShell终端下输入:

                ssh   服务器外网ip地址

 1.3. Linux 常用命令

    1. ls:列出当前目录中的文件和子目
  • -a列出目录下的所有文件,包括以.开头的隐含文件。
  • -d将目录象文件一样显示,而不是显示其下的文件。如:ls-d指定目录
  • -k以k字节的形式表示文件的大小。ls-alk指定文件
  • L列出文件的详细信息。
  • -r对目录反向排序。
  • -t以时间排序。
  • -R列出所有子目录下的文件。 (递归)
ls -l
2.pwd:显示当前工作目录的路径
pwd
3.cd:改变工作目录,将当前的工作目录改变到指定目录下
#返回上级目录
cd..

#进入用户家目录
cd~

#返回最近访问目录
cd-

 认识Linux目录结构:

Linux是一个树型目录结构

 几个特殊的目录:

  • /称为根目录
  • .称为当前目录
  • ..称为当前目录的上级目录

 绝对路径vs相对路径:
形如: /usr/share/tomcat/logs/以根目录开头的,称为绝对路径.
形如:·/logs以·或者开头的,称为相对路径,


使用tab键补全:
我们敲的所有的Linux命令,都可以使用tab键来尝试补全,加快效率.


使用ctrl+c重新输入:
如果命令或者目录敲错了,可以ctrl+c取消当前的命令

 4.touch:创建空文件或更新文件的时间戳
touch text.txt
 5.cat:查看目标文件的内容
cat text.txt
6.mkdir:创建新目录

常用选项:

  •   -p,--parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录
mkdir -p text/text1
7.rm:删除文件/目录

常用选项:

  •   -f即使文件属性为只读(即写保护),亦直接删除
  •   -i删除前逐一询问确认
  •  -r删除目录及其下所有文件
rm text.txt
8.cp:复制文件或者目录
cp test1.txt test2.txt
9.mv:移动或重命名文件或目录
mv old_name new_name
10.head/tail:显示文件的前几行或后几行
head -10 file_name  # 显示文件的前10行
tail -20 file_name  # 显示文件的后20行
11.vim:文本编辑

1) 创建文件/打开文件

vim [文件名]

2) 进入插入模式

vim打开文件后默认是普通模式.普通模式下键盘的按键表示一些特殊功能的快捷键.(例如按下j并不是输入字母"j",而是表示光标往下移动一行).需要进入插入模式才能进行文本编辑
使用i键可以进入到插入模式.(左下角提示--INSERT--)然后就可以像记事本一样正常编辑了.

3)保存

在插入模式下不能保存文件,需要先回到普通模式.按下EsC回到普通模式.
在普通模式下输入:W,再按下回车,即可保存文件

4)退出

在插入模式下不能退出,需要先回到普通模式.
退出时,分以下情况:
①文件未修改:输入:q,再按下回车,即可退出
②文件修改并保存:使用:wq同时执行保存和退出.
③文件修改,但不希望保存:使用:wq!进行强制退出

12.grep:查找指定字符串,并显示对应的行

常用选项:

  • -n<行数>显示的行数
  • -W全字匹配.要求整个单词都完全相同的结果才能匹配出来,而不仅仅是一个单词的一部分.
  •  -r 递归查找.可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  •  --include 指定查找某些文件
  • --exclude 指定排除某些文件
rep "hello" Hello1.java  在Hello1中查找 hello字符串
13.ps:查看当前系统上运行的进程

常用选项:

  • a 显⽰⼀个终端的所有进程
  • u 以⽤⼾为主的格式来显⽰程序状况
  • x 显⽰所有程序, 不⽌是会话中的进程
  • e 显⽰所有进程, 包括系统守护进程
  • f 显⽰完整格式输出
ps aux   #显示系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"
14.netstat:查看系统上的网络状态

常用选项:

  • -a显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称
netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"

2.部署Web项目到Linux

2.1环境配置

程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境

数据准备

按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构.

程序配置文件修改

实际工作中,开发环境,测试环境以及生产环境的配置都是不一样的
比如mysql的用户名和密码
我们可以针对不同的环境,设置不同的配置

多平台文件配置

针对不同平台创建不同的配置文件,要求名字为application-XXX.yml或者application-XXX.properties
以下以application-xxX.yml为例

固定格式,只有后面的字母可以修改

在配置文件里写不同的内容
 application-dev.yml:


#数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  # 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
  mapper-locations: classpath:mybatis/**Mapper.xml
  # 配置打印 MyBatis日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true #配置驼峰⾃动转换

application-prod.yml:
#数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  # 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
  mapper-locations: classpath:mybatis/**Mapper.xml
  # 配置打印 MyBatis日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true #配置驼峰⾃动转换
#设置日志文件的文件名
logging:
  file:
    name: spring-blog.log

application.yml:

spring:
  profiles:
    active: @profile.name@
从Maven中读取环境配置变量:
 <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>

2.2 构建项⽬并打包

在本地使用maven进行打包

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

 2.3上传Jar包到服务器,并运行

上传jar包:

直接将打包好的jar包拖入Xshell窗口即可完成文件的上传

 运行程序:

nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &

 nohup:后台运行程序.用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行.

 语法格式:

nohup Command [ Arg … ] [ &]

 参数说明:

Command:要执行的命令。
Arg:一些参数,可以指定输出文件
&:让命令在后台执行,终端退出后命令仍旧执行

比如:

ohup java -jar blog-0.0.1-SNAPSHOT.jar >/logs &

Linux 可以通过把需要输出的内容写到指定文件中.这样的操作称为"重定向”

 2.4开放端口号

以腾讯云服务器举例:

添加规则:

端口号写需要开放的端口号,多个端口号以逗号分割.

 2.5 验证程序

  1. 访问项目:  http://IP:Port/blog_login.html                                                                    IP改为云服务的IP  Port改为项目的端口号
  2. 按照项目的功能进行验证 

2.6常见的问题:

一个程序的正常运行,需要程序的正确和环境的正确.同样的代码在Windows上可以运行成功,不一定在Linux上运行成功.不同的系统对代码的理解和支持是不同的.比如Windows系统对MySQL不区分大小写,Linux区分大小写

服务不能正常访问的原因有很多,主要分以下几方面:

1.服务未启动

  1. a.使用 ps -eflgrep java 查看程序是否在运行 
  2. b. 使用 curl http://127.0.0.1:8080/blog_login.html 看看下是否有返回html页面,                              如果有返回,说明程序启动成功了,考虑端口未开放
  3. c.如果未启动成功,需要查看对应的日志,根据原因来分析:
  •  数据库不存在
  • 表不存在(区分大小写)
  • 数据库密码不正确
  • Jdk安装版本不对,或者未安装
  • mysql未设置密码

 2.http端口未开放

检查云服务器防火墙/安全组是否开放相应端口(如8080)

2.7 结束进程

 如果我们需要重启服务,或者重新部署等,都需要先停止之前的服务.

1. 查看当前服务的进程:

s -eflgrep java

 2. 杀掉进程

kill -9 PID

总结:

  1. 连接Linux服务器的方式有很多,xshell只是其中一种.xshel是一个客户端,而非服务器
  2. Ubuntu软件管理工具是apt,其他的linux发行版本软件包管理工具不同,比如CentOS是使用yum来管理软件的
  3. SpringBoot可以使用多个配置文件来完成不同平台的配置.
  4. 在Window上可以运行成功的代码,在Linux上不一定能运行成功.
  5. 启动程序需要使用nohup后台运行,需要停止服务时,使用kill命令

相关文章:

  • UI自动化框架介绍
  • sass语法@import将被放弃???升级@use食用指南!
  • 互联网时代如何保证数字足迹的安全,以防个人信息泄露?
  • Jenkins与Flutter项目持续集成实战指南
  • 洛谷————P1634 禽兽的传染病
  • 前端开发的“速度与激情”:ScriptEcho 助力应对 AI 时代的知识焦虑
  • C++(蓝桥杯常考点)
  • 【Java项目】基于SpringBoot的CSGO赛事管理系统
  • SpringMVC中的常用注解和用法
  • 【Transformer优化】什么是稀疏注意力?
  • vue实例
  • yolov8训练模型、测试视频
  • 贴源数据层建设
  • NameError: name ‘libpaddle‘ is not defined
  • MAX232数据手册:搭建电平转换桥梁,助力串口稳定通信
  • 学到什么记什么(25.3.3)
  • 深入学习Linux内存管理-缺页异常
  • MySQL数据库的数据类型
  • 刷题日记——部分二分算法题目分享
  • C++学习之C++初识、C++对C语言增强、对C语言扩展
  • 网站建设 广西/百度seo效果
  • iis 二级网站 发布/百度网络电话
  • 网站代码免费下载/营销咨询公司排名
  • wordpress 模板文件/百家号seo
  • 商业设计理念/搜索优化指的是什么
  • 网站的下拉列表怎么做/企业网站制作开发