华为云部署项目
一、GaussDB数据库1、登录华为云,进入控制台,从服务列表选择云数据库GaussDB:2、创建数据库,点击登录之后跳转管理平台,运行SQL语句创建数据库:点击登录,输入账号密码跳转数据库管理平台,将本地数据库导出sql文件,选择SQL操作下的SQL查询,在标记位置将sql文件里的内容填充,注意删除最开始注释里的内容,否则SQL执行会失败。3、在首页点击库名,进入对象列表可进行相关操作:二、华为
一、GaussDB数据库
1、登录华为云,进入控制台,从服务列表选择云数据库GaussDB:
2、创建数据库,点击登录之后跳转管理平台,运行SQL语句创建数据库:
点击登录,输入账号密码跳转数据库管理平台,将本地数据库导出sql文件,选择SQL操作下的SQL查询,在标记位置将sql文件里的内容填充,注意删除最开始注释里的内容,否则SQL执行会失败。
3、在首页点击库名,进入对象列表可进行相关操作:
二、华为云服务器
1、获取服务器,进入控制台查看ip地址,最重要的是这个弹性公网ip,没有这个东西服务器就连不上去。可以使用华为云自带的远程登录,也可以自己下一个Xshell。
2、点击操作里的远程登录,选择CloudShell登录,填写账号密码后点击连接就行了:
连接成功后显示服务器控制台:
以上是一些获取和连接的操作,接下来是配置环境和部署项目。
三、环境配置与部署
(一)打jar包部署
1、安装jdk
apt install openjdk-8-jre-headless
进入后台jar包所在文件夹启动该jar包,假设jar包放在/root目录下,那直接进入root目录,使用命令Java -jar xxx.jar
2、tomcat
前端运行打包命令ng build --prod --build—optimizer,生成的dist文件夹下所有的文件全部复制到tomcat的/webapps/ROOT目录下,在conf文件夹下找到server.xml,修改tomcat的启动端口:
将打包好的tomcat上传至华为云服务器,进入tomcat的bin目录执行以下命令:
chmod +x *.sh
sh startup.sh
3、安装nginx:apt install nginx
启动nginx:systemctl start nginx.service
安装完的nginx在/etc下
接下来就是修改它的配置文件了:tomcat启在4200端口,nginx监听4201端口,当访问4021时nginx会转发到4200,拦截/api自动转发到7070端口,也就是后台所在的端口。
4、安装配置reids
基本可以归纳为这几步:
(1)更新Ubuntu的APT存储库缓存:sudo apt update
(2)使用APT命令在Ubuntu上安装Redis:sudo apt install redis
(3)检查Redis是否正在运行:sudo systemctl status redis
具体可以参考这个:https://www.linuxidc.com/Linux/2020-03/162615.htm
5、端口映射
接下来就是将4201端口给映射出来,在控制台点击服务器的名称跳转页面:
点击“更改安全组规则”,选择入方向规则,点击添加规则填写端口后确定。
最后在浏览器输入弹性ip+端口测试:
6、linux释放端口命令:
netstat -tln:查看系统当前所有被占用的端口;
lsof -i :9001:查看9001端口的进程编号;
kill -9 3340:杀死进程
7、接下来是排坑过程,理论上来讲上面这些就够了,但是项目里的很多配置文件特么的都要改,不改就炸。
(1)首先是数据库,公司使用是MySQL数据库版本都是8.0以下的,因此驱动都是com.mysql.jdbc.Driver,GaussDB兼容MySQL8.0,因此需要更换驱动为com.mysql.cj.jdbc.Driver。(注:光修改这个是不行的,需要将mysql-connector-java包也进行升级,这里使用的版本是8.0.11)
其他报错:
这个是因为少配置了参数,加上&zeroDateTimeBehavior=CONVERT_TO_NULL就行了
另:因为需要配置数据库驱动,公司的webbasic 14这一版不适合其他MySQL版本低于8.0的版本使用。
(2)文件下载
使用tomcat进行地址转发,在tomcat的localhost文件夹中新建xml文件,项目中进行转发的地址必须和文件名称保持一致,xml文件里的path不重要,docBase是转发的地址:
eg:http://124.70.141.127:4201/file/UploadFile/kxx/1600949164448.pdf
经过配置http://124.70.141.127:4201/file/UploadFile就会被转发为/user
(3)文件预览
测试的时候遇到一个问题,本地的文件转pdf使用的是Jacob,这玩意儿只支持windos系统(有两个文件需要放到system32、jdk的bin目录和jre的bin目录下),网上搜了一圈之后发现linux系统可以用aspose这个东西。
于是乎,我就又开始了改文件的长征路:
先把jar包下下来,建一个和src同级的lib文件夹丢进去
pom文件配置以下
第一个红框里的代码注释掉了,换成了下面这句:
然后添加了下面这两个方法:
具体参考文件如下:
https://www.hangge.com/blog/cache/detail_2712.html
https://www.cnblogs.com/jssj/p/11808161.html
但是吧,修改部署之后,文件是能上传了,我的pdf文件找不着了,不知道到底是没生成还是生成到别的什么地方去了。经过一系列的排查,好吧,找到原因了,apose这个jar包没打进去,非常规操作就是直接把包丢进去,重新部署就好啦,测试通过。
贴一个成功的图
以上是非常规操作,其实可以试试在pom中添加这段,执行这个应该是能将本地的jar包打进去的:
在服务器上的调试中,因为是war包,和jar包不一样,控制台不能直接显示监听的信息,但是可以进入tomcat的logs文件夹,运行
tail -f catalina.out,这样就可以将信息打印出来。
(4)其它
后台所有的绝对路径都要改成linux服务器上的绝对路径,别忘记了。
基本就是数据库驱动、配置和redis请求地址和文件转发的地址。数据库修改了驱动名称,GaussDB可以用MySQL8.0及以上版本的驱动,基本配置如下;redis则是修改请求地址为本地。
8、 前端修改的就更少了,一个是域名,另一个是/api转发的地址,这个也可以不配置,因为我部署的这种方式/api虽然被nginx拦截到了,但是没进行转发,猜想是因为tomcat的原因。
(二)打war包部署
1、运行打war包的命令;
2、将打好的war包放入tomcat容器
3、前台打包方式不变,打好后将dist目录下的文件放入ROOT
将该tomcat上传至linux服务器之后,进入bin目录运行。需要注意的是,由于前后台由一个tomcat启动。此时的后台不再是启动在7070端口。而是tomcat配置文件server.xml里配置的路径,也就是4200
那么,其他的一些配置就要做出相应的改变:
此时访问后台的路径从127.0.0.1:7070变为127.0.0.1:4200/wdzl_service,原本的做法是由nginx监听4021端口,将4201转发到4200上,监听到/api就转发成后台路径并返回路径,但是,该做法并没有成功,反而会使前端报请求后台接口404的错。
现在的做法是将前端使用的域名改成了wdzl_service,测试通过。
更多推荐
所有评论(0)