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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ubuntu 卸载命令_强制卸载电脑软件

    ubuntu 卸载命令_强制卸载电脑软件Ubuntu命令卸载软件_李柏林的博客-CSDN博客_ubuntu卸载程序1.打开一个终端,输入dpkg–list,按下Enter键,终端输出以下内容,显示的是你电脑上安装的所有软件。2.在终端中找到你需要卸载的软件的名称,列表是按照首字母排序的。3.在终端上输入命令sudoapt-get–purgeremove包名(–purge是可选项,写上这个属性是将软件及其配置文件一并删除,如不需要删除配置文件,可执行sudoapt-getr…https://blog.csdn.net/

  • 在html中加入外部css样式,如何引入CSS样式表?

    在html中加入外部css样式,如何引入CSS样式表?CSS用于修饰网页样式,但是,如果希望CSS修饰的样式起作用,就必须在html档中引入CSS样式表。引入样式表的常用方式有三种,即行内式、内嵌式、外链式,具体介绍如下。1.行内式行内式也称内联样式,是通过标记的Istyle属性来设置标记的样式,其基本语法格式如下:内容标记名>上述语法中,style是标记的属性,实际上任何HTML标记都拥有style属性,用来设置行内式。属性和属性值的书写…

  • file.getcanonicalpath_maven relativepath

    file.getcanonicalpath_maven relativepathThymeleafcontextPath的获取1.在html标签中路径使用@{}会自动添加上下文路径 eg:请求/thymeleaf接口 <ath:href="@{‘/thymeleaf’}"id="contextPath">跳转到thymeleaf</a>2.在js中 eg:请求/thymeleaf接口 //根路径获取相当于jsp的使用${pageContext….

  • 孰能生巧

    孰能生巧

  • pycharm 2021.3永久激活码 3月最新注册码

    pycharm 2021.3永久激活码 3月最新注册码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • java calendar类_Java Calendar类

    java calendar类_Java Calendar类Calendar类概述/***java.util.Calendar类:是一个日历类*Calendar类是一个抽象类,里边提供了很多操作日历字段的方法*如:YEAR、MONTH、DAYOFMONTH、HOUR**Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),*getInstance()方法返回了Calendar类的子…

发表回复

您的电子邮箱地址不会被公开。

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