基于Node.js将个人网站部署到ECS

news2024/9/22 4:07:09

基于Node.js将个人网站部署到云端ECS

  • 一、如何购买ECS以及如何使用学生认证优惠?
    • 1.进入阿里云网站,进行学生认证
    • 2.购买学生优惠,免费试用一个月
    • 3.重置个人密码
  • 二、服务器的配置以及与宝塔面板的链接
    • 1.个人电脑打开终端(win+R->cmd)
    • 2.复制对应的命令到终端Enter,安装宝塔面板
    • 3.服务器端口放行
    • 4.登录宝塔面板
  • 三、安装Nodejs导入文件部署个人网站
    • 1.服务器下载nodejs
    • 2.导入文件
    • 3.开放nodejs代码中所写的端口
      • a.宝塔面板端口开放:
      • b.服务器端端口开放:
    • 4.运行nodejs代码,部署网页
    • 5.nohup程序后台运行
    • 6.网页发布成功进行访问
  • 四、常见问题及其解决方法
    • 1.重装系统的方法步骤
    • 2.重置服务器密码后,终端无法连接
    • 3.发布后图片不能正常加载
    • 4.Ubuntu安装nodejs比Centos便捷的原因


前言
超级详细的个人网站在ECS部署的讲解,包含服务器选购,宝塔面板与服务器的绑定(**宝塔面板有所改动!!注意**)虽然逆天,但是能用......,以及个人网站部署的具体注意事项!

一、如何购买ECS以及如何使用学生认证优惠?

1.进入阿里云网站,进行学生认证

点击阿里云进行登录,登陆完成后点击个人和学生认证进行个人和学生认证,注意进行学生认证需进行个人认证。(只进行个人认证也可,本次优惠针对新用户不区分是否为学生。)
在这里插入图片描述

2.购买学生优惠,免费试用一个月

点击产品,点击云服务器ECS

在这里插入图片描述

学生优惠可以免费试用1个月,可自行领取

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.重置个人密码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、服务器的配置以及与宝塔面板的链接

1.个人电脑打开终端(win+R->cmd)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.复制对应的命令到终端Enter,安装宝塔面板

Centos/Alibaba Cloud Linux 安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Ubuntu/Deepin安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

出现判断语句,按要求同意y或者yes,之后自动安装,大概需要2-10分钟,看自己电脑配置和网速,耐心等待…可以先来摸亿会儿鱼,摸鱼🐟

安装成功页面:

在这里插入图片描述

3.服务器端口放行

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.登录宝塔面板

点击外网面板地址,第一次访问会有安全提醒,忽略即可

在这里插入图片描述
在这里插入图片描述

输入username和password,之后会跳转到另一个网页,然后自己注册账号,注册完毕后关闭此页,回到上一页,输入注册的手机号和密码

在这里插入图片描述
绑定完成界面如下:
在这里插入图片描述

三、安装Nodejs导入文件部署个人网站

1.服务器下载nodejs

  • Centos

Centos服务器如何安装Nodejs

  • Ubuntu

直接输入 apt install nodejs命令即可

Ubuntu服务器如何安装Nodejs

找到对应自己系统的代码复制到服务器终端(宝塔终端,个人ssh终端也可)即可,Ununtu系统即可直接复制一行命令安装。
以下二选一:

在这里插入图片描述

在这里插入图片描述

2.导入文件

在这里插入图片描述

附录 Nodejs 服务器代码 参考如下:

const http = require('http');
const fs = require('fs');
const path = require('path');

const server = http.createServer((req, res) => {
 let filePath = '.' + req.url;
 if (filePath === './') {
   filePath = './Index.html';
 }

 const extname = path.extname(filePath);
 let contentType = 'text/html';

 switch (extname) {
   case '.js':
     contentType = 'text/javascript';
     break;
   case '.css':
     contentType = 'text/css';
     break;
   case '.json':
     contentType = 'application/json';
     break;
 }

 filePath = path.join(__dirname, filePath);
 
 fs.readFile(filePath, (err, content) => {
   if (err) {
     if (err.code === 'ENOENT') {
       // 文件不存在时返回 404 错误
       fs.readFile('./404.html', (err, content) => {
         res.writeHead(404, { 'Content-Type': 'text/html' });
         res.end(content, 'utf-8');
       });
     } else {
       // 发生其他错误时返回 500 错误
       res.writeHead(500);
       res.end('Server Error: ' + err.code);
     }
   } else {
     res.writeHead(200, { 'Content-Type': contentType });
     res.end(content, 'utf-8');
   }
 });
});

