系统平台
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
---
Linux instance-20200730-1510 5.3.0-1024-oracle #26~18.04.1-Ubuntu SMP Sat Jun 6 00:41:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
golang安装
下载golang二进制,由于我们系统为64位系统,因此下载:
wget https://golang.org/dl/go1.14.6.linux-amd64.tar.gz
解压并移动到/usr/local
目录:
tar -zxvf go1.14.6.linux-amd64.tar.gz
mv go /usr/local/
设置go环境
vi /etc/profile
---
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
生效
source /etc/profile
验证安装
go version
---
go version go1.14.6 linux/amd64
golang 安装完成!
nodejs安装
bbs-go的前端需要nodejs环境
Node.js的所有版本都可以从官方的APT存储库中派生。需要手动添加到您的系统中。
apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
开始安装
apt install -y nodejs
另外需要安装在本地构建插件的开发工具
apt install -y gcc g++ make
验证安装
node -v
---
v12.18.3
npm -v
---
6.14.6
mysql安装
安装
apt install -y mysql-server
配置
对于全新安装,将需要运行随附的安全脚本。这会更改一些不太安全的默认选项,例如远程root登录和样本用户。
mysql_secure_installation
bbs-go安装
项目地址:https://github.com/mlogclub/bbs-go
下载bbs-go源码
git clone https://github.com/mlogclub/mlog.git
bbs-go采用前后端分离技术,网站和后台均通过api
进行数据通信。
bbs-go包含:
- server
- site
模块划分
server模块
server
基于golang开发,为整个项目提供数据接口支撑。site
模块的数据均从该模块获取。
site模块
site
模块使用nuxt.js
框架搭建,是bbs-go的用户前端页面。
配置说明
server配置
server
模块的示例配置文件为server/bbs-go.example.yaml
:
Env: prod # 环境,线上环境:prod、测试环境:dev
BaseUrl: https://mlog.club # 网站域名
Port: '8082' # 端口
LogFile: /data/logs/bbs-go.log # 日志文件
ShowSql: false # 是否打印sql
StaticPath: /data/www # 根路径下的静态文件目录,可配置绝对路径
# 数据库连接
MySqlUrl: username:password@tcp(localhost:3306)/bbsgo_db?charset=utf8mb4&parseTime=True&loc=Local
# github登录配置
Github:
ClientID:
ClientSecret:
# qq登录配置
QQConnect:
AppId:
AppKey:
# 阿里云oss配置
AliyunOss:
Host: 请配置成你自己的
Bucket: 请配置成你自己的
Endpoint: 请配置成你自己的
AccessId: 请配置成你自己的
AccessSecret: 请配置成你自己的
# 邮件服务器配置,用于邮件通知
Smtp:
Addr: smtp.qq.com
Port: '25'
Username: 请配置成你自己的
Password: 请配置成你自己的
# 百度ai配置,用于自动分析文章摘要、标签
BaiduAi:
ApiKey:
SecretKey:
需要将该文件复制为server/bbs-go.yaml
文件,然后根据具体内容修改为自己的。
site配置
site
模块基于nuxt.js
开发,配置文件位于site/nuxt.config.js
。在site目录下提供了nuxt.config.example.js
配置示例。
复制为nuxt.config.js
,然后修改其中
- port:site模块启动端口,默认为3000
- proxy:server模块的连接地址,通过该地址可以请求server模块数据
安装启动
初始化数据库
在启动server之前,需要初始化数据库。
新建数据库bbsgo_db
,名称可以自定。
虽然bbs-go启动时会自动建表,但有的配置:管理员用户、基本配置等,需要提前初始化。
-- 初始化用户表
CREATE TABLE IF NOT EXISTS `t_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
`nickname` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL,
`avatar` text COLLATE utf8_unicode_ci,
`password` varchar(512) COLLATE utf8_unicode_ci DEFAULT NULL,
`status` int(11) NOT NULL,
`roles` text COLLATE utf8_unicode_ci,
`type` int(11) NOT NULL,
`description` text COLLATE utf8_unicode_ci,
`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_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- 初始化用户数据(用户名:admin、密码:123456)
INSERT INTO `t_user`(`id`, `username`, `nickname`, `avatar`, `email`, `password`, `status`, `create_time`, `update_time`, `roles`, `type`, `description`) VALUES (1, 'admin', '管理员', '', '', '$2a$10$ofA39bAFMpYpIX/Xiz7jtOMH9JnPvYfPRlzHXqAtLPFpbE/cLdjmS', 0, 1555419028975, 1555419028975, 'owner', 0, '轻轻地我走了,正如我轻轻的来。');
-- 初始化系统配置表
CREATE TABLE IF NOT EXISTS `t_sys_config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`value` text COLLATE utf8_unicode_ci,
`name` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`description` varchar(128) COLLATE utf8_unicode_ci 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=utf8 COLLATE=utf8_unicode_ci;
-- 初始化系统配置数据
insert into t_sys_config(`key`, `value`, `name`, `description`, `create_time`, `update_time`) values
('siteTitle', 'bbs-go', '站点标题', '站点标题', 1555419028975, 1555419028975),
('siteDescription', 'bbs-go,基于Go语言的开源社区系统', '站点描述', '站点描述', 1555419028975, 1555419028975),
('siteKeywords', 'bbs-go', '站点关键字', '站点关键字', 1555419028975, 1555419028975),
('siteNavs', '[{\"title\":\"首页\",\"url\":\"/\"},{\"title\":\"话题\",\"url\":\"/topics\"},{\"title\":\"文章\",\"url\":\"/articles\"}]', '站点导航', '站点导航', 1555419028975, 1555419028975);
同样需要分模块说明。
在源码根目录提供了build.sh
脚本,我们可以通过该脚本来构建server
以及site
。
构建成功之后,可以在server目录下看到可执行二进制文件bbs-go
。
另外可以通过实行运行的方式。
server模块
go run main.go
site模块
npm install
npm run dev
site模块可以通过pm2
来进行管理。
npm install pm2 -g
启动
pm2 start npm --name "mlog-web-site" -- run dev
使用教程
本节记录在使用过程中的部分教程。
文件上传
包括图片、文件等,目前提供了两种:
- aliyun oss
- local
# 上传配置
Uploader:
# 启用上传方式
Enable: Oss
# 阿里云oss配置
AliyunOss:
Host: 请配置成你自己的
Bucket: 请配置成你自己的
Endpoint: 请配置成你自己的
AccessId: 请配置成你自己的
AccessSecret: 请配置成你自己的
StyleSplitter: 阿里云oss图片样式分隔符
StyleAvatar: 头像图片样式名称
StylePreview: 预览图片样式名称
StyleDetail: 详情图片样式名称
# 本地文件上传
Local:
Host: http://example.com/ # 上传文件域名
Path: /wwwroot/example.com # 上传目录
阿里云OSS方式由于我没使用,因此只说明Local方式:
Enable: Local //这里修改为Local
Host: http://example.com/ # 上传文件域名
Path: /wwwroot/example.com # 上传目录
然后配置nginx
server {
listen 80;
# 设置访问域名
server_name example.com;
# 设置最大上传
client_max_body_size 20M;
location / {
root /wwwroot/example.com;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
至此教程完结。
demo站点:http://bbs.tkmiss.com/