新建网站部署流程


1. 新建 Node 服务,指定端口并代理前端静态资源

操作步骤:
  1. 初始化 Node 项目
    mkdir my-website && cd my-website
    npm init -y
    npm install express
    
  2. 创建 app.js(示例代码)
    const express = require('express');
    const app = express();
    const PORT = 3000; // 指定服务端口// 代理前端静态资源(假设前端文件在 `dist` 目录)
    app.use(express.static('dist'));// 处理前端路由(如单页应用)
    app.get('*', (req, res) => {res.sendFile(__dirname + '/dist/index.html');
    });app.listen(PORT, () => {console.log(`Server running on http://localhost:${PORT}`);
    });
    
  3. 测试服务
    node app.js
    
    访问 http://服务器IP:3000 确认服务正常运行。

2. 上传前端项目到指定目录

操作步骤:
  1. 构建前端项目(以 Vue/React 为例)
    npm run build  # 生成 `dist` 或 `build` 目录
    
  2. 上传到服务器
    scp -r ./dist user@服务器IP:/path/to/my-website/
    
    • 确保目录结构与 Node 服务的 express.static 路径一致。

3. 使用 PM2 代理 Node 进程

操作步骤:
  1. 全局安装 PM2
    npm install pm2 -g
    
  2. 启动服务并设为守护进程
    pm2 start app.js --name "my-website"
    
  3. 设置开机自启
    pm2 startup
    pm2 save
    
  4. 常用命令
    pm2 logs my-website      # 查看日志
    pm2 restart my-website   # 重启服务
    

4. 新增服务器二级域名(A记录解析)

