平时我们开发完一套系统,如果其他人需要访问,类似于我们现在访问百度,那就需要部署服务器。
通常来说部署服务器,需要手动的部署服务器,首先要安装系统的环境,就拿JAVA说吧,包括JDK/mysql/nginx等等
超级麻烦。
偶然发现 一个部署神器:宝塔部署。
可以在线安装、在线部署非常方便。
今天给大家带来一个手把手将Java项目部署到宝塔的教程。
我们要在自己的服务器中安装宝塔面板,首先进入宝塔官网
https://www.bt.cn/new/index.html
点击“复制命令”按钮

将命令复制到 xshell(链接服务器的一个工具,在xshell中执行命令就跟在linux服务器中执行命令效果一样)的远程执行窗口中 ,回车后执行命令 等待些时间 就会生成宝塔面板的ip地址 用户名 密码了 。

然后我们就可以到浏览器中输入生成的ip到地址栏中回车,就可以登录宝塔面板了


那完整的部署一个前后端分离的java项目到宝塔面板并能成功访问都包含哪几个步骤呢?
具体的步骤包括:
一,安装mysql
二,安装JDK
三,安装Nginx
四,打包
4.1 前端打包
4.2 后端打包
五,访问项目
第一步 安装mysql
点击“软件商店” 在软件列表中找到 mysql 如果此时未安装的话 我们点击mysql选项 最右侧的 “安装”按钮来进行安装 (我的因为已经安装了,因此仅显示“更新、设置和卸载”,否则仅会显示“安装”)

然后在点击左侧的“数据库” 选项看 再点击“添加数据库”在弹窗中输入数据库名 例如:novel_sx 密码是自动生成的 访问权限选择所有人 点击“保存”后

我们就添加了一个数据库 然后我们还需要往新建的库中导入数据库表 这样程序才能正常的链接库 项目才能启动 。

在这里呢我教大家用数据库链接工具navicate远程链接数据库的方式进行导入库表 ,但还有一步我们需要做 那就是到宝塔面板的 “安全”选项卡中 点击“添加端口规则”在弹框中的 端口位置输入3306 点击 确定后 这样的话 我们才能在navicate中链接到我们宝塔面板中新建的数据库 否则的话连不上。

打开navicate(一个可以链接数据库的工具) 复制宝塔的ip 到 “主机名或ip地址”处 端口填写3306 用户名填写你在宝塔创建数据库的时候的用户名 例如:novel_sx
密码填写创建好的密码即可 图中打码部分 点击“测试链接” 如果弹出“连接成功” 说明咱已经用navicate成功链接到在宝塔里建立的数据库了

下一步我们可以通过Navicat链接我们的数据库,navicat是可视化的数据库。
官网Navicat图形界面 | 功能全面的数据库管理工具
也可自行百度使用不同版本
点击左下角的连接测试,如果显示连接成功,才是真正连接好了,否则重新搞。

然后 点击“确定” 后就会看到线上的数据库表 例如“novel_sx” 然后我们再点击转储sql文件 到电脑中 找到我们的sql文件 导入即可

第二步:配置nginx
到软件商店中安装“nginx” 我用的是1.22版本的(我的因为已经安装了,因此仅显示“更新、设置和卸载”,否则仅会显示“安装”)

安装完后点击“设置”按钮对nginx进行设置 在配置文件中配置上我们要解析的网站以及后台服务保存后 重启nginx即可通过域名访问项目

其中root路径就是前端项目在宝塔面板中的路径

