项⽬部署的完整流程
作为⼀个合格的程序猿,仅仅会打代码还是远远不够的,项⽬的部署也是我们必须要会的操作,也就是所谓的上线,将我们本地开发好的项⽬部署到远程服务器上,使得任何机器都可以通过我们远程服务器的公⽹ip或者域名加上端⼝号访问到我们的项⽬。这篇博客详细的列出每个步骤,并且也列举了在部署过程中常见的问题,看完这篇⽂章,你⼀定会有所收获!
⾸先,我先给⼤家捋⼀下项⽬部署的流程:
1. 环境搭建: 我们以当下最流⾏的springboot项⽬为例,最终打成的是⼀个jar包,jar包要在远程服务器上跑起来,环境搭建是第⼀
步,也就是安装jdk环境,⾄于tomcat的话,springboot⾃带tomcat,所以不安装也可以;
2. 数据库的部署: 在本地开发的时候,我们代码⾥⾯的数据库连接主机名写的是localhost,之所以这样写了能访问到,那是因为我们的
项⽬和数据库都在我们的本地机器上,所以可以访问到;⽽如果项⽬部署到远程服务器上,要访问到数据库,应该先部署数据库,⾄于数据库连接还能不能写localhost,要分两种情况,如果我们的数据库和项⽬都部署到了同⼀台远程服务器上,那可以;如果部署在不同机器上,那显然不⾏,这种情况的话数
据库连接的主机名就需要修改成数据库所部署的那台机器的公⽹ip或者域名。
网站升级中 html模板3. 上⾯两步操作完成之后,就可以把本地打好的jar包上传到远程服务器上,远程服务器进⼊jar包所在⽬录,执⾏ java -jar jar包名 即可
启动项⽬,⾄此,项⽬部署完成!
对于以上的步骤,我再详细的列出:
【⼀】数据库部署到远程服务器
⽅法⼀:Xshell连接远程服务器进⾏命令⾏操作
1. 将本地的数据库导出成.sql⽂件
2. 在远程服务器中创建⼀个⽂件夹,专门存放.sql⽂件的
3. 执⾏rz命令(前提是安装了lrzsz),将本地的.sql⽂件上传到远程服务器上该⽂件夹;也可以使⽤xftp实现⽂件传输
4. 登录mysql:mysql -u root -p(回车后输⼊密码)
5. 执⾏.sql⽂件之前需要先创建对应的数据库
CREATE DATABASE IF NOT EXISTS数据库名DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
6. 选中刚刚创建的数据库之后再执⾏.sql⽂件:use 数据库名
7. 执⾏.sql⽂件:source ***.sql
(注意如果我们是在.sql⽂件所在的⽂件夹中执⾏该命令就不⽤加路径,否则需要加上.sql⽂件所在路径)
rfsplitter⽅法⼆:本地Navicat连接远程服务器的数据库进⾏可视化操作
关于本地Navicat连接远程数据库的操作可参考我另⼀篇博客:
同样是先将本地的数据库导出成.sql⽂件,我们可以看下导出来的.sql⽂件包含了什么内容:
这⾥只截图了部分,下⾯开始的都是表结构和表数据,可以看到导出来的.sql⽂件并没有为我们创建数据库,所以在导⼊.sql⽂件之前需要先⼿动创建数据库,并且在我们导出来的.sql⽂件中添加⼀⾏选中
我们的数据库 use 数据库名
以上两步操作没完成的话在导⼊.sql⽂件的时候都会报错,显⽰没有选中数据库,如下图:
操作完成之后,便可以将.sql⽂件导⼊远程mysql数据库了。
【⼆】项⽬部署到远程服务器
1. 当我们已经将数据库部署到远程服务器上,如果数据库和项⽬部署不在同⼀台远程服务器上,那么在将项⽬打成jar包之前需要先修改maven项目是干什么的
数据库连接的配置信息,将主机名修改成数据库所部署的那台机器的公⽹ip或者域名,如果数据库和项⽬部署在同⼀台远程服务器上,那么主机名可以继续使⽤localhost;
2. Xshell连接阿⾥云远程服务器,并使⽤xftp将本地的jar包传输到远程服务器上,如果安装了lrzsz可以直接使⽤rz命令上传
3. 放⾏端⼝号,部署项⽬成功之后,要能够访问到项⽬,还应该在阿⾥云控制台开放对应的端⼝(进⼊阿⾥云官⽹)
除此之外,还应该在宝塔⾯板中的防⽕墙放⾏该端⼝
关于宝塔⾯板: 其实可以简单的理解成就是⽤来管理我们服务器的,可视化操作简单,管理⽅便。我们要在服务器中安装软件,部署环境,除了使⽤linux命令,也可以使⽤宝塔⾯板进⾏可视化操作,去到宝塔⾯板⾥的软件商店即可下载,另外,对于防⽕墙的端⼝号放⾏,通过宝塔⾯板设置也⾮常的简单快捷。
关于服务器的购买教程和宝塔部署的相关操作可以参考视频:
【三】启动项⽬
1. 在Xshell中操作,先进⼊到阿⾥云远程服务器中jar包所在的⽂件夹⽬录
2. 使⽤nohup java -jar jar包名 & 命令运⾏jar包
(nohup加上&表⽰项⽬可以在后台永久的执⾏,即使关闭Xshell终端也不会停⽌运⾏;如果后⾯想要停⽌该项⽬的运⾏,可以直接结束该项⽬端⼝占⽤的进程)
以上命令执⾏之后会提⽰:nohup: ignoring input and appending output to ‘nohup.out’,这是正常提⽰,并不是错误,直接打回车就可以。该提⽰产⽣的原因是nohup默认会把标准输出重定向到默认⽂件nohup.out中,也可以⾃定义该输出⽂件,例如:nohup java -jar jar包名 & & 但是标准错误输出没有重定向到某个⽂件,所以会有该提⽰。
如果想要不输出该提⽰,省去打回车键的操作,那么可以使⽤以下命令:nohup java -jar jar包名 2>&1 & 解释:2>&1 是将错误提⽰信息的输出重定向到标准输出,⽽这⾥的标准输出已经重定向到默认⽂件nohup.out中,也就是说标准的错误提⽰也直接输出到nohup.out中,所以就没有提⽰了,也就不⽤再打回车了。
【四】需要注意的问题
mysql无法连接到服务器1. 如果已经在阿⾥云控制台开放了项⽬对应的端⼝号之后,通过公⽹ip和端⼝号还是⽆法访问项⽬的话,最⼤的⼀个可能就是防⽕墙的
原因,防⽕墙并没有开放对应的端⼝号,这时候就可以使⽤宝塔⾯板去防⽕墙设置⾥放⾏对应的端⼝号;
2. 关于项⽬运⾏的端⼝号,建议在打jar包之前改成不常见的那些端⼝号,避免出现端⼝号冲突,例如使⽤8080、3306、80这些端⼝
号都容易出现端⼝号冲突,尽量不⽤。
3. Linux下解决端⼝号冲突的⽅法:
# 查看所有端⼝使⽤情况
lsof -i
# 查看具体某个端⼝使⽤情况
lsof -i:端⼝号
数据库管理员累不累# COMMAND指的是进程名,PID指的是进程号/进程ID
# 通过进程名结束占⽤端⼝的进程
killall进程名
# 通过进程ID结束占⽤端⼝的进程
kill进程ID
# 通过进程ID强制结束占⽤端⼝的进程
宝塔php框架kill -9 进程ID
PS:以上就是整个项⽬部署的完整流程,如果看了之后还有问题的⼩伙伴可以私信我,没准能帮得上忙哦!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论