Sym 安装指南

本贴最后更新于 1620 天前,其中的信息可能已经渤澥桑田

本文档主要面向 Sym 社区版开发者,商业版采购后有单独的开发指南提供。

数据库

  • 建议用 MySQL 8,最低支持 5.7
  • 手动新建数据库 b3log_symphony,字符集用 utf8mb4,排序规则 utf8mb4_general_ci

数据库准备好后可选择如下方式部署。

源码编译

后端

  1. 拉源码 git clone https://github.com/88250/symphony.git
  2. 按需修改 src/main/resources/local.properties 中的数据库口令配置
    jdbc.username=root  
    jdbc.password=  
    
  3. 执行 mvn package 编译打包,完成后会生成 target/symphony 目录
  4. 在 symphony 目录下执行:
    • Windows: java -cp "lib/*;." org.b3log.symphony.Server
    • Unix-like:java -cp "lib/*:." org.b3log.symphony.Server

也可以下载我们打好的包解压后在根目录通过以上命令启动;在 IDE 中的话可以直接运行 Server.java

前端

  1. 下载 node
  2. 根目录命令行运行
    npm i
    
  3. 开发时运行,以便调试
    npm run dev
    
  4. 部署前运行,以便进行代码合并和压缩
    npm run build
    

Docker

  1. 拉镜像 docker pull b3log/symphony
  2. 启动容器
    docker run --detach --name sym --network=host \
        --env RUNTIME_DB="MYSQL" \
        --env JDBC_USERNAME="root" \
        --env JDBC_PASSWORD="123456" \
        --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
        --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/symphony?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
        b3log/symphony --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
    

启动参数说明:

  • --listen_port:进程监听端口
  • --server_scheme:最终访问协议,如果反代服务启用了 HTTPS 这里也需要改为 https
  • --server_host:最终访问域名或公网 IP,不要带端口号

完整启动参数的说明可以使用 -h 来查看。另外,sym.props 配置文件请用挂卷方式覆盖容器内的配置文件。

细节说明

  1. 数据库表会在第一次启动时自动创建,管理员账号 admin/admin
  2. 端口、访问路径等配置请参考 Latke 配置剖析
  3. 生产环境建议使用 NGINX 进行反向代理,并需要配置好 WebSocket 代理
  4. 千万不要手动修改数据库,否则可能会引发各种莫名其妙的问题

环境变量

配置文件 latke.props、local.props 以及 sym.props 均支持通过环境变量指定文件路径:

  • latke.props: LATKE_PROPS
  • local.props: LATKE_LOCAL_PROPS
  • symphony.props: SYM_PROPS

常用配置

  • 图片上传默认是上传服务器本地,要使用七牛可配置 symphony.properties 中的 qiniu.* 属性
  • 搜索需要使用 Algolia,配置 symphony.properties 中的 algolia.* 属性,也支持本地 Elasticsearch 但需要少量开发,具体请参考相关代码
  • 邮件发送可以配置 3 种渠道:本地 JavaMail,SendCloud阿里云邮件推送。具体请参考配置 symphony.properties 中的 mail.* 属性
  • 用户注册需要验证邮箱,所以必须先配置好邮件;也可以通过管理员在后台的用户管理中直接添加用户

完整的配置项说明请参考 Sym 配置项说明(请注意该文档中提到的生产环境配置必须修改,否则可能存在安全隐患)

NGINX 示例

Sym 的回帖实时推送用了 WebSocket 技术,所以也需要对其配置反代。下面的示例仅供参考:

