环境准备 安装 JDK,版本至少需要 JDK 8 安装 MySQL,版本至少需要 5.7,建议用 8 安装 Jetty,版本至少需要 9 安装 Maven,下载解压后设置 bin 目录到 PATH 环境变量中 编译项目 拉源码 git clone https://github.com/b3log/symphony.gi ..

Sym 安装指南

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

环境准备

  1. 安装 JDK,版本至少需要 JDK 8
  2. 安装 MySQL,版本至少需要 5.7,建议用 8
  3. 安装 Jetty,版本至少需要 9
  4. 安装 Maven,下载解压后设置 bin 目录到 PATH 环境变量中

编译项目

  1. 拉源码 git clone https://github.com/b3log/symphony.git
  2. 按需修改 src/main/resources/local.properties 中的数据库口令配置
jdbc.username=root
jdbc.password=
  1. 执行 mvn install 编译打包,完成后在 target 目录下将生成 symphony.war

部署

  1. 手动新建数据库 b3log_symphony,字符集用 utf8mb4,排序规则 utf8mb4_general_ci
  2. 将 war 包部署到 Jetty 的 webapps 目录下,然后启动服务器,注意查看 logs 目录下的日志情况
  3. 浏览器访问 http://localhost:8080/symphony
  4. 默认的管理员账号为 admin/admin

细节说明

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

环境变量

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

常用配置

完整的配置项说明请参考 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 看下网络请求,然后参考这里修改配置。

如何部署在 Tomcat 中

war 包中删除 WEB-INF/classes/org/b3log/symphony/Starter.class 以及 WEB-INF/lib/jetty-*.jarwebsocket-*.jarjavax-websocket-*.jar 后再部署即可。

修改模版不生效

Tomcat 中需要在 server.xml 中加入 reloadable="true",比如:

<Context docBase="symphony" path="/symphony" reloadable="true"/> 

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 数据库表结构变更

使用授权

关于商业版和社区版的对比请看这里,企业网站、经营性网站、以营利为目的或实现盈利的网站请购买商业版。

欢迎联系 QQ 845765 或邮箱 d@b3log.org 进行细节咨询。

  • Sym

    Sym 是一个用 Java 实现的现代化社区(论坛/社交网络/博客)平台,“下一代的社区系统,为未来而构建”。黑客派就是使用该系统搭建的 ❤️

    433 引用 • 4159 回帖 • 645 关注
  • 安装

    你若安好,便是晴天。

    74 引用 • 965 回帖
  • 部署
    18 引用 • 267 回帖
  • 文档
    51 引用 • 996 回帖 • 1 关注
优质回帖
  • 88250 1 赞同    

    请仔细看文档,需要使用 Tomcat9

  • 88250 1 赞同    

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

  • 88250 1 赞同    

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

165 回帖   
请输入回帖内容...
  • 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      

    IDE 自带的

    1 回复
  • daxiahy        

    收到!ok 了 👌

  • daxiahy  

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

    2 回复
  • 88250      

    我帮你 @Vanessa

  • Vanessa        

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

    2 回复
  • daxiahy        

    好的 ~ 看到了 🌹 🌹

  • daxiahy        

    337df01b09b44a03994ea4368e42a75e-asd.png

    试了 ,好像还是不行 ~

    1 回复
  • Vanessa        

    要 NPM install && gulp

    2 回复
  • daxiahy        

    了解!

  • daxiahy  

    0e43421ab368491f83caffbc2593b450-image.png

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

    1 回复
  • 88250      

    搜索一下吧

    1 回复
  • daxiahy        

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

    1 回复
  • 88250      

    全局搜索吧

  • daxiahy        

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

    1 回复
  • Vanessa        

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

  • pwijkbije  

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

    1 回复
  • 88250      

    现在应该没问题了吧?

请输入回帖内容 ...