OpenNJet下载安装及入门实战教程

news2024/11/25 0:31:49

一、什么是OpenNJet

  OpenNJet是一款开放原子开源基金会孵化及运营的开源项目。OpenNJet采用C语言实现。是一款高性能、轻量级的WEB应用及代理软件。
   OpenNJet 应用引擎是高性能、轻量级的WEB应用与代理软件。作为云原生服务网格的数据平面,NJet具备动态配置加载、主动式健康检测、集群高可用、声明式API等多种强大功能。通过CoPliot副驾驶服务框架,在隔离控制面和数据面的情况下实现了高可扩展性。NJet应用引擎助力企业实现云原生技术的平滑升级并大幅降低IT运营成本。

在这里插入图片描述

二、OpenNJet下载、安装和启动

官网: https://njet.org.cn/
环境准备: 本次博主采用一台阿里云服务器,系统版本ubuntu18.04

在这里插入图片描述

注:使用自己PC电脑亦可,只要是linux系统

OpenNJet提供了多种快速使用的方法,包括 二进制安装,发行版安装以及源码安装
我们选择最简单的二进制安装方式。想要通过其他方式安装的同学,参考官方教程:https://njet.org.cn/docs/quickstart/

2.1 下载OpenNJet

在这里插入图片描述

按照自己的系统选择对应的版本下载。
我下载的是 njet_2.0.1-1~ubuntu.18.04~bionic_amd64.deb

2.2 安装OpenNJet

  如果使用的是ubuntu系统,下载二进制安装包后可以使用以下命令进行安装

sudo dpkg -i njet_2.0.1-1~ubuntu.18.04~bionic_amd64.deb

如下图所示:

在这里插入图片描述

2.3 启动OpenNJet

  使用二进制包安装OpenNJet后,OpenNJet就会在系统目录/usr/local/njet下生成自己的service,因此,可以使用systemctrl命令控制OpenNJet的启动和停止。


启动OpenNJet服务:

sudo systemctl start njet

停止OpenNJet服务:

sudo systemctl stop njet

查看OpenNJet服务的状态:

systemctl status njet.service 

在这里插入图片描述

2.4 检验OpenNJet是否已经安装成功

个人PC: 直接打开电脑浏览器,在地址栏输入http://localhost:8080/
服务器: 直接打开电脑浏览器,在地址栏输入http://yourServerIP:8080/
如果浏览器跳转以下界面:

在这里插入图片描述

则说明OpenNJet已经安装成功并开始工作。

三、通过 OpenNJet 部署 WEB SERVER

  在上文中我们已经成功安装OpenNJet ,下面我们将使用OpenNJet部署WEB SERVER。在这次实践中博主将把之前发布过的一篇酷炫烟花秀网站部署到线上,来帮助大家熟悉OpenNJet 的基本操作。

3.1 修改OpenNJet 配置文件

  OpenNJet 的主要配置文件为 njet.conf。可以通过修改该文件来配置 OpenNJet。
njet.conf配置文件所在位置为/usr/local/njet/conf目录,先将安装OpenNJet后自动生成的配置文件删除,我们重头开始编写一个简单的配置文件如下:

http {
    server {
       listen 80;
       server_name example.com;
       location / {
           root /web/www/html;
           index index.html;
       } 
    }
}


各个配置项的作用:

  1. http: 服务块名
  2. listen 80: 表示监听80端口
  3. root /web/www/html : 指定了服务器的根目录,所有请求的文件将从该目录下查找。
  4. index:表示默认页面为index.html,即直接使用IP地址访问时,会默认进入index.html

3.2 将Web程序放置在 /web/www/html之中

  在这次实践中,采用博主之前写过的一篇文章中的代码,来展示使用OpenNJet 部署线上网站的方式。
因此,现在需要做的就是将烟花的代码,上传到服务器中。
我上传的路径为 /web/www/html
上传完成后,在/web/www/html路径下结构如下:

在这里插入图片描述

  其中,fireworks是我们本次想要部署的web项目。

