当前位置: 首页 > news >正文

.net+vue+oracle21xe部署教程

Vue + .NET + Oracle 项目部署教程(宝塔 + Docker)

本教程介绍如何将前后端分离项目部署到 Linux 服务器,包含数据库、后端、前端三部分。

环境说明

组件版本
操作系统Linux(Ubuntu/CentOS)
面板宝塔面板
数据库Oracle 21c XE(Docker 部署)
后端.NET 6(独立部署)
前端Vue 2 + Ant Design Vue
容器工具Docker

一、部署数据库(Oracle)

1.1 拉取 Oracle 镜像

由于 Docker Hub 在国内访问不稳定,需要使用镜像加速服务。

推荐:轩辕镜像(10 元可用很久,稳定快速)

官网:https://docker.xuanyuan.run

注册后会获得一个专属镜像域名,格式类似:xxxx.xuanyuan.run

# 使用轩辕镜像拉取dockerpull<你的轩辕镜像域名>/gvenzl/oracle-xe:21-slim

1.2 启动 Oracle 容器

# 创建数据目录sudomkdir-p/opt/oracle/datasudochmod777/opt/oracle/data# 启动容器dockerrun-d\--nameoracle-xe\-p1521:1521\-eORACLE_PASSWORD=<你的密码>\-v/opt/oracle/data:/opt/oracle/oradata\<你的镜像域名>/gvenzl/oracle-xe:21-slim

1.3 等待初始化

# 查看日志,等待出现 "DATABASE IS READY TO USE!"dockerlogs-foracle-xe

初始化大约需要 1-2 分钟,看到DATABASE IS READY TO USE!表示成功。

1.4 创建用户和表空间

# 进入容器dockerexec-itoracle-xe sqlplus / as sysdba

在 SQL*Plus 中执行:

-- 切换到 PDB 数据库(Oracle 21c 必须执行)ALTERSESSIONSETCONTAINER=XEPDB1;-- 创建表空间CREATETABLESPACE<表空间名>DATAFILE'/opt/oracle/oradata/XE/XEPDB1/<表空间名>.dbf'SIZE500M AUTOEXTENDONNEXT100M MAXSIZE UNLIMITED;-- 创建用户CREATEUSER<用户名>IDENTIFIEDBY<密码>DEFAULTTABLESPACE<表空间名>TEMPORARYTABLESPACEtemp;-- 授权GRANTCONNECT,RESOURCE,DBATO<用户名>;-- 退出EXIT;

1.5 导入数据

将 SQL 文件上传到服务器,然后导入:

# 把 SQL 文件复制到容器内dockercp/path/to/your/sql_files oracle-xe:/opt/oracle/oradata/# 进入容器dockerexec-itoracle-xebash# 批量导入cd/opt/oracle/oradata/sql_filesforfin*.sql;doecho"Importing$f..."echo"EXIT"|sqlplus-S<用户名>/<密码>@localhost:1521/XEPDB1 @"$f"done# 退出容器exit

1.6 验证连接

使用 DataGrip 或其他数据库工具连接:

字段
类型Oracle
主机服务器 IP
端口1521
连接类型Service Name
服务名XEPDB1
用户名你创建的用户名
密码你设置的密码

二、部署后端(.NET 6)

2.1 本地发布(独立部署)

在本地项目目录执行:

cdwebapi# 独立部署方式发布(服务器无需安装 .NET)dotnet publish Simple.WebApi/Simple.WebApi.csproj-cRelease-rlinux-x64 --self-containedtrue-o./publish

2.2 修改配置文件

编辑publish/appsettings.json,修改以下内容:

数据库连接(修改 HOST 为 localhost):

"DatabaseConfig":{"DataSource":"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XEPDB1)))","UserId":"<你的用户名>","Password":"<你的密码>"}

跨域配置(添加你的服务器 IP):

"AllowCors":["http://localhost:81","http://<你的服务器IP>"]

2.3 上传到服务器

publish目录上传到服务器:

# 在服务器上创建目录sudomkdir-p/opt/项目名/webapi# 上传 publish 目录到 /opt/项目名/webapi/

2.4 使用 tmux 后台运行

# 创建 tmux 会话tmux new-s<会话名># 进入项目目录并运行cd/opt/项目名/webapi/publishchmod+x Simple.WebApi ./Simple.WebApi# 分离会话:先按 Ctrl+B,松开后再按 D

2.5 验证后端

访问http://<服务器IP>:5216/swagger,能看到 Swagger 文档表示成功。


三、部署前端(Vue)

3.1 修改 API 地址

编辑项目根目录的.env文件:

NODE_ENV=production VUE_APP_PREVIEW=true VUE_APP_API_BASE_URL=http://<服务器IP>:5216/api

3.2 安装依赖并构建

cdweb# 安装依赖(使用淘宝镜像)npminstall--registry=https://registry.npmmirror.com --legacy-peer-deps# 构建npmrun build

构建完成后会生成dist目录。

