由于某些原因,国内访问ShareLaTeX或Overleaf网站速度特别慢而且经常掉线,科研环境十分不友好,因此有了自己搭建ShareLaTeX服务打算,且其支持Docker容器化部署,安装过程比较容易。本文记录了在实验室内网环境下利用Docker搭建ShareLaTeX服务的过程,并进行中文环境配置。
准备工作
系统与Docker环境安装同上篇Docker部署GitLab并实现基本配置,然后继续按照教程安装docker-compose
组件。
安装并配置ShareLaTeX
由于ShareLaTeX的安装依赖于MongoDB和Redis,因此本文将使用官方向导建议使用
docker-compose
快速部署ShareLaTeX
拉取最新的ShareLaTeX镜像
$ docker pull sharelatex/sharelatex
下载
docker-compose.yml
文件,并进行配置,见Quick Start Guide$ mkdir -p ~/sharelatex # 在用户目录下创建一个sharelatex文件夹
$ cd ~/sharelatex # 进入sharelatex文件夹
$ curl -O https://raw.githubusercontent.com/sharelatex/sharelatex/master/docker-compose.yml # 下载官方的docker-compose.yml配置文件
$ sudo vi docker-compose.yml # 使用vi修改配置文件需要配置的项
# 避免端口重复
ports:
- 5000:80
# 修改本地挂载目录
volumes:
- /home/docker/sharelatex:/var/lib/sharelatex
# 添加升级texlive需要的环境变量,主要是添加2018目录到2017前面,目的是为了防止后面安装完整版texlive时出现错误
environment:
- PATH: /usr/localsbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/texlive/2018/bin/x86_64-linux:/usr/local/texlive/2017/bin/x86_64-linux
# 下面选项设置ShareLaTeX的显示样式
SHARELATEX_APP_NAME: Our ShareLaTeX
SHARELATEX_NAV_TITLE: Our ShareLaTeX Instance
SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png
SHARELATEX_LEFT_FOOTER: '[{"text": "Powered by <a href=\"https://www.sharelatex.com\">ShareLaTeX</a> 2016"},{"text": "Another page I want to link to can be found <a href=\"here\">here</a>"} ]'
SHARELATEX_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]'
# 修改mongo和redis的本地挂载目录
# mongo
volumes:
- /home/docker/mongo_data:/data/db
# redis
volumes:
- /home/docker/redis_data:/data创建并运行ShareLaTeX容器,启动后不要着急进入网站
# 在sharelatex目录下
$ docker-compose up -d升级并安装完整版texlive,官方教程
# 进入容器的命令行(sharelatex容器本质上是一个Ubuntu)
$ docker exec -it sharelatex bash
# 进入texlive默认安装目录
$ cd /usr/local/texlive
# 复制2017文件夹为2018
$ cp -a 2017 2018
# 下载并运行升级脚本
$ wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
$ sh update-tlmgr-latest.sh -- --upgrade
# 更换texlive的下载源,例如国内的清华源
$ tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/
# 升级tlmgr
$ tlmgr update --self --all
# 更新字体缓存(好像没成功,但是不影响下面操作)
$ luaotfload-tool -fu
# 安装完整版texlive(漫长的等待,不要让shell断开)
$ tlmgr install scheme-full
# 推出sharelatex的命令行界面,并重启sharelatex容器
$ exit
$ docker restart sharelatex使用ShareLaTeX
进入浏览器访问
http://192.168.8.21:5000/launchpad
,根据提示创建Admin用户。
配置中文写作环境
下载的sharelatex镜像里面默认是没有安装xfont和中文字体的,因此无法渲染中文文档,必须安装所需的中文字体,这里以Windows下常用字体和Adobe Song Std为例。原教程见ArchLinux 部署ShareLaTex并且配置中文支持。
将Windows字体库(即目录
C:\windows\fonts
)上传到host机,如果Windows安装了Git可以使用scp
命令直接上传在host机下把
fonts
目录打包并传到sharelatex容器中# 进入fonts目录
$ cd fonts/
# 删除其中的.fon字体文件(该种格式文件在后面建立字体目录时会报错),只保留TrueType和OpenType字体,即.ttf和.otf
# 一般地,如果只需要其中特定的中文字体,只需要上传需要的字体即可
$ rm -r *.fon
# 返回上层目录并打包
$ cd ..
$ tar -zcvf winfonts.tar.gz fonts/
# 把压缩文件传到sharelatex容器的root目录下
$ docker cp winfonts.tar.gz sharelatex:/root在容器中安装Windows字体
# 进入容器的命令行界面
$ docker exec -it sharelatex bash
# 通过安装wqy字体同时安装xfont工具
$ apt-get install xfonts-wqy
# 进入root目录,解压winfonts.tar.gz,并剪切到系统字体目录下
$ cd ~
$ tar -zxvf winfonts.tar.gz
$ mv winfonts /usr/share/fonts/
# 进入字体目录安装字体
$ cd /usr/share/fonts/winfonts
$ mkfontscale
$ mkfontdir
$ fc-cache -fv
# 检查确认中文字体安装成功
$ fc-list :lang=zh-cn回到ShareLaTeX网站,创建一个新项目,使用$C\TeX$宏集和XeLaTeX编译器,即可生成中文pdf。(详见$C\TeX$宏集手册)
因为学校论文的需要,有时需要其他中文字体,例如Adobe宋体,其安装流程与上述基本一致。(PS:在GitHub上可以找到公开的Adobe Song Std字体,涉及版权这里不放链接)