前面说到Openwrt的一些应用场景,其中有一个是作为小型化服务器的。
今天详细说说。
先说下,一个小型化的服务器能干啥,
明确了你需要服务器之后,你可以去买腾讯、阿里的云服务器,现在都卷,规格大在2c4g 40G盘的机器,第一年费用约80~100左右。云服务器在很多场景还是非常合适的,比如需要负载均衡,NAT等场景。之所以要选择用路由器,考虑以下因素
当作服务器用,其实最简单就是跑docker, 避免各种中间件软件的安装。尤其现在dockerhub对中国区域内解禁了,拉取各种各样的容器也非常方便。直接把你的业务打到容器里面跑起来就行了。
在当前OpenWrt的一些固件中,都带了Dokcer服务,比如iStoreOS。
今天不说怎么跑Docker, 说下前段时间给一个朋友调试的在RAX3000M上跑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的,方便安装各种包,后面遇到的问题中也会具体说下。
具体配置过程:
首先需要挂着目录。由于OpenWrt是一个部署在内存上的系统,如果安装在root这些目录下,重启就没了, 正好这个带了64G的盘,所以拆分了一部分挂着到opt目录下,这样重启就不会没有。
挂载好目录之后,就可以正常安装了,脚本一键安装
#下载安装脚本: 这里根据固件类型选择
wget http://bin.entware.net/aarch64-k3.10/installer/generic.sh
# 执行安装脚本:
sh generic.sh
出现以下提示,表示安装成功
Info: Congratulations!
Info: If there are no errors above then Entware was successfully initialized.
官方地址:https://github.com/xzhih/ONMP
参考官方地址,安装即可,需要解决软件包下载的问题:
主要步骤:
# 进入 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年前的,很多包,很多路径都不对,需要对脚本做一些修改。主要是对应包换成最新的」
其中,注意,opkg这个包需要为entware带的。本身OpenWrt带的包管理工具是从/etc/opkg下去获取软件。 用which opkg 查看opkg的路径,如果不对,需要调整下profile。将opkg在profile里面改成entware提供的。不过这个时候OP自身的opkg就用不了,需要的时候再换回来。
另外onmp.sh脚本,里面的版本php版本是7,实际entware提供的是php8,没有php7的包了,所以将脚本改为php8
另外,这个仓库里面没有nginx-extra的包,脚本里面需要,直接替换为nginx。
最终完成提升php没有启动成
看脚本,php-fpm是启动成功的。
原因是的检查php的是脚本有点问题,查看php进程命令不对,可以根据时间情况修改,修改之后,重新启动就顺畅多了。
在onmp自带的脚本里面, 有一个php的tz.php 这个应是基于php7写的,里面逻辑没仔细看,本次安装的php8 ,所以这个程序一直报错,502 网关错误,php脚本不适配 重新写了一个index.php, 就简单点,一个phpinfo即可。
<?php
phpinfo();
exit;
?>
放到:/opt/wwwroot/default 目录
[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
[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
[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] #
/opt/wwwroot/default目录下 tz.php :脚本自带的php探针程序 index.php:重新写的一个查看phpinfo的页面。
[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程序打包好,部署到你的路由器上,就可以畅快访问使用了。