首页 > 其他分享 >前端项目上线

前端项目上线

时间:2024-05-29 13:02:13浏览次数:9  
标签:index 上线 http 项目 前端 配置 nginx html 服务器

目录

1项目打包

2本地服务器部署

2.1具体操作步骤

2.2解决刷新 404 问题 

2.3请求无法发送问题

3nginx 服务器部署

3.2nginx 配置代理练习

安装nginx

nginx部署启动项目 

3.3nginx 部署前端项目 

4云服务器部署 

本地资源上传 

配置服务器与nginx 


1项目打包

  • ●我们开发用的脚手架其实就是一个微型服务器,用于:支撑开发环境、运行代理服务器等。
  • ●打包完的文件中不存在:.vue、.jsx、.less 等文件,而是:html、css、js等。
  • ●打包后的文件,不再借助脚手架运行,而是需要部署到服务器上运行。
  • ●打包前,请务必梳理好前端项目的ajax封装(请求前缀、代理规则等)。

2本地服务器部署

2.1具体操作步骤

安装express

前提是电脑已经安装了node

新建一个文件夹,执行npm init -y命令,生成package.json,再执行npm add express命令,下载express,成功之后如下图。

每次修改代码时,都要重新启动服务器,比较麻烦,所以提出了热部署(nodemon),安装命令:npm i nodemon -g

最后完整代码如下:

// 引入express
const express = require('express')
// 配置端口号
const PORT = 8088

// 创建一个app服务实例
const app = express()

// 配置静态资源
app.use(express.static(__dirname + '/public'))

// 绑定端口监听
app.listen(PORT, () => {
	console.log(`本地服务器启动成功,http://localhost:${PORT}`)
})

执行命令:nodemon .server.js,浏览器输入http://localhost:8088会出现这个页面: 

2.2解决刷新 404 问题 

问题分析:前端项目的路由,通常分为两种工作模式,分别为:
1hash模式

hash 值又称锚点,通常用于指定网页中的某个位置,例如下面的网址:
央视网_世界就在眼前,其中的#SUBD1605080062959435就是 hash 值,hash 值只在客户端(如浏览器)中使用,是不会带给服务器的,所以使用 hash 模式时,不存在刷新 404 问题。

2history模式 

istory 去掉了URL中的#号,可以让应用的URL看起来更美观,带来的问题就是刷新时,会将前端路由携带给后端,而后端没有对应资源的匹配,就出现了 404 问题。

解决方案一:将前端路由器工作模式改为 hash 模式 —— 不太推荐。

解决方案二:让服务器在收到未配置的GET路由时,都返回index.html即可。 

方案二最终其实是把 url 中的 path,交给了前端路由去处理,具体配置如下

app.get('*',(req,res)=>{
	res.sendFile(__dirname + '/public/index.html')
})

也可以借助connect-history-api-fallback中间件完成配置

const history = require('connect-history-api-fallback');

app.use(history());
// 配置静态资源
app.use(express.static(__dirname + '/public'))

使用connect-history-api-fallback可以让配置更灵活,比如/login临时不需要作为前端路由处理,就可以按照如下方式配置
 

app.use(history({
	verbose:false,
	rewrites:[
		{ from: /^\/login.*$/, to: (context) => context.parsedUrl.path },
	]
}))

2.3请求无法发送问题

问题分析:脱离脚手架后,就没有了代理服务器,无法转发请求到【提供数据】的服务器。
如何解决?—— 在 Node 服务器中借助http-proxy-middleware中间件配置代理,具体配置如下

// 引入createProxyMiddleware
const { createProxyMiddleware } = require('http-proxy-middleware')

// 配置代理中间件
app.use('/dev', createProxyMiddleware({
	target: 'http://sph-h5-api.atguigu.cn',
	changeOrigin: true,
	pathRewrite: {
		'^/dev': ''
	}
}))

3nginx 服务器部署

Nginx(发音为“engine-x”)是一款高性能的 HTTP 服务器和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 最初由 Igor Sysoev 编写,于 2004 年发布。它以其高性能、高稳定性、丰富的功能集和低系统资源消耗而闻名,主要功能有:

  • 1反向代理
  • 2负载均衡
  • 3静态内容服务
  • 4HTTP/2 支持
  • 5SSL/TLS 支持
  • 6高速缓存

