Instalar y desplegar MkDocs con Apache en Ubuntu 20.04
Introducción
MkDocs es un generador de sitios estáticos orientado a construir la documentación técnica de un proyecto. Los archivos de documentación se escriben en Markdown y MkDocs se encarga de convertirlos a HTML, CSS y JS. Toda la configuración del sitio se realiza fácilmente mediante un único archivo YAML.
En esta guía te mostramos como instalar MkDocs en Ubuntu 20.04 y dejarlo corriendo con Apache.
Pre requisitos
Un servidor Ubuntu 20.04 con acceso por SSH con un usuario con privilegios de sudo.
Paso 1 - Instalar Apache
Necesitamos un web server que sirva el contenido estático, para eso instalamos Apache:
ubuntu@mkdocs:~$ sudo apt update
ubuntu@mkdocs:~$ sudo apt install apache2
Podemos verificar que esté instalado y corriendo en el puerto 80 ingresando a través del browser: http://ipdetuservidor/. Si todo está bien, deberíamos ver la página web default de Apache para Ubuntu.
Paso 2 - Instalar Python 3 y Pip
MkDocs está escrito en Python, por lo que vamos a necesitar que esté instalado en el servidor. Ubuntu y otras distribuciones basadas en Debian ya vienen con Python instalado. Verificamos que Python 3 está instalado:
ubuntu@mkdocs:~$ python3 --version
Python 3.8.12
MkDocs se instala como un paquete de pip, un package management system de Python, por lo que debemos instalarlo:
ubuntu@mkdocs:~$ sudo apt install -y python3-pip
Una vez que termine, verificamos que se haya instalado correctamente:
ubuntu@mkdocs:~$ pip3 --version
pip 21.3.1 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)
Paso 3 - Instalar MkDocs
ubuntu@mkdocs:~$ sudo pip3 install mkdocs
Verificamos que se haya instalado correctamente:
ubuntu@mkdocs~$ mkdocs --version
mkdocs, version 1.2.3 from /usr/local/lib/python3.8/dist-packages/mkdocs (Python 3.8)
También podemos instalar el tema Material para darle un buen look a nuestro sitio de documentación:
ubuntu@mkdocs~$ sudo pip3 install mkdocs-material
Paso 4 - Crear el proyecto de MkDocs
Ahora podemos crear el proyecto de MkDocs en el directorio que definamos, en este caso lo vamos a instalar en /var/www/:
ubuntu@mkdocs~$ cd /var/www
ubuntu@mkdocs:/var/www$ sudo mkdocs new my-docs
Esto nos va a crear la estructura del sitio de MkDocs:
ubuntu@mkdocs:/var/www$ ls my-docs/
docs mkdocs.yml
- mkdocs.yml: archivo de configuración del sitio de MkDocs.
- docs: directorio donde debemos guardar los archivos Markdown de documentación. Viene con un index.md como home del sitio.
Agregar las siguientes lineas a mkdocs.yml para habilitar el tema Material:
theme:
name: material
Para aplicar los cambios y generar el sitio estático corremos:
ubuntu@mkdocs:/var/www$ cd my-docs
ubuntu@mkdocs:/var/www/my-docs$ sudo mkdocs build
Esto nos va a crear el directorio site donde MkDocs va a guardar los archivos HTML, CSS Y JS.
ubuntu@mkdocs:/var/www/my-docs$ ls site
404.html assets index.html search sitemap.xml sitemap.xml.gz
Paso 5 - Configurar Apache
Creamos el virtual host de Apache:
ubuntu@mkdocs~$ sudo nano /etc/apache2/sites-available/my-docs.conf
<VirtualHost *:80>
ServerName my-docs.com
DocumentRoot /var/www/my-docs/site
<Directory "/var/www/my-docs/site">
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Habilitamos el nuevo archivo de virtual host con a2ensite:
ubuntu@mkdocs~$ sudo a2ensite my-docs.conf
Deshabilitamos el sitio default con a2dissite:
ubuntu@mkdocs~$ sudo a2dissite 000-default.conf
Y reiniciamos el servicio de Apache para que tome los cambios:
ubuntu@mkdocs~$ sudo systemctl restart apache2
¡Y listo! cuando volvemos a ingresar a través del browser, vamos a ver nuestro sitio de MkDocs con el tema Material:
Paso 6 - Escribiendo la documentación
Para escribir la documentación, creamos un archivo con extensión ".md" en el directorio docs:
ubuntu@mkdocs:~$ cd /var/www/my-docs/docs
ubuntu@mkdocs:/var/www/my-docs/docs$ sudo nano nubi_compute_service.md
A modo ejemplo escribimos un título, agregamos el logo del producto y una descripción con link:
# Nubi Compute Service
![](https://www.nubi2go.com/static/e1cc3940146d9b2fdf055b976e775ea0/7640e/computer_service_282.webp)
Nubi Compute Service ([NCS](https://nubi2go.com/services/nubi_compute_service)) es un servicio de máquinas virtuales en la nube.
Para aprender sobre el lenguaje de markup y su sintaxis, les recomendamos markdownguide.org.
En el sitio de mkdocs-material podemos ver todas las utilidades que tiene para escribir nuestra documentación.
Lo agregamos al nav del Home, colocando estas lineas al final del archivo mkdocs.yml:
nav:
- Home: index.md
- Services:
- Nubi Compute Service: nubi_compute_service.md
y corremos el build:
ubuntu@mkdocs:/var/www/my-docs$ sudo mkdocs build
Cuando termina, veremos los cambios reflejados en el nav y la nueva página de documentación:
Como opcional, nuestra recomendación es tener la documentación en un repositorio de versionado de código como Github, para poder editar localmente los archivos markdown con nuestro IDE de preferencia. Se puede instalar MkDocs localmente, y a medida que se van haciendo cambios, se pueden visualizar con un dev-server que viene con MkDocs y levanta el sitio en localhost. Además, se puede poner como repositorio público, cosa que los usuarios que leen nuestra documentación puedan abrir issues.