根據MathLatex批量的生成數學公式流程很簡單:根據latex
和dvipng
和mathtex.c
生成一個mathtex.cgi文件,放在服務器上。然后訪問服務器的mathtex.cgi生成公式圖片。其中latex
程序用來識別公式,dvipng
用來將公式轉換為圖片,mathtex.cgi就是調用這兩個工具。下面是在Nginx安裝服務器生成MathLatex生成工具記錄。
下載mathtex.zip
wget http://www.forkosh.com/mathtex.zip
然后unzip mathtex.zip解壓
安裝Latex和dvipng
mathtex在線幫助文檔:http://www.forkosh.com/mathtex.html,開頭處提供了提供了快速的安裝步驟,但是過程卻并不是像描述的那樣順利。
根據描述需要在http://www.latex-project.org/get/
安裝LaTeX
,通過上面的圖片包含的說明: TeX distribution with dvipng
,推測latex和png很可能是在一起的。但是通過看幫助文檔發現有的時候不是在一起的。latex
提供了很多種安裝方式,推薦是兩種通過網絡在線安裝和下載一個鏡像文件。
- 網絡在線
地址:http://www.tug.org/texlive/acquire-netinstall.html。?下載install-tl-unx.tar.gz
:
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz。然后解壓根據快速安裝地址http://www.tug.org/texlive/quickinstall.html。(如果安裝之前有過安裝需要刪除舊的安裝)
rm -rf /usr/local/texlive/2016
rm -rf ~/.texlive2016
然后
./install-tl
然后選擇的i安裝 (linux系統上安裝需要完整的perl環境,沒有的運行命令yum install perl*
安裝);大約需要兩個小時左右,安裝完成后添加環境變量。
vim /etc/profile
最后加入export PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH
;保存后source /etc/profile
刷新一下生效。因為mathtex.cgi 生成命令是
cc mathtex.c \
–DLATEX=\"$(which latex)\" \
–DDVIPNG=\"$(which dvipng)\" \
–o mathtex.cgi
所以可以查看下latex和dvipng的路徑
find / -name 'latex'
find / -name '?dvipng'
一般latex會在/usr/bin/latex
,但是dvipng可能沒有。本次通過網絡在線安裝latex
的時候就是沒有包含dvipng
,這個時候可以自己獨立安裝dvipng
,divpng
下載地址http://download.savannah.gnu.org/releases/dvipng/,幫助地址http://www.nongnu.org/dvipng/dvipng_2.html#Installation,安裝也同樣很簡單。
./configure, make, and make install.
可能遇到的問題,在某些系統上configure無法自己找到某些所需要的庫,幫助文檔里面也提到了,最可能找不到
libkpathsea
,這時可以自己去系統找這個類庫的路徑,還可以按照作者說的在 http://www.ctan.org搜索自己編譯(這個放棄了,因為libkpathsea是在latex安裝時候已經安裝了,并沒有獨立的發布過,但是最新版本的latex并沒有包含這個庫)。實驗了很多次都沒有成功,包括使用yum install
。萬般無奈之下想下載latex以前的版本,但是以前的版本沒有找到在線下載的鏈接。所以直接通過網絡安裝的方式就放棄了。
- 鏡像文件。
參考這個鏈接:http://www.linuxidc.com/Linux/2016-08/133913.htm。所有的安裝步驟和上面一樣,唯一不同就是這個需要掛載后安裝,然后取消掛載。通過這個安裝完成的鏡像文件。發現這里安裝latex的時候已經把dvipng一起安裝了。直接按照上面的步驟生成mathtex.cgi完成。安裝實際命令。如果最后發現不能生成圖片,提示錯誤http://www.forkosh.com/mathtex.html
可以根據這個網站查找,很有可能就是下面的dvipng的路徑不對,因為用whereis命令查找dvipng可能出現多個,出現多個可能是自己之前通過其他方式安裝過但是并不全??梢試L試的更改DDVIPNG后面的路徑重新生成mathtex.cgi。
cc -DLATEX=\"/usr/bin/latex\" -DDVIPNG=\"/usr/local/texlive/2016/bin/x86_64-linux/dvipng\" mathtex.c -o mathtex.cgi
服務器配置
Nginx服務器不能直接運行cgi程序。所以要安裝一些工具實現。參考
http://www.cnblogs.com/studyskill/p/6524220.html
http://blog.csdn.net/allenlinrui/article/details/19419721。
安裝的工具是fastcgi,fastcgi-wapper.
實際的步驟是建立這個目錄/usr/local/nginx/cgi-bin/,并將mathtex.cgi移動到這里面。在/usr/local/nginx/conf/vhost/目錄下建立一個主機配置文件,內容如下
server {
listen 80;
server_name latex.example.com;
access_log /data/wwwlogs/www.hskaoyan.com_nginx.log combined;
index mathtex.cgi;
include /usr/local/nginx/conf/rewrite/none.conf;
root /usr/local/nginx/cgi-bin/ ;
location ~ .*\.cgi$ {
fastcgi_pass 127.0.0.1:8081;
fastcgi_index mathtexi.cgi;
include fastcgi.conf;
}
}
其中server_name latex.example.com;是自己添加的域名解析記錄。fastcgi_pass 127.0.0.1:8081;表示由服務器自己調用當前服務器上的cgi端口號8081.如果cgi不在本臺服務器可以填寫其他地址。
配置完成后更新配置,啟動fastcgi-wapper
nginx -s reload
/usr/local/bin/spawn-fcgi -f /usr/local/sbin/fcgiwrap -p 8081
最后查看是否成功啟動
到此全部安裝完成.
http://latex. example.com/mathtex.cgi?\png\dpi{300}abc 瀏覽器敲上面地址產生abc圖片。