const port = 6332;//个人端口号,即后续需要开放的端口号,自行设置
server.listen(port, () => {
 console.log(`Server is running on http://个人公网IP:${port}`);
});

3.开放nodejs代码中所写的端口

a.宝塔面板端口开放:

在这里插入图片描述

b.服务器端端口开放:

在这里插入图片描述

4.运行nodejs代码,部署网页

找到自己存放nodejs服务器端代码的文件并复制所在路径

在这里插入图片描述

点击终端,输入以下的命令

cd 复制的路径
node server.js(自己的nodejs代码文件)
在这里插入图片描述
此时发布成功,在不关闭此终端的前提下就可以去访问自己的网页了

http://服务器公网IP:nodejs开放端口号

5.nohup程序后台运行

注意自己的终端不可关闭,关闭程序后,网页会停止发布,所以就用到了Linux nohup 命令,即在运行node server.js前加一个nohup,保证了即使关闭终端也会正常运行程序。

nohup node server.js

在这里插入图片描述

6.网页发布成功进行访问

此时即使关闭此终端也可以正常访问自己的网页

http://服务器公网IP:nodejs开放端口号

四、常见问题及其解决方法

1.重装系统的方法步骤

先停止服务器

在这里插入图片描述

服务器停止后,点击更换操作系统即可

在这里插入图片描述

2.重置服务器密码后,终端无法连接

解决方法:
因为公钥已经更改,你可以更新或删除known_hosts文件中的旧公钥条目,即运行以下命令即可!

ssh-keygen -R 服务器公网IP

在这里插入图片描述

3.发布后图片不能正常加载

原因:
1.路径问题:文件路径使用英文,最好在最初就全部使用英文命名
2.文件权限问题:未给服务器文件访问权限

4.Ubuntu安装nodejs比Centos便捷的原因

Ubuntu直接输入 apt install nodejs命令即可,因为Ubuntu系统版本更新较快,软件仓库中的软件比较新,nodejs基本为最新的LTS版本,而且不会出现因系统版本过低出现的一系列问题,而Centos则会出现因系统版本过低而不支持部分nodejs版本的情况,所以在使用Centos系统的服务器时,建议选择高版本系统。


总结

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析:使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代,数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究,数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

一文SpringCloud

Springcloud 什么是Springcloud? 官网:Spring Cloud Data Flow Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控…

Flat Ads:金融APP海外广告投放素材的优化指南

在当今全球化的数字营销环境中,金融APP的海外营销推广已成为众多金融机构与开发者最为关注的环节之一。面对不同地域、文化及用户习惯的挑战,如何优化广告素材,以吸引目标受众的注意并促成有效转化,成为了广告主们亟待解决的问题。 作为领先的全球化营销推广平台,Flat Ads凭借…

树莓派PICO使用INA226测量电流和总线电压(3)

上一篇文章我们讲了如何测试电流,但是INA226有一个非常典型的问题,那就是误差比较大,因为采样电阻非常小,我的开发板用的是100mΩ的采样电阻,在设定中我也用的是这个采样电阻值,但事实上,测试得…

文件内容查阅

cat concatenate files and print on the standard output Linux中一个最简单的且最常用的命令是cat命令。其功能是在终端设备上显示文件内容。 cat命令-n选项用于显示行号。 tac concatenate and print files in reverse tac命令的功能是用于反向显示文件内容,即…

【Qt 基础】绘图

画笔 QPen pen; pen.setWidth(3); // 线条宽度 pen.setColor(Qt::red);// 画笔颜色 pen.setStyle(Qt::DashLine);// 线条样式 pen.setCapStyle(Qt::RoundCap);// 线端样式 pen.setJoinStyle(Qt::BevelJoin);// 连接样式 painter.setPen(pen);线条 线端 连接 画刷 QBrush bru…

css设置弹性flex后,如果设置100vh高度不撑满的原因

问题 父元素设置height为100%,有两个子元素,第一个设置height:100vh,第二个设置flex:1,此时第一个高度无法撑满盒子 原因解决方式 当父元素设置display为flex,第一个div设置高度64px,剩一个div设置高度为flex:1,这时…