3.3 修改OpenNJet配置文件

  上传完web项目后,如果想要输入IP地址就能直接访问到我们的web项目,就需要修改一下njet.conf中的配置信息。即将root配置项修改为/web/www/html/fireworks,即指定服务器根目录设置为/web/www/html/fireworks
新修改后的配置如下:

http {
    server {
       listen 80;
       server_name example.com;
       location / {
           root /web/www/html/fireworks;
           index index.html;
       }
    }
}

  这样,当我们在浏览器地址栏直接输入IP地址进行访问,就会直接打开我们部署的web项目。

在这里插入图片描述

  至此,使用OpenNJet部署一个WEB项目的实践就全部完成了,最后成功将一个炫酷的html web项目部署到了线上,并支持直接通过服务器IP地址进行访问。

四、结语

  OpenNJet作为一款优秀的云原生应用引擎,具备轻量、快速开发、易于集成等优点,即减少了资源占用,部署简单,又能使应用在系统上流畅运行。此外,不仅100%兼容Nginx,还实现了NGINX 云原生功能增强、安全加固和代码重构,利用动态加载机制可以实现不同的产品形态,如Web服务器、流媒体服务器、负载均衡、代理(Proxy)、应用中间件、API网关、消息队列等产品形态等等。

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

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

相关文章

【Git】回滚旧提交版本且不影响最新提交版本

【Git】回滚旧提交版本且不影响最新提交版本 一、场景假设 远程仓库origin中有一个分支main,有4次提交记录:v1、v2、v3、v4。 二、需求 需要回滚旧提交版本,但不影响已有的所有提交版本(即不影响最新提交版本)&…

k8s保持pod健康

存活探针 Kubemetes 可以通过存活探针 (liveness probe) 检查容器是否还在运行。可以为 pod 中的每个容器单独指定存活探针。如果探测失败,Kubemetes 将定期执行探针并重新启动容器。 Kubemetes 有以下三种探测容器的机制: HTTP GET 探针对容器的 IP 地…

深入探索归并排序算法:分而治之的排序艺术

在计算机科学领域,排序算法是一项基础且重要的技术,归并排序作为一种经典的分治算法,以其稳定性和高效性而闻名。本文将带您深入探索归并排序算法的原理、实现方法以及应用场景,揭示这一排序艺术背后的精髓。 **归并排序算法简介…

【管理篇】管理三步曲:管理规划(一)

