##############################
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:
* `Installation guide for Apache etc
`_
on OSX 10.9;
* `Using virtualhosts on OSX
`_
***
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
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
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::
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
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
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.
.. include:: links_names.inc