React项目部署 - Nginx配置

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

React项目部署 - Nginx配置

本文关键字:React、打包、部署、Nginx、配置

文章目录

  • React项目部署 - Nginx配置
    • 一、本地准备
      • 1. 项目构建
      • 2. 数据转储
    • 二、文件上传
      • 1. SFTP连接
      • 2. 资源解压
      • 3. 数据同步
    • 三、服务部署
      • 1. Nginx安装
      • 2. Nginx配置
      • 3. 访问启动

一、本地准备

本文将介绍React项目部署访问的流程,使用Nginx方式,并列出一些可能会遇到的问题,以Ubuntu系统为例。

1. 项目构建

当项目完成开发,准备测试或部署上线时,首先需要打包,在项目的根目录执行以下命令:

npm run build

然后会看到项目根目录下产生了一个build文件夹,基本结构如下:

接下来我们把整个build文件夹压缩,准备上传。可以使用zip格式,需要使用unzip来解压,或者使用tar.gz格式。

2. 数据转储

部署时有时需要同步一些本地数据,这里一并记录一下,以MySQL为例:

  • 使用Navicat工具

选中需要转储为sql文件的数据库【右键】,按以下步骤操作:

再选择结构和数据【Structure and Data】,选择一个保存位置,就完成了。

  • 使用命令导出

使用自带的mysqldump来进行数据导出,直接在命令窗口中执行,不要使用mysql客户端登录。

mysqldump -u 用户名 -p 数据库名 > '/path/to/save/sql' 

详细可以参考:数据迁移的几种方式 - MySQL数据库。

二、文件上传

准备好前端项目的压缩包和数据库文件后可以准备上传了,可以使用FTP工具直接进行界面化操作,这里介绍纯命令方式。

1. SFTP连接

和SSH连接一样,使用sftp打开一个文件传输会话,如:

sftp user@hostname

登录后正常使用ls或cd等命令,切换到目标路径后,使用put命令上传,直接将本地文件的完整路径填入即可。

2. 资源解压

使用unzip或tar -zvxf来解压上传的build压缩包:

unzip build.zip
tar -zvxf build.tar.gz

得到build文件夹后等待Nginx安装配置完成后使用。

3. 数据同步

导入MySQL数据时,先通过mysql客户端建立连接:

mysql -uroot -p

然后创建一个数据库,注意编码一致,并切换到该数据库下:

CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
use dbname;

然后使用source命令执行已经上传的sql文件:

source /path/to/read/sql;

三、服务部署

1. Nginx安装

  • apt安装

可以直接使用包管理工具来安装:

sudo apt update
sudo apt install nginx

用这种方式安装后可以通过已注册的系统服务方式来调用,并可以开启自动启动:

sudo systemctl start nginx
sudo systemctl enable nginx
  • 手动安装

使用包管理工具来安装的前提是有足够的权限来操作,如果只是一个普通的用户,并且不能获得相关的权限可以使用编译安装:

wget https://nginx.org/download/nginx-1.25.2.tar.gz
tar -zvxf nginx-1.25.2.tar.gz
cd nginx-1.25.2
./configure --prefix=/path/to/install/nginx
make && make install

如果需要添加SSL支持,可以在安装配置时添加以下选项【可能需要手动配置libssl-dev等】:

./configure --prefix=/path/to/install/nginx --with-http_ssl_module
  • 手动运行

使用手动方式安装的nginx使用以下方式控制启停:

/path/to/nginx/sbin/nginx
/path/to/nginx/sbin/nginx -s stop

2. Nginx配置

安装nginx后,进入到安装目录的conf文件夹,找到nginx.conf文件,更新配置:

server {listen       8080;server_name  localhost;location / {root   /path/to/nginx/build;try_files $uri /index.html;index  index.html;}}

以上是主要需要修改的内容,server下还有其它的配置可以忽略,有需要则修改。

  • 注意事项
    • listen:如果使用普通用户,一般没有1024端口以下的使用权限,在配置时需要注意。
    • location-root:指定映射路径,指定到React文件的解压目录
    • try_files:用于解决手动刷新页面时显示404的问题

配置完成后,我们将之前解压的React项目build文件夹移动到nginx中就可以了,或者在配置时直接指向解压路径。

mv /path/to/build /path/to/nginx

3. 访问启动

更新Nginx配置文件后,使用以下命令重新加载:

nginx -s reload

如果是手动安装方式,需要进入到nginx安装目录的sbin下执行,或者配置环境变量后使用。

  • 直接访问

如果使用的是公网服务器,并且方便直接访问,在配置好网络安全组后,就可以通过公网IP和相应的端口直接访问了。

  • 本地访问

第二种方式是使用SSH隧道,只有自己能够访问到,或者说有服务器登录权限的人才可以访问,适用于比较严格和私密的测试。建立隧道后,在本地访问相应的端口【localhost:8080】,就会自动进行转发,需要注意的一点,React项目要访问的服务端也需要建立隧道进行转发,否则会有跨域问题。

ssh -L 8080:hostname:8080  -N user@hostname

如果希望在后台执行可以添加-f参数,但是要终止相关进程时要手动查找进行关闭。

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

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

相关文章

GB28181学习(六)——实时视音频点播(数据传输部分)

GB28181系列文章: 总述:https://blog.csdn.net/www_dong/article/details/132515446 注册与注销:https://blog.csdn.net/www_dong/article/details/132654525 心跳保活:https://blog.csdn.net/www_dong/article/details/132796…

