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

记录首次在云服务器部署spring boot项目,并实现域名访问第一次写博客,对初次服务器部署做一个记录,写的有错或者纰漏欢迎指正文章目录前言一、服务器准备二、安装需要的东西1.jdk2.redis3.MySQL部署项目三.域名访问总结在看.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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


前言

看到这个写作页面的时候我是懵的,居然还有模板(我像个土包子一样)

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

所以
我看了很多文章,因为我不知道域名解析到服务器后,服务器应该怎样去绑定
以前都是直接拿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一下发现居然可以直接通过域名访问了。

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

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

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

在这里插入图片描述

总结

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186499.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月3日 上午9:00
下一篇 2022年10月3日 上午9:00


相关推荐

  • 关于参数thresh的理解(pd.dropna(thresh=n))

    关于参数thresh的理解(pd.dropna(thresh=n))书上的表达:假设你只想保留包含一定数量的观察值的行,可以使用thresh参数来表示。嗯嗯嗯….有些模棱两可。摸索了一番,终于理解了。格式:df.dropna(thresh=n)简单的理解:这一行除去NA值,剩余数值的数量大于等于n,便显示这一行。1.先创建数组,代码如下:1importnumpyasnp2from…

    2025年6月30日
    4
  • CentOS7中配置网络连接[通俗易懂]

    CentOS7中配置网络连接[通俗易懂]    刚在VMware安装好的CentOS7,默认安装是没有开启配置网卡信息的,所以连不上网。尝试用两种配置来让CentOS7开启联网功能,一种是直接打开网络功能自动获取ip,会在设定的网段下面随机分配一个ip,另一种是设置固定ip,出于某些特殊的需求,例如要在局域网内做端口映射,需要将虚拟机设置成使用固定的局域网IP,即使虚拟机重启了,其局域网ip仍然不变。一、自动获取ip  …

    2022年5月27日
    36
  • cgal使用_cgal库

    cgal使用_cgal库CGAL5.3-手动:在Windows上使用CGAL(使用VisualC++)

    2025年8月13日
    3
  • 基于情感词典的情感打分

    基于情感词典的情感打分原理我就不讲了 请移步下面这篇论文 包括情感词典的构建 各位读者可以根据自己的需求稍作简化 以及打分策略 程序对原论文稍有改动 论文在这里下载 基于情感词典的中文微博情感倾向性研究 陈晓东 华中科技大学 大家可以上百度学术搜索下载 本文采用的方法如下 首先对单条微博进行文本预处理 并以标点符号为分割标志 将单条微博分割为 n 个句子 提取每个句子中的情感词 以下两步的处理均以

    2026年3月18日
    2
  • php的opendir,phpopendir函数与opendir语法

    php的opendir,phpopendir函数与opendir语法opendir 语法 opendir path context 目录 功能说明 打开目录句柄 opendir 函数打开一个目录句柄 则该函数返回一个目录流 否则返回 false 来看个 opendir 列出目录下所有文件实例 代码如下 dirs 指定当前上当 if is dir dirs hanld opendir dirs while file re

    2026年3月19日
    1
  • wifi reaver

    wifi reaverPIN码的格式很简单,八位十进制数,最后一位(第8位)为校验位(可根据前7位算出),验证时先检测前4位,如果一致则反馈一个信息,所以只需1万次就可完全扫描一遍前4位,前4位确定下来的话,只需再试1000次(接下来的3位),校验位可通过前7为算出,就可暴力验证出pin码。所以即时你不知道校验位怎么计算,那你最多尝试10000+1000+10次=11010次就可以获得PIN,从而获得wifi…

    2022年6月4日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号