【Java】购买腾讯云服务器,并部署Spring boot项目,再到部署自己的个人博客,域名备案,安全连接配置

2023-05-16

云服务器部署

  • 一、购买腾讯云服务器
  • 二、简单配置
    • 2.1 进入控制台
    • 2.2 配置防火墙
    • 2.3 配置访问密码
  • 三、远程ssh登录连接服务器
  • 四、云服务器安装软件
    • 4.1 安装JDK
    • 4.2 安装MySql
    • 4.2 安装Redis
  • 五、Spring boot项目部署
    • 5.1 项目建立
    • 5.2 上传项目到云服务器
    • 5.3 运行
    • 5.4 停止
  • 六、绑定域名
    • 6.1 购买域名
    • 6.2 配置域名
    • 6.3 域名备案
    • 6.4 申请SSL
    • 6.5 公安系统备案
  • 七、博客部署
  • 参考

一、购买腾讯云服务器

  1. 腾讯云双11有活动,可以看秒杀活动,新用户2核4G只需要70一年,198三年,网站为链接,选择纯净版Centos 7.6版本即可。我买了三年的很划算
    在这里插入图片描述2. 没活动也可以选择腾讯学生云服务器,网站为链接,我选择的是第一个,你也可以根据流量来选择,然后立即购买后点立即购买,里面选Centos版本,没有域名可以+9元选购一个域名在这里插入图片描述
    点击管理控制台,进入管理界面

二、简单配置

2.1 进入控制台

进入控制台,点击购买的服务器->管理,上面还会有公网IP,后序需要使用的
在这里插入图片描述

2.2 配置防火墙

如果想从外网访问服务器的某个端口,我们需要为这个端口设置添加规则

  1. 点击防火墙按钮,添加规则
    在这里插入图片描述
  2. 因为我们需要搭建个人博客,因此需要开放80端口,还需要访问MySql还需要添加3306端口,图中已添加80端口,再来添加下3306端口,选择MySql(3306)进行快速添加
    在这里插入图片描述

2.3 配置访问密码

配置服务器登录密码,即远程登录root时的密码,按图中顺序点击配置
在这里插入图片描述
然后关机后就可以通过新密码远程登录了

三、远程ssh登录连接服务器

windows下可以使用Xshell、Putty、MobaXterm等软件,我一般使用MobaXterm
设置如下
在这里插入图片描述
配置完成后,点击左侧刚才新建的session,输入密码即可连接,连接后显示如下图所示,这个软件的左侧是文件区,右侧是命令行区
在这里插入图片描述

四、云服务器安装软件

4.1 安装JDK

yum -y list java*可查看可用版本

  1. 命令行输入 yum install -y java-1.8.0-openjdk-devel.x86_64进行安装
  2. 完成后,输入 java -version测试是否安装成功,成功返回如下
    在这里插入图片描述

4.2 安装MySql

只是部署简单Spring boot不使用MySql,可以暂不安装,直接看部署Spring boot

  1. 执行rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm下载MySql 5.7安装包
    在这里插入图片描述
  2. 执行yum install -y mysql-server进行安装
  3. systemctl start mysqld 启动mysql
  4. 依次执行systemctl enable mysqldsystemctl daemon-reload设置mysql自启动
  5. mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个临时的默认密码,执行cat /var/log/mysqld.log查看临时密码
    在这里插入图片描述
  6. 执行mysql -u root -pXXXXX进行登录,XXXXX为更改的密码
    在这里插入图片描述
  7. 更改密码
    执行SHOW VARIABLES LIKE 'validate_password%';查看密码策略
    执行set global validate_password_length=6; 设置策略 密码长度为6
    执行set global validate_password_policy=0; 设置策略为LOW 0
    执行alter user user() identified by "XXXXX";更改密码
    执行GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'XXXXX' WITH GRANT OPTION;开放外网访问,XXXXX为更改的密码
    执行flush privileges;刷新权限在这里插入图片描述
    Ctrl+D退出MySql命令行
  8. 修改Mysql数据库的编码格式为UTF-8
    执行vi /etc/my.cnf,在最前面添加如下
    [client]
    default-character-set=utf8
    
    执行systemctl restart mysqld重新启动即可
  9. 至此重新登陆,输入密码即可完成mysql的访问
    在这里插入图片描述
  10. Idea中测试连接云服务器上的MySql
    在这里插入图片描述
    这样这个数据库不仅仅可以云服务器中的进程进行访问,也可以在其他任何连网设备上通过ip地址+端口号+用户名+密码进行访问

