Como Instalar MkDocs No Debian 11

MkDocs é um gerador de site estático rápido, simples e absolutamente lindo que é voltado para a documentação do projeto de construção. Os arquivos de origem da documentação são gravados em Markdown e configurados com um único arquivo de configuração YAML.

Distribuição utilizada: Debian 11

Pacotes utilizados no tutorial

# apt install wget net-tools tree python3-pip vim

Instalação MkDocs

# apt install mkdocs
# pip3 install mkdocs-material mkdocs[i18n]

Verificando a versão instalada

# mkdocs --version
mkdocs, version 1.1.2 from /usr/lib/python3/dist-packages/mkdocs (Python 3.9)

Crie um novo projeto chamado mkdocs e construa um novo site

# cd /opt/
# mkdocs new mkdocs
# cd /opt/mkdocs
# mkdocs build

Verifique se os seguintes arquivos foram criados com sucesso

# tree
├── docs
│   └── index.md
├── mkdocs.yml
└── site
    ├── 404.html
    ├── css
    │   ├── base.css
    │   ├── bootstrap.min.css
    │   └── font-awesome.min.css
    ├── fonts
    │   ├── FontAwesome.otf
    │   ├── fontawesome-webfont.eot
    │   ├── fontawesome-webfont.svg
    │   ├── fontawesome-webfont.ttf
    │   ├── fontawesome-webfont.woff
    │   └── fontawesome-webfont.woff2
    ├── img
    │   ├── favicon.ico
    │   └── grid.png
    ├── index.html
    ├── js
    │   ├── base.js
    │   ├── bootstrap.min.js
    │   └── jquery-1.10.2.min.js
    ├── search
    │   ├── lunr.js
    │   ├── main.js
    │   ├── search_index.json
    │   └── worker.js
    ├── sitemap.xml
    └── sitemap.xml.gz

Como estou rotando em um VM de lab vou verificar qual o IP recebi por DHCP na interface e iniciar o serviço.

# ip -c addr
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:90:63:d9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.87.41/24 brd 192.168.87.255 scope global dynamic enp0s3
       valid_lft 86031sec preferred_lft 86031sec

Vamos iniciar o serviço de forma manual apenas para realizar um teste.

# mkdocs serve -a 192.168.87.41:8000
INFO     -  Building documentation...
INFO     -  Cleaning site directory
INFO     -  Documentation built in 0.05 seconds
INFO     -  [10:41:22] Serving on http://192.168.87.41:8000/

Agora abra no seu navegador http://IP:8000

No terminal para finalizar o mkdocs precione CRTL+C
Particular mente eu não gosto do tema padrão (mkdocs) então você pode optar em alterar editando /mkdocs/mkdocs.yml

Gosto dos temas:

material

readthedocs

Edite e escolha o seu favorito (existe outros temas) também usarei o idioma português.

# vim /opt/mkdocs/mkdocs.yml
site_name: My Docs
theme:
  name: readthedocs
  locale: pt_BR

Inicie mkdocs com systemd
Por padrão se você iniciar o mkdocs serve será iniciar em seu ip de loopbak localhost, a ideia aqui vai ser iniciar o mesmo como o systemd e em seguida fazer um proxy com nginx.

Para executar MKDocs como um serviço, crie um arquivo de serviço no systemd

# vim /etc/systemd/system/mkdocs.service

Adicione:

[Unit]
Description=MKDocs
After=network.target

[Service]
Type=simple
User=root
Group=root
TimeoutStartSec=60
Restart=on-failure
RestartSec=10
RemainAfterExit=yes
WorkingDirectory=/opt/mkdocs
ExecStart=/bin/mkdocs serve
ExecReload=/bin/pkill mkdocs; /bin/mkdocs serve
ExecStop=/bin/pkill mkdocs

[Install]
WantedBy=multi-user.target

Recarregue daemon, em seguiga habilitamos nosso novo serviço mkdocs para inicia com o boot do sistema, e inicializamos o mesmo.

# systemctl daemon-reload
# systemctl enable mkdocs
# systemctl start mkdocs

Verifique se o mesmo incializou

