Java Linux --- 基本命令,部署Java web程序到线上访问

文章目录

Linux

学习Linux是为了把网站程序,部署上去,能够让别的用户直接访问到,用到外网IP(云服务器)

Linux系统使用

当前写的博客系统程序,只是部署在我们自己的电脑上,其他用户是无法直接访问的 (由于NAT机制的存在,导致了IP地址就被分成了内网IP和外网IP)

云服务器,包括公司中使用的专用服务器,一般都是Linux系统。这个系统的使用,和Windows差异很大(通过命令行来操作的系统)

  1. Linux不仅仅是使用在服务器领域,也用于嵌入式设备和移动端设备。

    桌面端(PC)主流的系统仍然是Windows。Linux也是有这种桌面版本的(带有图形化界面的,这种版本使用体验非常差,可能会存在很多的bug)

  2. Linux发行版

    严格来说,Linux不是一个操作系统,而是一个操作系统内核

    操作系统 = 内核 + 配套的应用程序

  1. 如何拥有一个云服务器 (Linux环境)

保证你在秋招中,云服务器也是可用的,秋招中需要你把你写好的项目部署到云服务器上,给面试官现场演示

  1. 如何找到你的云服务器

  2. 这里更推荐使用更专业的工具,来连接云服务器。
    终端工具种类非常多,但是xshell比较好用

  3. 进行登录

    登录成功与失败

Linux的常用命令

ls,cd,pwd

  1. 这里只介绍最常用的命令
    ls(list):列出当前目录下都有哪些内容(文件/目录)
    ls / :直接输入ls,是查看当前目录的情况,跟上 / 意思就是看看 /(根目录) 这个目录下的情况

ls /

ls -l / :- 后面是小写 L,不要输入成大写 i 或者数字 1

ls -l == ll(这两个是等价的)

一个目录的属性:

  1. cd(change directory):修改(当前)目录,后者说是切换目录

ctrl + l 在linux中可以清屏,可以更好地观察,不是内容不见了

  1. 通过cd的连续操作,已经进入到 /etc/apt/source-list.d中了

pwd:使用pwd可以查看到当前所处的路径的绝对路径

  1. 绝对路径和相对路径

回到home(用户)目录,下面两个命令是等价的

后续学习的一些命令,建议都在你自己的主目录下进行操作,不要把你的操作影响到系统目录中的内容

touch,cat,echo

  1. touch:创建空的文件

    输入一个命令,没有任何提示,此时就是成功,如果失败,就会告诉你一些报错信息

    no news is good news:没有消息就是好消息

  2. cat:查看文件内容(把文件内容打印到控制台上),和C语言的strcat(字符串拼接)作用是一样的

  3. echo:打印内容到控制台上

    单个大于号:把内容写入到文件中,会把原有的内容清空,再重新写入

    两个大于号:是追加写,再原有内容的后面添加上新的内容

  4. vim的使用

    (1) 打开文件:vim 文件名

    (2) 编辑内容

    (3) 保存退出

  5. 前面命令的总结:

makdir,rm

  1. makdir(make directory):创建目录

    可以创建单级目录,也可以创建多级目录

  2. rm(remove):删除文件/目录

    (1) 删除文件

    (2) 删除目录

    rm -rf /

    不小心删除根目录的情况:

    (1)

    (2)

mv,cp

  1. mv(move):移动(剪切,粘贴)
    mv 要移动的源 移动的目标
    mv可以移动文件,也可以移动目录

移动文件

移动目录

把aaa目录移动到bbb目录下

mv aaa/ bbb/

mv还可以针对文件进行重命名,并移动

这里吧test.txt重命名为了123.txt,并把它移动到上一级目录下了

也可以再本目录下进行移动并修改名字

mv 123.txt 456.txt

  1. cp(copy):复制(复制,粘贴)
    cp 要复制的源 要复制的目标
    把源复制给目标

