页面

分类

Cppcms数据库迁移

2019/4/25, by wingfire ; 分类: 计算机技术; 0 comments

这个blog和wiki原来的数据库是sqlite,一直打算迁移到了postgresql上,拖到现在才搞。

使用的迁移工具是pgloader,非常方便。这篇也可以参考,有其他数据库迁移到Postgres的指导。

    pgloader SOURCE TARGET
    pgloader wikipp.db postgresql://user:password@host/database

值得一提的是postgresql 连接URL格式,可以参考https://stackoverflow.com/questions/3582552/postgresql-connection-url。这种url格式新版本的libpq才能支持。

另一个值得一提的是经SSL连接postgres。我之前的一个做法是让Postgres只监听loopback地址,再通过SSH隧道转发,这么做的优点是客户端可以用ssh的密钥而无需密码登录,但搞得有点复杂。今天顺带开了一下Postgres直接支持SSL连接。

首先编辑postgresql.conf, 打开ssl:

    ssl = on
    ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
    ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'

文档 说key文件的权限必须是600,但是我的机器上实际是640.

编辑pg_hba.conf,添加:

    hostssl    database  user  address  auth-method  [auth-options]

并且把相应的host行删除,具体参考这里

客户端的连接字符串也要相应修改,添加 sslmode=require

Wikipp的迁移很顺利,但是Cppblog创建新blog失败。查了一下,源码的bug,应该是键入错误,修复很简单。

另一个问题是发现Markdown的支持有问题,没有支持Github风格的块代码。最后还是查了源代码搞定的。看源码还是终极的手段,相关源码其实并不复杂,比看网上文档还来得省力。 这几篇可以参考:

  1. Discount 实际用的Markdown的库、命令行工具就是来自这个项目。名字实在无法让人联想到Markdown,以至于我一开始误以为找错了。这里面有libmarkdown2中所有flag的定义和解释,遗憾的是没有给出数值。另外,这也是一篇不错的Markdown扩展语法测参考。吐槽一下,libmarkdown2的man页面太简略了,还不如直接看头文件。
  2. GitHub Flavored Markdown Spec Github的扩展语法。
  3. php Markdown Extra php扩展的列表语法。
  4. Discount Markdown Syntax 相当完整的Discount Markdown的语法。末尾的特殊字符表很有参考价值。

于是给Blog扩展了一下Markdown的支持:

const int K_markdown_flags = 
0x00000004|     //MKD_NOPANTS 
0x01000000|     //MKD_DLEXTRA 
0x02000000|     //MKD_FENCEDCODE  
0x08000000|     //MKD_GITHUBTAGS  
0x40000000|     //MKD_LATEX 
0;

修改后的代码:

添加评论:

 
 the email would not displayed
 

您可以使用 Markdown 语法。

您必须启用浏览器的 JavaScript 功能才能发表评论。