Docker部署ShareLaTeX
最近导师要我在服务器上搭一下ShareLaTeX,而且自己平常也会用到,所以在自己的服务器上也搭了一次,安装过程比较容易。本文记录一下部署和配置中文环境的过程。(造轮子)
本文安装环境:ubuntu 18.04 lts
安装Docker和docker-compose
- 卸载旧版本,旧版本被叫做
docker
、docker.io
或者docker-engine
。
sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新
apt
包索引,并允许apt通过https更新repo
sudo apt update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
- 添加Docker的官方 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥 。
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
- 使用以下命令来设置稳定的存储库。其余架构的命令详见docker-ce官方安装文档
sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
- 安装docker,顺便安装docker-compose
sudo apt update
sudo apt install docker-ce
sudo apt install docker-compose
- 将当前用户加入docker组,注销当前会话,重新登录后生效
sudo gpasswd -a ${USER} docker
安装ShareLaTeX
本文使用官方向导建议的使用docker-compose
快速部署ShareLaTeX的方式。ShareLaTex的安装依赖mongoDB和Redis,通过 docker-compose
部署时直接这两者也一起部署了。
-
拉取ShareLaTeX镜像
$ docker pull sharelatex/sharelatex
-
下载
docker-compose.yml
文件,并进行配置。$ mkdir -p ~/sharelatex # 在用户目录下创建一个sharelatex文件夹 $ cd ~/sharelatex # 进入sharelatex文件夹 $ curl -O https://raw.githubusercontent.com/sharelatex/sharelatex/master/docker-compose.yml # 下载官方的docker-compose.yml配置文件 $ sudo vim docker-compose.yml # 使用vi修改配置文件
-
下面是我修改的几项,其余项可根据需要自行修改
# 修改本地挂载目录 volumes: - /home/docker/sharelatex:/var/lib/sharelatex # 修改mongo和redis的本地挂载目录 # mongo volumes: - /home/docker/mongo_data:/data/db # redis volumes: - /home/docker/redis_data:/data
-
通过
docker-compose.yml
创建并运行ShareLaTeX容器# 在sharelatex目录下 $ docker-compose up -d
-
升级并安装完整版Texlive
# 进入sharelatex容器 $ docker exec -it sharelatex bash # 进入texlive默认安装目录 $ cd /usr/local/texlive # 下载并运行升级脚本 $ wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh $ sh update-tlmgr-latest.sh -- --upgrade # 更换Texlive的下载源,例如清华tuna源 $ tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/ # 升级tlmgr $ tlmgr update --self --all # 更新字体缓存 $ luaotfload-tool -fu # 安装完整版texlive(不要让shell断开,想离开的可以用nohup) $ tlmgr install scheme-full # 退出sharelatex的命令行界面,并重启sharelatex容器 $ exit $ docker restart sharelatex
-
使用ShareLaTeX
进入浏览器访问
http://XXXX(IP)/launchpad
,创建Admin账户。
配置中文环境
-
将Windows字体库(即目录
C:windowsfonts
)上传到服务器,我直接用Xftp传的# 进入fonts目录 $ cd fonts/ # 删除其中的.fon字体文件(其他文章中写道不删会报错) $ rm -r *.fon # 返回上层目录并打包 $ cd .. $ tar -zcvf fonts.tar.gz fonts/ # 把打包文件传到sharelatex容器的root目录下 $ docker cp fonts.tar.gz sharelatex:/root
-
在容器中安装Windows字体
# 进入sharelatex容器 $ docker exec -it sharelatex bash # 安装xfonts-wqy工具 $ apt-get install xfonts-wqy # 进入root目录,解压fonts.tar.gz,并移动到系统字体目录下 $ cd ~ $ tar -zxvf fonts.tar.gz $ mv fonts /usr/share/fonts/ # 进入字体目录安装字体 $ cd /usr/share/fonts/fonts $ mkfontscale $ mkfontdir $ fc-cache -fv # 检查确认中文字体安装成功 $ fc-list :lang=zh-cn
安装其他字体时,流程同上。
参考链接
Get Docker Engine - Community for Ubuntu