一直使用ShareLaTex的在线服务帮助老表写硕士论文,但是最近被墙的很厉害,比较苦恼. 权衡之下决定自己的服务器上部署一套,一劳永逸.
过程还是比较繁琐, 有几个坑在这里记录一下.


安装
参考:
https://github.com/sharelatex/sharelatex/wiki/Quick-Start-Guide

ShareLaTex使用docker方式做Distrabution,因此需要先配置好docker服务.
关于docker服务的安装和使用参考下面链接.
https://github.com/docker/docker-tutorial

笔者的Host是使用archlinux, 安装docker,并且配置成自动启动:

$ sudo pacman -Syu docker
$ sudo systemctl enable docker
$ sudo systemctl restart docker

接下来使用docker直接下载ShareLaTex的image.

$ sudo docker run -d \-v ~/sharelatex_data:/var/lib/sharelatex \
  -p 5000:80 \
  --name=sharelatex \
  sharelatex/sharelatex

默认的ShareLaTex只有最基本的包. 编译器只有pdfLaTex可用. 如果使用中文需要安装XeLaTex.
使用如下命令安装完整的TexLive

$ sudo docker exec sharelatex tlmgr option repository http://mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet$ sudo docker exec sharelatex tlmgr install scheme-full

官方的源非常慢, 这里使用中科大的源, 阿里的也很快,地址:
http://mirrors.aliyun.com/CTAN/systems/texlive/tlnet/

耐心等待下载安装完毕.


配置
如果按照官方指南里现在就创建好用户名和密码然后满心期待打开浏览器, 多半会失望的.

ShareLaTex的docker image默认的配置是需要Host机上的mongodb及redis服务.
如果没有安装, ShareLaTex服务是无法启动的.
需要安装:

$ sudo pacman -Syu redis mongodb

修改redis配置文件 /etc/redis.conf:

bind 0.0.0.0
protected-mode yes

修改mongodb配置文件

bind_ip = 0.0.0.0

注意, 如果服务器在公网上一定要在iptables里把27017访问关掉.
当然, 也可以使用密码保护mongodb和redis服务, 但是必须去配置Docker ShareLaTex的环境变量:

SHARELATEX_MONGO_URL: The URL of the Mongo database to use
SHARELATEX_REDIS_HOST: The host name of the Redis instance to use
SHARELATEX_REDIS_PORT: The port of the Redis instance to use
SHARELATEX_REDIS_PASS: The password to use when connecting to Redis (if applicable)

为了简单,这里不配置用户名和密码.
配置完毕,重启redis和mongodb服务:

$ sudo systemctl restart redis
$ sudo systemctl restart mongodb

到这里, ShareLaTex服务应该ready to go了.
执行

$ sudo docker restart sharelatex

重启sharelatex服务, 等待几秒钟时间后访问http://localhost:5000, 如果一切顺利,应该可以看到sharelatex首页了.

最后, 为ShareLaTex配置管理员用户:
访问 http://localhost:5000/launchpad
按照提示创建admin用户.

中文配置
ShareLatex 的docker img里默认是没有安装xfont及中文字体的, 导致就算安装了XeLaTex也无法渲染中文pdf. 这里必须安装所需的中文字体.

首选, 需要登录到ShareLatex的container的shell中.
执行:

[root@toptrade docker]# sudo docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                  NAMES
062edc2d6e56        sharelatex/sharelatex   "/sbin/my_init"     13 days ago         Up About an hour    0.0.0.0:5000->80/tcp   sharelatex

可以看到sharelatex 的container ID是 062edc2d6e56 .
再执行:

[root@toptrade docker]# sudo docker inspect -f {{.State.Pid}} 062edc2d6e56
2323

看到pid是2323, 最后使用这个id:

[root@toptrade docker]# sudo nsenter --target 2323 --mount --uts --ipc --net --pid
groups: cannot find name for group ID 19
root@062edc2d6e56:/#

现在已经使用root登录到了sharelatex 的shell了.

sharelatex container本身是debian based. 所以可以使用apt-get来安装xfont工具.
为了简单, 我们直接安装wqy字体, 让apt-get来安装所有依赖包:

root@062edc2d6e56:/# apt-cache search wqy
root@062edc2d6e56:/# apt-get install xfonts-wqy

最后, 安装windows字体:
拷贝win7中 C:\windows\fonts目录到host中. 打包成winfonts.tar.gz
在host的shell下执行, 将字体包拷贝到container中:

$ docker cp winfonts.tar.gz sharelatex:/root

然后切换到ShareLatex container中将winfonts.tar.gz解压, 并且拷贝到/usr/share/fonts/winfonts目录.
例如:

root@062edc2d6e56:/# cd ~
root@062edc2d6e56:/# tar zxvf winfonts.tar.gz
root@062edc2d6e56:/# mv winfonts /usr/share/fonts/

然后:

root@062edc2d6e56:/# cd /usr/share/fonts/winfonts
root@062edc2d6e56:/# mkfontscale
root@062edc2d6e56:/# mkfontdir
root@062edc2d6e56:/# fc-cache -fv 

最后确认一下中文字体安装成功:

