您好,欢迎来到花图问答。
搜索
您的当前位置:首页6.2基于node服务器部署静态网站

6.2基于node服务器部署静态网站

来源:花图问答

本文分享的是如何基于koa在云服务器上部署纯静态网站。

服务器的选择

服务器市场产品繁多、功能和性能定位不一,由于厂商的服务器技术水平有所差别,在服务器可靠性、稳定性和可服务性上也存在某些程度上的不同。

服务器的选型也一个比较大的话题,大的将有物理服务器和近几年兴起的云服务器。从功能上又可分为Web服务器,文件服务器、邮件服务器、数据库服务器和多媒体服务器等。
而服务器上的操作系统可以分为windows和linux系列服务器等。

多数服务器都是使用linux系统,而Linux系统又分为开源的Ubuntu系列、centos系统等,个人建站多用前者,而笔者所任职过的公司都用的是centos。

本文分享的是基于阿里云配置操作系统为centos7.x服务器的部署,而且是基于pm2部署node服务,仅作参考。

关于pm2

开发时,我们需要npm run …来启动一个node项目,如果终端被关掉,程序跟着停止,特别是启动多个项目时,多有不便,特别是部署到线上的时候,如果报错了可能直接终止整个运行,supervisor或nodemon一般只用在开发环境的。

而线上我们一般使用PM2,它是带有负载均衡功能的node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。

安装pm2

打开我们本地的终端,输入如下命令登录远程服务器:

ssh 用户名@云服务器IP地址
// 例子 ssh root@173.123.34.55

之后输入密码,登录成功后输入下面命令,-g是安装到全局(若提示npm命令不存在,则需要安装node或是环境配置有问题):

npm install -g pm2

常用命令:

  • 启动: pm2 start app.js
  • 停止:pm2 stop app_name|app_id
  • 停止所有:pm2 stop all
  • 重启:pm2 restart app_name|app_id
  • 删除:pm2 delete app_name|app_id
  • 查看某一个进程的信息:pm2 describe app_name|app_id
  • 查看所有的进程:pm2 list
  • 查看所有的进程状态:pm2 status

为项目配置启动脚本

在package.json文件中加入启动脚本

  "scripts": {
    "start": "nodemon index",
    "deploy": "pm2 start index.js", // 新加脚本
    "test": "echo \"Error: no test specified\" && exit 1"
  },

然后我们在项目目录下直接运行如下命令就可以了:

npm run deploy

发现会自动打开浏览器,我们的系统是要在不同的环境下运行的,不同的环境可能是不同的端口号,不同的数据库地址,数据库用户和密码,并且可能有的需要自动重启有的不需要自动重启。

我们可以通过对环境的NODE_ENV赋值来区分不同的环境,在通过命令行在运行程序的时候对其进行赋值,不同的场景赋值不一样,在程序中读取这个值来判断是那种场景,所以我们需要调整一下index.js文件:

if (process.env.NODE_ENV  !== 'production') {
    cp.exec('open http://localhost:8888/');
}

这样只有在开发环境时,才自动打开浏览器, 并且修改启动脚本为:

 "deploy": "NODE_ENV=production pm2 start index.js",

这样执行的就是在生产环境下启动,再次启动就去掉了开发环境下才用到的自动打开浏览器功能。

代码上传到服务器

可以采取多种方式,常用的是通过代码管理平台,如github或企业内部的gitlab,最简单的就是执行如下命令:

scp 用户名@云服务器IP地址:
// 例子 scp root@173.123.34.55:

注意后面的冒号不能少哦,上传成功后,登录服务器后进入用户主目录,就能看到该文件,一般上传前我们会压缩,上传成功后再解压,解压以后在根目录下输入前面类似的部署命令即可:

npm install && npm run deploy

下安装项目依赖,成功后使用pm2启动node服务,这样一个静态网站就可以通过阿里云服务器IP地址加端口访问了。

而要想通过域名访问,就得去购买一个域名并且去网管局备案。

花图问答还为您提供以下相关内容希望对您有帮助:

免费部署静态网页,国内外访问套餐 GitHub Pages、Vercel、CLOUDFLARE...

