Windows上搭建一个网站(基本生产环境)

前言

本博客记录的是Windows上一次网站搭建的过程,主要是在前端采用的是React,后端采用的是Flask,记录一下生产版本搭建流程和坑点,供有缘人一起进步,当然本博客还存在很多不足。

前端项目构建生产版本

React为例,在终端运行npm run build后,在项目根目录会出现build文件夹

npm run build

build文件夹内的文件:

配置运行前端的服务器(以apache为例)

配置文件(httpd.conf)在apache安装目录下的conf目录内

解除路由转发的限制:

我们在开发环境中可能用到了一些路由转发的中间件,如在React开发中使用http-proxy-middleware(运行在node.js上时使用的),构建了生产版本以后这个是不能再使用了。所以需要找到以下两个模块,关闭注释即可。

添加路由转发的规则:

前端使用的接口是/api/test,后端使用的是/test,后端的运行地址是127.0.0.1:5000,所以设置如下规则。其他路由转发同理。

配置文件最后一行修改超时时间:

apache的超时时间,关系着一些耗时请求。原为60即一分钟,如果apache发出网络请求后在1分钟内没有收到响应,会自己响应一个错误响应。所以需要根据后端耗时操作自行修改:

(这里是因为后端运行图像处理,所以设大了一点,具体的根据自己的实际情况设置即可)

前端运行在服务器上

配置apache的运行端口,如下设置在3000端口,根据自己的需要修改:

在配置文件中找到服务器的网站目录(也可以自己修改):

如果是使用的小皮面板,也可以在小皮面板上设置运行端口,并且查看服务器网站目录:

将前端生产版本(build文件夹内的文件)放入apache的网站目录:

启动服务器,并查看效果:

如图使用的小皮面板启动,但是需要在一个apache上启动多个前端服务的话,还需自行学习一下(因为我偷懒没学习)。也可以自行安装多个apache,分别配置以启动多个服务。小皮面板好像不能启动多个服务器。

查看3000端口,出现前端页面:

启动后端(以Flask为例)

这里还可以进一步升级,使用apache等服务器等运行,配置有一丢丢复杂,试了几次没成功就放弃了,可以自行学习一下。

设定好后端的相关配置,如运行端口,与前端服务器上的路由转发相匹配:

运行后端:

再次打开前端页面,查看和后端通信是否正常:

正常情况下是能完成通信的。至此,你已经完成了一个网站的搭建,如果是租用的公网服务器,只需要再将域名解析到服务器的IP即可。如果你是内网的服务器,你还需要进行如下内网穿透。

内网穿透

找到一个自己喜欢的内网穿透工具:

如果不需要自定义域名的话,市面上大多数内网穿透根据都能满足你,但是需要自定义已购买的域名并且自定义域名不想备案的话,需要内网穿透平台具有香港或国外的节点(目前找到两个, Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器,飞鸽内网穿透官网 (fgnwct.com),也可以自行查找。Tips:前一个应该稳妥一点。两个都买了,依据我使用的情况,后者可能会受限于网络,三台机子,只有一台能成功运行,可能是还需要根据网络进行配置。前者三台机子都成功运行。不过进了群发现,emmm,这两家的群主是一个人。)

按相关官网进行实名认证,购买隧道,购买完成后将隧道的端口修改到前端运行的端口,如3000端口:

 查看内网穿透工具指明的cname地址,登录开通域名的平台,进入控制台修改域名解析,解析到该地址:

 

 填入内网穿透提供的解析地址(CNAME),确定后等待域名解析更新完成。

到开通隧道的内网穿透平台,下载内网穿透客户端。有各种形式,下载自己喜欢的就行,客户端填入隧道ID,启动即可:

进入域名查看效果:

恭喜,你已经拥有一个可以通过域名访问的网站了(Tips:内网穿透注意别掉线咯)。不得不感叹,还是在Linux 上部署项目方便点,不过没办法,显卡在装了Windows的系统上。

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

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

相关文章

SOME/IP 协议介绍(六)接口设计的兼容性规则

接口设计的兼容性规则(信息性) 对于所有序列化格式而言,向较新的服务接口的迁移有一定的限制。使用一组兼容性规则,SOME / IP允许服务接口的演进。可以以非破坏性的方式进行以下添加和增强: • 向服务中添加新方法 …

vite vue3安装element-plus

准备 参考 安装 官网 yarn add element-plus完整引入 如果你对打包后的文件大小不是很在乎,那么使用完整导入会更方便。 main.ts // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import…

DNS1(Bind软件)

名词解释 1、DNS(Domain Name System) DNS即域名系统,它是一个分层的分布式数据库,存储着IP地址与主机名的映射 2、域和域名 域为一个标签,而有多个标签域构成的称为域名。例如hostname.example.com,其…

Git分支管理

愿所有美好如期而遇 目录 理解分支 创建分支 切换分支 合并分支 删除分支 合并冲突 分支管理策略 理解分支 每次提交master都会前进一步,随着不断提交,master分支的线越来越长,而HEAD指向哪条分支就是当前工作的分支。 master分支是我…

NI USRP RIO软件无线电

NI USRP RIO软件无线电 NI USRP RIO是SDR游戏规则的改变者,它为无线通信设计人员提供了经济实惠的SDR和前所不高的性能,可帮助开发下一代5G无线通信系统。“USRP RIO”是一个术语,用于描述包含FPGA的USRP软件定义无线电设备,例如…

