MrRaven
发布于

新人向,在ubuntu上安装bbs-go

感谢其他大神的教程:史上最全bbs-go安装教程基于golang的开源论坛bbs-go的搭建步骤, 这里是基于Ubuntu的VPS进行安装,测试成功的。

想要运行这个程序,首先需要做的就是让你的服务器上有Golang的程序包。首先是下载Go语言的程序包,并且解压

sodo wget -c https://golang.org/dl/go1.15.6.linux-amd64.tar.gz
tar xvf go1.15.6.linux-amd64.tar.gz

这时候,你会得到一个go的文件夹,下面我们要把go的权限设置为root,并且拷贝文件到 /usr/local

sudo chown -R root:root ./go
    sudo mv go /usr/local

之后需要设置Go Paths

sudo nano ~/.profile

在文件的末尾添加下列信息,Ctrl+o 保存, Ctrl+x 退出

export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
source ~/.profile

然后确认下Go的版本

go version

紧接着,我们需要安装必要的包

sudo apt update
sudo apt install npm git

宝塔界面+数据库+Nginx的安装

使用宝塔的一键安装,主要是为了方便我这样子的小白吧。这里需要宝塔安装Nginx+PHP+Mysql。
Nginx主要是为了反向端口,Mysql是因为BBS-GO需要,而PHP的话,这里我要phpmyadmin来导入初始的数据。先安装宝塔面板。(更多的安装信息可以查看这里

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

安装完之后,你会获得相关信息,怎么通过宝塔的面板安装Nginx+PHP+Mysql我就不再赘述。

下面来正式开始安装BBS-GO了。首先是获取源代码

git clone https://github.com/mlogclub/mlog.git

下载之后,你可以看到mlog的目录,进入到目录里面。BBS-GO有两个模块,一个是Server,一个是Site。

首先我们先配置Server,注意Go的版本不要低于1.15. 拷贝一份配置文件

cp ./mlog/server/bbs-go.example.yaml ./mlog/server/bbs-go.yaml

修改配置文件,这里是修改域名

BaseUrl: https://mlog.club # 网站域名

修改数据库信息,这里我用宝塔已经建好数据了

MySqlUrl: username:password@tcp(localhost:3306)/bbsgo_db?charset=utf8mb4&parseTime=True&loc=Local

修改附件的上传方式

# 启用上传方式
  Enable: local
  # 本地文件上传
  Local:
    Host: https://img.zaicanada.com/ # 上传文件域名
    Path: /www/wwwroot/img.zaicanada.com # 上传目录

配置修改完成了之后,这里导入一些默认的数据,这时候,小白的我们就需要宝塔的PHPMyAdmin了。官方的参考信息

CREATE TABLE `t_user`
(
    `id`                 bigint(20) NOT NULL AUTO_INCREMENT,
    `username`           varchar(32)         DEFAULT NULL,
    `email`              varchar(128)        DEFAULT NULL,
    `email_verified`     tinyint(1) NOT NULL DEFAULT '0',
    `nickname`           varchar(16)         DEFAULT NULL,
    `avatar`             text,
    `background_image`   text,
    `password`           varchar(512)        DEFAULT NULL,
    `home_page`          varchar(1024)       DEFAULT NULL,
    `description`        text,
    `score`              bigint(20) NOT NULL,
    `status`             bigint(20) NOT NULL,
    `topic_count`        bigint(20) NOT NULL,
    `comment_count`      bigint(20) NOT NULL,
    `roles`              text,
    `type`               bigint(20) NOT NULL,
    `forbidden_end_time` bigint(20) NOT NULL DEFAULT '0',
    `create_time`        bigint(20)          DEFAULT NULL,
    `update_time`        bigint(20)          DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`),
    UNIQUE KEY `email` (`email`),
    KEY `idx_user_score` (`score`),
    KEY `idx_user_status` (`status`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- 初始化用户数据(用户名:admin、密码:123456)
INSERT INTO t_user (`id`, `username`, `nickname`, `avatar`, `email`, `password`, `status`, `create_time`, `update_time`,
                    `roles`, `type`, `description`, `topic_count`, `comment_count`, `score`)
SELECT 1,
       'admin',
       'bbsgo站长',
       '',
       'a@example.com',
       '$2a$10$ofA39bAFMpYpIX/Xiz7jtOMH9JnPvYfPRlzHXqAtLPFpbE/cLdjmS',
       0,
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000),
       'owner',
       0,
       '轻轻地我走了,正如我轻轻的来。',
       0,
       0,
       0
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_user` WHERE `id` = 1);


-- 初始化话题节点
CREATE TABLE `t_topic_node`
(
    `id`          bigint(20) NOT NULL AUTO_INCREMENT,
    `name`        varchar(32) DEFAULT NULL,
    `description` longtext,
    `sort_no`     bigint(20)  DEFAULT NULL,
    `status`      bigint(20) NOT NULL,
    `create_time` bigint(20)  DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`),
    KEY `idx_sort_no` (`sort_no`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

INSERT INTO `t_topic_node` (`id`, `name`, `description`, `sort_no`, `status`, `create_time`)
SELECT 1, '默认节点', '', 0, 0, (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_topic_node` WHERE `id` = 1);

-- 初始化系统配置表
CREATE TABLE `t_sys_config`
(
    `id`          bigint(20)   NOT NULL AUTO_INCREMENT,
    `key`         varchar(128) NOT NULL,
    `value`       text,
    `name`        varchar(32)  NOT NULL,
    `description` varchar(128) DEFAULT NULL,
    `create_time` bigint(20)   NOT NULL,
    `update_time` bigint(20)   NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `key` (`key`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- 初始化系统配置数据
INSERT INTO t_sys_config(`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteTitle',
       'bbs-go演示站',
       '站点标题',
       '站点标题',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteTitle');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteDescription',
       'bbs-go,基于Go语言的开源社区系统',
       '站点描述',
       '站点描述',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteDescription');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteKeywords',
       'bbs-go',
       '站点关键字',
       '站点关键字',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteKeywords');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteNavs',
       '[{\"title\":\"首页\",\"url\":\"/\"},{\"title\":\"话题\",\"url\":\"/topics\"},{\"title\":\"动态\",\"url\":\"/tweets\"},{\"title\":\"文章\",\"url\":\"/articles\"}]',
       '站点导航',
       '站点导航',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteNavs');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'defaultNodeId',
       '1',
       '默认节点',
       '默认节点',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'defaultNodeId');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'tokenExpireDays',
       '365',
       '用户登录有效期(天)',
       '用户登录有效期(天)',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'tokenExpireDays');

INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'scoreConfig',
       '{"postTopicScore":1,"postCommentScore":1,"checkInScore":1}',
       '积分配置',
       '积分配置',
       (UNIX_TIMESTAMP(now()) * 1000),
       (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'scoreConfig');

这时候,已经可以把Server端运行起来了,输入

go run main.go

下面是设置Site模块

首先是安装依赖包,进入目录./site 后,执行 npm install

此外还需要修改./mlog/site/nuxt.config.js,配置后台服务的 api 访问地址:

proxy: {
    '/api/':
      process.env.NODE_ENV === 'production'
        ? 'https://tie.zaicanada.com'
修改完之后,执行 npm run dev
则启动前端服务,服务端口 3000

访问http://IP:3000
当然到了这里还是不能算是完成品,这时候回到宝塔的界面。我这里添加了两个域名 tie.zaicanada.com 作为论坛的域名,img.zaicanada.com 作为本地图片的域名


PHP这里已经不需要了,你可以设置为纯静态。

添加完成之后,选中域名,tie.zaicanada.com,选择反向代理。

这里选择添加反向代理


此外记得用宝塔申请SSL,否者验证的图片有可能无法显示。

最后登录的管理员账号: admin/123456

浏览 (748)
点赞 (2)
收藏
1条评论
大喵喵酱
大喵喵酱

👍 分享的很详细

点赞
评论