4.2 安装Redis

只是部署简单Spring boot不使用Redis,可以暂不安装

  1. 下载解压
    执行yum install -y gcc
    执行wget http://download.redis.io/releases/redis-5.0.14.tar.gz
    执行tar -zxvf redis-5.0.14.tar.gz解压

  2. 编译
    执行cd redis-5.0.14
    执行make

  3. 安装
    执行make install PREFIX=/usr/local/redis

  4. 前台启动
    执行cd /usr/local/redis/bin/
    执行./redis-server

  5. 后台启动
    执行cp /root/redis-5.0.14/redis.conf /usr/local/redis/bin/,从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
    执行vi redis.conf修改 redis.conf 文件,把 daemonize no 改为 daemonize yes
    在这里插入图片描述
    执行./redis-server redis.conf后台启动

  6. 设置开机启动
    执行vi /etc/systemd/system/redis.service
    添加如下内容

    [Unit]
    Description=redis-server
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    设置开机启动,依次执行
    systemctl daemon-reload
    systemctl start redis.service
    systemctl enable redis.service
    执行ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis 创建redis命令软连接
    测试 redis
    在这里插入图片描述

五、Spring boot项目部署

5.1 项目建立

  1. 创建项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 编写简单程序
    在这里插入图片描述
  3. 本地浏览器测试
    在这里插入图片描述
  4. 更改项目从80端口启动
    在这里插入图片描述
  5. 打包
    在这里插入图片描述
    成功后出现这个包
    在这里插入图片描述

5.2 上传项目到云服务器

  1. 先在文件管理器中打开
    在这里插入图片描述
  2. 拖到文件到服务器
    在这里插入图片描述

5.3 运行

  1. 执行netstat -anp | grep 80查看是否有80端口被占用
    如下图80未被占用,3306被mysqld占用
    在这里插入图片描述

  2. 执行cd ~ 切换到home目录

  3. 执行java -jar TestHomePage-0.0.1-SNAPSHOT.jar前台运行,关闭终端后进程也会被关闭,因此一般用nohup java -jar TestHomePage-0.0.1-SNAPSHOT.jar > log.file 2>&1 &后台运行,上面的2 和 1 的意思如下:
    0 标准输入(一般是键盘)
    1 标准输出(一般是显示屏,是用户终端控制台)
    2 标准错误(错误信息输出)
    将运行的jar 错误日志信息输出到log.file文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行

    运行结果如下

  4. 输入公网IP远程浏览器访问
    在这里插入图片描述

5.4 停止

  1. 执行netstat -anp | grep 80查看80端口占用进程,并记住进程号
  2. 执行kill pid 停止进程
    在这里插入图片描述

六、绑定域名

6.1 购买域名

购买服务器的时候,选购了域名

6.2 配置域名

  1. 进入域名控制台实名认证
    在这里插入图片描述
    在这里插入图片描述

  2. 点击解析,添加记录
    在这里插入图片描述
    添加记录
    在这里插入图片描述
    在这里插入图片描述
    添加完成后如图
    在这里插入图片描述

  3. 输入域名进入,未备案的域名将在某些IP下无法显示,提示需要备案
    在这里插入图片描述

6.3 域名备案

购买域名72小时后进行备案
参考腾讯云备案手册
备案过程一般为验证备案类型 > 填写备案资料 > 腾讯云审核 > 短信核验(部分省份)> 管局审核 > 备案完成
建议通过微信小程序备案
在这里插入图片描述
备案通过后将收到工业和信息化部网站备案系统发来的邮件,如下图所示,我的备案4天就通过了
在这里插入图片描述
腾讯云也将发来邮件
在这里插入图片描述
进入我的备案查看备案详情
在这里插入图片描述

6.4 申请SSL

  1. 进入域名控制台,点解析
    在这里插入图片描述

  2. 进入新的页面,鼠标移动到SSL,点免费申请
    在这里插入图片描述

  3. 确认后点详情
    在这里插入图片描述

  4. 域名验证
    在这里插入图片描述
    在这里插入图片描述
    通过后
    在这里插入图片描述

  5. 进行一键HTTPS
    在这里插入图片描述
    在这里插入图片描述
    确定后返回如下
    在这里插入图片描述

  6. 刷新后显示,再点击加号,添加cname记录
    在这里插入图片描述
    在这里插入图片描述
    显示生效中
    在这里插入图片描述
    生效后,输入域名后刷新,连接将变为安全的
    在这里插入图片描述
    之前是不安全的
    在这里插入图片描述

  7. 同理添加www的域名
    在这里插入图片描述
    最终,SSL证书控制台的一键HTTPS将出现
    在这里插入图片描述
    并且域名解析记录也会出现如下
    在这里插入图片描述
    稍等几分钟进入www.域名和直接域名都会显示连接是安全的
    等待生效完成,显示如下
    在这里插入图片描述