upstream backend_symphony {
    server localhost:8081;
}

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
    listen       80;
    server_name  hacpai.com;

    location / {
        proxy_pass http://backend_symphony$request_uri;
        proxy_http_version 1.1;
        proxy_set_header  Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

技术资料

FAQ

部署后界面样式乱了

F12 看下网络请求,然后参考这里修改配置。

Logo 修改

方法一:src/main/webapp/js/symbol-defs.js 中修改 <symbol id="logo"...</symbol> 为对应的 svg
方法二:src/main/webapp/skins/classic/header.ftlsrc/main/webapp/skins/mobile/header.ftl 中修改 <svg><use xlink:href="#logo"></use></svg> 为对应的图片

更好的 Markdown 渲染

Sym 默认是使用内建的 flexmark 进行 md 渲染,可能对有的场景下的渲染效果不是很好。如果你想要获得更好的 md 渲染效果请参考这里

关于版本升级

  1. 参考 CHANGE_LOGS 进行代码合并
  2. 留意 sym.props 配置项的增减
  3. 留意 repository.json 数据库表结构变更
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    523 引用 • 4581 回帖 • 692 关注
  • 安装

    你若安好,便是晴天。

    128 引用 • 1184 回帖 • 1 关注
  • 部署
    21 引用 • 280 回帖
  • 文档
    56 引用 • 1288 回帖 • 2 关注
5 操作
88250 在 2019-11-12 10:07:23 更新了该帖
88250 在 2019-11-07 23:27:35 更新了该帖
88250 在 2019-11-06 20:05:21 更新了该帖
88250 在 2019-11-06 20:03:15 更新了该帖 88250 在 2019-11-06 19:56:16 更新了该帖

相关帖子

优质回帖
  • 88250 1 赞同

    看下 repository.json,里面有定义。

  • 88250 1 赞同

    应该是 mvn 打包不对引起的。

  • Andy123 1 赞同

    抱歉,没仔细看说明

171 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • eddy

    占个沙发

  • alanfans

    tomcat9?

    1 回复
  • 88250

    嗯,Jetty 9 也行

  • 545676500

    大神,厉害

  • meikaiyipian

    不知道内存方面耗用如何

    1 回复
  • 88250

    200 人在线下大致消耗 450M 内存

    1 回复
  • royburns

    然后呢,每增加 100 人,大概增加多少内存,200 人 450M 的内存有点大,但是如果增幅小,也还好

    1 回复
  • 88250

    估计压力不大,等在线人数多一点的时候我观察一下

  • DM

    这个对 WEB 容器有要求吗?用 WAS 可以不?

  • DM

    对 IE 支持不是很好啊。我用的是 IE11,点击回帖按钮,无法弹出回帖框,而且点击隐藏按钮无法隐藏回帖框。

    1 回复
  • 88250

    支持 WebSocket 的 Servlet 容器应该都行,最好就用 Tomcat 或者 Jetty 吧,其他没有测试过;
    浏览器的话不支持 IE 系列,目前支持 Chrome 和 Firefox

  • royburns

    D 大

    1. ssd 比机械硬盘,对服务器的性能提高多少?
    2. solo 有缓存机制吗,如果我用机械硬盘服务器,能否用 redis 或者 mongedb 来提升机械硬盘带来的性能损耗
    1 回复
  • 88250
    1. 不好估计..
    2. 肯定可以的嘛,只是好像没这个必要
  • xzy

    http://35.165.100.173:8080/symphony/admin 只是小白,想做个社区,可最后。。为什么会这个样子,是哪没弄对么
    和 https 有关么
    77a5925917ad4fef87201cf54c195875.png

    1 回复
  • 88250

    社区搜索 latke 配置

  • conanca

    如何玩转 icon.properties?
    比如我想改个 logo

    1 回复
  • 88250

    找个在线转 svg 的

  • kz

    这 nginx 的配置能给个,范例吗,现在 ws 的不能使用

    1 回复
  • 88250

    搜一下吧,NGINX 代理 WS 的很多嘛

    1 回复
  • kz

    试了一些,都不好用

  • daxiahy

    改配置后 mvn install 无法打包
    ...
    org.b3log
    latke-repository-mysql
    ${latke.version}
    ...
    报错 我把 ${latke.version}改成 2.3.8 后可以打包
    但打包完运行又出错 启动不起来 tomcat?

    1 回复
  • 88250

    拉一下 latke 的代码构建一下吧

    1 回复
  • daxiahy

    不太明白? latke 的配置没动 用的本地服务器

    1 回复
  • 88250

    我的意思是你本地构建一下 latke 就行

    1 回复
  • daxiahy

    已经搞定
    :smile:
    谢谢 D 大

  • daxiahy

    为什么在 linux 服务器商部署无法上传头像 无法发送邮件 是不是 ./upload/ 目录不能这么写?

    1 回复
  • 88250

    看下是不是权限问题

    1 回复
  • daxiahy

    生产环境的 WebSocket 代理怎么设置?websocket.scheme=ws 这个不行吗?

    1 回复
  • 88250

    搜索一下 NGINX 文档

  • daxiahy

    本地安装的 sym 活动里的 ‘字’这个功能怎么提交了是 undefin ?不知道怎么实现的 需要配置吗

    1 回复
  • 88250

    需要安装 tesseract

  • zjhch123

    tomcat 都 9 了,Java9 还远吗!

  • daxiahy

    D 大,将中文转 Unicode 工具你是用的什么啊?我直接用网上的它把符号也给替换了

    1 回复
  • 88250 1

    IDE 自带的

    1 回复
  • daxiahy

    收到!ok 了 👌

  • daxiahy

    D 大 主题颜色怎么设置的?上个版本蓝色挺好看的,是去 bass.css 调吗? 😐

    2 回复
  • 88250

    我帮你 @Vanessa

  • symphony/src/main/webapp/scss/_variables.scss 中 修改 theme 即可

    2 回复
  • daxiahy

    好的~ 看到了 🌹 🌹

  • daxiahy

    337df01b09b44a03994ea4368e42a75e-asd.png

    试了 ,好像还是不行~

    1 回复
  • 要 npm install && gulp

    2 回复
  • daxiahy

    了解!

  • daxiahy

    0e43421ab368491f83caffbc2593b450-image.png

    怎么实现这个搜索功能的?

    1 回复
  • 88250

    搜索一下吧

    1 回复
  • daxiahy

    D 大真的是秒回啊 👍。ok 了 可是里面的 search hacpai 文字在哪里设置的??没有找到

    1 回复
  • 88250 1

    全局搜索吧

  • daxiahy

    安装 gulp 后还是没有 作用 可以详细请教以下吗?这个前端框架不太懂

    1 回复
  • 你在根目录下面运行 npm install && gulp 就可以了

  • pwijkbije

    为什么要上传头像才能发帖。而且上传了头像,还是提示要上传头像
    64510af0aee7495bbd0dc0f317ed698f-image.png

    1 回复
  • 88250

    现在应该没问题了吧?

请输入回帖内容 ...