openwrt-安装NGINX

news2024/11/17 8:33:59

openwrt-安装NGINX

介绍

OpenWrt 是一个用于嵌入式设备的开源操作系统。它基于 Linux 内核,并且主要被设计用于路由器和网络设备。

OpenWrt 的主要特点包括:

  1. 完全可定制:OpenWrt 提供了一个完全可写的文件系统,用户可以自定义设备的行为。相比其他嵌入式操作系统,OpenWrt 更加灵活和强大。

  2. 软件包管理:OpenWrt 提供了一个内置的包管理系统,用户可以安装或者卸载额外的软件包。这使得用户可以根据需要定制设备的功能。

  3. 丰富的功能:默认情况下,OpenWrt 提供了很多用于网络设备的功能,如防火墙、QoS(服务质量)、IPv6 支持、路由协议支持、VPN、DNS、DHCP 等。

  4. 开源:OpenWrt 是开源的,这意味着任何人都可以查看和修改它的源代码。这使得用户可以定制设备的行为,或者添加新的功能。

  5. 活跃的社区:OpenWrt 有一个活跃的开发和用户社区,用户可以从社区获取帮助,或者分享他们的经验和知识。

这里我需要使用NGINX,接下来介绍如何在openwrt上安装NGINX

安装

查看系统版本

cat /etc/openwrt_release

image-20230520191028133

这段信息是 OpenWRT 系统的版本和硬件信息。解释如下:

  • DISTRIB_ID:这是你的操作系统的名称,这里是 OpenWrt。

  • DISTRIB_RELEASE:这是你的 OpenWrt 版本的发行代号,这里是 SNAPSHOT,表示这是开发版本。

  • DISTRIB_TARGET:这是 OpenWrt 的目标平台或体系结构,这里是 ‘rockchip/armv8’,意味着这个固件是为 rockchip 平台的 ARMv8 架构编译的。

  • DISTRIB_ARCH:这是 OpenWrt 的目标硬件架构,这里是 ‘aarch64_generic’,表示这个固件是为通用的 64 位 ARM 架构编译的。

  • DISTRIB_TAINTS:这是内核的 “污点”,用来表示可能影响内核稳定性或安全性的因素。‘no-all’ 表示没有这样的因素。

  • DISTRIB_REVISION:这是 OpenWrt 的修订版本,这里是 ‘R22.11.13’。

  • DISTRIB_DESCRIPTION:这是 OpenWrt 的描述信息,这里只有 'OpenWrt ',可能是由于这是一个开发快照版本,所以没有更多的描述信息。

使用的是 OpenWrt 的一个开发版本,针对 rockchip 平台的 ARMv8 架构编译,没有任何已知的内核问题。

修改系统镜像源

在国内,由于网络问题,使用海外的软件源可能会比较慢,所以更改为国内的镜像源。这里我使用的是腾讯的镜像源:

vi /etc/opkg/distfeeds.conf

具体内容如下:

src/gz openwrt_core https://mirrors.cloud.tencent.com/openwrt/releases/22.03.0/targets/rockchip/armv8/packages
src/gz openwrt_base https://mirrors.cloud.tencent.com/openwrt/releases/22.03.0/packages/aarch64_generic/base
src/gz openwrt_luci https://mirrors.cloud.tencent.com/openwrt/releases/22.03.0/packages/aarch64_generic/luci
src/gz openwrt_packages https://mirrors.cloud.tencent.com/openwrt/releases/22.03.0/packages/aarch64_generic/packages
src/gz openwrt_routing https://mirrors.cloud.tencent.com/openwrt/releases/22.03.0/packages/aarch64_generic/routing
src/gz openwrt_telephony https://mirrors.cloud.tencent.com/openwrt/releases/22.03.0/packages/aarch64_generic/telephony

最后,更新 opkg 的软件包列表:

opkg update

卸载之前的版本

opkg remove --force-removal-of-dependent-packages nginx-util

opkg remove nginx nginx-util

安装NGINX

opkg install nginx

报错问题

