Serving MathJax locally on OSX¶
I’m often in Cuba with no or very slow internet.
I have a local copy of MathJax that I use for reading and writing IPython notebooks.
Now I want to read Sphinx pages that use MathJax markup.
Background¶
The page I wanted to serve is expecting this URL:
http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML
.
My task is to set up a redirect so that my own machine serves this URL.
Luckily OSX comes shipped with a version of the apache
web server.
I worked off these two pages, both by Neil Gee:
Map¶
- Link local copy of MathJax into
~/Sites/cdn.mathjax.org/mathjax/latest
; - Enable apache serving from my
~/Sites
user directories; - Enable apache virtualhost for
cdn.mathjax.org
domain; - Redirect IP traffic for
cdn.mathjax.org
to localhost; - Restart apache.
Details¶
Linking local copy of MathJax¶
I have a local copy of MathJax, stored in ~/stable_trees/mathjax
. This
directory contains MathJax.js
.
OSX apache
expects to serve user pages from ~/Sites
. So, the linking
step is:
cd
mkdir -p Sites/cdn.mathjax.org/mathjax
ln -s ~/stable_trees/mathjax Sites/cdn.mathjax.org/mathjax/latest
Enable apache serving from ~/Sites
directories¶
Replace my_user
with your login username in the following:
sudo bash
cd /etc/apache2/users
MY_USERNAME=my_user
cat > \${MY_USERNAME}.conf << EOF
<Directory "/Users/\${MY_USERNAME}/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
EOF
Now start apache:
sudo apachectl start
You now should be able to read
http://localhost/~my_user/cdn.mathjax.org/mathjax/latest
in your browser
(where you need to replace my_user
in the URL with your login username).
Enable apache virtualhost for mathjax directory¶
(As root) edit /etc/apache2/httpd.conf
.
Uncomment the line Include /private/etc/apache2/extra/httpd-vhosts.conf
and save.
Edit /etc/apache2/extra/httpd-vhosts.conf
.
Add the following at the end:
<VirtualHost *:80>
ServerName cdn.mathjax.org
DocumentRoot "/Users/my_user/Sites/cdn.mathjax.org"
ErrorLog "/private/var/log/apache2/mathjax.org-error_log"
CustomLog "/private/var/log/apache2/mathjax.org-access_log" common
ServerAdmin your.name@your.address.com
<Directory "/Users/my_user/Sites/cdn.mathjax.org">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
where you replace my_user
with your login username.
Note the FollowSymLinks
option – we need this because the directory we
want to serve is in fact a symbolic link.
Redirect IP traffic for cdn.mathjax.org
to localhost¶
(As root), edit /etc/hosts
and add the following line:
127.0.0.1 cdn.mathjax.org
Restart apache¶
sudo apachectl restart
You should now be able to disconnect your internet connection but still get a directory listing in your browser for http://cdn.mathjax.org/mathjax/latest/. You should also be able to get rendered MathJax pages offline and at blazing speed.