首页 > 其他分享 >记录首次在云服务器部署spring boot项目,并实现域名访问

记录首次在云服务器部署spring boot项目,并实现域名访问

时间:2023-02-27 20:23:28浏览次数:72  
标签:访问 spring boot nginx 域名 服务器 docker 安装

第一次写博客,对初次服务器部署配置做一个记录,写的有错或者纰漏欢迎指正

目录


前言

情况是这样的,年前老师教过我们部署项目到虚拟机,我最近突然想到为什么不能部署到服务器上,用域名访问,我手中刚好有服务器,也有域名。

所以
我看了很多文章,因为我不知道域名解析到服务器后,服务器应该怎样去绑定
以前都是直接拿bt一键绑定,没有去深究过具体,在看了大量文章后,略懂了一点,直接开始实战


一、服务器准备

因为之前虚拟机部署是用的centos7加docker,所以在服务器上也继续用这两个,熟悉一点
我用的是腾讯云的服务器,之前系统上有bt面板,而且有其他东西,所以备份后重装了,重装系统页面有docker容器的镜像,放在以前的话,我会选择先重装centos,再手动安装docker,但是这次我直接用了腾讯的镜像,体验一下

ps:之前学习的时候,docker容器是需要改仓库地址的,不然下载巨慢,但是用国内的服务器自带的docker的话是不用改仓库的,因为仓库地址都在中国

在这里插入图片描述


服务器上除了docker以为,为了项目能运行,还需要一些其他东西

jdk
redis
MySQL

二、安装需要的东西

1.jdk

因为我项目用的jdk是1.8,所以这里我也安装1.8

yum -y list java*

获取到的列表中下载了java-1.8.0-openjdk.x86_64

 yum install -y java-1.8.0-openjdk.x86_64

安装结束后检查一下安装情况,和Windows一样

java -version

2.redis

redis我电脑上用的其实是5,服务器上我也不知道装的哪个版本,因为我是直接拉取的,没有加版本号,应该区别不大,如果后期有问题再换版本
现在有了docker就可以用这个命令直接从镜像仓库拉取,速度也会快很多

docker pull redis

拉取完成后查看一下镜像,是可以看到拉取的镜像的

docker images

安装完成后需要设置自启动

docker update redis --restart=always

然后配置启动参数,因为服务器只放一个项目,所以直接映射到6379

docker run -p 6379:6379 --name redis -d redis redis-server

然后查看一下启动情况

docker ps

3.MySQL

项目驱动是8.0的,这次我加上了版本号下载,我害怕会下载低版本的

docker pull mysql:8.0.25

和redis一样,需要设置自启动

docker update mysql --restart=always

然后启动,启动参数的话,我也没具体了解,大概就是docker run是启动命令,-p是映射端口用的,-e后面是初始化的账号和密码,其他的就不懂了,有空再了解了解

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456  -d mysql:8.0.25  --lower_case_table_names=1

到这里基本上需要的都安装完了,与域名有关的后面再写

部署项目

这一步的话就简单了,就是上传jar包,然后直接用java命令执行。
但是这样有个不好的地方,就是ssh断开或者关了窗口,服务也就停了,运行的话,应该可以写个Linux定时执行命令来实现每天定时运行,然后到点中断,这个后面再学习一下

忘了,还有数据库

三.域名访问

其实刚开始是我把这个想复杂了,域名解析直接解析到服务器公网就行了,然后域名加项目设定的端口号就可以访问了,我一直在想域名解析过来,服务器怎么绑定到项目的事,但是到这里好像瞬间懂了,域名解析前,公网ip加端口号是可以直接访问项目的,域名解析后域名加端口号也可以访问,那就说明这里域名代替了ip,通过不同端口实现访问不同项目,不加端口号是访问不到的。
现在我不希望端口显示,我希望可以直接用域名就能访问到项目,剩下的可以用nginx做反向代理来实现了

nginx安装

在/usr/local文件夹下创建nginx文件夹,用来存放安装包

安装nginx需要安装编译环境
GCC-C++
openssl
zlib
pcre

草鸟教程上是把命令写成了一句话

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

感觉不容易理解
对我这种菜鸟,还是拆分成四句容易看懂,不过效果是一样的
安装c++

yum install gcc-c++

安装ssl,这个好像我暂时用不到,但是以防没有这个运行不了,也还是安装一下把

yum install -y openssl openssl-devel

安装pcre

yum install -y pcre pcre-devel

安装zlib

yum install -y zlib zlib-devel

然后就可以下载nginx了

wget https://nginx.org/download/nginx-1.19.9.tar.gz

安装我参考了Linux安装nginx这篇文章,写的很详细(我上面安装命令也是和这个一样的)

安装的话就不提了,看这个文章就行

但是文章第六条和第七条可能不是那么好理解,有二义性,容易理解为只是查看一下安装位置,sbin还在之前的目录
这个地方其实是查找到安装位置,然后切换到安装位置才能看到这个sbin文件夹
在这里插入图片描述