root@062edc2d6e56:/# fc-list :lang=zh-cn

测试
创建一个文档, 粘贴进去如下内容

\documentclass{ctexart}
\setCJKmainfont{Microsoft YaHei}
\setCJKsansfont{Microsoft YaHei}
\setCJKmonofont{SimSun}
\punctstyle{kaiming}
\begin{document}
\tableofcontents
\begin{abstract}
这是在文件的开头的介绍文字.本文的主要话题的简短说明。.
\end{abstract}
\section{ 前言 }
在该第一部分中的一些额外的元素可以被添加。巴贝尔包将采取的翻译服务.
\section{关于数学部分}
在本节中的一些数学会使用数学模型含中文字符显示。,
這是一個傳統的中國文字\end{document}

使用XeLaTex编译. 应该可以看到渲染出的pdf中文显示正常.

ArchLinux 部署ShareLaTex并且配置中文支持相关推荐

  1. mysql 配置中文支持_mysql 中文支持

    //实际上,最新mySQL以上两句已经失效,在命令行中先exit   然后重新登录可以实现这个目的 重新连接数据库,查看编码,数据表内容 1. mysql> show variables lik ...

  2. Docker部署Emqx并配置ssl支持微信小程序

    1 端口介绍 1883:MQTT 协议端口 8084:MQTT/SSL 端口 8083:MQTT/WebSocket 端口 8080:HTTP API 端口 18083:Dashboard 管理控制台 ...

  3. Linux配置中文支持

    1.下载中文语言包 yum install kde-l10n-Chinese 查询语言包 locale -a 2.修改配置文件 vim /etc/locale.conf LANG="zh_C ...

  4. 树莓派4B安装系统,配置远程连接和WiFi,更新源,更新中文支持,基本Linux命令,用Python输出hello和“你好,世界”

    树莓派4B 系列1 从入门到进阶 作者(当然就是我本人了,哈哈哈哈哈),写这篇文章的目的是给刚入门树莓派或者从3B/3B+版本过度到4B的小朋友们总结出一些成系统的规律和方法,以及4B全新版本的变化. ...

  5. 1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入

    一.下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3 二.如果想下载Luc ...

  6. apache添加支持php的模块,配置Apache支持PHP5 apache php 套件 apache添加php模块 apache部署php项...

    环境:window 7.Apache/2.2.19 (Win32) PHP/5.2.9-1 1.配置服务器名称 将里面的 #ServerNamelocalhost:80 注释去掉即可. 重新运行Apa ...

  7. centos7+ docker1.12 实践部署docker及配置direct_lvm

    2019独角兽企业重金招聘Python工程师标准>>> centos7+ docker1.12 实践部署docker及配置direct_lvm 博客分类: docker 前言 Doc ...

  8. Linux(CentOS)中常用软件安装,使用及异常——XManager, 中文支持,JDK

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  9. OpenReports中文支持方案

    此文章在<OpenReports中文支持完全解决方案.doc>的基础上做优化,并贴出代码.已测试通过. 一.主要解决的问题 1 页面显示支持中文 2 与服务器或数据库的交互支持中文 3 查 ...

最新文章

  1. mysql状态常用参数分析
  2. arg是什么函数_怎么实现边听歌边搜图?线程初体验:常用函数
  3. 分享10个适合初学者学习的C开源项目代码
  4. matlab双极性眼图,实验报告三编程做单极性码眼图仿真
  5. sql server死锁_如何解决SQL Server中的死锁
  6. mysql中CONCAT值为空的问题解决办法
  7. mysql——数据库设计中int与varchar中的长度含义
  8. 基于Protues的Arduino学习笔记01-Arduino UNO实验板设计
  9. 高程拟合MATLAB二次曲面,GPS高程二次曲面拟合及其程序
  10. 银发经济崛起:什么才是“收割”老年人的正确姿势?
  11. Setup.txt如何修改? Setup.txt的详细介绍
  12. arm mali 天梯图_手机CPU天梯图2017年上半年新版 2017手机cpu性能排行天梯图
  13. 利用python制作拼图_用python做一个三阶拼图
  14. CSR Audio Sink Application User Guide
  15. Android EditText身份证等类型
  16. 2021.12.9 java代码对接sap接口(soap协议、webservice)
  17. [洛谷] P2357 守墓人
  18. C1-2_求长方体体积
  19. C++实现中文大写与阿拉伯数字的相互转换(类封装)
  20. 如何让word文档都在同一个窗口下打开 (反之亦可)

热门文章

  1. Complete Guide to Digital Project Management 免积分下载
  2. PNAS:熟悉面孔的视觉和语义信息表征具有共享的神经编码
  3. 搭建阿里云Windows版服务器+使用宝塔安装MySQL数据库+本地Navicat访问数据库(增删改查)——详细流程
  4. 资源的释放方式try-catch-finally, try-catch-resource
  5. Shopee怎么注册开店?
  6. CUDA安装详细教程
  7. redis python_Redis之Python操作
  8. 示波器正确测量电源纹波
  9. PCL中RANSAC模型的使用
  10. cisco packet tracer路由器配置_思科Cisco静态路由如何配置?