基于ubuntu 22.04搭建nodejs http服务器

导航不迷路:

1、搭建nodejs http服务器(本文)

2、搭建nodejs https服务器

3、搭建nodejs 真正的服务器

ubuntu 安装nodejs

  • 查找源上有那些nodejs:
sudo apt-cache search nodejs
  • 安装nodejs:
 sudo apt install nodejs
  • 安装npm:
sudo apt install npm

备注:
如果安装失败,提示not found xxx,那么,更新下软件包索引:

sudo apt update

编写nodejs脚本:

思路:

  • 通过require引入http模块
  • 创建http服务
  • 监听端口,处理客户端访问

nodejs代码:

$ vim http_server.js
'use strict'

var http = require('http');

var app = http.createServer(function(req, res){
  res.writeHead(200, {'Content-Type':'text/plain'});
  res.end('Hello, I am a http server\n');
}).listen(8080, '0.0.0.0');

解释下:
作用是:监听在本地的 8080 端口,任何访问该端口的请求都会返回一个包含 “Hello, I am a http server” 文本的响应。下面是对这段代码的解释:

  • ‘use strict’;: 这是 JavaScript 的严格模式声明,它可以帮助开发者避免一些常见的错误,并使代码更加健壮。
  • var http = require(‘http’);:
    这一行引入了 Node.js 的内置模块 http,用于创建 HTTP 服务器和处理 HTTP 请求。
  • var app = http.createServer(function(req, res){…}).listen(8080, ‘0.0.0.0’);:
    • 这段代码创建了一个 HTTP 服务器实例 app,并通过 listen 方法将其绑定到 8080 端口和 IP 地址 0.0.0.0。
    • createServer 方法接受一个回调函数作为参数,该函数会在每次请求到达服务器时被调用。这个回调函数接收两个参数 req(请求对象)和 res(响应对象)。
    • 在回调函数中,通过 res.writeHead(200, {‘Content-Type’:‘text/plain’}); 设置了响应的 HTTP 状态码为 200(表示成功),并且指定了响应的内容类型为纯文本。
    • res.end(‘Hello, I am a http server\n’); 发送了包含 “Hello World” 文本的响应给客户端,并通过 res.end() 结束了响应。

运行代码:

$ node http_server.js

看下服务器端口监听情况:

ubuntu@VM-4-9-ubuntu:~$ netstat -ntpl
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      21005/node          
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
ubuntu@VM-4-9-ubuntu:~$ 

发现8080端口已经被监听了!

使用浏览器进行访问:

在这里插入图片描述

后台永久运行:

当然,作为服务器,你怎么可能这么运行呢?更改启动方式,让可以后台运行:

安装forever工具:

$ npm install forever -g

一定要加-g,表示可以在机器任意目录执行forever,否则只能在安装目录。

启动服务:

$ forever start http_server.js

总结:

当然,这个是我们搭建来学习用的,真正搭建服务肯定还得使用https服务,还得申请证书了,后面介绍!