特点:支持静态和动态网站应用部署,与GitHub深度集成,支持多种打包工具和纯静态部署,自动重新部署。优势:提供测试和线上环境区分,允许复杂配置,部署过程简单,支持自定义域名。注意事项:部署时默认Node版本为18,但可在项目设置中调整,推荐直接使用网站部署以避免额外配置。Cloudflare:特点:提供网站安全管理

静态网站搭建笔记 GitHub Page+Hexo

2. 安装Node.js Hexo基于Node.js开发,需要安装Node.js及npm工具。安装完成后,通过Git检查是否成功。3. 安装Hexo并部署本地仓库 创建本地文件夹作为仓库,使用Git Bash执行命令生成hexo静态页面,并启动本地服务器。安装主题(模板)1. 安装主题 使用Git安装基于Hexo框架的网站主题,可从GitHub或Hexo官...

nodejs如何部署到服务器上?

简单的小网站可以直接使用Node.js作为web服务器,不做前后端分离,使用后端模板填充数据,代表框架express。如果要做负载均衡或者响应多端请求,那么采用前后端分离。前端代码可以放在CDN或nginx这类静态服务器上,前端向Node.js服务端发送rest请求。代表框架koa。如果业务更加复杂,有较多的CPU密集型任务需要执...

静态网站生成器是如何工作的

静态网站生成器的工作流程通常分为四个步骤:源文件读取:用户通常以Markdown形式编写,易于格式控制和定制,如设置源目录、目标目录和页面标题等。以Node.js为例,这一过程简单明了。资源预处理:这是核心环节,包括解析Markdown,分离元数据(如YAML格式)和主体内容。例如,通过扫描文件,识别`---`分隔...

用hexo创建博客 hexo搭建个人博客

将生成的静态文件部署到服务器上。可以使用GitHub Pages、GitLab Pages、Netlify等服务。对于GitHub Pages,通常需要将生成的静态文件推送到GitHub的特定分支(如gh-pages或master)。添加favicon:创建一个名为favicon.ico的图标文件,放在博客的根目录下。确保图标文件符合浏览器要求的格式和大小(如16x16、...

大型站点静态页面更新方法

提高用户体验。值得注意的是,对于大规模网站或高流量站点,建议采用CDN(内容分发网络)技术,将静态页面缓存到多个地理位置的服务器上,以减少用户访问时的延迟。总而言之,通过数据库更新和后台生成静态页面的方式,可以实现高效、自动化的内容更新,这是现代网站开发中不可或缺的技术手段。

nodejs写的项目如何部署需要哪些软件环境?

部署Node.js项目时,关键的软件环境与步骤如下:首先,选用nginx作为反向代理服务器,用于处理静态资源,如HTML、CSS、JavaScript文件,这样可以将Node.js处理逻辑与静态资源分离,提高性能。其次,安装Node.js的长期支持(lts)版本。Node.js lts版本提供稳定的运行环境,适合生产环境部署,确保应用长期稳定运行...

Vercel部署Node服务

与部署静态资源多了两个步骤 下载@vercel/node和配置vercel.json 延伸思考Vercel当然不止笔者所说的这一功能,它还可以自定义域名、serverless、全球支持的CDN等等 可以毫不夸张地说,用Vercel来代替繁琐的云服务器,配合GithubAction做CI/CD,就 个人开发者或小团队而言,这或许就是神器 后续笔者也会尝试...

静态博客搭建工具汇总

Hugo是一个快速静态站点生成器,用于生成网站和博客。Hugo使用Go语言编写,具有高性能和低内存消耗的特点。Hugo的特点是快速构建、简洁的语法和高度的可定制性。Hugo官网提供了详细的文档和教程,帮助开发者快速上手。WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设...

serve-static Node.js 工具库的基本作用

servestatic可以灵活应用,不仅可以用于Express应用程序,还可以创建只提供静态文件服务的简单服务器,不依赖任何框架,适用于轻量级项目或单页应用的部署。适用于多种环境:servestatic适用于开发环境和生产环境,能够简化前端资源的提供,提升用户体验。综上所述,servestatic是一个功能丰富、高效提供静态文件服务...

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务