前言
搭建一个自己的论坛是多么美好的一件事情,鉴于此,我们就开始用nodebb来搭建一个属于自己的论坛
设计
我们使用两个镜像,mongo和nodebb/docker.
步骤
安装docker
如果不知道怎么安装docker的,看我这篇文章{% post_link linux安装docker %}
拉取镜像
docker pull mongo && docker pull nodebb/docker
拉去成功后:
创建docker network
docker network create mongo-net
解释:该mongo-net是为了让nodebb和mongo数据库进行连接
初始化mongo容器,并连接上mongo-net
网络
docker run -d --name db --restart always --network mongo-net -p 127.0.0.1:27017:27017 -v /root/mongo/db:/data/db mongo
解释:
--restart always
表示不管任何情况退出都自动重启--network mongo-net
表示把该容器连接上mongo-net
网络-p 127.0.0.1:27017:27017
表示把容器27017端口映射到宿主机的27017端口,并且只能本地访问-v /root/mongo/db:/data/db
表示把容器中的数据放到宿主机的/root/mongo/db目录
,这个目录没有会自动创建.
初始化nodebb容器,并连接上mongo-net
网络
docker run -d --name forum --restart always --network mongo-net -p 4567:4567 nodebb/docker
查看是否连接到网络
docker network inspect mongo-net
打开nodebb初始页面进行配置http://qiud.zsyac.club:4567
注意:
- 写你自己的服务器地址和端口号
- 这个比较吃内存,最好1G,有时候出错就是内存不够
- 刚开始加载比较慢,耐心等等
成功后进入这个页面: 大功告成,剩下的就是自己来玩论坛了,可以参考官网(www.hedaoshe.com)
优化
虽然经过上面的步骤已经能正常玩论坛了,但是为了数据不丢失,我们可以定期把数据备份到git仓库,你甚至可以备份到多个仓库,从而确保数据不丢失,我这里以github做演示.
把本地数据文件夹初始化为一个git仓库,默认你已经安装了git,不知道怎么安装的看我这篇文章{% post_link linux安装git %}
cd /root/mongo git init #空文件夹不能提交,所以要写个文件 touch readme.md && echo 'mongodb_data'>> readme.md git add -A git commit -m
date +%Y%m%d%H%M%S
初始化你的个人信息,并配置公匙与密匙
#配置个人信息 git config --global user.email "172601543@qq.com" git config --global user.name "qiudong" #生成公匙密匙 ssh-keygen -t 'rsa'
找到公匙文件,配置到github上面,公匙,密匙默认位置是
/root/.ssh
下面创建一个远程仓库并和远程仓库关联,去github怎么创建我就不讲了,我直接从关联开始,我的github仓库是
git@github.com:qiudong19901008/MongodbData.git
#添加远程仓库位置 git remote add mongo git@github.com:qiudong19901008/MongodbData.git #推送到远程仓库 git push -uf mongo master
注意: 推送的时候要加上
-uf
,表示定位并且强制推送,覆盖掉远程仓库的文件,否则会推送失败
- 写一个脚本并测试能不能推送
我脚本位置在/root/syncData.sh
,我的记录日志在/root/syncData.log
touch /root/syncData.sh
touch /root/syncData.log
脚本内容为:
#!/bin/bash
echo `date '+%Y-%m-%d %H:%M:%S'` >> /root/syncData.log
cd /root/mongo
echo `git add -A` &>> /root/syncData.log
echo `git commit -m 'insignificance'` &>> /root/syncData.log
echo `git push` &>> /root/syncData.log
我解释下脚本内容:第一句话是把当前时间写道日志文件中.第二句话是进入我们本地仓库中.后面的语句是把数据推送到远程仓库,并且把推送的信息记录到日志文件中
赋予权限并测试
chmod +x syncData.sh
/root/syncData.sh
可以发现脚本能正常执行
把脚本放入
crontab
定时执行任务中crontab
是linux自带的定时任务程序,可以点我了解下#编辑任务,和使用
vi
编辑文件一样 crontab -e #设置半小时同步一次 1,30 * * * * /root/syncData.sh
结束语
到此为止,我们就不用再害怕数据丢失了,可以非常放心的玩我们的论坛了,可喜可贺!