最后附上 nginx配置文件代码
worker_processes
2;
events
{
# 每个工作进程的最大连接数
worker_connections
1024;
}
http
{
# WebSocket连接升级映射
map
$http_upgrade
$connection_upgrade{
default upgrade
;
# 默认升级连接
''
close;
# 空值则关闭连接
}
gzip
on;
# 开启gzip压缩
gzip_min_length
500k;
# 最小压缩文件大小(500k以下不压缩)
gzip_comp_level
9;
# 压缩级别(1-9,9最高)
gzip_types
text/
plain application
/
javascript application
/
x-javascript
text/
css application
/
xml text
/
javascript application
/
x-httpd-php
;
# 压缩文件类型
gzip_vary
on;
# 根据Accept-Encoding头动态返回gzip或普通内容
# 配置禁用 gzip 条件,支持正则,此处表示 ie6 及以下不启用 gzip(因为ie低版本不支持)
gzip_disable
"MSIE [1-6]\\."
;
server_tokens
off;
# 隐藏Nginx版本号
underscores_in_headers
on;
# 允许header中使用下划线
keepalive_timeout
65;
# 保持连接的超时时间
# compression-webpack-plugin 配置
#修改为合适的超时时间,单位为秒
# 代理相关超时设置
proxy_connect_timeout
90;
# 连接后端服务器超时时间
proxy_send_timeout
90;
# 发送请求到后端的超时时间
proxy_read_timeout
90;
# 从后端读取响应的超时时间
server
{
listen
8080;
# 监听8080端口
server_name
localhost;
# 服务器名称
root
/www/wwwroot/vue/dist;
# 网站根目录
#vite打包文件读取配置开始
# 包含MIME类型定义文件
include
mime.
types
;
# 自定义MIME类型
types
{
application/
javascript mjs
;
}
#vite打包文件读取配置结束
location
/ {
# 尝试按顺序查找文件:$uri → $uri/ → /index.html
try_files
$uri
$uri/ /
index
.html;
}
# API接口代理
location
/api/ {
# 代理到后端服务(8083端口)
proxy_pass
http
://localhost:8083/;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header
X-Forwarded-Proto
$scheme;
}
# 文件接口代理
location
/api/
file
{
# 代理到后端文件服务
proxy_pass
http
://localhost:8083/api/file;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header
X-Forwarded-Proto
$scheme;
}
#强制https
# if ($scheme = http ) {
# return 301 https://$server_name$request_uri;
# }
}
# 第二个server块:域名HTTP服务(80端口)
server
{
# 监听80端口
listen
80;
# 服务器域名
server_name
zhongxuan2020.com;
# zywhbook.com;
# zhongxuan2020.com;
# root /www/wwwroot/vue/dist;
#vite打包文件读取配置开始
# include mime.types;
# types
# {
# application/javascript mjs;
# }
#vite打包文件读取配置结束
# 主location块
location
/ {
# 反向代理到本机的8080端口(前端服务)
proxy_pass
http
://localhost:8080;
# 关闭代理重定向
proxy_redirect
off;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
}
# API接口代理
location
/api/ {
# 代理到后端服务(8083端口)
proxy_pass
http
://localhost:8083/;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header
X-Forwarded-Proto
$scheme;
}
# 文件接口代理
location
/api/
file
{
# 代理到后端文件服务
proxy_pass
http
://localhost:8083/api/file;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header
X-Forwarded-Proto
$scheme;
}
#强制https
# if ($scheme = http ) {
# return 301 https://$server_name$request_uri;
# }
}
server
{
# 监听443端口,启用SSL和HTTP/2
listen
443 ssl
http2;
# 服务器域名
server_name
zhongxuan2020.com;
# SSL证书路径(宝塔默认路径)
ssl_certificate
/www/
server
/panel/vhost/cert/www.zhongxuan2020.com/fullchain.pem;
ssl_certificate_key
/www/
server
/panel/vhost/cert/www.zhongxuan2020.com/privkey.pem;
# SSL协议配置
ssl_protocols
TLSv1.
2 TLSv1
.3;
# 加密套件配置
ssl_ciphers
EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:
!MD5
;
# 优先使用服务器端的加密套件
ssl_prefer_server_ciphers
on;
# SSL会话缓存设置
ssl_session_cache
shared:SSL:10m;
# SSL会话超时时间
ssl_session_timeout
10m;
# 主location块
location
/ {
# 反向代理到本机的8080端口(前端服务)
proxy_pass
http
://localhost:8080;
# 关闭代理重定向
proxy_redirect
off;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
}
# API接口代理
location
/api/ {
# 代理到后端服务(8083端口)
proxy_pass
http
://localhost:8083/;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header
X-Forwarded-Proto
$scheme;
}
# 文件接口代理
location
/api/
file
{
# 代理到后端文件服务
proxy_pass
http
://localhost:8083/api/file;
# 设置代理头信息
proxy_set_header
Host
$host;
proxy_set_header
X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header
X-Forwarded-Proto
$scheme;
}
# 其他配置…
}
}
第三步 打包
3.1打包后台java项目
这里呢我们用idea打包maven项目,在此之前要把配置文件中的数据库链接修改为线上的地址, 打开idea找到右侧的maven选项卡 先双击“clean” 按钮 稍等片刻后 再 双击“package” 按钮 但看到控制台输出“BUILD SUCCESS”按钮后 就说明我们打包成功了


我们找到项目的target目录发现项目已经打包完成了 就是以jar为结尾的那个文件就是打包好的项目

然后我们将这个jar包拖入到宝塔面板中我们已经建立好的文件夹中 点击“开始上传” 等待上传完成即可 例如:novel里放的是后台系统 vue文件里放的是前端系统 宝塔的路径 /www/wwwroot/novel


3.2打包前台vue项目
到前端项目的文件夹中打开cmd 运行 npm run build 命令 等待2-3分钟后 就会生成一个dist文件夹 将该文件夹压缩后上传到宝塔面板中我们已经建立好的文件夹中 点击“开始上传” 等待上传完成即可 例如:novel里放的是后台系统 vue文件里放的是前端系统



第四步 添加java项目到宝塔面板
点击“网站”->“添加java项目” 如图配置即可
项目路径 选择咱后台项目上传的路径双击进去后找到对应的jar包 例如:novel…..jar 点击确认即可
端口号 填写你在springboot项目中配置的端口号 例如:8083


注意事项:
部署java项目的时候要安装jdk ,这个时候我们点击“添加JDK信息”按钮.

在弹出的方框中我们找到项目对应的jdk 点击右侧的“安装”按钮 等待片刻后即可成功安装jdk

还有得放行8083端口号 到“安全”选项中 点击 “添加端口规则“ 在弹出的框中 填入8083 端口 点击”确定“即可
同理你要开启其他的端口,一定也要在这里记得添加端口,才能放行该段路口。

最后一步是到 “网站”选项卡中 找到新添加的项目 点击“启动”按钮 后 稍等片刻 再点击右侧的“设置”按钮

在弹出的方框中 点击“日志管理” 当看到端口“8083” (我的项目的端口) 后就说明项目启动成功了



