前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenWrt 使用ONMP让你的路由器变身强大的个人服务器

OpenWrt 使用ONMP让你的路由器变身强大的个人服务器

作者头像
用户1160092
发布2024-11-12 10:36:16
800
发布2024-11-12 10:36:16
举报
文章被收录于专栏:MUM笔记

前面说到Openwrt的一些应用场景,其中有一个是作为小型化服务器的。

今天详细说说。

一台小的服务器能干啥

先说下,一个小型化的服务器能干啥,

  • 对个人来说,搭建个人的「知识库笔记」或者「博客系统」,或者跑一些签到任务或者脚本(借助「青龙面板」
  • 对家庭来说,可以做「NAS分享」或者「web相册托管」
  • 对一个小型的公司来说,可以跑一些「内部的管理系统」

选择OpenWrt来做服务器的原因

明确了你需要服务器之后,你可以去买腾讯、阿里的云服务器,现在都卷,规格大在2c4g 40G盘的机器,第一年费用约80~100左右。云服务器在很多场景还是非常合适的,比如需要负载均衡,NAT等场景。之所以要选择用路由器,考虑以下因素

  1. 云服务器按年付费,价格波动大。后期成本不可控。而路由器都是一次投资,用个5年、8年基本没问题。平时不管在不在家,也都是保持运行状态,没有噪音,功耗也低,本身就具备网络连接。所以作为服务器是非常合适的。
  2. 如果用云服务器,数据都在云端。是否安全先不说,随着时间的积累,个人数据量慢慢增加,要么会被厂商绑定,要么就是需要额外的迁移成本。相反,现在很多路由器都带有usb口,可以挂着一个大容量u盘或者硬盘,或者一些软路由,本身就可以接磁盘,跑起来之后,数据长期本地保持,不用担心数据安全,也不用考虑是否需要迁移等。当然,如果有非常大的数据存储要求,可以用路由器+NAS产品的方案。
  3. 云服务器的网络环境存在一些缺陷。比如没有ipv6地址, 或者在某些场景下,容易被封禁。而路由器完全模拟家用网络环境,也都基本具备ipv6和ipv4的功能了。

当作服务器用,其实最简单就是跑docker, 避免各种中间件软件的安装。尤其现在dockerhub对中国区域内解禁了,拉取各种各样的容器也非常方便。直接把你的业务打到容器里面跑起来就行了。

在当前OpenWrt的一些固件中,都带了Dokcer服务,比如iStoreOS。

今天不说怎么跑Docker, 说下前段时间给一个朋友调试的在RAX3000M上跑ONMP的一个过程。主要说下这些中间件程序怎么安装,遇到的问题也给大家分享。

OpenWrt配置ONMP环境

ONMP简介

ONMP,即「Opkg」「Nginx」「MySQL」「PHP」的组合。相比LNMP,把L(Linux换成OpenWRt)

它利用Linux Shell脚本,让你能够在短短几步之内,在路由器上搭建起功能齐全的Web服务环境,包括Nginx网页服务器、MySQL数据库系统和PHP解析器。不仅如此,ONMP还预置了多款常用「网站程序」的安装选项,让你的路由器瞬间变身强大的个人服务器。

大家会觉得又是数据库,又是php的,路由器能跑起来么?这个朋友RAX3000KM的算力版,带了个64G的ssd。其他配置:联发科的MT7981,双核A53 1.3GHz,集成2.4G和5G基带。512MB DDR4内存。这个这么低的配置,配置完成之后,跑简单的web应用一点问题都没有。

以上的这些应用软件的包,都由「Entware」提供, 标准OpenWrt的软件包是不包括nginx这些的。所以需要先将OpenWrt做好后,替换下opkg的为Entware的,方便安装各种包,后面遇到的问题中也会具体说下。

安装过程

具体配置过程:

  1. 安装Entware Entware的地址是: https://bin.entware.net/

首先需要挂着目录。由于OpenWrt是一个部署在内存上的系统,如果安装在root这些目录下,重启就没了, 正好这个带了64G的盘,所以拆分了一部分挂着到opt目录下,这样重启就不会没有。

挂载好目录之后,就可以正常安装了,脚本一键安装

代码语言:javascript
复制
#下载安装脚本: 这里根据固件类型选择
wget http://bin.entware.net/aarch64-k3.10/installer/generic.sh 

# 执行安装脚本:
sh generic.sh

出现以下提示,表示安装成功

代码语言:javascript
复制
Info: Congratulations!
Info: If there are no errors above then Entware was successfully initialized.

  1. 安装完成之后,就可以安装ONMP了。

官方地址:https://github.com/xzhih/ONMP

参考官方地址,安装即可,需要解决软件包下载的问题:

主要步骤:

代码语言:javascript
复制
# 进入 entware 挂载目录
cd /opt && opkg install wget unzip 

# 下载软件包
wget --no-check-certificate -O /opt/onmp.zip https://github.com/xzhih/ONMP/archive/master.zip 

# 解压
unzip /opt/onmp.zip 
cd /opt/ONMP-master 

# 设置权限
chmod +x ./onmp.sh 

# 运行
./onmp.sh 

「主意:onmp.sh,git上的脚本是5、6年前的,很多包,很多路径都不对,需要对脚本做一些修改。主要是对应包换成最新的」

过程中问题简要记录

  • 问题1 opkg路径问题

其中,注意,opkg这个包需要为entware带的。本身OpenWrt带的包管理工具是从/etc/opkg下去获取软件。 用which opkg 查看opkg的路径,如果不对,需要调整下profile。将opkg在profile里面改成entware提供的。不过这个时候OP自身的opkg就用不了,需要的时候再换回来。

  • 问题2 软件包问题

另外onmp.sh脚本,里面的版本php版本是7,实际entware提供的是php8,没有php7的包了,所以将脚本改为php8

另外,这个仓库里面没有nginx-extra的包,脚本里面需要,直接替换为nginx。

  • 问题3 服务启动问题

最终完成提升php没有启动成

看脚本,php-fpm是启动成功的。

原因是的检查php的是脚本有点问题,查看php进程命令不对,可以根据时间情况修改,修改之后,重新启动就顺畅多了。

  • 问题4 探针php页面的问题

在onmp自带的脚本里面, 有一个php的tz.php 这个应是基于php7写的,里面逻辑没仔细看,本次安装的php8 ,所以这个程序一直报错,502 网关错误,php脚本不适配 重新写了一个index.php, 就简单点,一个phpinfo即可。

代码语言:javascript
复制
<?php 
phpinfo();
exit;
?>

放到:/opt/wwwroot/default 目录

  • 问题5 redis问题 因为rax3000km的内存问题,需要修改内核参数,arm下redis本身的问题,需要修改redis.conf。另外redis集成到php,需要额外补充安装php8-pecl-redis_6.0.2-1_aarch64-3.10.ipk 这个包。

ONMP主要目录说明

  • nginx:/opt/etc/nginx下 , 主意:OpenWrt自带的luci占了80端口,所以nginx运行的程序需要换一个端口。
代码语言:javascript
复制
[root@Love-Openwrt:09:12 AM /opt/etc/nginx] # ls -al
drwxr-xr-x    6 root     root          4096 Aug  8 13:50 .
drwxr-xr-x    9 root     root          4096 Feb 23 02:13 ..
drwxr-xr-x    2 root     root          4096 Aug  8 13:50 conf
drwxr-xr-x    2 root     root          4096 Feb 23 02:13 conf.d
-rw-r--r--    1 root     root          1007 Feb 23 02:13 fastcgi_params
-rw-r--r--    1 root     root          2837 Feb 23 02:13 koi-utf
-rw-r--r--    1 root     root          2223 Feb 23 02:13 koi-win
-rw-r--r--    1 root     root          5349 Feb 23 02:13 mime.types
drwxr-xr-x    2 root     root          4096 Feb 23 02:13 module.d
-rw-r--r--    1 root     root           774 Aug  8 13:50 nginx.conf
-rw-r--r--    1 root     root           636 Feb 23 02:13 scgi_params
-rw-r--r--    1 root     root           664 Feb 23 02:13 uwsgi_params
drwxr-xr-x    2 root     root          4096 Aug  8 22:06 vhost
-rw-r--r--    1 root     root          3610 Feb 23 02:13 win-utf
  • php配置目录,/opt/etc 下
代码语言:javascript
复制
[root@Love-Openwrt:09:11 AM /opt/etc] # ls -al |grep php
-rw-r--r--    1 root     root          3140 Aug  8 13:51 php.ini
drwxr-xr-x    2 root     root          4096 Aug  9 09:03 php8
-rw-r--r--    1 root     root          5346 Feb 23 02:13 php8-fpm.conf
drwxr-xr-x    2 root     root          4096 Aug  8 13:51 php8-fpm.d
  • redis 配置,/opt/etc下
代码语言:javascript
复制
[root@Love-Openwrt:09:13 AM /opt/etc] # ls -al |grep redis
-rw-r--r--    1 root     root         93797 Aug  8 22:58 redis.conf
[root@Love-Openwrt:09:13 AM /opt/etc] # 
  • 应用程序发布路径(取决于nginx的配置)

/opt/wwwroot/default目录下 tz.php :脚本自带的php探针程序 index.php:重新写的一个查看phpinfo的页面。

代码语言:javascript
复制
[root@Love-Openwrt:09:15 AM /opt/wwwroot/default] # ls -al
drwxrwxrwx    2 root     root          4096 Aug  8 17:10 .
drwxrwxrwx    3 root     root          4096 Aug  9 08:47 ..
-rwxrwxrwx    1 root     root          2339 Aug  9 08:54 index.php
-rwxrwxrwx    1 root     root            27 Aug  9 09:08 tz.php
[root@Love-Openwrt:09:15 AM /opt/wwwroot/default] # 

以上就是在OpenWrt上部署ONMP来使路由器变成服务器的过程,你只需要将你的php程序打包好,部署到你的路由器上,就可以畅快访问使用了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MUM笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一台小的服务器能干啥
  • 选择OpenWrt来做服务器的原因
  • OpenWrt配置ONMP环境
    • ONMP简介
      • 安装过程
        • 过程中问题简要记录
          • ONMP主要目录说明
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档