Error relocating /usr/bin/nginx-util: _ZNSt15__exception_ptr13exception_ptr9_M_addrefEv: symbol not found
Error relocating /usr/bin/nginx-util: _ZSt28__throw_bad_array_new_lengthv: symbol not found
Error relocating /usr/bin/nginx-util: _ZNSt15__exception_ptr13exception_ptr10_M_releaseEv: symbol not found
Error relocating /usr/bin/nginx-util: _ZNSsC1ENSs12__sv_wrapperERKSaIcE: symbol not found
Error relocating /usr/bin/nginx-util: _ZNSt15__exception_ptr13exception_ptr9_M_addrefEv: symbol not found
Error relocating /usr/bin/nginx-util: _ZSt28__throw_bad_array_new_lengthv: symbol not found
Error relocating /usr/bin/nginx-util: _ZNSt15__exception_ptr13exception_ptr10_M_releaseEv: symbol not found
Error relocating /usr/bin/nginx-util: _ZNSsC1ENSs12__sv_wrapperERKSaIcE: symbol not found
nginx_init: NOT using conf file!

可能出现这个问题的一个原因是你的设备缺少这个库文件,或者这个库文件的版本和 nginx-util 不兼容。在 C++ 程序中,这些符号通常是由某个 C++ 标准库提供的。从错误信息来看,这些符号看起来是由 C++ 的 std::string 类和 std::__exception_ptr::exception_ptr 类提供的。

opkg remove libstdcpp
opkg update
opkg install libstdcpp

编辑nginx.conf文件

把默认配置文件改名,/etc/nginx/uci.conf改成uci.conf.bak

然后新建一个文件nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8000;
        server_name  localhost;

        location / {
            root  /data/nginxweb/html;
            index  index.html index.htm;
        }
      
    }
    
}

启动nginx并加入自动启动

chmod +x /etc/init.d/nginx
/etc/init.d/nginx enable
/etc/init.d/nginx start

效果

这里拷贝了openResty的index.html页面,可以指定为自己的

image-20230520193343065

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

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

相关文章

目前账号矩阵系统源码有几种框架

目前账号矩阵系统源码主要有三种框架:Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架,提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框架,用于将数据模型、Web应用程序的用户界面和…

纯css实现手风琴效果

今天在网上看到了一个纯css实现的手风琴&#xff0c;很巧妙 效果如下&#xff1a; 具体代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content…

跨平台应用开发进阶(六十五):小程序分包策略及实战讲解

文章目录 一、前言二、为什么要使用分包&#xff1f;三、分包大小查看四、如何使用分包&#xff1f;五、独立分包六、分包预下载七、项目实战八、拓展阅读 一、前言 微信小程序开发过程中&#xff0c;随着业务不断迭代&#xff0c;程序包的体积越来越大&#xff0c;使用分包加…

HTTP协议报文格式详解和抓包那些事

文章目录 HTTP协议是什么HTTP报文格式抓包工具fiddler HTTP请求请求行HTTP方法URL版本号 请求头HOSTContent-Type&Content-LengthUser-Agent(简称UA)RefererCookie HTTP响应状态行版本号状态码 HTTP协议是什么 HTTP协议全称为超文本传输协议&#xff0c;是一个被广泛使用的…

【dfs之 迭代加深】【dfs层序遍历】【dfs和bfs的缺点结合解决 就是 迭代加深】加成序列

迭代加深 DFS&#xff0c;BFS和迭代加深的联系与区别例题1. 加成序列普通思想&#xff1a;优化方法&#xff1a; DFS&#xff0c;BFS和迭代加深的联系与区别 DFS&#xff1a; DFS算法是沿着搜索树的根节点&#xff0c;一直遍历完该搜索树之后再回溯继续搜索的一种算法。缺点是…

python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充

python绘图系列文章目录 往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴图像 python绘制柱状图并美化|不同颜色填充柱子 python随机…

体验css:repeat和grid

文章目录 一、repeat1. 语法2. auto-fill和auto-fit3. 专属尺寸① fr② auto③ max-content④ min-content 二、grid1. 设置grid布局2. 设置列宽行高3. 设置间距4. 设置分区5. 设置布局排列顺序6. 设置单元格内容对齐方式7. 设置整个网格对齐方式8. 设置隐式网格大小9. 设置网格…

geoserver图层样式的多种配置方法

前言&#xff1a;用geoserver发布服务的图层一般都配置了样式&#xff0c;简单的或者复杂的&#xff1b;单一的或者渐进式的等。今天我们结合业务场景、依据具体的数据分析给图层配置样式的多种方式。接着前几篇博客用到的数据为例&#xff1a; 一、配置默认样式 点击此篇文章…

Vue中展示中文名称

我今天调用接口时发现列表展示的楼栋一直是数字&#xff0c;并不是它的中文名称&#xff1b;但是点击编辑获取所属楼栋的下拉框中&#xff0c;又为中文名称&#xff0c;当我选中B栋点击修改之后又变成了B栋对应数字&#xff1b;然后我写了一个根据楼栋id获取对应的中文方法&…