尤其注意后面端口开放,我在虚拟机测试的时候,安装完也是因为端口没开发,访问不了,幸好大佬提到了这一点,不然又要费老大劲去查了(感谢大佬)

实际服务器部署的时候,我这个端口是开放的,就没有再做修改

nginx启动以后访问ip,不加端口号可以看到这个内容就是没有问题了,端口号是默认的80
在这里插入图片描述
现在只需要把端口号改成项目的端口号,隐藏端口,并且用域名来访问,举个例子,例如项目本地访问是localhost:8080,隐藏端口后就成了localhost,再用域名访问就是www.xxx.com,后面就不再出现端口号了

nginx安装后默认就是隐藏端口号的,所以不需要修改
然后就是代理域名,这里我依旧遇到了问题

我的项目端口是8080,在另外一个窗口也已经启动了项目,ip访问正常,域名加端口号也是正常的,唯独域名访问只能出现默认的nginx页面

在这里插入图片描述
我的server块是这样配置的,之前有文章提到需要改hosts文件不确定是否与这个有关系

在hosts文件里面加了域名也没有变化

后来跟老师排查了一下,发现我犯了个低级错误,我修改的是解压位置的,而不是安装位置的配置文件

重新修改以后访问发现还是无法访问,带80端口也访问不到默认页面了,直接报502错误(现在也不确定原因,有人指点一下吗)
在这儿卡了一下午,第二天我安装另外一个方法,新建了一个nginx.conf,指定为配置文件,curl了一下,各个端口都是拒绝连接,然后我把指定的配置文件删了,又确认了一遍,确认nginx.conf和hosts文件没有问题之后。我启动了项目,这时候我curl一下发现居然可以直接通过域名访问了。

想了想,应该是昨天重载没有刷新,也有可能是我浏览器缓存没有更新,回想一下,我昨天修改配置以后用的都是重载命令,也可能与这个有关系。

这是我最后改的内容
在这里插入图片描述

展示一下最终成果,做个记录

在这里插入图片描述

总结

这次的内容是我这几天在学习的内容,做了一个实战,包括文章都是边实战边写出来的,所以前前后后光写就写了三天,过程中也遇到一些其他小问题,卡住之后就查百度,看社区,看各种平台的文章,不过最后也总算是成功了,文章里只写了一部分遇到的问题,其他的都是一些简单问题,很容易排查,还有操作也只写了一些对我而言的重点,基础的就没写。

对于一些技术点,可能我的理解有误,写的不对,欢迎指导。

标签:访问,spring,boot,nginx,域名,服务器,docker,安装
From: https://www.cnblogs.com/julys08/p/17161728.html

相关文章

  • 【Spring】BeanFactory
    (181条消息)BeanFactory简单介绍_Lin_Dong_Tian的博客-CSDN博客_beanfactory 一、 BeanFactoryBeanFactory,以Factory结尾,表示它是一个工厂类(接口), 它负责生产......
  • 【Spring】FactoryBean
    (181条消息)FactoryBean详解_MiaSanMiaRL的博客-CSDN博客_factorybeanFactoryBean也叫做Bean工厂,是用于生产Bean对象的类FactoryBean的使用首先我们要明确,FactoryBean......
  • 【Spring】BeanFactory和FactoryBean有哪些区别
      区别说实话,他俩除了名字比较像以外,好像没有其他共同点了。「BeanFactory和FactoryBean有哪些区别?」BeanFactory是一个最基础的IOC容器,提供了依赖查找,依......
  • SpringBoot 搭建微服务初体验
    (SpringBoot搭建微服务初体验)前言大家好,微服务是现在面试中必不可少的一项技能了,掌握微服务,不仅能够加薪升职,还能在面试中,底气十足,不怯场,不怕被压薪资。所以今天就特意......
  • 【Spring】spring中创建bean的方式
    (181条消息)spring中创建bean的方式_清华大咖的博客-CSDN博客 (1)基于xml配置bean(2)使用@Component派生注解(3)使用@Configuration和@Bean注解1、常见的使用xml中set......
  • 【Spring】@Import注解
    (181条消息)@Import注解_ZmyCoder的博客-CSDN博客_@import 1、@Import注解须知@Import只能用在类上,@Import通过快速导入的方式实现把实例加入spring的IOC容器中......
  • springboot中redis使用和工具
    application.properties#Redis相关配置spring.data.redis.host=localhost#端口spring.data.redis.port=6379#reids数据库索引spring.data.redis.database=0Red......
  • springboot脱包部署
    <plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration>......
  • spring aop切面说明
    execution:处理JoinPoint的类型,例如call、execution(*android.app.Activity.on**(..)):这个是最重要的表达式,第一个*表示返回值,*表示返回值为任意类型,后面这个就是典型的......
  • springboot条件注册Condition注解
    环境识别importorg.springframework.context.annotation.Condition;importorg.springframework.context.annotation.ConditionContext;importorg.springframework.c......