操作步骤:
  1. 在域名管理平台(如阿里云DNS、Cloudflare)添加A记录
    • 主机名subdomain(如 blog
    • 记录值:服务器公网IP
    • TTL:默认(600秒)
  2. 验证解析生效
    ping subdomain.your-domain.com
    

5. 开放服务器端口并设置防火墙

操作步骤:
  1. 检查端口占用
    sudo netstat -tulnp | grep 3000
    
  2. 开放端口(以UFW为例)
    sudo ufw allow 3000/tcp   # 放行Node服务端口
    sudo ufw enable           # 启用防火墙
    sudo ufw status           # 验证规则
    
  3. 云服务器安全组(如AWS/阿里云)
    • 在控制台添加入站规则:允许 TCP 3000

6. 配置 Nginx 反向代理

操作步骤:
  1. 创建 Nginx 配置文件
    sudo nano /etc/nginx/conf.d/my-website.conf
    
  2. 配置内容(示例)
    server {listen 80;server_name subdomain.your-domain.com;location / {proxy_pass http://localhost:3000;  # 转发到Node服务proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}# 可选:静态文件直接由Nginx处理location /static {alias /path/to/my-website/dist/static;}
    }
    
  3. 测试并重启 Nginx
    sudo nginx -t   # 检查语法
    sudo systemctl restart nginx
    

7. 访问调试与日志排查

操作步骤:
  1. 访问二级域名
    浏览器打开 http://subdomain.your-domain.com,检查页面和网络请求。
  2. 查看服务日志
    pm2 logs my-website          # Node服务日志
    sudo tail -f /var/log/nginx/error.log  # Nginx错误日志
    
  3. 常见问题
    • 502 Bad Gateway:检查 Node 服务是否运行、端口是否匹配。
    • 403 Forbidden:确认 Nginx 有权限访问 dist 目录(chmod 755)。
    • DNS未生效:等待解析或本地修改 hosts 文件临时测试。

补充优化建议

  1. HTTPS 配置
    使用 Let’s Encrypt 免费证书:
    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d subdomain.your-domain.com
    
  2. 静态文件缓存
    在 Nginx 配置中添加缓存策略:
    location /static {expires 365d;add_header Cache-Control "public";
    }
    
  3. 进程监控
    使用 pm2 monit 实时监控资源占用。

流程图

新建Node服务
上传前端资源
PM2守护进程
解析二级域名
开放端口
Nginx反向代理
访问调试

按此流程操作,即可完成从代码到线上服务的完整部署!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序数据库IoTDB结合SeaTunnel实现高效数据同步

益、基本概念介绍 1.1 Apache IoTDB Apache IoTDB是一款专为工业物联网设计的时序数据库管理系统,集数据收集、存储、管理与分析于一体,满足海量数据存储、高速读取及复杂数据分析需求。其架构包括时序文件(TsFile)、数据库引擎…

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…

RFID推动新能源汽车零部件生产系统管理应用案例

RFID推动新能源汽车零部件生产系统管理应用案例 一、项目背景 新能源汽车零部件场景 在新能源汽车零部件生产领域,电子冷却水泵等关键部件的装配溯源需求日益增长。传统 RFID 溯源方案采用 “网关 RFID 读写头” 模式,存在单点位单独头溯源、网关布线…

C#封装HttpClient:HTTP请求处理最佳实践

C#封装HttpClient:HTTP请求处理最佳实践 在现代的.NET应用程序开发中,与外部服务进行HTTP通信是一项常见需求。HttpClient作为.NET框架中处理HTTP请求的核心组件,为我们提供了强大而灵活的API。然而,直接使用原生的HttpClient可能…

【Redis/2】核心特性、应用场景与安装配置

文章目录 一、初识 Redis1.1 Redis 概述1. Redis 简介2. Redis 的发展历程 1.2 Redis 核心特性1. 高性能2. 丰富的数据类型3. 持久化4. 原子操作5. 主从复制6. 高可用性与分布式7. 内存存储与低延迟8. 灵活的过期策略9. 事务支持10. 简单的 API总结 1.3 Redis 应用场景Redis 适…

AI大模型在测试领域应用案例拆解:AI赋能的软件测试效能跃迁的四大核心引擎(顺丰科技)

导语 5月份QECon深圳大会已经结束,继续更新一下案例拆解,本期是来自顺丰科技。 文末附完整版材料获取方式。 首先来看一下这个案例的核心内容,涵盖了测四用例设计、CI/CD辅助、测试执行、监控预警四大方面,也是算大家比较熟悉的…

【HTML】HTML 与 CSS 基础教程

作为 Java 工程师,掌握 HTML 和 CSS 也是需要的,它能让你高效与前端团队协作、调试页面元素,甚至独立完成简单页面开发。本文将用最简洁的方式带你掌握核心概念。 一、HTML,网页骨架搭建 核心概念:HTML通过标签定义内…

Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot

Redis 集群报错 CROSSSLOT Keys in request dont hash to the same slot 的原因及解决方案 1. 错误原因 在 Redis 集群模式下,数据根据 哈希槽(Slot) 分散存储在不同的节点上(默认 16384 个槽)。当执行涉及多个 key …

.Net Framework 4/C# LINQ*

一、什么是 LINQ LINQ 是一种在 C# 等编程语言中集成的查询功能,它允许开发者使用编程语言本身的语法进行数据查询,而不是嵌入式的字符串 SQL 语句。LINQ 查询可以应用于对象、XML 和数据库等多种数据源。 二、LINQ 查询的基本构成 LINQ 查询通常包含以…

【docker】容器技术如何改变软件开发与部署格局

在当今数字化时代,软件开发与部署的效率和灵活性至关重要。就像古人云:“工欲善其事,必先利其器。”Docker 作为一款强大的容器技术,正如同软件开发领域的一把利器,极大地改变了应用的开发、交付和运行方式。本文将深入…

MySQL的优化部分介绍

1、定期维护表: ANALYZE TABLE t_order_package; OPTIMIZE TABLE t_order_package; -- 每月在低峰期执行 2、数据归档(如果create_time较旧): -- 归档旧数据到历史表 INSERT INTO t_order_package_archive SELECT * FROM t_or…

Go基本语法——go语言中的四种变量定义方法

前言 在go语言中,定义一个变量有四种方式,本文单从语法的层面来介绍这几种方式 单变量定义方法 1.var 变量名 类型,不进行初始化 例如,定义一个变量a后为其赋值,并且打印其值,运行结果如下 //1.不进行…

C++ 对 C 的兼容性

C 对 C 语言的兼容性是有限且有条件的,并非完全无缝兼容。这种兼容性主要体现在语法、标准库和运行时特性上,但存在一些关键差异和不兼容点。以下是详细分析: 一、C 对 C 的兼容性表现 1. 语法兼容:大部分 C 代码可直接编译 基…

ES6 核心语法手册

ES6 核心语法手册 一、变量声明 关键字作用域是否可重定义是否可修改特性let块级作用域❌✅替代 var 的首选const块级作用域❌❌声明常量(对象属性可修改) // 示例 let name "Alice"; name "Bob"; // ✅const PI 3.14; // PI …

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架

1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…

gRPC协议

目录 1. gRPC协议介绍及构成 协议分层 协议关键字段 2. 示例&#xff1a;Greeter 服务 步骤1&#xff1a;定义 .proto 文件 步骤2&#xff1a;生成代码 3. Java代码示例 依赖配置&#xff08;Maven pom.xml&#xff09; 服务端实现 客户端实现 运行流程 关键机制 …

深度学习 w b

在深度学习中&#xff0c;权重 w 和 偏置 b 是神经网络的核心参数&#xff0c;它们的形态&#xff08;shape&#xff09;取决于网络结构和数据维度。以下是关于 w 和 b 的详细解析&#xff1a; 1. 数学表示与物理意义 权重 w&#xff1a; 连接神经元之间的强度&#xff0c;决定…

el-table 树形数据,子行数据可以异步加载

1、 <el-tableborder:header-cell-style"tableStyle?.headerCellStyle"ref"tableRef":data"tableData"row-key"id":default-expand-all"false" // 默认不展开所有树形节点:tree-props"{ children: children, hasC…

Vue中渲染函数的使用

Vue中渲染函数的使用 1. render函数2. h()的使用3. render函数和h函数的区分 vue中的渲染函数&#xff1a; 1.template2.render函数3.jsx -> js extension(jsx也是编译成render函数&#xff0c;可编程能力更强) 1. render函数 1.1. 认识h函数 1.1.1. Vue推荐在绝大多数情况…

【氮化镓】GaN HMETs器件物理失效分析进展

2021 年 5 月,南京大学的蔡晓龙等人在《Journal of Semiconductors》期刊发表了题为《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多种物理表征技术及大量研究成果,对 GaN HEMTs 的常见失效机制进行了系统分析。文中先介绍失效分析流程,包括使…