Java Linux --- 基本命令,部署Java web程序到线上访问
文章目录
- Linux
- Linux系统使用
- Linux的常用命令
- ls,cd,pwd
- touch,cat,echo
- makdir,rm
- mv,cp
- man
- grep,ps
- netstat
- 搭建Java web程序
- jdk安装
- tomcat安装
- mysql安装
- 程序的部署
Linux
学习Linux是为了把网站程序,部署上去,能够让别的用户直接访问到,用到外网IP(云服务器)
Linux系统使用
当前写的博客系统程序,只是部署在我们自己的电脑上,其他用户是无法直接访问的(由于NAT机制的存在,导致了IP地址就被分成了内网IP和外网IP)
云服务器,包括公司中使用的专用服务器,一般都是Linux系统。这个系统的使用,和Windows差异很大(通过命令行来操作的系统)
-
Linux不仅仅是使用在服务器领域,也用于嵌入式设备和移动端设备。
桌面端(PC)主流的系统仍然是Windows。Linux也是有这种桌面版本的(带有图形化界面的,这种版本使用体验非常差,可能会存在很多的bug) -
Linux发行版
严格来说,Linux不是一个操作系统,而是一个操作系统内核
操作系统 = 内核 + 配套的应用程序
3. 如何拥有一个云服务器(Linux环境)
保证你在秋招中,云服务器也是可用的,秋招中需要你把你写好的项目部署到云服务器上,给面试官现场演示
- 如何找到你的云服务器
- 这里更推荐使用更专业的工具,来连接云服务器。
终端工具种类非常多,但是xshell比较好用
- 进行登录
登录成功与失败
Linux的常用命令
ls,cd,pwd
- 这里只介绍最常用的命令
ls(list):列出当前目录下都有哪些内容(文件/目录)
ls / :直接输入ls,是查看当前目录的情况,跟上 / 意思就是看看 /(根目录) 这个目录下的情况
ls /
ls -l / :- 后面是小写 L,不要输入成大写 i 或者数字 1
ls -l == ll(这两个是等价的)
一个目录的属性:
2. cd(change directory):修改(当前)目录,后者说是切换目录
ctrl + l 在linux中可以清屏,可以更好地观察,不是内容不见了
3. 通过cd的连续操作,已经进入到 /etc/apt/source-list.d中了
pwd:使用pwd可以查看到当前所处的路径的绝对路径
4. 绝对路径和相对路径
回到home(用户)目录,下面两个命令是等价的
后续学习的一些命令,建议都在你自己的主目录下进行操作,不要把你的操作影响到系统目录中的内容
touch,cat,echo
-
touch:创建空的文件
输入一个命令,没有任何提示,此时就是成功,如果失败,就会告诉你一些报错信息
no news is good news:没有消息就是好消息 -
cat:查看文件内容(把文件内容打印到控制台上),和C语言的strcat(字符串拼接)作用是一样的
-
echo:打印内容到控制台上
单个大于号:把内容写入到文件中,会把原有的内容清空,再重新写入
两个大于号:是追加写,再原有内容的后面添加上新的内容 -
vim的使用
(1) 打开文件:vim 文件名
(2) 编辑内容
(3) 保存退出
-
前面命令的总结:
makdir,rm
-
makdir(make directory):创建目录
可以创建单级目录,也可以创建多级目录
-
rm(remove):删除文件/目录
(1) 删除文件
(2) 删除目录
rm -rf /
不小心删除根目录的情况:
(1)
(2)
mv,cp
- mv(move):移动(剪切,粘贴)
mv 要移动的源 移动的目标
mv可以移动文件,也可以移动目录
移动文件
移动目录
把aaa目录移动到bbb目录下
mv aaa/ bbb/
mv还可以针对文件进行重命名,并移动
这里吧test.txt重命名为了123.txt,并把它移动到上一级目录下了
也可以再本目录下进行移动并修改名字
mv 123.txt 456.txt
- cp(copy):复制(复制,粘贴)
cp 要复制的源 要复制的目标
把源复制给目标
man
- man用来查看命令的具体使用
man 命令的名字
使用q退出查看,使用滚轮或者方向键进行查看
上述命令都是围绕目录和文件来展开的
grep,ps
- grep:字符串匹配/查找
- ps(process show):展示进程,显示出当前系统上都有哪些进程
ps aux:查看服务器上的所有进程的情况
对上述命令的总结
netstat
- netstat:查看网络信息
可以用来查看某个端口是否被某个进程使用,也可以查询某个进程使用了哪个端口
netstat
netstat -anp:netstat查询的不全,加上-anp选项可以查询更全的信息
查询某个进程使用了哪个端口号
查询某个端口号被哪个进程使用了
想要完成复杂的工作,可以把多个命令,通过 | 的方式组合起来
搭建Java web程序
- 如何在Linux系统上搭建Java web程序的运行环境
比如:写博客系统的时候,不是一个代码就可以运行的,需要有一些其他的程序,把这个环境搭建起来
(1) JVM(JDK)
(2) Tomcat
(3) MySQL 数据库
Linux中通过命令的方式来安装,我们可以基于包管理器(类似于中央仓库)进行安装
Linux会把一些软件包,放到对应的服务器上,通过包管理器这样的程序,来吧这些软件包给下载安装(但是这里的软件包不一定全,还好向mysql,jdk这些知名的软件还是存在的)
ubuntu 系统,包管理器 apt
centos 系统,包管理器 yum
jdk安装
- 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安装
- 由于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 就可以干掉某个进程
还可以通过浏览器访问欢迎页面
云服务器是另外一台电脑
- 可能你不一定能够顺利地打开这个欢迎页面?
云服务器的防火墙/安全组 确认是否打开
打开了防火墙,才能访问欢迎页面
登录到云服务器的后台,找到对应的机器,选择防火墙标签页
把8080这个端口号添加到可以访问的这里
在这里添加8080这个端口号
mysql安装
- 安装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 可以更新一下库
(刷新一下,能看到更多的软件包)
程序的部署
正式进行程序的部署
- 把数据库/数据表都在云服务器上创建好
当把程序放在云服务器上执行,程序访问的就是云服务器上的数据库了。需要确保数据库里面有数据(有表,有库)
把之前代码中的db.sql中的内容,复制到云服务器的mysql客户端中执行
2. 针对程序进行打包
(打包之前,还需要确认一下mysql相关的配置会否需要修改)
打成war包,在pom.xml下进行设置
3. 把这个war上传到linux的tomcat的webapps目录中
(先退出mysql)
在linux中,退出mysql控制台界面。使用ctrl + d即可。ctrl + d在linux上表示EOF(意思就是输入完了),ctrl + d是一个通用的操作。各种控制台程序的界面都可以使用
ctrl + d 退出
但是exit就不一定能在各种控制台下都能退出了
4. 通过浏览器进行访问
打开云服务器的博客系统,可能会出现背景图卡顿的情况(服务器网络带宽比较低)
我们的一个web程序在本地电脑上运行正常,不代表部署到云服务器上就正常
5. 登录时的密码错误,登录不上的错误
通过tomcat的日志查找错误
logs是tomcat的日志
使用vim打开刚刚修改的文件
在vim里找到在代码中出现错误的行数
当前看到的问题是使用 ‘’ ‘’ 密码登录不上去了
解决方案:
(1) 手动给这个数据库设置一个其他的密码,使用这个密码来登录
(2) 可以直接把数据库的验证密码的功能给关闭掉(釜底抽薪)使用这个方案,使用任何密码都能登录了
我们这里使用方案二来解决问题
MySQL跳过密码登录,在Linux上的配置
mysql的日志出错了
mysql5和mysql8设置密码的方式是不一样的,上述是用不了方案二,把密码关闭掉,所以只能使用方案一来设置我们的密码了
此时,只要任何一个用户有网,就都可以通过上述的地址,来访问我们的云服务器了
部署一个程序,是否能够运行成功,不仅仅取决于代码,也取决于你的程序依赖的环境
(对应的tomcat,mysql是否都ok,依赖了一些数据,配置是否都ok)
确定tomcat是否成功运行的命令,在你当前是用户路径的前提下,输入curl 127.0.0.1:8080命令验证tomcat是否是成功运行的