GPT系列论文解读:GPT-2

GPT系列 GPT(Generative Pre-trained Transformer)是一系列基于Transformer架构的预训练语言模型,由OpenAI开发。以下是GPT系列的主要模型: GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer…

企业微信机器人对接GPT

现在网上大部分微信机器人项目都是基于个人微信实现的,常见的类库都是模拟网页版微信接口。 个人微信作为我们自己日常使用的工具,也用于支付场景,很怕因为违规而被封。这时,可以使用我们的企业微信机器人,利用企业微信…

【数据结构】排序(1) ——插入排序 希尔排序

目录 一. 直接插入排序 基本思想 代码实现 时间和空间复杂度 稳定性 二. 希尔排序 基本思想 代码实现 时间和空间复杂度 稳定性 一. 直接插入排序 基本思想 把待排序的记录按其关键码值的大小依次插入到一个已经排好序的有序序列中,直到所有的记录插入完为止&…

程序三高的方法

程序三高的方法 目录概述需求: 设计思路实现思路分析1.1)高并发 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,c…

全志ARM926 Melis2.0系统的开发指引⑤

全志ARM926 Melis2.0系统的开发指引⑤ 编写目的8. 固件修改工具(ImageModify)使用8.1.界面说明8.2.操作步骤8.2.1. 配置平台8.2.2. 选择固件8.2.3. 选择要替换的文件8.2.4. 替换文件8.2.5. 保存固件 8.3.注意事项8.4.增加固件修改权限设置8.4.1. 概述8.4.2. 操作说明8.4.2.1.打…

竞赛选题 机器视觉目标检测 - opencv 深度学习

文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 &#x1f5…

Jetpack生命周期感知组件ViewModel

ViewModel Jetpack ViewModel是Android Jetpack组件库中的一个组件,用于帮助开发者管理UI相关的数据和状态。ViewModel的主要作用是存储和管理与UI相关的数据,以及处理UI的状态变化。 使用ViewModel可以解决以下问题: 避免配置变更&#x…

【JavaScript】相等运算符(== 和 ===)

如果x和y的类型相同,JavaScript会用equals 方法比较这两个值或对象。 没有出现在表格中的情况都会返回 false。(表格中的方法都是内部规定的) 对于 toNumber 方法: 对于 toPrimitive 方法: // 举个例子: c…

用JMeter对HTTP接口进行压测(一)压测脚本的书写、调试思路

文章目录 安装JMeter和Groovy为什么选择Groovy? 压测需求以及思路准备JMeter脚本以及脚本正确性验证使用Test Script Recorder来获取整条业务线上涉及的接口为什么使用Test Script Recorder? 配置Test Script Recorder对接口进行动态化处理处理全局变量以…

W25Q128芯片手册精读

文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…

SRT服务器SLS

目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTPFLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了…

用go获取IPv4地址,WLAN的IPv4地址,本机公网IP地址详解

文章目录 获取IPv4地址获取WLAN的IPv4地址获取本机公网IP地址 获取IPv4地址 下面的代码会打印出本机所有的IPv4地址。这个方法可能会返回多个IP地址,因为一台机器可能有多个网络接口,每个接口可能有一个或多个IP地址。 package mainimport ("fmt&…

GPX可视化工具 GPX航迹预览工具

背景 当我们收到别人分享的航迹文档,即gpx文档时,如何快速的进行浏览呢?我们可以使用GIS软件来打开gpx文档并显示gpx中所记录的航迹,例如常用的GIS软件有googleEarth, Basecamp, GPXsee, GPX E…

超详细DeepLabv3 介绍与使用指南 – 使用 PyTorch 推理

DeepLab 模型首次在 ICLR 14 中首次亮相,是一系列旨在解决语义分割问题的深度学习架构。经过多年的迭代改进,谷歌研究人员的同一个团队在 17 年底发布了广受欢迎的“DeepLabv3”。当时,DeepLabv3 在 Pascal VOC 2012 测试集上实现了最先进的 (SOTA) 性能,在著名的 Cityscap…

VC6 WIN32,Dialog为主窗口编程

VC6是Microsoft非常经典的开发环境,尤其是Windows API方式开发,自从Quick C for win以来基本保持着同样的风格和API,在它上面做习练很不错。下面是习练完成的界面,它是在自动创建的WIN32 application模板下,增加一个Di…

Linux shell编程学习笔记4:修改命令行提示符格式(内容和颜色)

一、命令行提示符格式内容因shell类型而异 Linux终端命令行提示符内容格式则因shell的类型而异,例如CoreLinux默认的shell是sh,其命令行提示符为黑底白字,内容为: tcbox:/$ 其中,tc为当前用户名,box为主机…

Postman使用实例

Postman使用实例 实体类Emp package com.example.springboot_postman.pojo;import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.*; import j…

基于SpringBoot的图书进销存管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 图书类型管理 商品退货管理 客户信息管理 图书添加 客户添加 应收金额 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实…

c语言练习78:执⾏操作后的变量值

字符串函数汇总 1. strlen :计算字符串的⻓度。 2. strcpy :将⼀个字符串复制到另⼀个字符串中。 3. strcat :将⼀个字符串连接到另⼀个字符串的末尾。 4. strcmp :⽐较两个字符串是否相等。 5. strncmp :⽐较两个…