3.3 通过宝塔部署

  1. 登录宝塔面板
  2. 点击网站添加站点
  3. 填写信息:
    • 域名:填写服务器 IP
    • 根目录:/www/wwwroot/项目名
    • PHP 版本:选纯静态
  4. 点击提交

3.4 上传前端文件

将本地web/dist目录里的所有文件上传到宝塔创建的站点根目录。

3.5 配置 Nginx

在宝塔中点击站点的设置配置文件,添加以下配置:

# Vue Router history 模式(放在 root 配置下面) location / { try_files $uri $uri/ /index.html; } # API 反向代理(放在 server 块内) location /api/ { proxy_pass http://127.0.0.1:5216/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

保存后重启站点或 Nginx。


四、验证部署

项目访问地址
前端页面http://<服务器IP>:端口
后端 APIhttp://<服务器IP>:5216/api/
Swagger 文档http://<服务器IP>:5216/swagger

五、常见问题

Docker 拉取镜像超时

国内访问 Docker Hub 不稳定,使用镜像加速:

# 配置镜像加速(需要 sudo 权限)sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": ["https://你的镜像域名"] } EOFsudosystemctl daemon-reloadsudosystemctl restartdocker

npm install 依赖冲突

使用--legacy-peer-deps参数:

npminstall--registry=https://registry.npmmirror.com --legacy-peer-deps

Oracle 21c 创建用户报 ORA-65096

Oracle 21c XE 是容器数据库,需要先切换到 PDB:

ALTERSESSIONSETCONTAINER=XEPDB1;CREATEUSER<用户名>IDENTIFIEDBY<密码>DEFAULTTABLESPACE<表空间名>;

后端无法连接数据库

检查appsettings.json中的HOST是否为localhostSERVICE_NAME是否为XEPDB1

前端页面刷新 404

确保 Nginx 配置了try_files $uri $uri/ /index.html;


六、tmux 常用命令

# 查看所有会话tmuxls# 进入会话tmux attach-t<会话名># 分离会话# 先按 Ctrl+B,松开后再按 D# 结束会话tmux kill-session-t<会话名>
http://www.gsyq.cn/news/1469157.html

相关文章:

  • Nexus Mods App:5分钟掌握游戏模组管理的终极解决方案
  • spring websocket实现扫码登录
  • 如何在Linux系统上安装Realtek 8852AE Wi-Fi 6驱动:完整指南
  • 国际EMBA怎么选?5大主流国际EMBA项目全方位对比分析
  • 跨境支付AML漏检率骤降81%的秘密(某国有大行Gemini私有化部署内部技术备忘录节选)
  • 终极解决方案:CAD Sketcher 0.27.6安装失败问题深度剖析与修复指南
  • 2026年青春期精华液哪家好:专业TOP5深度解析指南 - 17322238651
  • 华为三层交换机 企业标准完整配置
  • 正则表达式用法
  • 三步解锁音频转字幕新技能:AsrTools终极指南
  • 新手友好:通过快马平台生成嵌入式按键控制LED入门项目代码
  • 2026重庆化工原料优选榜单:氨水/双氧水/草酸/液碱/柠檬酸/葡萄糖酸钠等20+试剂精准批发推荐 - 品牌企业推荐师(官方)
  • 终极改造指南:3分钟将电视盒子变身高性能Linux服务器
  • 【国家级智慧社区认证必过清单】:AI工具合法性、隐私计算合规性、实时响应SLA三重校验表(附可下载模板)
  • 你的TensorFlow真的在‘吃’GPU吗?Win10下用nvidia-smi和任务管理器交叉验证(避坑指南)
  • 2026年控油精华液哪家好:独家TOP5专业精选报告 - 13724980961
  • 营销AI工具配置已进入“秒级失效”时代:3个信号预示你的配置将在Q3失效(附实时健康度自检工具)
  • 亚马逊儿童玩具车F963-23标准
  • TypeScript 从零基础到上岗就业超全学习指南(2026最新)
  • 2026年广州搬家公司行业白皮书:监管落地与消费升级下的正规服务商全测评 - 生活服务
  • Rustix库:Rust 系统编程 的 基石
  • 从数字疲劳到个性表达:如何用光标重塑你的桌面叙事
  • 2026沈阳和平区防水补漏哪家好?住建实地测评权威榜单TOP5|卫生间免砸砖/阳台屋顶/厨卫漏水维修(6月和平区专项调研) - 苏易修缮
  • 3步解锁你的加密音乐:Unlock-Music浏览器解密工具完全指南
  • SuperCLIP:细粒度图像文本对齐的技术突破与应用
  • Path of Building PoE2:如何用数据驱动构建优化你的流放之路2角色
  • Windows 上安装和配置 Codex
  • 零基础极速上手:如何用AI建站工具10分钟搭建一个专业企业官网
  • 深圳劳动纠纷律师支招:企业规章制度合规制定避坑指南 - 从来都是英雄出少年
  • 为什么你会觉得AI离你很远?