Bbs
b3log/symphony
环境准备
安装 JDK,版本至少需要 JDK8
安装 MySQL,版本至少需要 5.6
安装 Tomcat,版本至少需要 9
安装 Maven,下载解压后设置 bin 目录到 PATH 环境变量中
编译项目
下载源码 https://github.com/b3log/symphony/archive/3.0.0.tar.gz
解压后按需修改 src/main/resources/local.properties 中的数据库口令配置
./WEB-INF/classes/local.properties
jdbc.username=root
jdbc.password=
执行 mvn install 编译打包,完成后在 target 目录下将生成 symphony.war
部署
手动新建数据库 b3log_symphony ,字符集用 utf8mb4,排序规则 utf8mb4_general_ci
将 war 包部署到 Tomcat/Jetty 的 webapps 目录下,然后启动服务器,注意查看 logs 目录下的日志情况
浏览器访问 http://localhost:8080/symphony
默认的管理员账号为 admin/admin
symphony 配置 nginx 代理 websocket 连接端口
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
...
location / {
...
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Sym 配置项说明
概述
配置文件 symphony.properties 是 Sym 的功能配置文件,所有影响界面展示、功能使用的配置项都在这里。
该配置文件在源码目录中位于 src/main/resources/ 目录下;在 war 包中位于 WEB-INF/classes/ 目录下。
注意事项
该文件使用 Unicode 进行编码
编辑后需要重启服务器才能生效
配置项说明
下面按配置文件中的注释分段进行说明。
Key
keyOfSymphony=dev_key:对外接口调用时需要的 key,生产环境必须修改,修改后请同步修改 cron.xml
Post
minStepArticleTime=10000:发布帖子最小间隔时长,单位毫秒
minStepCmtTime=5000:发布回帖最小间隔时长,单位毫秒
minStepChatTime=5000:发布聊天最小间隔时长,单位毫秒
newbieFirstArticle=0:新手帖需要注册后多久才允许发布,单位毫秒
Pagination & Display
defaultPaginationCnt=20:分页每页显示条数
defaultPaginationWindowSize=10:分页页号显示数
Index & Side
indexListCnt=18:首页列表显示条数
indexPerfectCnt=36:首页优选列表显示条数
trendTagsCnt=18:引用最多的标签显示条数
newTagsCnt=28:最新标签显示条数
indexArticlesCnt=20:帖子列表显示条数
indexArticleParticipantsCnt=7:帖子参与者显示数
latestArticlesWindowSize=10:帖子列表分页页号显示数
latestArticleParticipantsCnt=7:帖子参与者显示数
sideHotArticlesCnt=10:近期热议显示条数
sideRandomArticlesCnt=10:随便看看显示条数
sideTagsCnt=28:标签显示条数
sideRelevantArticlesCnt=15:相关帖子显示条数
sizeLatestCmtsCnt=10:最新回帖显示条数
以上有的配置项代码是被注释掉的,请以最新源码为准。
User Home
userHomeArticlesCnt=30:用户主页帖子列表每页显示条数
userHomeArticlesWindowSize=10:用户主页帖子列表分页页号显示数
userHomeCmtsCnt=30:用户主页回帖列表每页显示条数
userHomeCmtsWindowSize=10:用户主页回帖列表分页页号显示数
userHomeFollowingUsersCnt=30:用户主页关注用户列表每页显示条数
userHomeFollowingUsersWindowSize=10:用户主页关注用户列表分页页号显示数
userHomeFollowingTagsCnt=30:用户主页关注标签列表每页显示条数
userHomeFollowingTagsWindowSize=10:用户主页关注标签列表分页页号显示数
userHomeFollowingArticlesCnt=30:用户主页收藏帖子列表每页显示条数
userHomeFollowingArticlesWindowSize=10:用户主页收藏帖子列表分页页号显示数
userHomeFollowersCnt=30:用户主页关注者列表每页显示条数
userHomeFollowersWindowSize=10:用户主页关注者列表分页页号显示数
userHomePointsCnt=30:用户主页积分列表每页显示条数
userHomePointsWindowSize=10:用户主页积分列表分页页号显示数
Notifications
replyNotificationsCnt=20:回复通知列表每页显示条数
replyNotificationsWindowSize=10:回复通知页列表分页页号显示数
atNotificationsCnt=20:艾特通知列表每页显示条数
atNotificationsWindowSize=10:艾特通知页列表分页页号显示数
commentedNotificationsCnt=20:回帖通知列表每页显示条数
commentedNotificationsWindowSize=10:回帖通知页列表分页页号显示数
followingNotificationsCnt=20:关注通知列表每页显示条数
followingNotificationsWindowSize=10:关注通知页列表分页页号显示数
pointNotificationsCnt=20:积分通知列表每页显示条数
pointNotificationsWindowSize=10:积分通知页列表分页页号显示数
broadcastNotificationsCnt=20:广播通知列表每页显示条数
broadcastNotificationsWindowSize=10:广播通知页列表分页页号显示数
sysAnnounceNotificationsCnt=20:系统公告通知列表每页显示条数
sysAnnounceNotificationsWindowSize=10:系统公告通知页列表分页页号显示数
Article Comment
articleCommentsPageSize=30:回帖列表每页显示条数
articleCommentsWindowSize=10:回帖列表分页页号显示数
Tags Wall
tagsWallTrendCnt=30:标签墙热门标签显示数
tagsWallColdCnt=30:标签墙冷门标签显示数
标签墙访问路径:/tags
Tag Articles
tagArticlesWindowSize=10:标签帖子列表分页页号显示数
tagParticipantsCnt=7:标签参与者显示数
tagArticleParticipantsCnt=7:标签帖子列表参与者显示数
tagRelatedTagsCnt=7:相关标签显示数
tagRelatedWeight=1:相关标签权重阈值,只有大于等于这个值才认为是相关标签
City
cityArticlesWindowSize=10:同城帖子列表分页页号显示数
cityArticleParticipantsCnt=7:同城帖子列表参与者显示数
cityUserPageSize=30:同城用户列表每页显示条数
cityUsersWindowSize=10:同城用户列表分页页号显示数
Top Ranking List
topBalanceCnt=20:积分余额排行榜显示条数
topConsumptionCnt=20:积分消费排行榜显示条数
topCheckinCnt=20:签到达人排行榜显示条数
Chat Room
chatRoom.msgCnt=40:聊天室消息显示条数
Skins
skinDirName=classic:默认的主题
mobileSkinDirName=mobile:默认的移动端主题
Default User Avatar
defaultThumbnailURL=http://7xjz0r.com1.z0.glb.clouddn.com/user-thumbnail.png:默认用户头像(头像生成失败的情况下会用这个头像)
Stie Visit Statistic Code
siteVisitStatCode= 第三方统计代码,比如百度统计
Qiniu
qiniu.enabled=false:是否启用七牛云存储
qiniu.accessKey=:七牛云 Access Key
qiniu.secretKey=:七牛云 Secret Key
qiniu.domain=http://7xjz0r.com1.z0.glb.clouddn.com:七牛云访问域名
qiniu.bucket=symphony-dev:七牛云 Bucket
upload.img.maxSize=1048576:上传图片最大大小,单位字节
upload.file.maxSize=104857600:上传文件最大大小,单位字节
upload.dir=./upload/:上传本地服务器目录路径,如果启用了七牛云则优先使用七牛云
注意:
生产环境启用上传本地必须修改 upload.dir,使用绝对路径指定文件存放路径,不要指定到容器下
生产环境尽量使用单独的域名来获取上传的文件,单独处理流量,也避免出现安全隐患
Point
pointInit=500:用户注册后赠送的积分值
pointAddArticle=20:添加帖子需要消耗的积分值
pointUpdateArticle=5:更新帖子需要消耗的积分值
pointAddComment=5:回帖需要消耗的积分值
pointUpdateComment=5:更新回帖需要消耗的积分值
pointAddSelfArticleComment=2:自己回自己帖子时需要消耗的积分值
pointInviteRegister=200:邀请注册可获赠的积分值
pointActivityCheckinMin=5:签到活动可获赠的最小积分值
pointActivityCheckinMax=20:签到活动可获赠的最大积分值
pointActivityCheckinStreak=200:连续签到可获赠的积分值
pointThankComment=15:感谢回帖积分值
pointAddArticleBroadcast=100:发布同城广播需要消耗的积分值
pointAddArticleReward=20:启用帖子打赏区需要消耗的积分值
pointAtParticipants=3:使用艾特参与者功能时每个艾特需要消耗的积分值
pointStickArticle=100:指定帖子需要消耗的积分值
pointThankArticle=20:感谢帖子需要消耗的积分值
stickArticleTime=1800000:置顶帖子的时长,单位毫秒
pointActivityCharacter=5:写字活动可获赠的积分值
pointDataExport=100:数据导出需要消耗的积分值
pointInvitecode=100:购买邀请码需要消耗的积分值
pointInvitecodeUsed=200:邀请码被使用可获赠的积分值
pointActivityEatingSnake=20:贪吃蛇活动需要消耗的积分值
pointActivityEatingSnakeCollectMax=50:贪吃蛇活动可获赠的最大积分值
pointPerfectArticle=100:帖子上优选可获赠的积分值
pointActivityGobang=1:五子棋活动需要消耗的积分值
pointTransferMin=3000:允许使用积分转账功能的积分余额阈值
pointExchangeMin=5000:允许将积分兑换为红包的最小积分余额阈值
pointExchangeUnit=150:积分兑换红包 ¥1 所需积分值
Activity
activity1A0001Closed=false:是否关闭上证指数博彩活动
activity1A0001LivenessThreshold=17.5:参与上证指数博彩活动所需活跃度最小阈值
领取昨日活跃奖励积分相关参数:
activitYesterdayLivenessReward.activity.perPoint=5
activitYesterdayLivenessReward.article.perPoint=20
activitYesterdayLivenessReward.comment.perPoint=5
activitYesterdayLivenessReward.pv.perPoint=0.5
activitYesterdayLivenessReward.reward.perPoint=10
activitYesterdayLivenessReward.thank.perPoint=15
activitYesterdayLivenessReward.vote.perPoint=5
activitYesterdayLivenessReward.acceptAnswer.perPoint=10
activitYesterdayLivenessReward.maxPoint=300
Mail channel: sendcloud or aliyun or local
mail.channel=local:邮件渠道
mail.batch.articleSize=16:批量邮件推送帖子条数
SendCloud Mail channel
mail.sendcloud.apiUser=:SendCloud 渠道 API User
mail.sendcloud.apiKey=:SendCloud 渠道 API Key
mail.sendcloud.from=account@hacpai.com:SendCloud 发信人邮件地址
mail.sendcloud.batch.apiUser=:SendCloud 渠道批量 API User
mail.sendcloud.batch.apiKey=:SendCl 渠道批量 API Key
mail.sendcloud.batch.from=weekly@symphony.b3log.org:SendCloud 渠道批量发信人邮件地址
Aliyun Mail channel
mail.aliyun.accessKey=:阿里云渠道 Access Key
mail.aliyun.accessSecret=:阿里云渠道 Access Secret
mail.aliyun.from=account@hacpai.com:阿里云渠道发信人邮件地址
mail.aliyun.batch.from=weekly@symphony.b3log.org:阿里云渠道批量发信人邮件地址
Local Mail channel
mail.local.isdebug=true:设置为 debug 模式时,后台控制台会输出邮件发送过程
mail.local.transport.protocol=smtp:传输协议使用 smtp
mail.local.host=smtp.163.com:smtp 邮件服务器
mail.local.port=25:smtp 端口号设置
mail.local.smtp.auth=true:是否开启认证
mail.local.smtp.ssl=true:是否启用 SSL
mail.local.smtp.starttls.enable=false:是否启用 TLS
mail.local.smtp.sender=yourAccount@163.com:发送者的 Email
mail.local.smtp.username=:发送者名称
mail.local.smtp.passsword=:邮件验证密码,126 的 STMP 服务的客户端密码需要自己开通,不是登录密码,换成你自己的
mail.local.saved.eml.path=D:/:邮件保存目录,绝对路径
不推荐使用本地邮件渠道,送达率非常低,推荐使用 SendCloud。
Baidu
baidu.lbs.ak=:百度地图 API Access Key,获取用户所在城市需要配置该项
baidu.data.token=:百度搜索引擎推送 Token,对 SEO 有帮助
baidu.yuyin.apiKey=:百度语音 API Key,需要小薇语音预览功能需要配置该项
baidu.yuyin.secretKey=:百度语音 API Secret
BosonNLP
boson.token=:玻森自然语言处理 Token,用于发帖时获取帖子标签进行自动填充 https://bosonnlp.com
Geetest
geetest.enabled=false:是否启用极验 http://www.geetest.com
geetest.id=:极验 ID
geetest.key=:极验 Key
目前这个验证码只有在每日签到的时候使用。
Elasticsearch
es.enabled=false:是否启用 ES
es.server=http://localhost:9200:ES 服务地址
Algolia
algolia.enabled=false:是否启用 Algolia,https://www.algolia.com
algolia.appId=:Algolia APP ID
algolia.searchKey=:Algolia Search Key
algolia.adminKey=:Algolia Admin Key
algolia.index=:Algolia Index
Turing Robot
turing.enabled=true:是否启用图灵机器人小薇
turing.api=http://www.tuling123.com/openapi/api:图灵机器人接口地址
turing.key=:图灵机器人 Key
turing.name=V:图灵机器人用户名
turing.avatar=http://7xjz0r.com1.z0.glb.clouddn.com/robot_avatar.jpg:图灵机器人头像地址
XiaoV
xiaov.enabled=false:是否启用小薇服务推送
xiaov.api=http://hpxiaov.tunnel.qydev.com:小薇服务地址
xiaov.key=dev_key:小薇服务 Key
Reserved
reservedTags=Announcement, 回收站:保留标签,英文状态下逗号分隔
systemAnnounce=Announcement:系统公告标签
reservedUserNames=admin,participants,all,Bot,someone,b3log,hacpai,api,console:保留的用户名列表,英文状态下逗号分隔
White list
whitelist.tags=Elasticsearch,CoffeeScript,C#:标签白名单,不进行格式校验,英文状态下逗号分隔
WebSocket Scheme
websocket.scheme=ws:WebSocket 协议配置,ws/wss
Cache
cache.articleCnt=256:帖子缓存最大条数
cache.commentCnt=1024:回帖缓存最大条数
Performance Threshold
perfromance.threshold=500:性能监测最小阈值,单位毫秒,超过这个值就会在日志中打印相关监控信息以帮助性能问题排查
Cookie
cookie.secret=BEYOND:Cookie 加密密钥,生产环境建议修改
Anonymous
anonymous.point=3000:使用匿名发帖、回帖最小积分余额阈值
anonymousViewSkips=/tag/*,/domains/,/tags,/statistic,/domain/*,/perfect,/recent,/hot,/timeline,/community,/member/*,\ /api/v2/articles/**,/api/v2/domains,/api/v2/domain/*,/api/v2/tags,/api/v2/tag/*,/api/v2/user/*:跳过是否允许匿名浏览的路径,是否允许匿名浏览请参看管理后台中的其他管理
anonymousViewURIs=7:在不允许匿名浏览的情况下最多能浏览多少个路径
Invitecode
invitecode.expired=259200000:用户积分购买的邀请码会在多长时间内过期,单位毫秒
Tag
tag.maxTagTitleLength=12:标签校验允许最大长度
Forge
forge.link.maxTagCnt=50:链接熔炉最大显示标签数
forge.link.maxCnt=20:链接熔炉最大显示条数
forge.link.tagRefCnt=10:链接熔炉标签引用计数
这个功能目前已经停用。
IPFS
ipfs.dir=:IPFS 数据存储目录路径
ipfs.bin=:IPFS 可执行文件路径
关于 IPFS 请参考:IPFS 入门笔记
Macro head code
macroHeadPCCode=:PC 端 head 标签插入代码
macroHeadMobileCode=:移动端 head 标签插入代码
用于要在全局 head 标签插入代码的场景下。
Footer code
footerPCCode=:PC 端 footer 部分插入代码
footerMobileCode=:移动端 footer 部分插入代码
Permission
访问路径对应所需权限的配置。