man

  1. man用来查看命令的具体使用
    man 命令的名字
    使用q退出查看,使用滚轮或者方向键进行查看

上述命令都是围绕目录和文件来展开的

grep,ps

  1. grep:字符串匹配/查找
  2. ps(process show):展示进程,显示出当前系统上都有哪些进程
    ps aux:查看服务器上的所有进程的情况

    对上述命令的总结

netstat

  1. netstat:查看网络信息
    可以用来查看某个端口是否被某个进程使用,也可以查询某个进程使用了哪个端口

netstat

netstat -anp:netstat查询的不全,加上-anp选项可以查询更全的信息

查询某个进程使用了哪个端口号

查询某个端口号被哪个进程使用了

想要完成复杂的工作,可以把多个命令,通过 | 的方式组合起来

搭建Java web程序

  1. 如何在Linux系统上搭建Java web程序的运行环境
    比如:写博客系统的时候,不是一个代码就可以运行的,需要有一些其他的程序,把这个环境搭建起来
    (1) JVM(JDK)
    (2) Tomcat
    (3) MySQL 数据库
    Linux中通过命令的方式来安装,我们可以基于包管理器(类似于中央仓库)进行安装

Linux会把一些软件包,放到对应的服务器上,通过包管理器这样的程序,来吧这些软件包给下载安装(但是这里的软件包不一定全,还好向mysql,jdk这些知名的软件还是存在的)

ubuntu 系统,包管理器 apt

centos 系统,包管理器 yum

jdk安装

  1. jdk
    这里需要确保是处于 root 用户下(如果不是管理员,需要使用 sudo su 切换到管理员)

(a) 使用apt命令查看服务器上有哪些软件包

apt list | grep jdk

我们这里统一使用 java8,要保证你电脑上的jdk版本和云服务器上的jdk版本保持一致

(b) 使用apt安装软件包

apt install 软件包名字

在Linux命令行中,复制 ctrl + insert,粘贴 shift + insert,其实windows上也支持的(这里的复制粘贴是xshell提供的,也可以自己修改一下的)

ctrl + c 的作用是终止当前程序

如果敲了一个javac,显示如下内容,说明安装好了

如果是centos,就使用yum

yum list | grep jdk

yum install 软件包名字

带有devel后缀的版本的软件包,才会是完整的jdk

tomcat安装

  1. 由于Linux上只有tomcat9,我们需要的是tomcat8.5,这就需要我们手动安装tomcat了。并且Tomcat就是基于java来实现的,java是跨平台的。

(a) 只需要把之前在Windows上的Tomcat上传到Linux上即可

把要上传的压缩包,网xshell上一拖,就过去了。

(1) 一次只能拖一个文件,所以打成一个压缩包的格式

(2) 要想能拖上去,需要先安装lrzsz这样的软件包

ubuntu apt install lrzsz

centos yum install lrzsz

lrzsz上有两个命令:

sz把linux上的文件传到Windows

rz把windows上的文件传到linux上

(b) 对zip压缩包进行解压缩

unzip 压缩包名字

ubuntu apt install unzip

centos yum install unzip

在Linux上启动tomcat,使用startup.sh

© 修改 .sh 文件的可执行权限,让这些 .sh都可执行

先cd到bin目录中

chmod +x *.sh


(d) 启动tomcat

还是 cd 到 bin 目录下

sh startup.sh

(e) 验证启动是否成功

使用ps查看java进程有没有

使用netstat查看8080是否被绑定

访问tomcat的欢迎页面看能否打开

使用 kill 进程id 就可以干掉某个进程

还可以通过浏览器访问欢迎页面

云服务器是另外一台电脑

  1. 可能你不一定能够顺利地打开这个欢迎页面?
    云服务器的防火墙/安全组 确认是否打开
    打开了防火墙,才能访问欢迎页面

    登录到云服务器的后台,找到对应的机器,选择防火墙标签页

把8080这个端口号添加到可以访问的这里

