Total Pageviews

Thursday 1 July 2021

golang 实现的youBBS: goyoubbs

官方论坛&示例: https://www.youbbs.org

go get github.com/ego008/goyoubbs

轻论坛功能

  • 用户:用户名密码登录、微博、QQ 登录
  • 用户上传文件存储:本地、七牛、又拍云
  • 根据标题自动提取tag 或管理员手工设置tag
  • 根据tag 获取相关文章
  • 站内搜索标题、内容
  • 内容里链接点击计数
  • 自动安装HTTPS并自动更新

快速使用

即使你没有接触过golang, 按照下面步骤也能快速部署

以linux 64位系统为例,依次输入下面几行命令即可:

下载主程序包、静态文件包 (最新版下载https://github.com/ego008/goyoubbs/releases 选择适合你系统的包)

wget https://github.com/ego008/goyoubbs/releases/download/current/goyoubbs-linux-amd64.zip
wget https://github.com/ego008/goyoubbs/releases/download/current/site.zip
unzip goyoubbs-linux-amd64.zip
unzip site.zip
./goyoubbs

如果出现类似下面的提示,说明已正常启动:

2017/12/06 16:24:42 MainDomain: http://127.0.0.1:8082
2017/12/06 16:24:42 youdb Connect to mydata.db
2017/12/06 16:24:42 Web server Listen to http://127.0.0.1:8082

在浏览器打开上面提示里Web server Listen to 的网址 http://127.0.0.1:8082 就可以看到网站首页

开启HTTPS

为什么要用HTTPS?网站更安全、搜索引擎更喜欢、没有宽带运营商劫持放广告。。。

go youBBS 已经为开启HTTPS 做了最简化处理,提供两种方式开启

自动配置(推荐)

  • 把你的域名 yourdomain.com 指向你的服务器
  • 修改配置文件 config/config.yaml 下面三项即可:
Main:
    HttpPort: 80
    HttpsOn: true
    Domain: "yourdomain.com"

下面两个留空:

    TLSCrtFile: ""
    TLSKeyFile: ""

保存配置文件,运行主程序 ./goyoubbs

打开浏览器,输入网址 https://yourdomain.com

用其它工具

用其它工具生成 crtkey 文件,在配置里填写这两个文件的路径,如:

Main:
    HttpPort: 80
    HttpsOn: true
    Domain: "youbbs.org"
    ...
    TLSCrtFile: "/root/ssl/chained.pem"
    TLSKeyFile: "/root/ssl/domain.key"

具体过程请移步 https://www.youbbs.org/t/2169

问题、建议、贡献

官方网站 https://www.youbbs.org


from https://github.com/ego008/goyoubbs

-----


自由人的精神角落,一个无需手机号和邮箱即可发言的论坛。

2049bbs,一个无需手机号和邮箱即可注册发言的论坛。Fork 自 goyoubbs

本地开发

安装 go,然后 clone 本仓库。

cd $GOPATH

go get -u -v github.com/terminus2049/2049bbs
  1. 然后 cd 到相应目录,一般是 go/src/github.com/terminus2049/2049bbs
go run main.go

然后在浏览器打开 127.0.0.1:8082 即可,或者直接编译,运行 sudo ./2049bbs

  1. 利用 Docker 进行开发
  • 首先安装 Docker 及 docker-compose
  • 将本项目 clone 到本地,任何目录均可
  • 进入项目目录,在安装好 docker 及 docker-compose 后,运行脚本 make dev 即自动拉去构建好的镜像
  • 运行成功后 docker ps 即可发现名为 bbs 的容器正在运行中
machine: 2049BBS % docker ps
CONTAINER ID        IMAGE                                                                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
d798030a6f0f        docker.pkg.github.com/speechfree/go-base/go-base:base                       "tail -f /dev/null"      About an hour ago   Up About an hour    0.0.0.0:8000->8082/tcp   bbs
  • 然后,docker exec -it bbs bash 进入到容器中,通过 dep ensure 拉去项目依赖到本地目录 vendor 中
  • 完成后运行 go run main.go 若出现如下输出即表明项目运行成功
2019/12/20 13:23:07 MainDomain: http://127.0.0.1:8082
2019/12/20 13:23:07 youdb Connect to mydata.db
2019/12/20 13:23:07 Web server Listen port 8082
  • 在宿主机打开任意浏览器输入 http://localhost:8000 即可看到构建成功的应用。
  • 另,在开发过程中,为了方便修改代码后重载应用,可以通过 realize start 启动应用,则修改任何 Golang 代码,其均会自动构建加载。

数据库

如果没有 kv 数据库开发经验,最好在程序跑起来后,用 boltdbweb 打开数据库文件 mydata.db,了解一下内部存储结构。

部署

编译二进制文件 go build非 Linux 平台为交叉编译 GOOS=linux GOARCH=amd64 go build,由于使用了 gojieba 分词引擎,不能跨平台编译,请使用在线api功能、移除相关组件后再尝试跨平台编译。

将编译好的二进制文件与 config、static 和 view 三个文件夹的文件放在同一个文件夹内,运行 ./2049bbs

服务器配置:在生产环境中,建议打开 https,把 config.yaml 中 HttpsOn: false 改为 true。也可以自行申请 cloudflare 证书,相应配置可以参考 config-2049.yaml.

备份

需要备份 mydata.db 和 /static/avatar 文件。


from https://github.com/Terminus2049/2049BBS


No comments:

Post a Comment