3.2nginx 配置代理练习

安装nginx

  • 安装nginx-mac
$ brew install nginx  # mac安装nginx
  • 查看版本-mac
$ nginx -v  # 查看版本
  • 查看nginx-mac
$ brew info nginx #查看nginx

 

注意:mac安装可能遇到的问题

image.png

遇到某个包发生错误,直接使用brew安装这个包,再安装nginx

$ brew install pcre2  # 安装出错的包
$ brew install nginx  # 安装nginx

image.png

 遇到这个错误,可以直接执行该命令,安装对应的工具,再安装nginx

$  xcode-select --install  # 安装对应工具
$  brew install nginx  # 安装nginx

nginx部署启动项目 

  • mac查看nginx的相关目录
brew info nginx #查看nginx
 

mac-nginx安装目录-/opt/homebrew/Cellar/nginx/1.23.3
mac-配置文件路-/opt/homebrew/etc/nginx/nginx.conf 

  • 将打包的文件放置到安装目录/html下

  • mac-启动服务命令
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx #启动命令
 
  • mac-停止服务
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx -s stop  #停止命令
 
  • mac重启服务
$ /opt/homebrew/Cellar/nginx/1.23.3/bin/nginx -s reload  #重启

 

注意: mac版本的nginx的默认端口为8080

3.3nginx 部署前端项目 

整体思路:让nginx充当两个角色,既是 静态内容服务器,又是代理服务器。

修改nginx配置如下,注意nginx的根目录最好不是 C 盘

# 配置nginx根目录
location / {
  root   D:\dist;
  index  index.html index.htm;
}

# 配置代理
location /dev/ {
  # 设置代理目标
  proxy_pass http://sph-h5-api.atguigu.cn/;
}

2修改前端项目,让所有请求都转发给 /dev,随后重新打包

const request = axios.create({
  baseURL:'/dev',
  timeout:10000
})

随后直接访问nginx服务器即可,例如 nginx如果运行在8099端口,则访问:

http://localhost:8099

随后会遇到刷新404问题,追加nginx配置来解决


# 配置nginx根目录
location / {
  root   D:\dist;
  index  index.html index.htm;
  try_files $uri $uri/ /index.html; # 解决刷新404
}
# 配置代理
location /dev/ {
  # 设置代理目标
  proxy_pass http://sph-h5-api.atguigu.cn/;
}

加上这两个“/”就剔除掉了dev 

4云服务器部署 

  • 我们可以在云服务器上借助nginx完成部署,大致流程与本地nginx部署一致
  • 1关于购买云服务器,可选择:阿里云、腾讯云等。
  • 2关于操作系统,看个人习惯,Ubuntu、CentOs、RedHat、都不错。
  • 3购买完成后记得重置密码
  • 4linux 远程操作软件:Xshell、Xftp

5具体配置如下:

●给服务器安装nginx

yum install nginx

将打包后的前端资源放在:/var/sph文件夹中。
●使用Xftp配置服务器的 nginx,修改文件:/etc/nginx/nginx.config


# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
          root   /var/sph;
          index  index.html index.htm;
          try_files $uri $uri/ /index.html; # 解决刷新404
        }
        # 配置代理
        location /dev/ {
          # 设置代理目标
          proxy_pass http://sph-h5-api.atguigu.cn/;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

本地资源上传 

将打包好的文件上传到远程服务器,我们这里可以使用FinalShell,比较简单

首先打开FinalShell,点击新建,然后输入主机地址,点击连接,接着根据提示输入用户(默认是root)、密码,如下图。

接下来把你需要上传的文件直接拖入到远程目录下就可以上传。

这里我把我的打包文件放在了/var/sph这个目录下,大家可以自己选择(建议不要放在root文件下面,会有权限的问题

配置服务器与nginx 

 下载nginx

yum install nginx

查看nginx的版本

nginx -v

查看nginx的安装位置

/etc/nginx

nginx配置

找到nginx目录下的conf/nginx.conf文件,之前在本地怎么配置的,远程也是一样的~

nginx新增对外开放端口方法

这里我以阿里云服务器为例,进入首页后打开控制台,找到服务器实例,点击安全组,如下图。

点击管理规则,在入方向这里进行端口的配置 

此时再去通过浏览器访问,就可以正常访问了

 

直接启动nginx

service nginx start 

 

标签:index,上线,http,项目,前端,配置,nginx,html,服务器
From: https://blog.csdn.net/qq_63358859/article/details/139265204

相关文章

  • 最新海外版拼多多(TEMU)全自动挂机采集项目(手机+电脑版),单设备日收益200+多号多撸【挂机
    这是一个关于如何通过自动浏览temu平台(海外版拼多多)的商品来赚取收益的解释。首先,通过编写和运行一个脚本,你可以让你的电脑自动浏览temu平台上的商品。这个过程是全自动的,你不需要手动操作。当你的电脑浏览了一个商品,商家就可以获得一次曝光,这样就可以提高他们的销售额。......
  • GitHub--值得信赖的软件项目的托管平台
    GitHub是一个在软件开发领域中不可或缺的工具,作为一个全球最大的代码托管平台,其汇聚了超过1亿的开发者,共同塑造着软件的未来。在本篇博客中我将逐步了解一下GitHub的相关内容。什么是Git和GitHub?Git:作为一个分布式版本控制系统,Git赋予开发者跟踪代码更改的能力。每个提......
  • ts拯救前端:优雅的在运行时校验后端接口返回数据类型 typescript-json-schema+ ajv
    包管理器:pnpm环境:node依赖:typescript-json-schema、ajv准备工作1、安装依赖pnpmaddtypescript-json-schemapnpmaddajv2、准备需要校验的数据类型//userType.tsexportinterfaceUser{id:string;token:string;nick?:string;}3、使用typescrip......
  • 易基因:Adv Sci:NSUN2介导m5C修饰代谢重编程促进肿瘤进展 揭示治疗新选择|项目文章
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。喜讯!易基因表观转录组学RNA-BS技术服务见刊《ADVANCEDSCIENCE》表观遗传修饰包括有丝分裂遗传和稳定的修饰,这些修饰在不改变基础DNA序列的情况下调控基因表达。通常癌症中的表观遗传失调表现为突变、表观遗传修饰酶......
  • 一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏
    在现代云计算环境中,自动化部署已经成为一项重要的任务。Terraform,作为HashiCorp公司的一款开源工具,以其强大的基础设施即代码(IaC)能力,使得我们能够轻松管理和部署各种云资源。阿里云资源编排服务(ResourceOrchestrationService,ROS)是一种简单易用的云计算资源自动化部署服务,提供了......
  • 解决Vue3项目使用多个根标签提示[vue/no-multiple-template-root]The template root r
    报错截图检查原因第一步:检查是否安装了 Vetur 插件 第二步:左下角设置图标 ==》设置第三步:进入设置页面搜索eslint把Vetur的验证模板,取消勾选 Validatevue-htmlinusingeslint-plugin-vue第四步:将错误提示页面关掉然后重新打开,即可正常显示......
  • vue3项目中 路由elementPlus当中的标签页结合封装
    在项目当中大家应该都有看到过,像标签页一样的面包屑吧,接下来我为大家介绍一下,主要组成部分:路由+组件库的标签页。ok就这么easy!!!它实现的方法也不难哦请看效果图ok,在中间实现思路与大家分享一下:主要是使用watch监听我们的route路由的变化,然后根据传递过来的路由信息,进行标签页......
  • SUMER UI3.0组件库,基于Uni-app前端框架!一端开发,多端运行!本组件库可快速二次开发各种类
    sumer-ui介绍基于uView微信小程序UI组件库,兼容vue3。本插件是SUMER组件库,只提供组件库源码下载(不包含模板源码),本组件库可快速二次开发各种类别各行业模板,包括:商城、视频、直播、聊天、支付、新闻、社区、地图、导航、出行、社区、博客、新闻、游戏、影视、订票、广告等,......
  • vue前端页面搭建
    十、页面搭建学习10.1安装element在这里看一下有没有elementui,有就是下载成功了。10.2mainjs全局引入importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';Vue.use(ElementUI)10.3简单试用运行serve10.4页面布局(都可以直接查......
  • vue 项目发布到docker
    在vue项目目录下执行npmrunbuild 会生成dist文件夹,dist文件夹中的内容就是包含了打包好的静态文件 写dockerfile FROMnginx#将本地的dist文件夹复制到nginx默认的静态文件目录COPY./dist/usr/share/nginx/html执行 dockerbuild-tmy-vue-app.  ......