系列十、你说你做过JVM调优和参数配置,请问如何盘点JVM系统的默认值?

一、JVM的参数类型 1.1、标配参数 java -versionjava -help 1.2、XX参数 1.2.1、Boolean类型 公式:-XX:或者- 某个属性值 表示开启、-表示关闭 # 是否打印GC收集细节 -XX:PrintGCDetails -XX:-PrintGCDetails# 是否使用串行垃圾收集器 -XX:UseSerialGC -XX:-UseS…

数据挖掘复盘——apriori

read_csv函数返回的数据类型是Dataframe类型 对于Dataframe类型使用条件表达式 dfdf.loc[df.loc[:,0]2]df: 这是一个DataFrame对象的变量名,表示一个二维的表格型数据结构,类似于电子表格或SQL表。 df.loc[:, 0]: 这是使用DataFrame的.loc属性来进行…

Typecho框架漏洞

这里说的框架漏洞只适用于1.2.0版本及以下的版本 这里说的漏洞是xss漏洞,学过渗透的应该都学过,我在这里就不过多阐述了,下面我们直接进入正题 直接在这个地方插入网址,后面再接上html代码即可,代码如下: …

在 el-table 中嵌入 el-checkbox el-input el-upload 多组件,实现复杂业务场景

由于业务场景的复杂性,需实现:在 el-table 表格中 嵌入 el-checkbox 多选框 及 el-input 输入框 及 el-upload 上传组件 ,先附上实现效果图。 从图片可以看出其实就是一个规格可以带有多个属性的规格表,实现此效果需涉及到的知识点…

网页视频下载工具 iTubeGo mac中文版软件特色

iTubeGo YouTube Downloader mac是一款功能强大的YouTube视频下载工具。 iTubeGo YouTube Downloader mac软件特色 多种格式支持:iTubeGo YouTube Downloader可以将YouTube视频下载为多种常见的视频和音频格式,包括MP4、MP3、AVI、FLV、MOV、WMV等&…

【Android】Android Framework系列--CarUsbHandler源码分析

Android Framework系列–CarUsbHandler源码分析 本文基于Android12源码。 CarUsbHandler是Android Car提供的服务之一,其用车载USB连接的场景。 车载USB有其特殊应用场景,比如AndroidAuto、CarLife等。而Android的做法是在其原有的USB服务上&#xff0…

使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)

最近使用 html2canvas导出Table表单为图片,但是转换出的图片被合并的单元格没有显示边框 查了原因是因为我为tr设置了背景色,然后td设置了rowspan,设置了rowspan的单元格就会出现边框不显示的问题。 解决方法就是取消tr的背景色,然…

力扣 hot100 最长连续序列 哈希去重 双指针

128. 最长连续序列 ⭐ AC code class Solution {public int longestConsecutive(int[] nums) {if (nums.length 0)// 特判为空的数组&#xff0c;返回0return 0; // set实现去重HashSet<Integer> set new HashSet<>();for (int x : nums)set.add(x);Object[] a…

Kafka(四)消费者消费消息

文章目录 如何确保不重复消费消息&#xff1f;消费者业务逻辑重试消费者提交自定义反序列化类消费者参数配置及其说明重要的参数session.time.ms和heartbeat.interval.ms和group.instance.id增加消费者的吞吐量消费者消费的超时时间和poll()方法的关系 消费者消费逻辑启动消费者…

ExcelBDD PHP Guideline

在PHP里面支持利用Excel的BDD&#xff0c;也支持利用Excel进行参数化测试 ExcelBDD Use Excel file as BDD feature file, get example data from Excel files, support automation tests. Features The main features provided by this library are: Read test data acco…

【win32_001】win32命名规、缩写、窗口

整数类型 bool类型 使用注意&#xff1a; 一般bool 的false0&#xff1b;true1 | 2 | …|n false是为0&#xff0c;true是非零 不建议这样用&#xff1a; if (result TRUE) // Wrong! 因为result不一定只返回1&#xff08;true&#xff09;&#xff0c;当返回2时&#xff0c…

集合框架面试题

一、集合容器的概述 1. 什么是集合 集合框架&#xff1a;用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容&#xff1a; 对外的接口、接口的实现和对集合运算的算 法。 接口&#xff1a;表示集合的抽象数据…

鸿蒙:实现两个Page页面跳转

效果展示 这篇博文在《鸿蒙&#xff1a;从0到“Hello Harmony”》基础上实现两个Page页面跳转 1.构建第一个页面 第一个页面就是“Hello Harmony”&#xff0c;把文件名和显示内容都改一下&#xff0c;改成“FirstPage”&#xff0c;再添加一个“Next”按钮。 Entry Compone…

Axure9 基本操作(二)

1. 文本框、文本域 文本框&#xff1a;快速实现提示文字与不同类型文字显示的效果。 2. 下拉列表、列表框 下拉列表&#xff1a;快速实现下拉框及默认显示项的效果。 3. 复选框、单选按钮 4. 利用动态面板实现同个按键的不同状态切换

Codewhisperer 使用评价

最近亚⻢逊推出了一款基于机器学习的 AI 编程助手 Amazon CodeWhisperer&#xff0c;可以实时提供代码建议。在编写代码时&#xff0c;它会自动根据现有的代码和注释给出建议。Amazon CodeWhisperer 与GitHub Copilot类似&#xff0c;主要的功能有: 代码补全注释和文档补全代码…