PM2+Linux部署nuxt.js

PM2+Linux部署nuxt.js

开始我使用了docker部署我的springboot项目,链接在这里,因为我是前后端分离项目,前端使用的nuxt.js框架,所以需要另外部署一下项目,以下是部署流程

1.将本地的nuxt项目打包

npm run build
#生成的dist在.nuxt文件夹中

2.部署linux服务器环境

1.将.nuxt,static,nuxt.config.js,package.json,package-lock.json放进自己创建的文件夹中,我这里的创建在/home/vue-front中

#注意  在nuxt.config.js中要添加这个配置
server: {port: 8170, // default: 3000host: '0.0.0.0' // default: localhost
}

2.执行npm install方法构建环境

npm install

[外链图片转存中…(img-t8DL3IRr-1712724068296)]

这个图就代表成功

3.配置nginx环境

我用的docker配置nginx

#1.拉取镜像docker pull nginx
#2./home文件夹下新建docker文件夹,docker文件夹下新建nginx文件夹,nginx文件夹下新建conf.d文件夹,html文件夹,大致结构如下:
/home|---docker|----nginx|----conf.d|----html
#3.在conf.d文件夹下新建default.conf文件,内容如下:
upstream nuxt {# 这里就是上面配置的 Node ip + 端口号,之前默认是 localhost:3000server 172.19.1.180:8170;keepalive 64;}
server {listen       8170;# 这里的端口服务器的端口server_name  114.55.238.50;# 服务器的域名location / {proxy_pass http://nuxt;# (这里的nuxt对应上面upstream xxx)index index.html index.htm;# try_files $uri $uri/ /index.html; #解决页面刷新404问题}
}
#4.启动容器
docker run -d -p 80:80 -v /home/docker/nginx/conf.d:/etc/nginx/conf.d --name mynginx nginx

4.启动nuxt

npm run start 

[外链图片转存中…(img-5aeOQgVS-1712724068297)]

这个页面就代表启动成功

5.使用ip进行访问

#因为我nginx上使用的114.55.238.50这个域名,所以直接使用这个进行访问
114.55.238.50:8170

6.使用PM2进行nuxt项目的进程守护

因为如果仅仅使用npm run start只是在服务器上暂时开启这个服务,跟执行npm run dev一样,使用过npm run dev的童鞋都知道如果在运行中的时候讲命令行工具关闭或者结束进程,咱们的网站就访问不了了,同样在服务器端也存在这种问题,比如服务器进程中断了,都会导致网站无法访问,所以这个时候咱们就需要使用pm2来做一个进程守护,具体添加pm2的流程及配置见下文:

1.使用pm2之前我们需要先进行安装pm2包,在我们本地开发也好,或者在服务器上操作都一样,打开终端命令行工具,输入以下命令:(Node环境下)

npm install -g pm2

安装好以后可以使用以下命令来查看pm2是否安装成功,能够返回版本号说明安装成功

pm2 -v

2.在程序的根目录创建pm2.json,内容为下:

[{"name": "项目名","script": "npm run start","env_dev": {"NODE_ENV": "development"},"env_production": {"NODE_ENV": "production"},}
]

3.启动pm2

pm2 start pm2.json

7.PM2常用命令

pm2 list                      # 列表 PM2 启动的所有的应用程序
pm2 monit                     # 显示每个应用程序的CPU和内存占用情况
pm2 show [app-name]           # 显示应用程序的所有信息
pm2 logs                      # 显示所有应用程序的日志
pm2 logs [app-name]           # 显示指定应用程序的日志
pm2 flush                     # 清空所有日志文件
pm2 stop all                  # 停止所有的应用程
pm2 stop 0                    # 停止 id为 0的指定应用程序
pm2 restart all               # 重启所有应用
pm2 reload all                # 重启 cluster mode下的所有应用
pm2 delete all                # 关闭并删除所有应用
pm2 delete 0                  # 删除指定应用 id 0
pm2 startup                   # 创建开机自启动命令
pm2 save                      # 保存当前应用列表

关闭并删除所有应用
pm2 delete 0 # 删除指定应用 id 0
pm2 startup # 创建开机自启动命令
pm2 save # 保存当前应用列表

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

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

相关文章

Fecify 商品标签功能

关于商品标签 商品标签是指商家可以在展示商品时,自己创建一个自定义标签,可自定义某个关键词或短语。这样顾客在浏览商城时,只需要通过标签就能看到更直观的展示信息。 商品标签可以按照用户的属性、行为、偏好等进行分类,标签要…

传输大咖22|如何利用ProtoBuf实现高效的数据传输?

在今日信息技术日新月异的时代,数据传输的速度与安全性无疑成为了软件开发中的重中之重。无论是微服务架构下的服务间交流,还是客户端与服务器间的数据互动,寻求一种既高效又稳妥的数据传输方式已成为共识。尽管传统的数据格式,如…

坚持10天做完Python入门编程100题第二天

坚持十天做完Python入门编程100题第二天 第8题 列表的排序第9题 字典的创建第10题第11题 对字典的值求和第12题 字典推导式第13题 打印小写字母a~z第14题 计算1-100之间的偶数之和 第8题 列表的排序 列表num_list [3, 1, 5, 9, 15, 2, 7],如和将列表按照从大到小的…

水务行业如何实现数字化转型实现智能化管理

水务行业在当下已经迈入了新的发展阶段,行业内增大了信息化、数字化的探索,尤其是智能化技术出现以后,智能水务概念的提出使得水务数字化转型成为可能。但我国水务行业经历了漫长的发展时期,在很长一段时间内因为存在发展思路、技…

骨传导耳机怎么选?这五款骨传导耳机性能好、配置高,跟着买不出错!

如今,骨传导耳机作为一种创意十足的蓝牙耳机,正在逐渐走入千家万户,成为最受欢迎的耳机款式。然而,随着骨传导耳机的热度增加,市面上开始出现各式各样的骨传导耳机品牌,面对琳琅满目的骨传导耳机品牌&#…

ECharts介绍

ECharts,全称Enterprise Charts,是一款基于JavaScript的数据可视化图表库。它以直观、生动、可交互以及可个性化定制的特点,为数据可视化提供了强有力的工具。ECharts最初由百度团队开源,后于2018年初捐赠给Apache基金会&#xff…

基于SpringBoot的“垃圾分类网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“垃圾分类网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统功能界面图 用户登录、用户注…

方案分享 | 针对ETC系统的OBE-SAM模块设计方案

ETC(Electrical Toll Collection)不停车收费是目前世界上最先进的路桥收费方式。通过安装在车辆挡风玻璃上的车载单元与安装在收费站 ETC 车道上的路侧单元之间的微波专用短程通讯,利用计算机联网技术与银行进行后台结算处理,从而…

2024软件测试工具测评,总有一款适合你!

在软件开发周期中,测试是确保产品质量的关键环节。随着企业对于软件质量的要求日益提升,测试人员面临着前所未有的挑战,“工欲善其事必先利其器”,选择一款高效、实用的软件测试工具,不仅能够提升测试效率,…

Unity发布webgl之后打开streamingAssets中的html文件

Unity发布webgl之后打开streamingAssets中的html文件 路径的拼接 /// <summary>/// 从配置文件中获取上位机的URL/// </summary>private void GetURLAboutUpLink(){Uri upLinkConfig new System.Uri(Path.Combine(Application.streamingAssetsPath "/UPLin…

ElasticSearch分词检索

1. 倒排索引&#xff1a;表示一种数据结构&#xff0c;分词词条与文档id集合的隐射关系 2. 它跟关系型数据库是一种互补的关系&#xff0c;因为关系型数据库支持事务操作&#xff0c;满足ACID原则 3. 索引库的文档字段只允许新增不允许修改 1.创建索引库 put /索引库名称2.1 …

【Leetcode 1793】好子数组的最大分数 —— 单调栈

1793. 好子数组的最大分数 给你一个整数数组nums&#xff08;下标从0开始&#xff09;和一个整数k。 一个子数组(i, j)的 分数 定义为min(nums[i], nums[i1], ..., nums[j]) * (j - i 1)。一个 好 子数组的两个端点下标需要满足i < k < j。 请你返回 好 子数组的最大…

吴恩达2022机器学习专项课程(一) 5.8 学习率的选择

问题预览/关键词 梯度下降不正常工作的曲线是什么样子&#xff1f;如何调试学习率来检测代码中的bug&#xff1f;学习率过小的后果是&#xff1f;如何选择学习率&#xff1f; 笔记 1.曲线错误的样子 曲线没有逐步递减&#xff0c;由于学习率选择过大或代码有bug。 2.调试…

LeetCode-279. 完全平方数【广度优先搜索 数学 动态规划】

LeetCode-279. 完全平方数【广度优先搜索 数学 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;Python 动态规划五部曲&#xff08;完全平方数就是物品&#xff08;可以无限件使用&#xff09;&#xff0c;凑个正整数n就是背包&#xff0c;问凑满这个背包最少有多少物品…

在react项目中使用react-router-dom

如何在react项目中使用react-router-dom 使用 npx create-react-app b初始化项目,npm i react-router-dom安装router依赖首先从react-router-dom包中导出createBrowserRouter对象来创建路由对象和router.js文件 // 创建router文件 import { createBrowserRouter } from "…

MySQL面试题系列-12

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#xff0c;关系数据…

在图片上画出mask和pred

画出论文中《Variance-aware attention U-Net for multi-organ segmentation》的图1&#xff0c;也就是在原图上画出mask和pred的位置。 新建一个文件夹 然后运行代码&#xff1a; import cv2 import os from os.path import splitext####第一次&#xff1a;把GT&#xff08…

【文件IO】JavaIO详解

一.文件的相关概念 什么是文件? 文件是计算机中存储信息的基本单位。文件通常指的是存储在计算机或其他数字存储设备上的一段信息的集合&#xff0c;这些信息可以是文本、图片、音频、视频等不同格式的数据。 文件路径: 文件的路径可以分为两类 相对路径:先指定一个"当前…

武汉星起航:成功挂牌,董事长张振邦:将持续为创业者提供支持

2023年10月30日&#xff0c;对于武汉星起航电子商务有限公司来说&#xff0c;是一个值得铭记的历史时刻。这一天&#xff0c;公司在上海股权托管交易中心成功挂牌展示&#xff0c;这不仅是公司发展历程中的一个重要里程碑&#xff0c;更是对其不懈努力和卓越成就的肯定。 武汉…

求三角形面积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double a, b, c, s, area;//赋值&#xff1b;a 3.67;b 5.43;c 6.21;//运算求s&#xff1b…