**
后端JAVA项目上云笔记
**
入学前为老师打工,从一个对后端毫不了解的小白,到一个仍然毫不了解却能写代码的小白。
后端编写参考资料:
** B站视频:https://www.bilibili.com/video/BV1sJ411579s?share_source=copy_web
后端上云参考资料:
** 创建新的用户
1. https://blog.csdn.net/u014264373/article/details/88560207
2. https://www.cnblogs.com/irisrain/p/4324593.html
** 环境配置**
1. 安装java8:云服务器安装jdk1.8详细步骤_猫街上的钻石女王的博客-CSDN博客_云服务器安装jdk
2. 安装mysql,远程连接数据库:腾讯云服务器安装mysql_喑的博客-CSDN博客_腾讯云服务器安装mysql
云服务器安装MySQL详细指南__William_Cheung的博客-CSDN博客_云服务器安装mysql
** 代码打包**
1. 用Spring Boot进行后端开发(一):将Spring Boot项目部署到腾讯云服务器(CentOS)并且成功运行_m0_37640648的博客-CSDN博客
2. JAVA后端一键部署服务_点点的博客-CSDN博客_java一键部署
正式笔记
这次项目里我直接使用学长的云服务器,所以需要在云服务器上新建一个自己的账户
连接云服务器:
- 使用Xshell和Xftp
- 直接在Xshell里建立会话即可,Xshell里可以直接打开Xftp
服务器常用命令
-
ls 查看此目录下所有文件夹的名称
-
cd … 返回上一个文件夹
-
cd // 返归根目录
-
cd file 查看指定的文件夹 (file是你自己指定的文件夹的名称)
-
tar zxvf file 解压你指定的gz包 (file是你自己指定的gz包的名称)
-
vi file 修改文件,(file是指定修改的文件名称)
-
:wq保存并退出,用于修改文件
创建新的用户:
- 创建另一个组:sudo groupadd 【组名】
- 添加用户,分配组,配置用户文件路径:sudo useradd -d 【用户登录时的起始目录】 -g 【用户所属分组】 -s 【用户登陆后所使用的shell】-m 【用户名】
- 设置密码:sudo passwd 【用户名】
ps:写命令的时候,不用带上【】
配置Java8:
-
官网下载JDK 1.8 linux版本,记住,要tar格式的
-
打开xftp,建立连接后,直接把tar包拖进目标文件夹,进行上传
-
cd进入目标路径,使用命令:tar -zxvf 【包名】对包进行解压
-
配置环境变量:
1.当前用户vim ~/.bashrc
(i:进入编辑,esc键:进入正常模式,:wq:保存并退出) 插入export JAVA_HOME=/usr/lib/java/JDK/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=. : : :${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH2.所有用户
sudo vi /etc/profile
(i:进入编辑,esc键:进入正常模式,:wq:保存并退出) 插入export JAVA_HOME=/usr/lib/java/JDK/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=. : : :${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
ps:当遇到readonly错误时,使用:wq!进行强制保存,一般来说也能够修改成功,如果实在不行,建议使用root账号
安装mysql:
暂时先看上面的教程吧,我使用的云服务器是学长的,已经有了数据库,日后遇到,再回来写
使用navicat远程连接mysql:
直接新建连接,写好ip和用户名密码即可连接,然后就可以在navicat上远程操控云服务器上的数据库啦,贼方便!
代码打包
由于jar包比war包对于小白而言方便很多,不用在云服务器上安装tomcat,所以打的是jar包。
具体区别看这里
使用intelliJ idea进行打包
将pom.xml文件中的<packaging>war</packaging>删除,从而将打包方式由war改为jar
看此教程的第六点
云服务器运行代码
- 使用xftp上传jar包
- 让代码运行:在包所在的路径下使用命令java -jar 包名.jar
- 让代码一直运行:执行命令 nohup java -jar XXXX.jar &,其中XXXX.jar表示代码包,nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。其中&表示当前窗口关闭后,程序后台运行,每一次运行的结果都会保存在nohup.out文件,输入exit退出终端窗口。没有&就会变为在当前ssh窗口,关闭窗口或执行Ctrl+C退出程序运行。
- 关闭过程:执行命令ps -ef | grep java,列出java执行的后台进程,接下来执行kill -9 xxxx关闭进程,其中-9表示无条件关闭。
- 直接退出xhsell连接,退出连接不代表程序退出运行,但是无法得知每一次访问后端的数据过程与连接出现问题。
本次教程结束,日后会继续更新!
过程中遇到的问题:
- 文件名内不能够带有冒号。
- 文件路径最后要带上“\”以表示存储在最后一个文件夹内。
- 云服务器环境最好与本地环境一致,低版本的数据库不能够返回空值。
- 函数内的参数顺序最好与数据库一致,否则不知道会在哪里出错。
- Mapper层对数据库的操作只想返回最多一条信息时,在sql语句末尾加上limit 1。
- 注解很重要,需要学习,当代码逻辑没有问题,却找不到出错原因的时候,大概率是注解没加。
- 当想要同时使用@RequestParam和@RequestBody时,就两个都不用,就可以了。
- @RequestParam可以多用,但@RequestBody只能用一个。
- 所有的Controller层都需要加上@RestController注解。
- @RequestMapping用于在Controller层指定接口路径名。
- Service层的所有实体类必须要加上@Service注解。
- 所有实现接口的实体类都要加上@Override注解用于接口实现的检验
- @Autowired 是一个注释,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。当该类有一个自动构造方法时,可以不使用这个注解,但如果没有就必须加上,详细参考@Autowired注解总结 - 简书 (jianshu.com)
- 在进行参数类型和参数名字更新时,需要注意Controller层接受的参数在修改参数名字的时候,相应的set函数内的接受的参数的名字要和postman中发送的参数名字相同。
- 有必要学习一下数据库的语句知识,可以提高速度