目录标题 管理到底都要做哪些事呢如何开始带团队? 职能:如何界定团队是干什么的?目标:如何为团队设定合理的目标规划资源:需要申请哪些资源(1)你是否了解资源的丰富性?(2…

判断dll/lib是32/64位、查看lib是导入库/静态库的方法 、查看dll包含的符合、lib包含的函数

一、判断dll/lib是32/64位 原文链接:https://www.cnblogs.com/bandaoyu/p/16752602.html 1. 简便方法: 直接用记事本或者notepad(或txt文本)打开exe文件(dll文件),会有很多乱码,不要头疼,接下…

优雅处理返回信息状态码:Result对象在Spring Boot中的应用

前言 在开发过程中,处理返回的信息状态码是一个重要的问题,尤其是在大型项目中。为了统一处理这些状态码,我在Spring Boot中创建了一个名为Result的Java对象,用于封装返回的信息和状态码。在本文中,我将分享如何实现这…

网络安全的重要性及人才需求

安全现在是大趋势,说是铁饭碗也不为过,就业前景好,方向多比传统计算机行业就业舒服点。但是大厂依然是985,211的天下,是双非能进大厂的,只是凤毛麟角。前提是你的能力可以让公司忽略你的学历。 以2023年为…

Leetcode—622. 设计循环队列【中等】

2024每日刷题(128) Leetcode—622. 设计循环队列 实现代码 class MyCircularQueue { public:MyCircularQueue(int k): q(k) {qSize k;}bool enQueue(int value) {if(isFull()) {return false;}q[rear] value;rear (rear 1) % qSize;deflag false;…

精准读取CSV/Excel数据 - 灵活指定行列范围的 Python 解决方案

文章目录 源代码项目简介导入相关库__file_exists 装饰器函数的签名和注释主要功能的实现运行演示读取 Excel 文件 源代码 https://github.com/ma0513207162/PyPrecip。pyprecip\reading\read_api.py 路径下。 项目简介 PyPrecip 是一个专注于气候数据处理的 Python 库&#xf…

【STM32嵌入式系统设计与开发】——18DAC(DAC输出应用)

这里写目录标题 STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码:8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑(1)主函数编辑&#…

Python3中Richdem包遇到问题

Python3中Richdem包遇到问题 文章目录 Python3中Richdem包遇到问题问题一报错解决 问题二报错解决 参考 问题一 报错 RichDEM 是一套数字高程模型 (DEM) 水文分析工具,这次打算用richdem进行地形分析,尝试在conda里面安装richde…

UDP如何端口映射?

UDP端口映射是一种网络技术,通过它可以实现在异地组网的情况下,不暴露在公网上,通过私有通道传输数据,并对数据进行安全加密,以保障数据的安全性。这项技术在如今日益复杂和危险的网络环境中显得尤为重要。 UDP&#x…

【1】STM32·FreeRTOS·新建工程模板【一步到位】

目录 一、获取FreeRTOS源码 二、FreeRTOS源码简介 2.1、FreeRTOS源码文件内容 2.2、FreeRTOS内核 2.3、Source文件夹 2.4、portable文件夹 三、FreeRTOS手把手移植 3.1、FreeRTOS移植准备 3.2、FreeRTOS移植步骤 3.2.1、将 FreeRTOS 源码添加至基础工程、头文件路径等…

构建第一个ArkTS应用之@LocalStorage:页面级UI状态存储

LocalStorage是页面级的UI状态存储,通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内,在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器:LocalStorageProp和LocalS…

「 网络安全常用术语解读 」漏洞利用预测评分系统EPSS详解

1. 概览 EPSS(Exploit Prediction Scoring System,漏洞利用预测评分系统) 提供了一种全新的高效、数据驱动的漏洞管理功能。EPSS是一项数据驱动的工作,使用来自 CVE 的当前威胁信息和现实世界的漏洞数据。 EPSS 模型产生 0 到 1&…

libcity笔记:添加新模型(以RNN.py为例)

创建的新模型应该继承AbstractModel或AbstractTrafficStateModel 交通状态预测任务——>继承 AbstractTrafficStateModel类轨迹位置预测任务——>继承AbstractModel类 1 AbstractTrafficStateModel 2 RNN 2.1 构造函数 2.2 predict 2.3 calculate_loss

【分布式 | 第五篇】何为分布式?分布式锁?和微服务关系?

文章目录 5.何为分布式?分布式锁?和微服务关系?5.1何为分布式?5.1.1定义5.1.2例子5.1.3优缺点(1)优点(2)缺点 5.2何为分布式锁?5.2.1定义5.2.2必要性 5.3区分分布式和微服…

ISIS的基本概念

1.ISIS概述 IS-IS是一种链路状态路由协议,IS-IS与OSPF在许多方面非常相似, 例如运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此,然后建立邻接关系,并交互链路状态信息。 CLNS由以下三个部分组成: CLNP&#xf…

Python | Leetcode Python题解之第73题矩阵置零

题目: 题解: class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:m, n len(matrix), len(matrix[0])flag_col0 Falsefor i in range(m):if matrix[i][0] 0:flag_col0 Truefor j in range(1, n):if matrix[i][j] 0:matrix[i]…

OpenSSL实现AES-CBC加解密,可一次性加解密任意长度的明文字符串或字节流(QT C++环境)

本篇博文讲述如何在Qt C的环境中使用OpenSSL实现AES-CBC-Pkcs7加/解密,可以一次性加解密一个任意长度的明文字符串或者字节流,但不适合分段读取加解密的(例如,一个4GB的大型文件需要加解密,要分段读取,每次…