如何部署Common Lisp应用

受够了在服务器上用Ubuntu,趁中午休息的时候赶紧把博客上的VPS从Ubuntu切换到Fedora。然后就是环境和库的安装。

我博客是用Common Lisp写的,Common Lisp运行在一个image中,在这个image中编写的代码可以当作不断在完善自身。重要的是,修改后的这个image可以随时保存起来,并生成一个可执行文件,这个可执行文件就是一个新的Common Lisp运行环境。

这就是说,我可以把所有三方库的依赖在我开发环境就加载好,之后保存成一个新的image,这个image既可以直接部署到生产环境,也可以分发给其他开发人员,他们根本不需要再去一个个安装三方库。

首先,我在本地就已经把博客加载到SBCL的image中:

(ql:quickload "my-blog")

然后,把当前image导出成一个独立的可执行文件:

(sb-ext:save-lisp-and-die "my-blog-core" :executable t)

执行之后,SBCL会在当前目录下生成一个可执行文件my-blog-core,并退出。

最后把my-blog-core这个可执行文件上传到VPS里运行就可以了。由于我的是WEB应用,还需要把数据库文件以及静态模板文件一同上传。

可以看出,我的服务器系统里始终以最小方式运行,既不安装SBCL,也不安装各种三方库。