在这里添加8080这个端口号

mysql安装

  1. 安装mysql,直接通过apt来安装/yum安装

搜索mysql软件包的名字

apt list | grep mysql

安装mysql的命令

apt install mysql-server-8.0

安装完毕之后,一般来说,mysql的服务器就自动启动了

service mysql status:查看mysql的运行状态

然后输入mysql,进入mysql软件中

show databases;就可以使用数据库了

apt update 可以更新一下库

(刷新一下,能看到更多的软件包)

程序的部署

正式进行程序的部署

  1. 把数据库/数据表都在云服务器上创建好
    当把程序放在云服务器上执行,程序访问的就是云服务器上的数据库了。需要确保数据库里面有数据(有表,有库)

把之前代码中的db.sql中的内容,复制到云服务器的mysql客户端中执行

  1. 针对程序进行打包

(打包之前,还需要确认一下mysql相关的配置会否需要修改)

打成war包,在pom.xml下进行设置

  1. 把这个war上传到linux的tomcat的webapps目录中

(先退出mysql)

在linux中,退出mysql控制台界面。使用ctrl + d即可。ctrl + d在linux上表示EOF(意思就是输入完了),ctrl + d是一个通用的操作。各种控制台程序的界面都可以使用

ctrl + d 退出

但是exit就不一定能在各种控制台下都能退出了

  1. 通过浏览器进行访问

打开云服务器的博客系统,可能会出现背景图卡顿的情况(服务器网络带宽比较低)

我们的一个web程序在本地电脑上运行正常,不代表部署到云服务器上就正常

  1. 登录时的密码错误,登录不上的错误

通过tomcat的日志查找错误

logs是tomcat的日志

使用vim打开刚刚修改的文件

在vim里找到在代码中出现错误的行数

当前看到的问题是使用 '' '' 密码登录不上去了

解决方案:

(1) 手动给这个数据库设置一个其他的密码,使用这个密码来登录

(2) 可以直接把数据库的验证密码的功能给关闭掉(釜底抽薪)使用这个方案,使用任何密码都能登录了

我们这里使用方案二来解决问题
MySQL跳过密码登录,在Linux上的配置

mysql的日志出错了

mysql5和mysql8设置密码的方式是不一样的,上述是用不了方案二,把密码关闭掉,所以只能使用方案一来设置我们的密码了

此时,只要任何一个用户有网,就都可以通过上述的地址,来访问我们的云服务器了

部署一个程序,是否能够运行成功,不仅仅取决于代码,也取决于你的程序依赖的环境

(对应的tomcat,mysql是否都ok,依赖了一些数据,配置是否都ok)

确定tomcat是否成功运行的命令 ,在你当前是用户路径的前提下,输入curl 127.0.0.1:8080 命令验证tomcat是否是成功运行的

相关推荐
用户1456775610372 小时前
推荐一个我私藏的电脑神器:小巧、无广、功能强到离谱
前端
用户1456775610372 小时前
终于找到了!一个文件搞定PDF阅读
前端
liangshanbo12152 小时前
React 18 的自动批处理
前端·javascript·react.js
一位搞嵌入式的 genius2 小时前
前端实战开发(二):React + Canvas 网络拓扑图开发:6 大核心问题与完整解决方案
前端·前端框架
heyCHEEMS2 小时前
最长连续序列 Java
java·开发语言·算法
Ronin3053 小时前
【Linux网络】网络命令
linux·网络·网络命令
da_vinci_x3 小时前
设计稿秒出“热力图”:AI预测式可用性测试工作流,上线前洞察用户行为
前端·人工智能·ui·设计模式·可用性测试·ux·设计师
訾博ZiBo3 小时前
UI架构的“定海神针”:掌握“视图无关状态提升”原则
前端
Keepreal4963 小时前
谈谈对XSS,CSRF,SQL注入,DoS和DDoS攻击的理解以及如何预防
前端·安全