6.5 公安系统备案

  1. 收到腾讯云发来的公安系统备案通知,需要30天内到全国公安机关互联网站安全管理服务平台进行备案
    在这里插入图片描述
  2. 进入公安备案流程指南查看备案流程,按照流程进行公安系统备案
    填写信息后,等待审核完成
    在这里插入图片描述

七、博客部署

同理打包自己的博客,进行部署,后序补充
可以继续看我的从0开始个人网站建立系列
例如
【Java】从0开始个人网站建立(一)工程建立到登录与认证-Spring boot、Shiro、Mybatis-Plus、MySql

至此,就基本结束了,其他springboot项目或者个人博客都可以通过这种方式部署

参考

SpringBoot项目部署到阿里云服务器详细步骤
记录购买阿里云服务器并成功部署SpringBoot项目的全过程
Centos7安装Redis
参考的很多博客有些较杂糅,或者老旧,本篇实尝试的是较为简洁方法,一步步实际操作并记录,因此较为准确

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Java】购买腾讯云服务器,并部署Spring boot项目,再到部署自己的个人博客,域名备案,安全连接配置 的相关文章

  • js深度拷贝和浅度拷贝的深入理解

    首先我们来说说什么是拷贝 xff1a 就是复制的同时加上了传值 然后问题就来了什么是有深度的什么是浅度的 xff0c 在想要了解我们这个问题之前我们先来了解一下下面的一个知识点 基本类型传递 xff0c 引用类型传递 首先我们来看下基本类型
  • npm的基本使用

    npm的下载 npm的下载其实就是把node js 百度下node官网 下载好了那么npm就附带下载好了 检查是否下载好 window 43 r 后输入cmd打开终端 xff0c 在终端中输入node v xff1b npm v 他们会输出
  • 从 (a==1&&a==2&&a==3) 成立中看javascript的隐式类型转换

    几天上班看到一个题目就是 if a 61 61 1 amp amp a 61 61 2 amp amp a 61 61 3 console log 34 a等于什么才会输出这一句话呢 xff1f 34 当a为什么的时候输出 xff1a a等
  • Bootstrap实用功能总结

    导航栏 xff1a navbar 导航栏容器可以包含以下几个常用组成 xff1a 1 品牌LOGO xff08 navbar brand xff09 2 导航菜单 xff08 navbar nav xff09 3 导航文本 xff08 na
  • 微信小程序的AJAX初次体验

    GET请求 微信小程序用GET传送数据 微信小程序通过 wx request发送ajax请求 wx request url app globalData pubSiteUrl 43 39 user information get infor
  • vue总结系列 ------ 组件之间的传值

    原因 半年前开始学Vue学到了今天 xff0c 也没有机会好好整理一下自己的知识点 xff0c 因为上公司的项目不是依赖于Vue xff0c 还是在用JQ 和文件之间来传递代码 xff0c 所以其实在对vue的学习成面上来讲对我的帮助并不大
  • vue总结系列 --- 插槽slot

    前因 这个是我这个系列的第二篇 这一篇文章我也修改过三次 xff08 2019 9 10 xff09 我是想以vue官方文档为基础 xff0c 来进行理解 xff0c 有人说有官方文档 xff0c 还要写自己的文章干嘛 xff0c 我的用意
  • vue总结系列 --- 生命周期

    前言 在总结其他的时候发现还是应该先复习vue的生命周期 xff0c 所以就先把生命周期先复习完了 经过一系列的视频 xff0c 文档我把我的总结写一下生命周期分为3个阶段 xff1a 创建 xff0c 更新 xff0c 和销毁 我们看图说
  • vue总结系列 ---- 响应式原理

    检测变化 vue是数据驱动的视图框架DOM是通过数据映射的 xff0c 只有数据改变 xff0c DOM才改变 那么数据是怎么来的呢 xff1f 1 来自父元素的属性 xff08 prop xff09 2 来自组件的自身状态 xff08 d
  • Object.defineProperty()的学习了解

    背景 最近在总结vue系列的时候是看到响应原理的时候 看到一个新的知识点也就是我们的标题Object defineProperty 的时候 xff0c 好了话不多说 xff0c 我们来看看这个是怎么使用的 开始 strong Object
  • vue总结系列 ----- 单向数据流

    可能很多人都以为vue的双向绑定其实是错误的 xff0c vue真正的是单向数据流 xff0c vue的双向绑定只不过是语法糖 我的理解是 xff1a model层 xff1a data对象中的数据 xff0c 或后台传过来的数据 view
  • vue总结系列 ---- 在组件上的v-model单向数据流

    背景 目前是在复习vue原理的过程中 xff0c 前端负责人知道我最近在复习vue xff0c 跟我说要我看组件上的v model 我一听本来是不想放在心上的 xff0c 刚好那天晚上没什么事干想看一下 xff0c 毕竟负责人 xff0c
  • ES6 函数扩展

    参数默认值 也就是说现在ES6对函数中的参数添加了默认值 我们在ES5种的处理 function Fn a b b 61 b 34 nodeing 34 return a 43 b console log Fn 34 hello 34 这样
  • ES6 对象扩展

    对象简写 对象中又分了属性和方法的简写 在es5中 xff0c 有这样一种写法 var name 61 34 xiaoqiang 34 var age 61 12 var obj 61 name name age age 在es6中 xff
  • Bootstrap基础学习笔记

    网格系统 row定义一行 col均分列数 xff0c 最多一行12列 每列左右间隙各15px col 1到12 定义在所有屏幕下的列宽 col sm md lg xl 1到12 定义在指定屏幕下该列占据的列宽 xff0c sm 屏幕 gt
  • ES6 Symbol用法

    Symbol用法 什么是Symbol Symbol是es6中一种新增加的数据类型 xff0c 它表示独一无二的值 es5中我们把数据类型分为基本数据类型 xff08 字符串 数字 布尔 undefined null xff09 和引用数据类
  • img标签中的src在绝对引用的时候的问题

    昨天晚上我一个朋友目前在培训 xff0c 他在群里问了下img标签如何绝对路径引用 xff0c 我当时就笑了这个就是培训机构的老师 xff0c 就大概看了一下就告诉我朋友那里错了 xff0c 但是却出来不 xff0c 我就想自己写一个dem
  • 在vue-cli中使用vue-router的学习笔记

    以前不会vue cli的时候学过router xff0c 当时的写法和在vue cli中的写法还是有一些不一样的 xff0c 但是我以后应该还是会用vue的单文件写小程序啊什么的所以我就吧我学习的过程全部记录下来 router创建 那么问题
  • js中bind()使用详情

    前言 最近在在搞React的时候有用到bind 的时候 xff0c 因为他的用法其实我还一直不是特别的清楚 xff0c 所以今天我把bind 他的用法和我遇到的结合起来这样来写一个博客 xff0c 这样应该可以加深自己的印象同时可以来跟好的
  • var let const 详细区别

    用了ES6已经有一段事件了 xff0c 也看了很多文档 xff0c 以前觉得不用写一个文档总结 xff0c 但是经过一段时间的接触以后 xff0c 认为自己还是有必要去吧他们的区别详详细细的总结一下 块级作用域 白话一点就是在 中就是一个块

随机推荐

  • Git 速查表

    配置 git config global user name 34 lt 姓名 gt 34 设置提交者姓名 git config global user email 34 lt 邮箱 gt 34 设置提交者邮箱 这个有什么用呢 xff1f
  • async比Promise好在什么地方

    什么是Promise xff1f Promise是ES6中的异步编程解决方案 xff0c 在代码中表现为一个对象 xff0c 可以通过构造函数Promise来实例化 xff0c 有了Promise对象 xff0c 可以将异步操作以同步的流程
  • css面试题----css测试9

    每个星期6都会去去看张鑫旭直播写一些小demo然后再去吧写每天学习到的东西 xff0c 心得记下来 xff0c 并且会长期去完成这个任务 IT这个东西真的是要去强迫自己学学习一些好的东西 xff0c 多去优化代码 xff0c 而不是去停滞不
  • css面试题----DOM基础测试34

    这个其实是上上个星期张鑫旭直播的内容 xff0c 我吧我不会的内容总结一下 xff0c 从而来分享给大家 题目 第一问 document querySelectorAll 39 a 39 第二问 1 有bug当有这个href属性但没属性值
  • fon in 和 for of 的区别

    for 循环 其实他一般情况下是根据数组 xff0c 类数组的length的属性值去循环 for in 一般的作用是枚举把key枚举出来 xff0c 但是当我们枚举数组 xff0c 或者字符串的时候会把原型上的方法枚举出来 Object p
  • 词云图wordcloud学习笔记

    词云图 也叫文字云 是对文本中出现频率较高的 关键词 予以视觉化的展现 词云图过滤掉大量的低频低质的文本信息 使得浏览者只要一眼扫过文本就可领略文本的主旨 github https github com amueller word clou
  • ++a-a++解析

    有题目当a为1的时候 43 43 a a 43 43 为多少答案为0 我们再输出a这个时候a等于3 为什么呢 xff1f 运算顺序 前置递增 减 大于 数字运算和后置递增 减 大于 比较 布 大于 逻辑 或 且 大于 赋值 好当我们把运算顺
  • sync修饰符的使用

    为什么使用sync 再vue中官网的介绍 xff1a 我们可能需要对一个 prop 进行 双向绑定 不幸的是 xff0c 真正的双向绑定会带来维护上的问题 xff0c 因为子组件可以修改父组件 xff0c 且在父组件和子组件都没有明显的改动
  • vue中 methods computed watch filters区别

    在vue中事件 xff0c 计算属性 xff0c 帧听器 xff0c 过滤器的区别 其实共同点 xff1a 修改数据 事件methods和计算属性computed 作用 xff1a 对数据进行逻辑运算 区别 计算属性是基于它们的响应式依赖进
  • 前端面试题----js基础测试35

    得分 这个题目总共8分的我只有3分 xff0c 但是说实话我写这个题目的时候信心爆棚 xff0c 我觉得我自己应该是写出来的的 xff0c 但是可惜 解析 第一题 正解 xff1a 1 encodeURI 函数假设参数是完整的 URIs x
  • 前端面试题----DOM测试35

    得分 这个题目8分我5分 重新复习 HTML lt form id 61 34 loginForm 34 action 61 34 account login 34 method 61 34 POST 34 gt lt p gt 账号 xf
  • 前端小测---css基础测试10

    得分 总共8分得了6分有一个背景样式没处理好 重点 无js使用details和summary组合动画处理 xff0c 使用max height 0来过渡 HTML lt div class 61 34 container 34 gt lt
  • 前端小测试---- 图片上传

    得分 8分我自己得了4分 第一问 xhr onprogress和xhr upload onprogress的区别 xff1a 这两个都能显示进度百分比 xff0c 但是 xff0c 前者显示的是服务器返回的数据 xff0c 后者是发送给服务
  • js 部分代码注释规范

    普通注释 单行 单行注释 文字和 有一个空格 多行 多行注释 1 总是再多行注释的结束符前留一个空格 使星号对齐 2 不要把注释写再多行注释的开始符 xff0c 和结束符所在行 文档注释 Core模块提供最基础 最核心的接口 文档说明 64
  • js代码优化

    原文 xff1a https dmitripavlutin com unlearn javascript bad coding habits 一 xff1a 不要使用隐式类型转换 大多数运算符 43 61 61 不包括 61 61 61 再
  • Python爬虫基础(一) —— 基本爬虫库的使用

    文章目录 使用urllib库使用request模块发送请求1 使用urlopen urlopen data参数urlopen timeout参数 2 Request 3 高级用法验证代理Cookies 使用error模块处理异常1 URLE
  • Django使用websocket实现实时消息推送和聊天

    websocket简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 WebSocket 使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送数据 在 WebSocket
  • word 使用域对公式进行编号

    需要的快捷键 xff1a alt 43 F9 切换为域代码编辑模式 ctrl 43 A 选中所有再点F9进行域更新 在公式最后面加 1 再回车 xff0c 生成靠右的编号 点中1 的右侧 xff0c 插入 gt 文档部件 gt 域 gt 如
  • 【Linux】(一)深度学习环境多用户共用,配置共用cuda anaconda pycharm,vnc4server创建多用户虚拟xfce桌面

    深度学习环境共用配置 系列文章 一 写在前面问题方法简介 首次配置说明1 新建用户2 安装cuda3 安装anaconda3及pycharm 1 上传安装文件 2 安装anaconda3 3 安装pycharm 4 安装VNC服务所需资源5
  • 【Java】购买腾讯云服务器,并部署Spring boot项目,再到部署自己的个人博客,域名备案,安全连接配置

    云服务器部署 一 购买腾讯云服务器二 简单配置2 1 进入控制台2 2 配置防火墙2 3 配置访问密码 三 远程ssh登录连接服务器四 云服务器安装软件4 1 安装JDK4 2 安装MySql4 2 安装Redis 五 Spring boo