数据处理-Matplotlib 绘图展示

文章目录 1. Matplotlib 简介2. 安装3. Matplotlib Pyplot4. 绘制图表1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图 5. 中文显示 1. Matplotlib 简介 Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 Ma…

Qt项目中添加自定义文件夹,进行整理归类

Qt项目中添加文件夹进行归类 1、在windows的工程目录下创建一个文件夹,如widgets 2、将.h 、.cpp、.ui文件拷贝到windows该文件夹widgets 3、在qt工程中,根目录右键,选择添加现有文件,批量选择 .h 、.cpp、.ui文件之后&#xf…

初识影刀:EXCEL根据部门筛选低值易耗品

第一次知道这个办公自动化的软件还是在招聘网站上,了解之后发现对于办公中重复性的工作还是挺有帮助的,特别是那些操作非EXCEL的重复性工作,当然用在EXCEL上更加方便,有些操作比写VBA便捷。 下面就是一个了解基本操作后&#xff…

开发总结 - H5/web C端评论区开发逻辑

1. 背景 平时做的系统都是偏公司业务的系统,这次开发了一个用户评论的功能,同时开发了web版和H5版本的,因为没有做过这种C端的常用的功能,所以记录一下此次的开发,从参考友商设计到独立思考业务之间的区别再到实际开发…

everything搜索不到任何文件-设置

版本: V1.4.1.1024 (x64) 问题:搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含

2024 辽宁省大学数学建模竞赛B 题 钢铁产品质量优化完整思路 代码 结果分享(仅供学习)

冷轧带钢是钢铁企业的高附加值产品,其产品质量稳定性对于钢铁企业的经济效益具有非常重要的影响。在实际生产中,冷连轧之后的带钢需要经过连续退火处理来消除因冷轧产生的内应力并提高其机械性能。连续退火的工艺流程如图1 所示,一般包括加热、保温、缓冷…

Datawhale AI 夏令营 Task1

记录第一次参加Kaggle上的比赛,通过一站式的教程,没有一点阻碍的跑通了baseline 夏令营方向的选择 我选择的夏令营是关于CV方向的,因为本身对于cv方向比较感兴趣,而且这次夏令营的方式我很喜欢,通过比赛来促进学习&a…

板级调试小助手(5)基于Python访问千帆大模型

一、前言 千帆大模型是百度提供的可以使用API接口调用GPT模型,使用Python调用其实是很简单的:去千帆大模型申请账号->使用python调用API即可,具体可以参考这位大佬的博客,这里就不赘述了。 【教程】如何用Python调用百度的千帆…

基于Java+SpringMvc+Vue技术的药品进销存仓库管理系统设计与实现系统(源码+LW+部署讲解)

注:每个学校每个老师对论文的格式要求不一样,故本论文只供参考,本论文页数达到60页以上,字数在6000及以上。 基于JavaSpringMvcVue技术的在线学习交流平台设计与实现 目录 第一章 绪论 1.1 研究背景 1.2 研究现状 1.3 研究内容…

数据结构和算法(0-1)----递归

定义​ 递归是一种在程序设计中常用的技术,它允许一个函数调用自身来解决问题。递归通常用于解决那些可以被分解为相似的子问题的问题,这些问题的解决方式具有自相似性。在数据结构和算法中,递归是一种重要的解决问题的方法,尤其是…

项目范围管理-系统架构师(二十九)

1、(重点)软件设计包括了四个独立又相互联系的活动,高质量的()将改善程序结构的模块划分,降低过程复杂度。 A程序设计 B数据设计 C算法设计 D过程设计 解析: 软件设计包含四个,…

Golang | Leetcode Golang题解之第232题用栈实现队列

题目: 题解: type MyQueue struct {inStack, outStack []int }func Constructor() MyQueue {return MyQueue{} }func (q *MyQueue) Push(x int) {q.inStack append(q.inStack, x) }func (q *MyQueue) in2out() {for len(q.inStack) > 0 {q.outStack…

Linux权限相关

目录 Linux中的用户 Linux权限管理 Linux的文件访问者分类 Linux的文件类型和访问权限 文件类型 文件权限 文件权限的修改 文件所有者修改 文件所有者所在组修改 目录权限 粘滞位 文件掩码 在Linux中,权限包括用户的权限和文件的权限 Linux中的用户 在…