将小米路由器3刷机成openwrt的方法,请参考上篇文章《 家庭宽带多运营商接入方案》
这里介绍怎么在已经刷成openwrt系统的小米路由器3上安装私有云nextcloud

openwrt开启SFTP
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install openssh-sftp-server
1
2
注意:每次系统升级后,都要重新安装openssh-sftp-server开启SFTP。

挂载移动硬盘
1. 将移动硬盘插到路由器上,分为以下四个区:
格式化分区命令:
示例:mkfs.ext4 /dev/sda4
格式化完成且,重启路由器。
查看分区命令:fdisk -l

序号 分区 分区大小 分区类型 作用
1 /dev/sda1 NTFS 作为数据存储分区
2 /dev/sda2 10G ext3 挂载到/overlay
3 /dev/sda3 5G swap 挂载为swap分区(发现最大只显示2G)
4 /dev/sda4 10G ext4 挂载到/mnt/onmp
2. 挂载并激活swap分区
mkswap /dev/sda3
swapon /dev/sda3
1
2
3. 实现开机自动挂载swap分区
我发现,在图形化界面里自动挂载swap无效,只有在命令中实现才有效。

1. 编辑swap分区配置信息,编辑/etc/fstab文件,添加内容:/dev/sda3 swap swap defaults 0 0
2. 重新读取/etc/fstab文件,挂载Swap分区:swapon -a
1
2
注:普通分区使用mount -a重读/etc/fstab文件,swap分区使用swapon -a重读/etc/fstab文件

3. 开机自动挂载
编辑/etc/rc.local文件,添加一行:swapon-a
1
2
其它命令:
查看内存和Swap空间使用情况:free
查看swap分区的详细信息,看是否运行:swapon -s
卸载swap分区:swapoff /dev/sda3

4. 挂载overlay分区
将/dev/sda2挂载到/rom/overlay
在图形化界面中操作:

安装curl
opkg install curl

手动安装命令:
升级tar(先升级tar,否则解压文件时会出错,提示 invalid tar magic):
opkg upgrade tar
下载curl安装包:
cd tmp
root@lu:/tmp# wget --no-check-certificate https://curl.haxx.se/download/curl-7.61.0.tar.gz
解压:
tar -zxvf curl-7.61.0.tar.gz
解压缩后,开始编译:
root@lu:/tmp# cd curl-7.61.0/
root@lu:/tmp/curl-7.61.0# ./configure --prefix=/usr/local/curl
如果出错,提示configure: error: ar not found in PATH. Cannot continue without ar.,说明缺少ar,需要先安装binutils。
安装binutils:
opkg install binutils
安装时,又提示这个错误:configure: error: no acceptable C compiler found in PATH,需要安装gcc:
opkg install gcc
如果提示overlay空间不足,说明没有挂载移动硬盘的overlay分区。
gcc安装时间较长,十分钟吧,安装完后,开始编译。
make;make install
又出错,缺少make命令,那就安装吧
opkg install make,再make
编译时间也很长。
然后
export PATH=/usr/local/curl/bin:$PATH
最后,看一下安装的cur版本
curl -V

安装Entware
一定要先手动方式,自动方式的话,重启路由器后,会找不到盘。
1. 建立/mnt/onmp目录
mkdir /mnt/onmp
2. 实现开机自动建立
这个目录,在重启后会消失,需要加入到开机启动项中。
vim /etc/rc.local,添加一行:mkdir /mnt/onmp
这样重启后,就会自动建立/mnt/onmp目录,后续的自动操作也可以正常进行了。
3. 将/dev/sda4分区挂载到/mnt/onmp目录下
mount -t ext4 /dev/sda4 /mnt/onmp/
用mount或df -h 查看一下是否挂载成功

如果不能挂载,尝试先格式化,再挂载

4. 开机自动挂载
使用图形化界面挂载

命令行挂载方式:
配置挂载内容:
vim /etc/fstab,添加一行: /dev/sda4 /mnt/onmp ext4 defaults 0 1
再执行:
mout -a #挂载,此命令会重读/etc/fstab文件。
配置开机自动挂载:
vim /etc/rc.local,添加一行:
mount -a #这一句加到exit 0前面
exit 0

5. 将/mnt/onmp/opt与/opt绑定
先在移动硬盘上建立一个opt目录:
mkdir /mnt/onmp/opt
将其与/opt绑定:
mout -o bind /mnt/onmp/opt /opt

使用mout或df -h查看是否绑定成功

最后,重启路由器,使用opkg update,看是不是从entware.net网站上更新了。
** 安装完Entware成功后的提示:**

Info: Congratulations!
Info: If there are no errors above then www.xgll521.com Entware was successfully initialized.
Info: Add /opt/bin & www.michenggw.com /opt/sbin to your PATH variable
Info: Add '/opt/etc/init.d/rc.unslung www.dongfan178.com start' to startup script for Entware services to start
Info: Found a Bug? Please www.taohuaqing178.com  report at https://yongshiyule178.com github.com/Entware/Entware/issues
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
NATCAP 4.0_b201807150836, Bionic
-----------------------------------------------------
安装ONMP
前面弄了一大堆,终于到了安装ONMP的时候了。

官方教程:https://github.com/xzhih/ONMP

