前言:
当我们写了一个酷酷的程序,贼有成就感,却只能在127.0.0.1...本机环回地址上自己体验。若是我想让好朋友们也看看,我们就可以把程序部署到云服务器上,这样子每个人都可以通过自己电脑访问我们的程序了。
一、前期准备-云服务器环境搭建
1.云服务器购买:
云服务器厂商自己选择,每一家基本都有免费体验的,这边建议是都体验一遍嘿嘿。
我这次体验的是这家:
2.操作系统选择:
推荐Linux,开源,稳定,安全。
(选择Ubuntu)
3.得到公网Ip和重设密码
购买好之后会收到短信,提示公网IP、和用户名
控制台上也可以查看:
密码可以设置得稍微复杂一点。
二、怎么连接云服务器
云服务器其实就是遥远的某个地方,有一台实体的主机,我们要与这远程的主机进行连接,可以使用终端软件。我用的是Xshell
1.下载xshell
![]()
下载 -> 安装 -> 登录页面输入邮箱注册 -> 邮箱里点击链接
即可使用,很方便,不需要认证等。
2.连接
![]()
连接后看见这个命令行就是连上了:
三、配置云服务器环境
1.安装 Java 环境(JDK)
sudo apt-get update #更新软件包
#查找jdk包
apt list |grep "jdk"
#安装jdk
sudo apt install openjdk-17-jdk #选择Y
java -version #验证、查看jdk版本
2.安装并配置数据库(如 MySQL)
#查找安装包
apt list |grep "mysql-server"
#安装mysql
sudo apt install mysql-server //选择Y
sudo systemctl status mysql #查看MySQL状态
默认的MySQL安装不安全,我们要修改配置。
# sudo mysql_secure_installation #安装安全设置
对照输入红色部分。
a: 是否设置验证密码组件
Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y
b:设置密码强度
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
c:安装有⼀个匿名用户, 允许任何⼈登录MySQL. 是否删除匿名用户?
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
d:仅应允许root从'localhost'连接
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
e:默认情况下, MySQL带有⼀个test数据库, 是否删除?
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
f:是否现在加载配置, 使刚才的修改⽣效?
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
3.配置防火墙规则(开放端口)
在控制台,找到服务器,并点进去
a:安全组(这个是阿里云的叫做安全组,别的有可能叫做防火墙)
四、构建云服务器的数据库
设置复制粘贴快捷键。可以实现从windows这边复制过去的。
进入数据库:
mysql -uroot -p # root是用户名
然后输入密码(输入的时候是看不见滴)回车。
然后就像平时用数据库那样用命令行构建数据库。
这边建议是在windows写好所有语句并校验好语法,一起全部复制过去。
五、打包SpringBoot项目并上传到云服务器
tips:打包前注意检查程序配置文件中数据库密码是否与云服务器数据库的密码一样。
(这里其实还可以通过修改pom文件等操作来区分几个版本,篇幅有限,下一篇再讲)
1.防止打包失败,先跳过Test代码:
2.强刷 -> clean ->package
3.打包成功并找到文件
打包成功标识:
文件位置:
找到jar包。
4.上传到云服务器
在Xshell命令行输入:
安装
lrzsz,
使用lrzsz
在服务器和本地之间快速传输文件apt-get install lrzsz
新建文件夹:
mkdir new_folder #文件名自定义
查看当前目录文件:
ls
进入文件夹:
cd new_folder
然后:直接从拖动本地文件到窗口,有进度条,进度条完成上传成功。
六、运行程序
1.运行程序:
nuhup:⽤于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
java -jar xxx.jar:(注意空格)运行 Java 应用程序的命令,xxx替换成自己包的名称
&:这个符号将命令放到后台运行。这样你可以继续在当前终端会话中执行其他命令,而不需要等待 Java 应用程序完成。
nohup java -jar xxx.jar &
2.查看程序是否在运行:
ps -ef|grep java
现在 ,即使我们退出Xshell,程序也会一直运行,Xshell只是我们与远程主机沟通的工具而已,nuhup指令已经部署到远程主机了。
七、验证程序
在自个浏览器访问项⽬,形如:http://IP:Port/blog_login.html
平时怎么访问就怎么访问,只是把环回IP地址改成公网IP。
八、部署中命令行常用指令
查看程序是否在运行:
ps -ef|grep java
发起网络请求:
curl http://127.0.0.1:8080/blog_login.html #自个修改网址
查看当前正在使用的端口号及其对应的进程:
netstat -tuln | grep LISTEN
检查服务器本地防火墙:
sudo ufw status
如果 UFW 正在运行,并且没有开放 8080
端口,你可以使用以下命令开放它:
sudo ufw allow 8080/tcp
sudo ufw reload
ls #列出目录内容
cd 目录 #切换目录
pwd # 显示当前目录路径
kill PID #终止指定进程
killall 进程名 #终止所有指定名称的进程。
最后,其实我整个部署过程中遇到了很多问题,但其实都是可以解决的!要善于借助人工智能和网络的力量哦~~~