<think>首先,用户的问题是关于如何搭建一个服务器来支持上传和保存WebGL项目。用户意图是搭建服务器,用于上传和保存WebGL内容,特别是Unity WebGL项目。 从系统级指令中,我需要: - 所有行内数学表达式用$...$格式。 - 独立公式用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考提供的引用: - [^1]: 关于将Unity WebGL项目上传到云服务器的步骤。 - [^2]: 关于上传文件到云服务器的方法,如使用数据传输工具或远程桌面。 - [^3]: 关于Vue3和Three.js项目,但似乎不直接相关。 - [^4]: 关于Unity WebGL从本地硬盘上传文件到沙盒中。 用户的上一次问题是关于搭建服务器以支持上传和保存WebGL项目,所以我需要基于这个意图来回答。 关键点: - 搭建服务器:这可能涉及设置一个云服务器或本地服务器。 - 支持上传:需要配置服务器来接收文件上传。 - 保存WebGL项目:WebGL项目通常是静态文件,如HTML、JS、CSS等。 步骤: 1. **选择服务器类型**:推荐使用云服务器,如AWS、Azure、腾讯云等,因为它们易于设置和扩展。 2. **设置服务器环境**:安装必要的软件,如Web服务器(如Nginx或Apache)。 3. **配置文件上传**:设置一个上传端点,可能使用后端技术如Node.js、Python Flask等。 4. **部署WebGL项目**:将上传的文件保存到服务器,并配置Web服务器来服务这些文件。 从引用[^1]和[^2],它们提到了上传到云服务器和使用工具如QQ.exe或远程桌面。但QQ.exe可能不是最佳实践;更专业的方法是使用FTP、SCP或云存储服务。 引用[^4]讨论了Unity WebGL从本地上传文件,但这是针对客户端上传到浏览器沙盒,而不是服务器端上传。我需要区分:用户想上传WebGL项目到服务器,而不是在WebGL应用中上传文件。 所以,核心是服务器搭建和文件上传机制。 回答结构: - 清晰、逐步的指南。 - 使用中文。 - 在相关部分添加引用标识。 - 生成相关问题。 大纲回答: 1. **介绍**:简要解释搭建服务器的目的。 2. **步骤**: a. 选择云服务提供商。 b. 创建和配置云服务器实例。 c. 安装Web服务器软件。 d. 设置文件上传机制。 e. 部署WebGL项目。 3. **详细说明每个步骤**。 4. **添加引用**:自然地引用相关部分。 5. **生成相关问题**:在末尾添加。 生成相关问题: - 基于主题,如优化、安全、其他应用等。 - 例如: 1. 如何优化WebGL项目的加载速度? 2. 如何确保文件上传的安全性? 3. 还有其他方法部署WebGL项目吗? 确保LaTeX正确:由于主题是服务器搭建,可能没有太多数学表达式,但如果有,需正确格式化。例如,如果提到算法或公式。 最终回答用中文。</think>### 如何搭建服务器以支持上传和保存WebGL项目 搭建服务器来支持上传和保存WebGL项目(如Unity WebGL应用)是一个常见的需求,涉及设置云服务器、配置Web服务、并实现文件上传功能。WebGL项目本质上是静态文件(HTML、JS、CSS等),因此服务器需要提供文件存储和访问服务。以下是一个逐步指南,基于可靠实践(如使用主流云服务),确保过程清晰易行。整个过程假设您已有基本的命令行操作经验。 #### 步骤1: 选择云服务提供商并创建服务器实例 首先,选择一个云服务提供商(如阿里云、腾讯云或AWS),它们提供易于管理的云服务器(ECS)。这些平台支持一键部署,并自带安全组(防火墙)设置。 - **操作指南**: - 登录云服务控制台(例如腾讯云),进入“云服务器”页面。 - 点击“新建实例”,选择操作系统(推荐Ubuntu 22.04 LTS或Windows Server,根据您熟悉程度)。 - 配置实例规格:WebGL项目文件较小(通常几十MB),选择基础配置(如1核2GB内存)即可。 - 设置安全组:开放必要端口,如HTTP(80)、HTTPS(443)、SSH(22)或FTP(21),以允许外部访问和文件上传[^1]。 - **注意事项**:免费试用套餐通常足够测试;确保绑定公网IP地址,以便从外部访问。 #### 步骤2: 安装并配置Web服务器软件 Web服务器负责托管WebGL文件,让用户通过浏览器访问。推荐使用Nginx(轻量高效)或Apache。 - **操作指南**: - **连接服务器**:使用SSH(Linux)或远程桌面(Windows)登录服务器。例如,在终端输入 `ssh root@your-server-ip`。 - **安装Nginx**: ```bash # 更新系统包 sudo apt update # 安装Nginx sudo apt install nginx -y # 启动Nginx服务 sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx ``` - **配置Nginx**:编辑配置文件 `/etc/nginx/sites-available/default`,将根目录指向WebGL项目存储路径(如 `/var/www/html/webgl`)。示例配置: ```nginx server { listen 80; server_name your-domain.com; # 替换为您的域名或IP root /var/www/html/webgl; index index.html; location / { try_files $uri $uri/ =404; } } ``` 保存后运行 `sudo nginx -t` 测试配置,再 `sudo systemctl reload nginx` 重启服务[^1]。 - **注意事项**:如果使用HTTPS,申请免费SSL证书(如Let's Encrypt)以加密流量。 #### 步骤3: 设置文件上传机制 实现文件上传功能,允许您从本地计算机上传WebGL项目到服务器。推荐使用FTP/SFTP或后端API,避免不安全的工具如QQ.exe[^2]。 - **方法1: 使用SFTP(安全文件传输协议)**: - **安装SFTP服务**:在服务器上安装OpenSSH(通常预装)。确保安全组开放端口22。 - **上传文件**:在本地计算机使用SFTP客户端(如FileZilla): - 输入服务器IP、用户名和密码。 - 将本地WebGL文件夹(包含index.html等文件)拖拽到服务器目录(如 `/var/www/html/webgl`)。 - **优点**:支持断点续传,适合大文件[^2]。 - **方法2: 使用后端API(更灵活)**: - **安装后端框架**:例如,用Node.js和Express搭建简单上传接口。 ```bash # 安装Node.js sudo apt install nodejs npm -y # 创建项目目录 mkdir ~/upload-server && cd ~/upload-server npm init -y npm install express multer # multer处理文件上传 ``` - **创建上传脚本**:新建 `app.js` 文件: ```javascript const express = require('express'); const multer = require('multer'); const app = express(); const port = 3000; // 设置存储路径(WebGL项目目录) const storage = multer.diskStorage({ destination: (req, file, cb) => cb(null, '/var/www/html/webgl'), filename: (req, file, cb) => cb(null, file.originalname) }); const upload = multer({ storage }); // 定义上传端点 app.post('/upload', upload.single('webglFile'), (req, res) => { res.send('文件上传成功!'); }); app.listen(port, () => console.log(`服务器运行在 http://your-server-ip:${port}`)); ``` - **运行并测试**:启动服务 `node app.js`,使用Postman或curl测试上传: ```bash curl -X POST -F "webglFile=@/path/to/local/file.zip" http://your-server-ip:3000/upload ``` - **集成到前端**:如果需要网页上传界面,可结合HTML表单[^4]。 #### 步骤4: 部署和测试WebGL项目 上传文件后,配置服务器以服务WebGL内容,并验证访问。 - **操作指南**: - 将WebGL项目文件(Unity导出的Build文件夹)上传到指定目录(如 `/var/www/html/webgl`)。 - 设置目录权限:运行 `sudo chmod -R 755 /var/www/html/webgl` 确保Nginx可读取。 - 测试访问:在浏览器输入服务器IP或域名,应显示WebGL应用。例如,`http://your-server-ip`。 - **故障排除**:如果遇到跨域问题(CORS),在Nginx配置中添加 `add_header 'Access-Control-Allow-Origin' '*';`[^1]。 #### 最佳实践和注意事项 - **安全性**:使用SFTP代替FTP,避免明文传输;定期更新服务器补丁;设置防火墙规则限制访问IP。 - **成本优化**:云服务器按需计费,测试阶段选择按量付费;静态文件可搭配CDN加速加载。 - **备份**:启用云服务自动快照功能,防止数据丢失。 - **性能**:对于高流量,升级服务器规格或使用负载均衡[^1]。 通过以上步骤,您可快速搭建一个支持上传和保存WebGL项目的服务器。整个过程基于实际部署经验,确保可靠性和易用性。如果您遇到具体问题(如Unity导出设置),可参考Unity官方文档或社区资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值