1. 安装命令:
sh -c “$(curl -kfsSl https://raw.githubusercontent.com/xzhih/ONMP/master/oneclick.sh)”
安装完成后,观察提示信息,是否有失败信息:

现在开始初始化ONMP
----------------------------------------
|********** onmp命令已经生成 **********|
|********** 管理 onmp open **********|
|********* 启动 停止 重启ONMP *********|
|***** onmp start|stop|restart *****|
|******* 查看网站列表 onmp list *******|
----------------------------------------
onmp正在启动
nginx 启动成功
php-fpm 启动成功
mysqld 启动失败
onmp启动失败
这里mysql启动失败,是因为需要挂载swap分区,才能启动mysqld。按上面的步骤挂载swap分区。

2. 使onmp开机自动运行
vim /etc/rc.local
在exit 0之前加一句:onmp start

一个运行正常的rc.local文件示例:

root@hello:~# cat /etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
mkdir /mnt/onmp
mount -a
swapon -a
mkdir -p /opt
mount -o bind /mnt/onmp/opt /opt
/opt/etc/init.d/rc.unslung start
exit 0
安装nextcoud
onmp启动成功后,就可以安装nextcloud了。
启动onmp:
onmp open
选择7,安装网站程序,
选择4,nextcloud
安装需要15分钟左右的时间
安装后提示:

正在解压…
解压完成…
正在配置Nextcloud…
Nextcloud安装完成
浏览器地址栏输入:192.168.15.1:99 即可访问

首次打开要求配置用户和数据库信息
地址默认 localhost
用户名和密码是你自己设置的,或者是默认的root/123456

nextcloud升级失败,退出维护模式
opkg install sudo
sudo -u nobody php-cli occ maintenance:mode --off

Windows查看进程CMD命令和终止进程CMD命令的更多相关文章

  1. windows 查看端口号,关闭端口进程

    1.打开cmd,输入:netstat -ano | findstr 8080,根据端口号查找对应的PID.结果如下: 2.根据PID找进程名称,输入命令:tasklist | findstr 1789 ...

  2. windows 查看端口占用以及关闭该进程

    win+r -> 输入cmd netstat -ano 找到占用端口进程的pid control+shift+esc 打开 任务管理器 menu->'查看'->'选择列->勾选 ...

  3. windows查看和杀死占用端口的进程

    1.首先使用 netstat -ano查看占用端口的进程号 2.然后使用 taskkill /PID (进程号)杀死进程

  4. Windows查看指定端口是否占用和查看进程

    Winodows上查看指定端口号的使用情况和占用进程以及终止所占用端口进程进程用到.下面主要描述如何操作. 1.查看所有端口占用情况 C:\Users\Administrator>netstat ...

  5. Linux查看进程和终止进程的技巧

    1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab). 2. ps 命令用于查看当前正在运行 ...

  6. Linux服务器管理: 系统的进程管理终止进程kill命令

    在Linux中如何用kill终止进程: kill -l [root@localhost~]#kill -l   可以看到kill中有很多的 常用:  -1 是重启一个进程    -9 是强制杀死进程 ...

  7. Linux 进程管理 kill、killall、pkill命令

    Linux常用信号(进程间通信) 系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询.命令如下: [root@lo ...

  8. 使用 kill 命令杀死 java进程,你用对了吗?

    在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况. 每次都是本能执行如下步骤 jps kill -9 <pid> reboot 有一次验证,发现代码中添加的Sh ...

  9. kill 根据PID终止进程

    根据PID终止进程 kill [option] PID-list kill 通过向一个或多个进程发送信号来终止进程.除超级用户外,只有进程的所有者才可以对进程执行kill 参数 PID-list为ki ...

随机推荐

  1. [转]不让iTunes备份到c盘

    很多人现在的C盘都是空间不大的SSD硬盘,ITUNES备份老是占越来越大的空间,不如动手把它改成其它盘好了.下面7个步骤教你转移备份. 1.需要一个小工具:Juction.exe,如果你已经是WIN7 ...

  2. apache使用.htaccess文件中RewriteRule重定向后,URL中的加号无法解析

    今天在使用.htaccess做伪静态的时候,发生一件怪事,URL里存在C++时会有问题,在处理C++这个词的时候,无论如何,$_GET都得不到++,只能得到C空格. 一开始我以为是没用urlencod ...

  3. python学习之路2(程序的控制结构)

    1.程序的分支结构 1.1 单分支 if <条件>:                       例:guess = eval(input()) <语句块>          ...

  4. Python进阶-函数默认参数

    Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 ...

  5. 初识python 文件读取 保存

    上一章最后一题的答案:infors.sort(key=lambda x:x['age'])print(infors)--->[{'name': 'laowang', 'age': 23}, {' ...

  6. Teen Readers【青少年读者】

    Teen Readers Teens and younger children are reading a lot less for fun, according to a Common Sense ...

  7. go学习笔记-程序测试

    程序测试 测试是一个可重复的过程,它验证某个东西是否按预期工作.一般通过 go test 进行测试,步骤如下 首先,是我们的文件名.Go 要求所有的测试都在以 _test.go 结尾的文件中.这使得我 ...

  8. 集合--数据结构与算法JavaScript描述(9)

    集合 Set 概念 (跟高中时数学课上学的集合几乎一模一样哦哈哈) 集合是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要的特性: 集合中的成员是无序的. 集合中不允许相同成员存 ...

  9. 如何保证HashMap线程安全

    可使用Java 1.5推荐的java.util.concurrent包ConcurrentHashMap来实现,内部不再使用类似HashTable的synchronized同步锁,而是使用Reentr ...

  10. Git的使用规范(一)

    1.建议使用 git add.2.不建议使用git commit -a3.撤销没有add的git checkout . 这个命令我们可以好好的介绍一下,如果当你对文件进行了修改,你没有进行git ad ...