# systemctl status mkdocs
● mkdocs.service - MKDocs
     Loaded: loaded (/etc/systemd/system/mkdocs.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-11-19 13:32:12 -03; 3s ago
   Main PID: 7160 (mkdocs)
      Tasks: 6 (limit: 2341)
     Memory: 29.8M
        CPU: 261ms
     CGroup: /system.slice/mkdocs.service
             └─7160 /usr/bin/python3 /bin/mkdocs serve

nov 19 13:32:12 debian11 systemd[1]: Started MKDocs.
nov 19 13:32:12 debian11 mkdocs[7160]: INFO     -  Building documentation...
nov 19 13:32:12 debian11 mkdocs[7160]: INFO     -  Cleaning site directory
nov 19 13:32:12 debian11 mkdocs[7160]: INFO     -  Documentation built in 0.07 seconds
nov 19 13:32:12 debian11 mkdocs[7160]: INFO     -  [13:32:12] Serving on http://127.0.0.1:8000/

NGIX PROXY

Se você esta pensando para que diabos instalar um serviço web se poderia rodar o mkdocs na porta 80 e iniciar-lo diretamenta para o IP da interface em vez de inicia-lo para apenas o ip de localhost (127.0.0.1), a resposta é: Acredito que você não terá um servido so para isso, logo a idiea do nginx é tornar a aplicação acessivel via domínio por exemplo, ou não confilhar com ninguém, então cada caso é um caso. Aqui é apenas uma ideia!

# apt install nginx
# sed -i 's/# server_tokens/server_tokens/' /etc/nginx/nginx.conf
# mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original

Vou utilizar da conf default

# vim /etc/nginx/sites-available/default

Adicione e altere para suas necessidades

 server {
    listen 80;
    listen [::]:80;

    # Subdominios especifico
    #server_name mkdocs.remontti.com.br;
    # Todos o endereços
    server_name     _;
  
    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header   Host $host;
    }
}
# systemctl restart nginx

Agora basta acessar ex. `http://mkdocs.remontti.com.br`

Para criação de documentos recomendo você ler como funciona Markdown, e veja o guia do mkdocs. Leia também https://daringfireball.net/projects/markdown/syntax e https://www.markdownguide.org

Um ótimo editor Markdown online é o Stackedit que pode auxilhar na contrução dos seus arquivos.

Vou fazer algobem simples de exemplo:

# vim /opt/mkdocs/mkdocs.yml

Vou cirar o menu de navegação e apontar para cada arquivo correspondente que ficam no diretório /opt/mkdocs/docs. Sempre que alterar as configurações do mkdocs.ym será necessário reiniciar o serviço.

site_name: Markdown Tutorial
theme:
  name: readthedocs
  locale: pt_BR
nav:
    - Home: index.md
    - Exemplos: exemplos.md

Reinicie o mkdocs

# systemctl restart mkdocs

Agora vamos editar/criar nossos arquivos.

# vim /opt/mkdocs/docs/index.md

# Markdown

## O que é Markdown ?

Markdown é uma linguagem de marcação leve com sintaxe de formatação de texto simples projetada para que ela possa ser convertida em HTML e muitos outros formatos usando uma ferramenta com o mesmo nome. Markdown é usado frequentemente para formatar arquivos readme, para escrever mensagens em fóruns de discussão on-line e para criar texto rico usando um editor de texto simples.

## Porque usar Markdown?

* **FÁCIL** : A sintaxe é tão fácil que você pode aprender em um minuto ou dois, em seguida, escreva sem perceber nada estranho ou nerd.

* **RÁPIDO** : Ele economiza tempo em comparação com outros tipos de arquivos / formatos de texto. Isso ajuda a aumentar a produtividade e os fluxos de trabalho do escritor.

* **LIMPO** : Tanto a sintaxe como a saída são limpas, sem confusão com nossos olhos e simples de gerenciar.

* **FLEXÍVEL** : Com apenas algumas configurações, o seu texto será traduzido atravessando qualquer plataforma lá fora, editável em qualquer software de edição de texto e conversível para uma ampla variedade de formatos.


**Em resumo**, os usuários comuns acharão útil em todos os casos, especialmente quando você precisar de algo melhor que o texto simples, mas menos funcional do que o Microsoft Word.

**Para desenvolvedores**, Se você é preguiçoso para escrever código HTML, você vai adorar o markdown. **Além disso**, **Github** e muitos sites favorecem o markdown para o arquivo readme de projetos. Isso significa que você vai encontrar o markdown em sua vida de uma forma ou de outra.
# vim /opt/mkdocs/docs/exemplos.md
# Instalação MkDocs
```
# apt install mkdocs
# pip3 install mkdocs-material mkdocs[i18n]
```
Crie um novo projeto chamado mkdocs e construa um novo site
```
# cd /opt/
# mkdocs new mkdocs
# cd /opt/mkdocs
# mkdocs build
```
Inicie o serviço
```
# mkdocs serve -a 192.168.87.41:8000
```
[![Doação](https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png)](https://blog.remontti.com.br/doar)


Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Fontes:
https://www.mkdocs.org/
https://github.com/mkdocs/mkdocs/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *