手把手零经验教你线上部署云服务器

本文从服务器购买到,软件下载安装,环境配置,到项目部署运行,到域名购买和备案、最后到域名访问,手把手来讲述该springboot博客项目的部署

一、服务器购买

之前没在腾讯云或阿里云购买过任何云服务的都可以以新用户折扣租用服务器,两家的服务器价格都差不多,大概100不到一年,300三年。推荐购买三年的因为确实很划算,到时候续费的的话一年都不止300了。

腾讯云购买链接:点击 阿里云购买链接:点击

在这里插入图片描述

二、远程连接到服务器

1.修改购买到的服务器密码

进入购买的实例,如果没有确认你购买的地区,在下面位置修改密码,最好复杂点用记事本记住,忘了也可以重置。 在这里插入图片描述

2.打开远程连接软件

可以使用xshell、finalshell等软件均可,我这里用xshell作为例子

  • 名称:可随意,方便辨识用
  • 主机:复制服务器的公网IP
  • 端口:服务器端口,默认是22s
  • 用户名:没修改就是root
  • 密码:重置时设置的密码 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

三、环境搭建

这里主要是搭建博客所需要的环境,只需要安装jdk和MySQL数据库,为了保证开发环境和部署环境一致,这里安装jdk1.8,MySQL5.7

1.jdk安装两种方式

OpenJDK和JDK区别

1.1 安装OpenJDK并配置到环境变量

这里是以centos为例,如果是Ubuntu要用apt-get

Linux上使用yum命令后,会将OpenJDK安装到/usr/lib/jvm/目录下

yum install java-1.8.0-openjdk java-1.8.0openjdk-devel

配置JDK环境变量 使用vim语句打开文档,输入i进入编辑模式,将文本定位到文件最下方添加下面四行语句,按esc退出编辑模式输入 :wq(前面有个冒号)

vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0.171
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

返回xshell bash窗口让环境变量生效

source /etc/profile
java -version

查看到java版本号就代表安装成功生效了~ 在这里插入图片描述

1.2 从官网安装JDK包

从官网或者这里下载linux版本的tar包 使用xftp连接进行传输,将linux版本的tar包传输到服务器上

在这里插入图片描述

然后执行解压解包指令后,看到当前文件夹下的解压文件

tar -zxvf jdk-8u152-linux-x64.tar.gz

在这里插入图片描述 将解压的文件夹配置环境变量

vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_152
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

然后刷新环境变量,查看版本号,如果显示版本号就是安装成功了

source /etc/profile
java -version

在这里插入图片描述

2.Mysql的安装

2.1 下载Mysql5.7

#下载MySQL安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

#安装yum源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

#查看yum仓库MySQL的启动列表
yum repolist enabled | grep mysql

#安装MySQL数据库
yum install mysql-community-server

2.2 启动Mysql服务

#启动MySQL服务
systemctl start mysqld 

#查看MySQL启动状态
systemctl status mysqld

#设置开机启动
systemctl enable mysqld
systemctl daemon-reload

2.3 重置Mysql登录密码

最好也用记事本记录下来,务必不要使用简单的123456做密码,同时服务器不用的时候关闭3306端口; MySQL安装完成后,在/var/log/mysqld.log文件中给root生成了一个默认密码,可以通过命令查看密码:

grep "temporary password" /var/log/mysqld.log

然后可以使用这个密码登陆MySQL

mysql -uroot -p

输入默认密码登陆数据库,第一次登陆需要重置密码,以下命令重置:

ALTER user 'root'@'localhost' identified by '123456';

2.4 数据库配置

数据库配置是通过/etc/my.cnf文件进行配置,这里配置一下字符集为utf8mb4,打开my.cnf文件:vim /etc/my.cnf ,在文件末尾添加:

# 设置数据库字符集为utf8mb4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
 
init_connect = 'SET NAMES utf8mb4'
 
lower_case_table_names = 1 # 表名不区分大小写
# 修改完成后,重启MySQL服务:
# 重启MySQL
systemctl restart mysqld

通过配置my.cnf可以对数据库进行配置,有一些基本的配置,这里给一篇文章进行参考:mysql数据库配置 my.cnf

2.5 数据库授权

一般我们是需要使用Navicat等可视化程序进行远程连接数据库,而且在家里在外面不同的ip地址,所以一般我会配置允许所有的ip地址进行访问,同时在使用的时候在实例控制台开启3306端口,用完进行关闭保证安全性。

# 登陆数据库
mysql -uroot -p

# 使用数据库
use mysql;

# 设置权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

# 刷新权限
flush privileges;

#退出,重启服务器
service mysqld restart

设置权限那一句: *. *:表示 所有库.所有表 'root'@'%' identified by 'root': 前一个root:表示用户名, %:是指所有访问ip 后一个root:表示数据库密码 通过这一句可以配置远程访问的数据库和访问的IP,博主一般是直接配置'%'所有IP都能访问,因为有时候开发需求会改变IP,如果指定IP的话就不方便,所以配置了'%',一般情况下是将3306端口给关闭,需要远程连接的时候再把3306端口打开,用完就关闭,这样安全些

然后进入实例控制台-点击左侧安全组-点击修改规则 进入规则组 选择拒绝策略0.0.0.0/0的安全组,然后新增22(SSH)和3306(mysql远程连接)端口运行访问 这里的3306我关闭了,需要远程连接的时候自己开启

在这里插入图片描述

四、项目部署

服务器环境搭建好后,就可以将项目打包部署到服务器了,这里采用jar包的方式部署,使用idea打成jar包,然后将jar包上传到服务器在后台运行,就可以用IP进行访问了

1. 打包

点击idea右边的Maven Projects,双击clean,执行完后再双击package

在这里插入图片描述

不出意外,控制台会显示BUILD SUCCESS,并有jar包文件的大小,在target文件夹下面会生成一个myblog-0.0.1-SNAPSHOT.jar的jar包,这个就是要上传到服务器进行部署的jar包。

在这里插入图片描述

2. 部署

将包体用xftp上传到服务器上,注意数据库的地址需要改为服务器的数据库地址,开发环境换成pro 这里使用xshell上传,先用xshell登陆服务器,在服务器中创建一个文件夹用来存放项目

# 创建文件夹
mkdir myblog

# 进入目录
cd myblog

用xftp将文件上传到该目录里面,然后关闭防火墙 服务器需要将防火墙关闭才能访问;我们的博客项目配置的是8080端口,在之前将所有端口都关闭了,所以这里要将8080端口开放

防火墙相关

# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld

开放8080端口 进入服务器控制台安全组规则,添加规则,开放8080端口,开放后如下: 在这里插入图片描述

3.运行jar包

这里让jar包在服务器后台运行,进入jar包文件夹,执行命令运行jar包

# 进入jar包文件夹
cd /home/myblog

# 后台运行jar包
nohup java -jar myblog-0.0.1-SNAPSHOT.jar &

运行后在该文件夹会多出两个文件Log和nohup文件,到时候如果出问题可以使用tail命令查看。 接着就是访问了,输入公网ip:8080即可。

在这里插入图片描述

五、域名购买和网站备案

跳转查看另外一篇关于域名的博客:域名购买、实名、备案、解析到正常访问网站

六、端口映射配置Https访问

我们的项目是部署在8080端口的,所以我们访问http(80端口)、https(443端口)是无法直接访问到我们项目的,所以需要将端口映射即访问80端口转发到8080端口。 这样就需要使用到一项技术nginx反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。这里使用nginx反向代理,将80端口转发到8080端口,需要对nginx进行配置,所以要先下载nginx。同时nginx还可以用来做负载均衡

1.下载安装nginx

# 下载NGINX:
yum install nginx

# 启动nginx:
systemctl start nginx

# 加入开机启动:
systemctl enable nginx

# 查看nginx的状态:
systemctl status nginx

2.配置nginx

此时已经默认已经域名备案完成,dns解析成功,能够通过域名:8080成功访问到博客,而且下载完SSL证书并复制到nginx安装目录下了,如果上述步骤没做请跳转到章节五 默认配置文件我的是在/etc/nginx,根据你安装的路径不同找到对应的conf文件配置,现在咱们来进行配置:打开配置文件

vim /etc/nginx/nginx.conf

在这里插入图片描述

这里我们了解一下几点就可以了:

  • listen:监听https443端口
  • server_name:转发到哪个地址,也就是你的域名地址
  • proxy_pass:代理到哪个地址,也就是要访问的服务器端口地址
  • ssl_*:https的ssl证书文件名称,如果是nginx就要下载对应的文件,可以放在任意位置,只要配置的路径正确即可,这里因为就放在和nginx.conf同级目录,所以直接使用文件名即可。

将上述配置完成退出和保存后,重启nginx服务即可正常访问了

# 重启
nginx -s reload

至此整个博客开发完成,可以正常访问https://endwas.cn,然后就可以将地址发给亲朋好友,让他们来踩一下了~


参考:

  • https://cloud.tencent.com/document/product/400/35244
  • https://www.liaosam.com/difference-of-return-and-rewrite-nginx-301-redirect.html
  • https://www.cnblogs.com/fanwenhao/p/11123400.html
  • https://cloud.tencent.com/document/product/213
  • https://onestar.blog.csdn.net/article/details/107324173;
end
  • 作者:Endwas(联系作者)
  • 发表时间:2021-01-21 14:31
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转博主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者名字和博客地址
  • 评论

    李佳乐
    感谢分享