栈与队列的对决:用队列实现栈的2种思路

本篇博客会讲解力扣“225. 用队列实现栈”的解题思路&#xff0c;这是题目链接。 先来审题&#xff1a; 以下是输出示例&#xff1a; 以下是提示和进阶&#xff1a; 这道题有2种思路&#xff0c;分别使用2个和1个队列来实现栈。 准备工作 先来实现队列。由于本篇博客的…

一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

一步一步详解LSTM网络【从RNN到LSTM到GRU等&#xff0c;直至attention】 0、前言1、Recurrent Neural Networks循环神经网络2、The Problem of Long-Term Dependencies长期依赖的问题3、LSTM Networks4、The Core Idea Behind LSTMs5、Step-by-Step LSTM Walk Through6、Varian…

Linux--进程(一篇博客让你理解操作系统的底层)

Linux–进程 本篇博客讲开始进入进程模块&#xff0c;我们先从冯诺依曼的体系结构和操作系统讲起&#xff0c;由浅入深&#xff0c;先梳理一个Linux相关知识体系框架~ 进程目录 Linux--进程一、冯诺依曼体系结构1.1外围设备1.2中央处理器(CPU)1.3存储器(内存)1.3.1什么是内存&a…

【LeetCode20】有效的括号——图解

​ 你好&#xff0c;欢迎来到我的博客&#xff01;作为一名程序员&#xff0c;我经常刷LeetCode题目来提升自己的编程能力。在我的博客里&#xff0c;我会分享一些我自己做过的题目和解题思路&#xff0c;希望能够帮助到大家。今天&#xff0c;我想和大家分享一道挑战性较高的题…

【Java校招面试】实战面经(三)

目录 前言一、简历中项目的难点及解决方案二、讲讲分布式锁的实现三、AQS(Abstract Queued Synchronizer)的原理四、ConcurrentHashMap的原理五、MySQL InnoDB存储引擎中的MVCC解决了什么问题&#xff0c;MVCC的实现原理六、平时怎么创建线程&#xff1f;为什么用线程池&#x…

Red Hat Enterprise Linux (RHEL) 8.8 正式版发布

红帽企业 Linux 8.8 发布 Red Hat Enterprise Linux (RHEL) 8.8 (x86_64, aarch64) Release 请访问原文链接&#xff1a;https://sysin.org/blog/rhel-8/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 2023年 5月 16日&…

Java学习路线(5)——数组

一、数组的概念 数组是用来存储一系列同类型数据的内存区域。 二、存储数据 1、静态初始化数组 作用&#xff1a; 定义数组时直接赋值。 格式&#xff1a; 【数据类型[] 变量名 new 数据类型[]{值1,值2…,值n}】 示例&#xff1a; double[] height {172.5,170.1,145.1,152.5,…

java常用工具之Scanner类

目录 简介一、扫描控制台输入1.1nextLine1.2nextInt1.3其他方法 二、扫描文件三、查找匹配项四、小结 简介 Java 的 Scanner 类是一个方便在控制台扫描用户输入的工具类&#xff0c;虽然它也可以扫描文件内容&#xff0c;但我们通常更喜欢它扮演前面的角色&#xff0c;因为扫描…

Flink第五章:处理函数

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) Flink第四章:水位线和窗口 Flink第五章:处理函数 文章目录 系列文章目录前言一、基本处理函数(ProcessFunction)二、按键分区处理函数&#xff08;KeyedProcessFunction&#xff09;1.处理…

【Linux进阶之路】基本权限的理解

文章目录 一.用户1.分类2.su3.su-4.sudo 二.文件1.文件分类2.文件权限3.文件权限的身份4.chmod——改写文件权限第一种方式第二种方式 5.chown——改写文件拥有者身份6.chgrp ——改写文件所属组身份7.umask ——设置权限掩码8.目录权限9.粘滞位——特殊的可执行权限 一.用户 …

关于Markdown文件的处理【笔记】

关于Markdown文件的处理【笔记】 前言推荐关于Markdown文件的处理一、md文件转word文档1 准备2 打开3 转为word文档4 导出结果5 打开 二、word文档转md文件1 准备2 导入3 打开4 显示图片5 打开 三、导入到CSDN中1 选择导入2 查看 四、导入设置1 前言2 导入设置3 修改配置 最后 …