Arquivo da categoria ‘Serviços IP’

Redmine possibilita nativamente o compartilhamento de parte de seus dados dos projetos por meio de uma API REST. Esta API fornece acesso e operações CRUD básicas (criar, atualizar, excluir) para os recursos descritos abaixo. A API oferece suporte aos formatos XML e JSON. Para detalhes ver https://www.redmine.org/projects/redmine/wiki/Rest_api

Não vamos elaborar neste post uma documentação completa, mesmo porque esta já está colocada na documentação do Redmine conforme o link anterior acima. Mas a título de exemplos, vamos disponibilizar algumas informações.

1. Documentos, prioridades e atividades
Para listar a identificação das categorias dos documentos, o id das prioridades das tarefas e a classificação das atividades dos usuários (para o devido registro de horas):
https://demandas-saa-treina.saude.gov.br/enumerations/DocumentCategory.json
https://demandas-saa-treina.saude.gov.br/enumerations/DocumentCategory.xml

https://demandas-saa-treina.saude.gov.br/enumerations/issue_priorities.json
https://demandas-saa-treina.saude.gov.br/enumerations/issue_priorities.xml

https://demandas-saa-treina.saude.gov.br/enumerations/TimeEntryActivity.json
https://demandas-saa-treina.saude.gov.br/enumerations/TimeEntryActivity.xml

Ver detalhes em https://www.redmine.org/projects/redmine/wiki/Rest_Enumerations

2. Tipos de Tarefas
Para listar a identificação do Tipo de Tarefas:
https://demandas-saa-treina.saude.gov.br/trackers.json
https://demandas-saa-treina.saude.gov.br/trackers.xml

Ver detalhes em https://www.redmine.org/projects/redmine/wiki/Rest_Trackers

3. Projetos
Listar a identificação dos projetos
https://demandas-saa-treina.saude.gov.br/projects.json
https://demandas-saa-treina.saude.gov.br/projects.xml

Para um único projeto, por exemplo para o projeto de número 3:
https://demandas-saa-treina.saude.gov.br/projects/3.json
https://demandas-saa-treina.saude.gov.br/projects/3.xml

parâmetros:
trackers
issue_categories
enabled_modules
time_entry_activities
issue_custom_fields (desde 4.2.0)

Exemplos:
/projects/3.xml?include=trackers
/projects/3.xml?include=trackers,issue_categories
/projects/3.xml?include=enabled_modules

Ou ainda através do nome do projeto. Por exemplo:
https://demandas-saa-treina.saude.gov.br/projects/implantar-o-redmine-na-sab.json
https://demandas-saa-treina.saude.gov.br/projects/implantar-o-redmine-na-sab.xml

https://demandas-saa-treina.saude.gov.br/projects/implantar-o-redmine-na-sab.json?include=trackers,issue_categories
https://demandas-saa-treina.saude.gov.br/projects/implantar-o-redmine-na-sab.xml?include=trackers,issue_categories

Ver detalhes em https://www.redmine.org/projects/redmine/wiki/rest_projects

4. Usuários
Listar detalhes de um usuário, por exemplo, para o usuário 34 (incluindo detalhes adicionais sobre as associações do usuário, papeis nos projetos e pertencimentos à grupos):
https://demandas-saa-treina.saude.gov.br/users/34.json?include=memberships,groups
https://demandas-saa-treina.saude.gov.br/users/34.xml?include=memberships,groups

5. Outros
Listar tarefas de um determinado período:
https://demandas-saa-treina.saude.gov.br/issues.xml?created_on=%3E%3C2024-03-01|2024-05-07

1. Introdução
Ao se enviar um documento para impressão, ele é colocado no spooler. O spool é também chamado “fila de impressão”: um espaço na memória do computador onde ficam armazenados em fila os arquivos enviados para impressora. As vezes os documentos podem ficar presos no spooler. A comunicação do computador para a impressora pode falhar impossibilitando que o documento chegue a impressora e possa ser impresso. Quando isso acontece, o documento fica “travado” na fila em espera por tempo indeterminado, e não é excluído automaticamente.

2. CUPS
CUPS, é um acrônimo para “Common Unix Printing System”. Trata-se de um sistema de impressão para sistemas baseados em Unix, e no caso do Debian é o seu sistema de impressão padrão.

O CUPS é um servidor de impressão, e como todo servidor, ele serve a um cliente que pode ser o computador do usuário, ou uma série de computadores que precisam realizar uma impressão mas não possuem uma impressora física conectada a ele.

A interface web do CUPS para gerenciar as tarefas da impressora (página de administração do CUPS) pode ser acessada em:
http://localhost:631

3. Como funciona o CUPS?
Na primeira vez que você imprime em uma impressora, o CUPS cria uma fila (“queue”) para acompanhar o status atual da impressora (tudo OK, sem papel, etc.) e todas as páginas que você imprimiu. Na maioria das vezes, a fila (“queue”) aponta para uma impressora conectada diretamente ao seu computador através de uma porta USB, mas também pode apontar para uma impressora na sua rede, uma impressora na Internet ou múltiplas impressoras, dependendo da configuração. Independentemente de onde a fila aponta, ela se mostrará nos diversos aplicativos de forma semelhante independentemente da impressora.

Cada vez que você imprime algo, o CUPS cria um trabalho (“job”) que contém a fila (“queue”) para a qual você está enviando a impressão, o nome do documento que você está imprimindo e as descrições das páginas. Os trabalhos são numerados (fila-1, fila-2 e assim por diante) para que você possa monitorar o trabalho conforme ele é impresso ou cancelá-lo se encontrar um erro. Quando o CUPS recebe um trabalho (“job”) para impressão, ele determina os melhores programas (filtros, drivers de impressora, monitores de porta e backends) para converter as páginas em um formato imprimível e então inicia a execução da impressão do trabalho (“job”).

Quando o trabalho (“job”) de impressão estiver completamente impresso, o CUPS o removerá da fila (“queue”) e passará a cuidar de outros trabalhos (“jobs”) que você tenha enviado. Você também pode ser notificado quando o trabalho (“job”) for concluído ou se houver algum erro durante a impressão.

4. O escalonador CUPSD
O cupsd é o escalonador (“scheduler”) do CUPS. Na verdade, é o coração do sistema CUPS. Implementa um sistema de impressão baseado no Internet Printing Protocol (ipp). O seu arquivo de configuração padrão está em /etc/cups/cupsd.conf

$ ps -A | grep cupsd
   1484 ?        00:00:00 run-cupsd
   1899 ?        00:00:10 cupsd
 547975 ?        00:00:01 cupsd

 

5. Fila de impressão no Debian
A fila de impressão (Spool) no Debian do sistema lpd está em /var/spool/cups/

Comandos relativos a fila de impressão:

#lpq -a
#lprm <numero>

Onde temos os seguintes significados:
lpq – list printer queue status (mostrar os jobs em todas as filas de impressão do sistema).
lprm – remove print jobs (cancela o job informado da fila de impressão).

Observação: esses comandos também podem ser alcançados de duas outras maneiras:
1. através da página de administração do CUPS em http://localhost:631
2. através da interface gráfica do computador: Aplicações -> Sistema -> Impressoras

6. Comandos úteis
Listar impressoras definidas no sistema:
$ cat /etc/printcap

Referências:
1- Portal de impressão do wiki do Debian: https://wiki.debian.org/pt_BR/Printing
2- Overview of CUPS: https://openprinting.github.io/cups/doc/overview.html

O Superset é uma aplicação BI em software livre (licenciamento através da Apache License v2.0, que é compatível com a GPL 3.0) para visualizar dados e gerar dashboards interativos. É uma plataforma de exploração e visualização de dados projetada para ser visual, intuitiva e interativa.

1. Verificar o ambiente Ubuntu utilizado:
meu_usuario$ lsb_release -a
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy

2. Instalar python e dependências:
# apt-get install python3 build-essential libssl-dev libffi-dev python3-dev python3-pip libldap2-dev default-libmysqlclient-dev

Verificar se Python3 foi instalado:
meu_usuario$ python3 --version
Python 3.10.12

Verificar se PIP foi instalado:
meu_usuario$ pip --version
pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.10)

3. Instalar pacotes Python em todo o sistema:
# pip install wheel
# pip install setuptools
# pip install flask
# pip install pillow

ou de outra forma (especialmente distribuição Debian):
# apt-get install python3-wheel python3-setuptools python3-flask python3-pillow

4. Instalar o módulo Python que dá suporte a criação de ambientes virtuais:
É altamente recomendável instalar o Superset dentro de um ambiente virtual. Python vem com virtualenv pronto para uso. Uilizando-se o virtualenv se isola as bibliotecas entre os projetos.
# apt-get install python3-venv

5. Criar um ambiente virtual e ativá-lo:
Para criar um ambiente virtual para o Python3, usar o módulo “env” e dar a ele um nome (“supersetdata”). Em seguida ativar este ambiente virtual:
meu_usuario$ python3 -m venv supersetdata

Após este comando, será criada a pasta “supersetdata” com o seguinte conteúdo:

drwxr-xr-x .
drwx------ ..
drwxr-xr-x bin
drwxr-xr-x include
drwxr-xr-x lib
lrwxrwxrwx lib
-rw-r--r-- pyvenv.cfg

Ativar:
meu_usuario$ source supersetdata/bin/activate

Observações:
(a) observar que o prompt se modificou tendo o prefixo “supersetdata” ter sido acrescentado no começo. Esse acréscimo na variável de ambiente PATH da sessão corrente indica o local do interpretador Python. Além disso, foi criada a pasta “supersetdata”, onde o projeto a ser criado ficará armazenado:
(supersetdata)meu_usuario$ ls
supersetdata

(b) para desativar o ambiente virtual:
(supersetdata)meu_usuario$ deactivate
Observar agora que o prefixo “supersetdata” não está mais presente.

6. Verificações:
a) verificar quais pacotes estão instalados no ambiente virtual:
$ pip freeze
Obs: entre os pacotes instalados, observar que o “Flask” está instalado.

b) Sobre o Flask:
Flask é uma das estruturas de aplicativos da web mais populares escritas em Python. O Flask é um micro-framework multiplataforma que provê um modelo simples para o desenvolvimento web. Em especial, muito utilizado para criação de um site básico. Para verificar se o Flask foi instalado corretamente, inicie o interpretador Python e tentando importá-lo:
$ python3
>>> import flask

Se nenhum erro aparecer, significa que o Flask está instalado corretamente. Pode-se então iniciar a aplicação utilizando o Flask.

7. Instalar o Superset e inicializar sua base de dados:
(supersetdata)meu_usuario$ export FLASK_APP=superset
(supersetdata)meu_usuario$ pip install pillow
(supersetdata)meu_usuario$ pip install apache-superset
(supersetdata)meu_usuario$ export SUPERSET_SECRET_KEY="some_random_base64_string"
(supersetdata)meu_usuario$ openssl rand -base64 42
(supersetdata)meu_usuario$ superset db upgrade

Criando um usuário admin para gerenciar o Superset:
(supersetdata)meu_usuario$ superset fab create-admin
Username [admin]: jose
User first name [admin]: Jose
User last name [user]: Alvarenga
Email [admin@fab.org]: jose.alvarenga@site.com.br
Password: ****
Repeat for confirmation: ****

8. Carregar exemplos de dados para servir de exploração das facilidades do Superset:
(supersetdata)meu_usuario$ superset load_examples

9. Configurar papeis e permissões padrão:
(supersetdata)meu_usuario$ superset init

10. Rodar o superset em um servidor local na porta 8088:
(supersetdata)meu_usuario$ superset run -h localhost -p 8088 --with-threads --reload --debugger

ou ainda

(supersetdata)meu_usuario$nohup superset run -h localhost -p 8088 --with-threads --reload --debugger &
Observações:
(a) usando o comando nohup (“No Hangups”) assegura-se que um processo que estará rodando não prenda o terminal e até mesmo pode-se fechar o terminal sem interromper o processo que fora iniciado;
(b) o comando nohup redireciona mensagens de saída para um arquivo chamado “nohup.out” no diretório a partir do qual o comando foi executado. Já o caractere “&” informa ao sistema para rodar o comando ou script em background. Caso não se use, o comando será executado em primeiro plano;
(c) para finalizar o processo que fora iniciado com “nohup”, uma maneira simples é:

$ ps -ef | grep superset
meu_usuario    14740       1  2 fev05 ?        00:42:13 /home/meu_usuario/supersetdata/bin/python3 /home/meu_usuario/supersetdata/bin/superset run -p 8088 --with-threads --reload --debugger
$ kill -9 14740

Agora com o navegador, acessar a aplicação: http://localhost:8088/login

Verificar os processos criados:
$ ps -a
13734 pts/0 00:00:02 superset
13752 pts/0 00:00:06 python3

11. Carregar novamente o Superset após ter parado essa aplicação:
(a) com o ambiente virtual criado:
(supersetdata)meu_usuario$ superset run -p 8088 --with-threads --reload --debugger
(b) sem a existência do ambiente virtual:
meu_usuario$ source supersetdata/bin/activate
(supersetdata)meu_usuario$ export FLASK_APP=superset
(supersetdata)meu_usuario$ export SUPERSET_SECRET_KEY="some_random_base64_string"
(supersetdata)meu_usuario$ openssl rand -base64 42
(supersetdata)meu_usuario$ superset db upgrade
(supersetdata)meu_usuario$ superset load_examples
(supersetdata)meu_usuario$ superset init
(supersetdata)meu_usuario$ superset run -h localhost -p 8088 --with-threads --reload --debugger

12. Como criar novos usuários:
(supersetdata)meu_usuario# superset fab create-admin

13. Verificar a versão dos softwares instalados:
(supersetdata)meu_usuario$superset --version
Python 3.10.12
Flask 2.2.5
Werkzeug 2.3.8

14. Depois de instalado, supondo que a máquina seja desligada e queira executar novamente o ApacheSuperset:
meu_usuario$ source supersetdata/bin/activate
(supersetdata)meu_usuario$ export FLASK_APP=superset
(supersetdata)meu_usuario$ export SUPERSET_SECRET_KEY="some_random_base64_string"
(supersetdata)meu_usuario$ openssl rand -base64 42
(supersetdata)meu_usuario$ superset db upgrade
(supersetdata)meu_usuario$ superset run -h localhost -p 8088 --with-threads --reload --debugger

Agora é só usar o navegador: http://localhost:8088/login

Referências:
1- https://superset.apache.org/docs/installation/installing-superset-from-scratch
2- https://archimedesrocha.com.br/instalando-e-configurando-o-apache-superset/
3- https://github.com/apache/superset/issues/26241
4- https://www.restack.io/docs/superset-knowledge-install-superset-guide
5- https://superset.apache.org/docs/databases/installing-database-drivers/
6- https://engenhariadecomputacao.cba.ifmt.edu.br/media/filer_public/18/0b/180b6998-4499-4cd8-bcf0-46e0f110c5f8/tcc_harriman_fonte.pdf
7- http://datadragon.ai/configurar-superset-en-un-servidor/
8- https://docs.python.org/3/library/venv.html

Este guia foi construído utilizando o Redmine v.4.1
Obs: a referência ao termo “forcd” é a identificação do projeto que utilizamos no wiki do Redmine. Deve ser substituído pela referência real de quem for utilizar os links apresentados neste guia.

Momento-1

Primeiro encontro desta atividade de capacitação no Redmine. O objetivo é ter o primeiro contato com algumas funcionalidades do Redmine e já sair com a capacidade de criar tarefas na ferramenta.

1.1 criação do projeto
* a página de projetos do Redmine https://url-servidor/projects
* configuração do projeto: https://url-servidor/projects/forcd/settings
* cadastramento de usuários: link “cadastre-se” da página inicial do site Redmine
* página de usuários: aprovação pelo administrador https://url-servidor/users
* membros do projeto: https://url-servidor/projects/forcd/settings/members

1.2 onde estou?
* menu geral do Redmine (Página Inicial, Minha Página, Projetos, Administração, Ajuda).
* menu de um projeto específico – navegando nas suas diversas facilidades (Visão Geral, Atividade, Tarefas, Dashboard, Tempo Gasto, Gantt….) https://url-servidor/projects/forcd

1.3 minha conta
* verificar as configurações da própria pessoa clicando no link no alto à direita em “Minha Conta” (https://url-servidor/my/account).
* verificar meus projetos, minhas tarefas atividades clicando no link no alto à direita em seu próprio nome.
* verificar as informações de um usuário qualquer – 3 abas: geral, grupos e projetos – em (nível sistema Redmine – apenas Administradores): https://url-servidor/users
* escolher as notificações desejadas: https://url-servidor/my/account

1.4 “Tarefas”, como o coração do Redmine
* a página de criação de tarefas: https://url-servidor/projects/forcd/issues
* criar as primeiras tarefas.
* a tarefa vista como um formulário de informações (os diversos campos de informações).

1.5 é possível acompanhar por gráfico as tarefas?
* “Monitoramento & Controle” (aproveitando dados de um outro projeto): https://url-servidor/home_monitoring_controlling_project/index/forcd
* “Minha Página” (aproveitando dados de um outro projeto): https://url-servidor/my/page

1.6 para exercício pós-encontro
a) navegar pelos menus disponíveis do Redmine e saber localizar-se:
* navegar através do menu principal do Redmine (no alto à esquerda): página inicial, minha página, ….
* navegar através do menu de um projeto específico https://url-servidor/projects/forcd
* observar as facilidades disponíveis aos usuários e aquelas exclusivas do administrador.

b) criar novas tarefas:
* criar tarefas e observar seus campos (seu formulário para informações).
* observar que a tarefa carregará durante toda sua existência a informação de quem criou a tarefa.
* observar que a tarefa carregará durante toda sua existência informações de seu histórico (quem alterou/adicionou alguma informação à mesma).
* ao abrir uma tarefa já existente criada por outro usuário, marcar a opção “Observar” (no alto à direita) para receber notificações desta tarefa sempre que a mesma for alterada.

c) as informações pessoais no Redmine: https://url-servidor/my/account
* alterar/complementar as informações pessoais do usuário
* alterar as preferências de notificações
Obs: “Somente de tarefas que observo ou que esteja envolvido”: o termo “envolvido” aqui significa que é autor da tarefa ou que me colocaram como responsável na execução dela.

d) navegar pelas abas do “Monitoramento”: https://url-servidor/home_monitoring_controlling_project/index/forcd
* Gerenciamento de Tarefas
* Gerenciamento de Tempo
* Gerenciamento de Recursos Humanos

Momento-2

Segundo encontro desta atividade de capacitação no Redmine. Nosso foco é conhecer as diferentes formas de parametrização do Redmine e perceber o quanto é flexível esta ferramenta.

2.1 Acompanhar e agir no andamento do projeto:
a) “Minha Página” (o que tenho para fazer hoje?): primeira página a abrir após login do usuário.
* pode também ser acessada a qualquer momento através de link encontrado no menu superior do Redmine https://url-servidor/my/page
* minhas tarefas para fazer hoje (dos vários projetos que participo), gráficos agregados da situação das tarefas em andamento, notícias, membros do projeto, e outras informações.
b) “Visão Geral”, aba do menu do projeto (aproveitando dados de um outro projeto): https://url-servidor/projects/cconh
* quantidade de tarefas e seus status, notícias, membros, gráficos agregados.

2.2 parametrizar: valores padrões para o Redmine – configurar (nível sistema Redmine – apenas Administradores):
a) projetos – parâmetros e valores padrões: https://url-servidor/settings?tab=projects
* project list default: “colunas de visualização para mostrar os projetos existentes na forma de uma listagem”:https://url-servidor/projects?utf8=%E2%9C%93&set_filter=1&sort=&f%5B%5D=status&op%5Bstatus%5D=%3D&v%5Bstatus%5D%5B%5D=1&f%5B%5D=&display_type=list&c%5B%5D=name&c%5B%5D=identifier&c%5B%5D=short_description&group_by=
b) tarefas – parâmetros e valores padrões: https://url-servidor/settings?tab=issues
c) notificações por email – parâmetros e valores padrões https://url-servidor/settings?tab=notifications

2.3 “Tipos de Tarefas”:
* tomo 1 -> para “novos projetos”: configurar parâmetros e definir campos padrões (nível sistema Redmine – apenas Administradores): https://url-servidor/settings?tab=projects
* tomo 2 -> para “Tipos de Tarefas”: criar tipos de tarefas, definir campos padrões (nível sistema Redmine – apenas Administradores): https://url-servidor/trackers
* tomo 3 -> associar os “Tipos de Tarefas” ao “projeto” (nível do projeto específico): https://url-servidor/projects/forcd/settings/issues

2.4 “campos personalizados”: criando formulários customizados (nível sistema Redmine – apenas Administradores) https://url-servidor/custom_fields
a) criar campos personalizados para:

    • os projetos https://url-servidor/custom_fields?tab=ProjectCustomField
      * verificar criação em https://url-servidor/projects/forcd/settings
    • as tarefas https://url-servidor/custom_fields?tab=IssueCustomField
      * verificar criação em https://url-servidor/projects/forcd/settings/issues (e depois editando alguma tarefa)
    • identificação dos usuários https://url-servidor/custom_fields?tab=UserCustomField
      * verificar criação em https://url-servidor/my/account
    • gestão do tempo https://url-servidor/custom_fields?tab=TimeEntryCustomField
      * verificar criação em (aproveitando dados de um outro projeto) https://url-servidor/issues/170

b) associar campo personalizado ao projeto (clicar em cima de cada campo personalizado de https://url-servidor/custom_fields)

2.5 para exercício pós-encontro:
a) criar novas tarefas;
b) editar as tarefas e inserir informações nos campos das tarefas;
c) atribuir tarefas a outros usuários;
d) acompanhar as informações postadas em “Minha Página” e “Visão Geral”;
e) simular o cadastro das demandas (“Ordem de Serviços”):
* Criar uma tarefa chamada “Cadastrar Demanda”;
* Criar um conjunto de subtarefas à “Cadastrar Demanda”, uma para possível “Ordem de Serviço” que seja criada.
* Um usuário teria o papel de funcionário do órgão prestador do serviço. Um segundo usuário no papel de funcionário demandante. O segundo cria a tarefa e faz o encaminhamento para o primeiro usuário. Após preencher as informações, o segundo usuário envia a tarefa ao primeiro usuário.

Momento-3

Terceiro encontro desta atividade de capacitação no Redmine. O foco agora é nas facilidades de comunicação da ferramenta.

3.1) ajuda para o usuário Redmine:
a) manual Redmine: https://www.redmine.org/projects/redmine/wiki/Guide
b) sintaxe do wiki:
* https://url-servidor/help/pt-br/wiki_syntax_detailed_textile.html
* https://www.redmine.org/projects/redmine/wiki/BrRedmineWikiFormatting

3.2) Wiki – praticando a linguagem:
* barra lateral
* barra de ferramentas: editar, observar, bloquear, nova página wiki, histórico (revisões).
* prática de sintaxe Wiki para construção de páginas: praticando a formatação do wiki.

3.3 acompanhamento das tarefas – formas adicionais de acompanhamento:
* através de “Gráfico Gantt”.
* através do “Calendário”.

3.4 Tipos & Categorias (nível sistema Redmine – apenas Administradores) – https://url-servidor/enumerations
* Categorias de “Documentos” (do usuário, técnica, relatórios)
* Prioridade das Tarefas (baixa, normal, alta, urgente, imediata)
* Atividades (p/ classificar tempo de trabalhar)

3.5 uploads de arquivos:
a) prática de upload de “Documentos” em https://url-servidor/projects/forcd/documents
* “Documentos” possuem um tag de “categoria” (conforme “Tipos & Categorias”). Logo documentos podem ser organizados em grupos formando bibliotecas de documentos.
b) prática de upload de “Arquivos” em https://url-servidor/projects/forcd/files
c) referenciar um arquivo dentro da caixa de “Notas” de uma tarefa.

3.6) Foruns: https://url-servidor/projects/forcd/settings/boards
* importância da existência de fóruns – interatividade e suporte
* criar “fórum”
* praticar mensagens de questões e respostas no “fórum”

3.7 noticias:
* publicar notícias (nível do projeto específico): https://url-servidor/projects/forcd/news
* ir para “Página Inicial”: para visualizar as últimas “notícias” publicadas.
Utilizar a facilidade para publicar ideias inovadoras, mudança de rotinas de trabalho, bons resultados do projeto, algum documento importante novo adicionado, resumo de uma ata de reunião, nova legislação publicada, etc.

3.8) Para exercício pós-encontro:
* praticar o Wiki, explorando sintaxes avançadas (ter manual de sintaxe do wiki).
* praticar uploads de “documentos” e “arquivos” e referenciá-los nas tarefas.
* praticar mensagens de questões e respostas no “fórum”.
* publicar uma notícia.

Momento-4

Quarto encontro desta atividade de capacitação no Redmine. O foco deste encontro será nas tarefas: atribuição, tramitação e permissões associadas.

4.1) “Tipos de Tarefas” (formulários, nível sistema Redmine – apenas Administradores): https://url-servidor/trackers
a) entender os parâmetros de cada “Tipo de Tarefa” (tipo de formulário):

  • padrão para “Situação da Tarefa”: “Situação da Tarefa” em que a tarefa é automaticamente colocada quando ela é criada. Impactará no fluxo de trabalho ( _workflow_ ).
  • descrição: uma descrição deste tipo de tarefa. Texto livre. Além de ser visualizada na página que lista os tipos de tarefas (https://url-servidor/trackers), essa descrição pode ser visualizada quando da criação/edição de qualquer tarefa (serão visualizadas as descrições daquelas tarefas possíveis no workflow naquela situação de momento).
  • campos padrões.
  • campos personalizados.
  • projetos (nos quais este tipo de tarefa será utilizado).
  • exibir no planejamento: campo utilizado quando tiver trabalhando com versionamento de produção de software e sprints.

b) perceber que:

  • “Tipos de Tarefas” ( _trackers_ – formulários) se prestam para classificar os problemas em diferentes tipos (em diferentes tipos de formulários). Por exemplo:
    * “Dados do Veículo”, “Base Descentralizada”, “Rede de Referência”, “Central de Regulação”, “Município de Abrangência”.
    * “Defeito”, “Funcionalidade”, “Patch”.
    * “Projeto”, “Teste”, “Desenvolvimento”, “Plano de ação”.
    * “Help desck Ticket”, “Desenvolvimento de funcionalidade”, “Problema”, “Solicitação de Cliente”.
    Estes “Tipos de Tarefas” definidos podem ser utilizados em qualquer dos projetos criados no Redmine. Veja o manual em https://www.redmine.org/projects/redmine/wiki/RedmineIssueTrackingSetup
  • “Tipos de Tarefas” independe do “Papel do Usuário” e da “Situação da Tarefa”, respectivamente https://url-servidor/roles e https://url-servidor/issue_statuses.
  • “Tipos de Tarefas” (formulários)

 

4.2) acompanhamento gerencial: relação tarefas x relatórios: https://url-servidor/home_monitoring_controlling_project/index/cconh
* gráficos em colunas e pizza quantidade de tarefas x “Situação das Tarefas”;
* gráficos em colunas e pizza quantidade de tarefas x “Tipos de Tarefas”;
* gráficos em pizza de quantidade de tarefas atrasadas/em dia/não gerenciadas.

4.3) “Situação da Tarefa” (nível sistema Redmine – apenas Administradores): https://url-servidor/issue_statuses
Tem relação com o fluxo de atividades ( _Workflow_ ) – as etapas (temporalidade) da execução da tarefa. Por exemplo: Nova, Em Andamento, Concluída. É através deste parâmetro que o workflow é configurado, desde o estado da criação de uma nova tarefa até o estado de tarefa concluída. Observar:
a) como programar as possibilidades de transição da “situação de uma tarefa” (que depende do “papel do usuário” e do “tipo de tarefa”).
b) que ao criar um novo tipo de tarefa, há necessidade de definir o seu fluxo de trabalho para poder utilizá-lo corretamente. Nível sistema Redmine – apenas Administradores: https://url-servidor/trackers

4.4 Fluxo de Trabalho – workflow (nível sistema Redmine – apenas Administradores): https://url-servidor/workflows/edit
a) transição da “Situação da Tarefa”: o fluxo de trabalho permite definir os fluxos possíveis para as tarefas ( _workflow_ ), em função do “Papel do Usuário” (https://url-servidor/roles) e do “Tipo da Tarefa” (https://url-servidor/trackers).
b) permissão de campos (nível sistema Redmine – apenas Administradores https://url-servidor/workflows/permissions): para definir permissões especiais para um campo em uma “situação da tarefa” específica. Pode-se escolher entre os atributos: somente leitura; obrigatório; ou deixá-lo vazio para estar definido pelo comportamento padrão. Se o campo estiver definido como somente leitura, ele ficará oculto na seção de edição e não poderá ser alterado. Se o campo estiver definido como obrigatório, ele não poderá ser deixado em branco quando a tarefa for editada.

4.5) categorias de tarefas (nível do projeto específico): https://url-servidor/projects/forcd/settings/categories
A criação de categorias, que pode estar associado a alguma situação de problema, permite a atribuição automática de problemas a membros específicos do projeto quando do momento da criação da tarefa. Por exemplo, ter um rastreador chamado BUG pode ser melhor especificado por meio de categorias: Mecanismo, GUI, Banco de dados etc.

4.6) Para exercício pós-encontro:
a) navegando em aplicações Redmine do Ministério da Saúde:
Diretoria de Integridade do MS: https://dintegcgcin.saude.gov.br/
b) editar tarefas assumindo diferentes “papeis de usuário” (pedir ajuda do administrador para auxiliar nesta tarefa).
c) editar tarefas de diferentes “tipos de tarefas” (pedir ajuda do administrador para auxiliar nesta tarefa).
d) navegar em um projeto do Redmine assumindo diferentes papeis, com limitações de recursos tais como wiki e forum entre outros (pedir ajuda do administrador para auxiliar nesta tarefa).

Movimento-5

Quinto encontro desta atividade de capacitação no Redmine. Nosso foco é uma revisão dos conceitos apresentados e eliminação de questões quanto sua utilização.

5.1) o projeto:
* identificar os processos/tarefas e cadeia de valor do projeto.
* identificar documentos norteadores do projeto: legais, descritivos, experiências anteriores, atas, etc.
* cadastrar o projeto (nível sistema Redmine – apenas Administradores): especial atenção para fazer uma boa +descrição do projeto+; se é um projeto público; os módulos que serão utilizados no projeto. https://url-servidor/projects
* definir as informações que deseja que sejam mostradas na “Visão Geral” (nível do projeto específico): https://url-servidor/projects/forcd/settings
* definir os subprojetos, se necessário.
* dúvidas ou maiores detalhes? Consultar o manual em https://www.redmine.org/projects/redmine/wiki/RedmineProjectSettings

5.2) comunicação:
* wiki: utilizar o wiki para descrever com detalhes o projeto, os atores, orientações, responsabilidades, fluxo de atividades e outras orientações: https://url-servidor/projects/forcd/wiki
* fórum: criar um (ou mias) fórum (fóruns) para funcionar(em) como ambiente de interatividade e suporte (nível do projeto específico): https://url-servidor/projects/forcd/settings/boards
* noticia: publicar a primeira noticia dando publicidade ao projeto e orientações em geral. Indicar o “fórum” como o ambiente de interação e ajuda, a área de documentos (a ser) disponibilizada e outras orientações relevantes. Nível do projeto específico: https://url-servidor/projects/forcd/news

5.3) documentos e arquivos:
a) selecionar os documentos legais e outros que tragam orientações relevantes para orientar a execução do projeto.
b) documentos:
* definir as categorias dos documentos, de forma a propiciar bibliotecas para arquivos comuns (nível sistema Redmine – apenas Administradores): https://url-servidor/enumerations
* fazer upload de documentos (nível do projeto específico): https://url-servidor/projects/forcd/documents
Escolher um bom título para referenciar o documento, bem como realizar uma descrição que esclareça seu conteúdo e sua utilização.
c) arquivos: fazer upload de arquivos (nível do projeto específico):https://url-servidor/projects/forcd/files
Exemplo típico de arquivos são formulários (planilhas) que os usuários devem baixar para preencherem e anexarem nas tarefas. Antes de subir o arquivo no Redmine, dê um nome significativo ao arquivo em seu computador.
Observar o contador de downloads de cada arquivo para acompanhar sua utilização.

5.4) configurar tarefas (“trackers”):
* criar os campos personalizados necessários que comporão as tarefas (nível sistema Redmine – apenas Administradores): https://url-servidor/custom_fields
* criar os tipos de tarefas necessários (nível sistema Redmine – apenas Administradores): https://url-servidor/trackers
Neste momento, já marcar os campos padrões e campos personalizados que estarão presentes em cada tipo de tarefa.
* associar os tipos de tarefas, bem como os campos personalizados, ao projeto em foco (nível do projeto específico): https://url-servidor/projects/forcd/settings/issues
* definir categorias de tarefas, associando-a a determinado usuário (nível do projeto específico): https://url-servidor/projects/forcd/settings/categories

5.5) usuários:
a) criar campos personalizados necessários a melhor identificação do usuário (nível sistema Redmine – apenas Administradores): https://url-servidor/custom_fields
* exemplo: associado ao usuário, poderíamos ter dois novos campos: Estado, Órgão.
b) cadastro dos usuários no Redmine:
*** usuários utilizar link “cadastrar” da página inicial do Redmine, solicitando o cadastramento. https://url-servidor
*** adicionar cada usuário como novo membro do projeto, definindo seu papel (nível do projeto específico): https://url-servidor/projects/forcd/settings/members
c) papeis dos usuários:
* criar os papeis necessários ao projeto (nível sistema Redmine – apenas Administradores): https://url-servidor/roles
* definir as permissões para cada papel (nível sistema Redmine – apenas Administradores): https://url-servidor/roles
**** estabelecer o relacionamento tipo de tarefa x permissões para manipulação de tarefa, isso para cada papel (nível sistema Redmine – apenas Administradores): https://url-servidor/roles

5.6) fluxo de Trabalho:
* definir um fluxo de trabalho para cada par “papel do usuário – tipo de tarefa” (nível sistema Redmine – apenas Administradores): https://url-servidor/workflows/edit
Para economizar tempo, pode-se copiar o fluxo de trabalho de um tipo de tarefa existente ao criar um novo.
Observe também que as autorizações de transição é relativa a combinação do conjunto “papel do usuário” e “tipo de tarefa”.

5.7) cadastrar tarefas:
* cadastrar as tarefas: atenção especial para dar um +nome com significado+ para a tarefa; uma boa +descrição da tarefa+ ; para a data de término da tarefa; da categoria; e dos campos personalizados.

Este guia foi construído utilizando o Redmine v.4.1

1. Navegação inicial pelas configurações existentes

O objetivo desta seção é conhecer como o Redmine está configurado no momento que antecede a realização de qualquer alteração em sua configuração. Como é de conhecimento, existem configurações que apenas impactam no projeto em foco. Estas não nos preocupamos tanto. No entanto, outras configurações sistêmicas são mais sensíveis, impactando em todo ambiente Redmine. Assim, é preciso cautela quando for realizar alterações nos parâmetros do Redmine, especialmente nestas configurações sistêmicas.

1.1 compreender o Redmine:

  • Entender o que é o Redmine:
  • Trata-se de um organizador e rastreador de demandas/tarefas/problemas. Foi desenvolvido para ajudar as equipes a colaborarem nas tarefas, problemas, recursos e etapas necessárias para concluir um projeto, acompanhar visualmente seu progresso e planejar as próximas etapas usando gráficos. No entanto, além da configuração padrão de gerenciamento de projetos, o Redmine também facilita o compartilhamento de ideias e o gerenciamento do conhecimento entre os membros da equipe. Pode-se utilizar-se de fóruns e wiki para registrar os detalhes dos trabalhos desenvolvidos.

  • Realizar um “MiniCurso Redmine”:
  • Compreender as partes constituintes do Redmine, saber configurar um projeto e compreender como se faz o gerenciamento do projeto (e de suas tarefas) dentro do Redmine.

1.2 Conhecer o processo de trabalho que o usuário deseja que seja gerenciado/rastreado pelo Redmine. Ou seja, realizar o mapeamento do processo de trabalho.

1.3 Criar um “login” no Redmine: no alto à direita da página inicial do Redmine pelo link “Cadastre-se”.

1.4 Conhecer as configurações existentes para:
* projetos https://url-servidor/settings?tab=projects
* tarefas https://url-servidor/settings?tab=issues
* usuários https://url-servidor/settings?tab=users
* arquivos https://url-servidor/settings?tab=attachments
* notificação de e-mails https://url-servidor/settings?tab=notifications
* autenticação https://url-servidor/settings?tab=authentication
* temas e outros aspecto de “exibição” https://url-servidor/settings?tab=display
* registro de horas https://url-servidor/settings?tab=timelog

1.5 Conhecer os campos personalizados existentes para:
* o gerenciamento do projeto: https://url-servidor/custom_fields?tab=ProjectCustomField
* o gerenciamento de usuários: https://url-servidor/custom_fields?tab=UserCustomField
* o gerenciamento de tarefas: https://url-servidor/custom_fields
* o gerenciamento de tempo: https://url-servidor/custom_fields?tab=TimeEntryCustomField

2. Configurar/Ajustar

O objetivo desta seção é ajustar os parâmetros de configuração para o novo projeto, ou mesmo para um já existente e que necessite evolução. Mas, conforme o item anteriormente descrito, é preciso cautela pois existem parâmetros que impactam sistemicamente em todo funcionamento do Redmine. Convém tomar conhecimento da configuração atual do Redmine, conforme descrito na seção anterior, antes de qualquer modificação.

2.1 ajustar configurações do Redmine:
a) parâmetros gerais: https://url-servidor/settings?tab=general

  • texto de boas-vindas (“Página inicial” do Redmine).
  • número de registros por Feed (normalmente entre 7 e 15).
  • ….e outros parâmetros.

b) permitir/proibir certos tipos de arquivos: https://url-servidor/settings?tab=attachments

  • sugestões para inibições: js,swf,exe,bat,com,pps,dbx,ddl,Inbox,eml,mbx,mms,nch,sys,bin,tbb
  • sugestões para permissões: txt,png,ods,odf,odt,odp,pdf,doc,docx,xlsx,xls,csv,jpg,bmp,htm,html

2.2 ajustar parâmetros iniciais necessários para criação do projeto:
a) configurar parâmetros padrões para os projetos: https://url-servidor/settings?tab=projects

  • módulos habilitados por padrão para novos projetos.
  • colunas padrões a serem mostradas quando listar os projetos usando “Opções -> List”, disponível em https://url-servidor/projects
  • definir os “Tipos de Tarefas” padrões para novos projetos.
  • definir o “Papel” atribuído a um usuário não-administrador que cria um projeto.

b) criar os “Papeis” necessários ao projeto, com as devidas permissões para cada “Papel”. https://url-servidor/roles
obs: deixar para configurar a relação “Papel” x “Tipo de Tarefa” para mais adiante.
c) criar “Campos Personalizados para o Projeto”, se necessário. https://url-servidor/custom_fields?tab=ProjectCustomField
obs: definir quais os “Papeis” que podem visualizar estes campos personalizados.

2.3 criar o projeto: https://url-servidor/projects/new
a) mas se o projeto a ser criado for muito semelhante a algum já existente, utilize a facilidade “copiar projetos”, poupando tempo de trabalho. https://url-servidor/admin/projects
b) dar um nome significativo do projeto, sua descrição, um identificador, público ou privado, se é um subprojeto, e demais parâmetros;
c) criar uma imagem apropriada para identificar o projeto e referenciá-la no campo “Descrição” (recomenda-se 350×160 pixels);
d) escolher os tipos de dashboards iniciais para serem visualizados na aba “Visão Geral” do projeto;
e) definir os módulos necessários ao projeto.

2.4 ajustar necessidades:
a) para os “Campos Personalizados”: https://url-servidor/custom_fields

  • é possível adicionar campos personalizados aos seguintes itens: Tarefas, Tempo gasto, Projetos, Versões, Documentos, Usuários, Grupos, Atividades (registro de horas), Prioridade das tarefas, Categorias de documento.
  • criar novos “Campos Personalizados” que se fizerem necessários.
  • marcar os projetos em que cada campo personalizado estará disponível.
  • parametrizar se o campo pode ser utilizado como um “Filtro”, se será utilizado nas “Buscas” e se é “Obrigatório”.

b) para os “Tipos de Tarefas” https://url-servidor/trackers

  • criar novos “Tipos de Tarefas” necessários, definindo a situação padrão para cada “Tipo de “Tarefa” (estado inicial em que é colocada uma tarefa quando for criada), e tornando-as visíveis no projeto.
  • para cada “Tipo de Tarefa” marcar quais os campos necessários (padrões e personalizados).
  • associar ao projeto os “Tipos de Tarefas” necessários.

c) para “Papeis e Permissões” https://url-servidor/roles

  • criar os “Papeis” necessários ao projeto, com as devidas permissões para cada “Papel”.
  • Visibilidade das tarefas:

    • Todas as tarefas: as tarefas serão vistas por todos os usuários do Redmine;
    • Todas as tarefas não privadas: serão vistas todas as tarefas com exceção das privadas;
    • Tarefas criadas ou atribuídas ao usuário: serão vistas todas as tarefas geradas, registradas e/ou atribuídas ao usuário.
  • configurar as permissões para relação “Papel” x “Tipo de Tarefa”.

d) para “Situação das Tarefas”:

  • o “% Terminado” da tarefa pode ser informado manualmente pelos usuários ou pré-configurado com base na “Situação” em que se encontra a tarefa: https://url-servidor/settings?tab=issues
    • deixar para os usuários informarem o percentual a medida que vão executando a tarefa: parametrizar o campo “Calcular o percentual de conclusão da tarefa” com o parâmetro “Use o campo da tabela”.
    • deixar o percentual de conclusão das tarefas obedecendo às “Situações” em que se encontram: parametrizar o campo “Calcular o percentual de conclusão da tarefa” com o parâmetro “Usar a situação da tarefa”. Neste caso, não será possível informar o percentual manualmente.
    • Obs: este segundo caso, quando for criar/editar as “Situações das Tarefas”, informar o percentual de conclusão das tarefas para cada “Situação”. https://url-servidor/issue_statuses

  • criar as “Situações das Tarefas”. https://url-servidor/issue_statuses

e) para os “Fluxos de Trabalho”:

  • Resumo estatístico de transições: https://url-servidor/workflows/
  • Para edição: https://url-servidor/workflows/edit
  • Obs: nesta tela de edição do fluxo de trabalho, há também uma aba chamada “Permissões de campos”. Através desta aba é possível configurar para que, dependendo do “papel” do usuário, este não consiga alterar determinados campos.

  • Observações:
    • dependendo do “Tipo de Tarefa”, o fluxo de trabalho segue caminhos diferentes. É o “Tipo da Tarefa”, junto a cada “Papel” do usuário, que define a natureza e o fluxo do trabalho. Para cada par “Tipo da Tarefa” + “Papel”, define-se as transições possíveis (da “Situação atual da Tarefa” para “Nova Situação permitida”).
    • para cada relação “Papel” x “Tipo de Tarefa” (que será utilizado no projeto), definir o fluxo de trabalho necessário: que são as relações “Situação atual” e “Nova Situação permitida”.
    • dica prática: para cada “Papel”, editar a “Nova situação permitida” para todos os “Tipos de Tarefas”.
    • a lista de “Papeis” mostradas na lista _dropdown_ conterá aqueles papeis que tenha autoridade “Editar tarefas” habilitada em https://url-servidor/roles/

2.5 parametrizar “Tipos e Categorias” necessária ao projeto: https://url-servidor/enumerations
a) criar Categorias de Documentos
b) criar as Prioridades das Tarefas
c) criar os Tipos de Atividades (registro de horas)

2.6 configurar o projeto:
a) informações do projeto https://url-servidor/projects/forcd/settings/info
b) usuários:

  • adicionar usuários ao projeto: definir o papel que cada usuário receberá https://url-servidor/projects/forcd/settings/members
  • Grupos:
    • criar e adicionar “Grupos” ao projeto: definir o papel que cada grupo deve receber https://url-servidor/groups
    • adicionar usuários aos Grupos. https://url-servidor/groups
    • Observações:
      1. o “Grupo” é uma facilidade para termos os interessados (_stakeholders_) no projeto acompanhando e até participando das atividades, dependo do papel que for definido ao grupo.
      2. tendo o usuário um “Papel” e o grupo que o usuário pertence um outro “Papel”, valerá para o usuário as permissões mais elevadas dos dois “Papeis”.
      3. com isso, pode-se atribuir um grupo de usuários a uma tarefa.

c) definir os “Tipos de Tarefas” e os “Campos Personalizados” que serão utilizados nas tarefas do projeto https://url-servidor/projects/forcd/settings/issues
d) criar as “Categorias das Tarefas” e atribuí-las a usuários https://url-servidor/projects/id_projeto/settings/categories
e) definir quais os “Registros de horas” estarão habilitados no projeto https://url-servidor/projects/forcd/settings/activities

2.7 estruturar a comunicação do projeto:
a) criar um “fórum” para ajuda na execução do projeto https://url-servidor/projects/forcd/boards
b) criar uma “notícia” inicial de lançamento do projeto https://demandas-saa-hmg.saude.gov.br/projects/forcd/news
c) utilizar o “Wiki” para descrever detalhes orientadoras à execução do projeto e suas rotinas https://url-servidor/projects/forcd/wiki

2.8 criar uma biblioteca com documentos significativos ao projeto:
a) utilizar o módulo “Arquivos” https://url-servidor/projects/forcd/files
b) utilizar o módulo “Documentos” https://url-servidor/projects/forcd/documents

2.9 criar tarefas. https://url-servidor/projects/forcd/issues
Mas se a “tarefa” a ser criada for muito semelhante a alguma já existe, clique em “…” que está presente na última coluna à direita da tarefa que servirá de fonte e use a opção “copiar”.

3. Visualizações e Buscas de informações

O objetivo desta seção é trazer detalhes das possibilidades de visualizações de informações do andamento dos projetos.

a) “Caixa de Busca” (no alto à direita):

  • Busca em todos os projetos ou em determinado projeto
  • Busca em todos os módulos (Tarefas, Wiki, Notícias, Documentos….), ou em determinado(s) módulo(s).
  • e outras opções de combinações de Buscas.

b) “Filtros” (por exemplo, para o módulo “Tarefas” utilizar a caixa “Adicionar Filtro” no alto à direita). https://url-servidor/projects/forcd/issues
Pesquisar por Tipo da Tarefa, Prioridade, Autor da Tarefa, Categoria, Título da Tarefa…. e muito mais.
c) rastreamento de tarefas (“Issue Tracking”), que pode-se obter de duas formas:

  • Lista das Tarefas (“Issue List”) https://url-servidor/projects/forcd/issues
  • Resumo das Tarefas (“Issue Summary”), clicando em “…”-> Resumo (que está no alto à direita da página do módulo de Tarefas) https://url-servidor/projects/forcd/issues/report

d) consultas personalizadas – analisando os dados:

  • para “Tarefas”: após acessar o módulo “Tarefas”, e fazer uma consulta escolhendo suas “Opções” desejadas, usar a opção “Salvar”. Esta opção de consulta será listada do lado direito da página de “Tarefas”. https://url-servidor/projects/forcd/issues
  • para “Gantt”: após acessar o módulo “Gantt”, e fazer uma consulta escolhendo suas “Opções” desejadas, usar a opção “Salvar”. Esta opção de consulta será listada do lado direito da página de “Gantt”. https://url-servidor/projects/forcd/issues/gantt
  • para “Tempo Gasto”, acesso pelo módulo “Tempo Gasto”. Aí existem duas abas: https://url-servidor/projects/forcd/time_entries
    1. aba “Detalhes”: fazer uma consulta escolhendo suas “Opções” desejadas e “Filtros”. Se desejar salvar este tipo de consulta deve-se usar agora a opção “Salvar” (onde esta opção de consulta será listada do lado direito da página de “Tempo Gasto”).
    2. aba “Relatório”: onde se pode adicionar até 3 agrupadores para consultar o tempo gasto (para isto utilize a opção “Adicionar” por até 3 vezes), além da possibilidade de também utilizar filtros.

    e) Comunicando:

    • Agregadores de conteúdos RSS/Atom
    • No Redmine, as seguintes opções de disponibilização de conteúdos agregados via Atom estão disponíveis:
      1. Exportar a lista de projetos https://url-servidor/projects
      2. Exportar lista de tarefas (padrão ou como resultado de algum filtro) https://url-servidor/issues
      3. Exportar visão geral de uma determinada tarefa (detalhe): abrir a editação de uma determinada tarefa e capturar o link Atom.
      4. Tempo gasto https://url-servidor/time_entries
      5. Notícias https://url-servidor/news
      6. Atividade https://url-servidor/activity
    • Notícias
    • Wiki
    • Calendário
    • Gantt
    • Foruns
    • Observar: em algumas telas existe uma estrela com a palavra “Observar” ao lado, no alto da página à direita. Ao clicar neste link, o usuário será comunicado via e-mail sobre as alterações realizadas neste item. Esta funcionalidade é muito útil para especificar os envolvidos com a tarefa, para que estes sejam informados do andamento da tarefa. Além disso, permite que o usuário receba notificações de tarefas específicas que ele queira acompanhar, mesmo que não esteja mais atribuída a ele.
    • f) exportação de informações:
      * relatórios em csv (planilha).
      * relatórios em pdf.

      4. Exemplos de parâmetros de configuração

      O objetivo desta seção é trazer exemplos de parâmetros que vem sendo utilizados em outras instalações do Redmine, e que poderiam ser aproveitados para configurar o nosso Redmine.

      a) para “Tipos de Tarefa” – ( trackers – formulários) que se prestam para classificar os problemas em diferentes tipos (em diferentes tipos de formulários): https://www.redmine.org/projects/redmine/wiki/RedmineIssueTrackingSetup

      • Bug, Funcionalidade e Suporte.
      • Defeito, Teste, Funcionalidade, Desenvolvimento, Planejamento, Plano de Ação, Patch, Dúvida, Instalação, Manutenção, Compra, Documentação.
      • Dados do Veículo, Base Descentralizada, Rede de Referência, Central de Regulação, Município de Abrangência.
      • Help desck Ticket, Desenvolvimento de funcionalidade, Problema, Incidente, Solicitação de Cliente.
      • OS-Projeto Novo, OS-Melhorias, OS-Manutenção Corretiva, OS-Novo Livro.
      • Reunião, Planejamento do projeto, Desenvolvimento, Implantação, Testes, Homologação, Treinamento.

      b) para “Situação da Tarefa”: https://url-servidor/issue_statuses
      O “Fluxo de trabalho” é a maneira como o Redmine rastreia/acompanha os problemas/tarefas e seu progresso. Por padrão, suas tarefas podem estar em várias “Situações”, exemplificadas a seguir. https://url-servidor/workflows/edit

      • Nova, Em Andamento, Resolvida, Feedback, Fechada, Reprovado pela Equipe, Pronto para Iniciar, Em Elaboração, Definido, Em Avaliação pela Equipe, Aprovado pela Equipe, Reprovado pelo Cliente, Em Construção, Em Avaliação da Construção, Em
        Alteração, Construção Aprovada, Construção Reprovada, Alteração Aprovada, Alteração Reprovada, Alterado, Concluída.
      • Nova, Em desenvolvimento, Pronta para testes, Em testes, Pronta, Rejeitada.
      • Nova, Em Progresso, Resolvida, Aguardando Informação, Finalizada, Cancelada.
      • OS-Solicitação de Mudança, OS-Solicitação de Aprovação, OS-Planejamento Aprovado, OS-Planejamento Rejeitado, Fase- Termo de Recebimento Definitivo.

      c) para “Tipos de Atividades” (registro de horas): https://url-servidor/enumerations

      • essa classificação é interessante pois no módulo “Tempo Gasto” podemos ter um relatório justamente pelo “Tipo de Atividade”. https://url-servidor/projects/forcd/time_entries
      • Administrativa, Gestão de Projetos, Gestão do Conhecimento, Tecnologia, Dicionário de Dados, Aplicação de Tours, Criação de Tabelas de Decisão.
      • Planejamento, Desenvolvimento, Testes, Documentação.

      d) para “Papeis”: https://url-servidor/roles
      Gerente, Diagramador, Consultor Jurídico, Analista Financeiro, Codificador, Gerente de Projeto, Testador, Product Owner e Scrum Master.
      e) para “Grupos”: https://url-servidor/groups
      Gerência, Revisão, Equipe Técnica, Clientes.
      f) para “Categorias de Documentos”: https://url-servidor/enumerations
      Documentação do Usuário, Documentação Técnica, Ata de Reunião, Legislações, Relatórios

      5. Entendendo um pouco mais

      O objetivo desta seção é detalhar um pouco mais alguns aspectos de como configurar o Redmine, e também de como utilizá-lo, trazendo explicações mais detalhadas e dando “dicas” que possam melhor adaptar o funcionamento do Redmine as nossas necessidades.

      a) campos obrigatórios:
      Os campos Tipo, Título, Situação e Prioridade são obrigatórios para a criação da tarefa, pois influenciarão no comportamento destas. https://url-servidor/projects/forcd/issues
      Obs: observe que estes campos nem aparece listada como opção em https://url-servidor/trackers/fields
      b) Dicas quanto a visualização:

      • definição dos campos padrões a serem apesentados quando for listar as tarefas: configurar “Colunas na lista de tarefas por padrão” https://url-servidor/settings?tab=issues
      • personalizar “Minha Página” (opção no alto à esquerda): https://url-servidor/my/page
        1. para adicionar outros blocos de informações à “Minha Página”, utilizar a caixa “Adicionar” presente no alto à direita.
        2. em cada bloco de informações presentes na “Minha Página”, um ícone de configuração está presente à direita do bloco. Novos campos de informações podem ser acrescentados/modificados no bloco.

      c) “Papéis”: para que um determinado perfil possa editar as tarefas, deve estar marcada dois botões de seleção: o botão “Editar tarefas” na caixa “Gerenciamento de Tarefas” e também o botão de “Editar Tarefas” na caixa de “Tarefas” ao final da página. https://url-servidor/roles
      d) Gerenciamento de Tempo:

      • para um projeto fazer uso do gerenciamento de tempo, deve-se ativar este módulo “Gerenciamento de Tempo” nas configurações de cada projeto. https://url-servidor/projects/forcd/settings
      • em cada tarefa, após ação anterior, haverá os campos para gerenciamento dos tempos das atividades: https://url-servidor/projects/forcd/issues
        1. data de início da tarefa
        2. data prevista de término da tarefa
        3. tempo estimado (para execução da tarefa)
        4. tempo gasto (na execução até a conclusão da tarefa)
      • para se obter os relatórios do tempo de execução do projeto, acessar o módulo “Tempo Gasto” do projeto. https://url-servidor/projects/forcd/time_entries
      • explicando um pouco mais:
        1. o Módulo de “Gerenciamento de Tempo” permite a visualização da quantidade de horas de trabalho gastas em uma tarefa específica ou no projeto como um todo. Cada registro de “tempo gasto” pode ser categorizado por atividades, e explicada através da caixa de “Comentário” disponível na sessão de “Tempo de Trabalho” de cada tarefa.
        2. “Tempo gasto” é sempre relacionado a um usuário. Logo, pode-se acompanhar quantas horas úteis este usuário utilizou.
        3. Ao abrir o módulo “Tarefas”, pode-se obter relatórios diversos através dos recursos disponíveis em “Opções”. Dentre as opções disponíveis, o usuário pode marcar para ser disponibilizado as informações de “Tempo Gasto” e de “Tempo Estimado”, que estarão sendo mostrados no alto à direita do relatório executado.
        4. através do módulo “Monitoramento&Controle” está disponível o gráfico Horas Planejadas x Horas Executadas. https://url-servidor/mc_time_mgmt_project/index/forcd

        e) Edição de Tarefas avançado:
        Ao abrir a edição de uma tarefa, tem-se a opção “Tarefas Relacionadas”. Ao clicar “Adicionar”, tem-se as opções:

        1. “Relacionado a”: apenas acrescenta um link para outra tarefa.
        2. “Duplica”: são links de tarefas para que o fechamento de uma, feche também a outra. (Se a tarefa A faz uso da facilidade “Duplica” referenciando a tarefa B, encerrar A vai deixar B em aberto. Mas encerrar B, vai automaticamente encerrar A também).
        3. “Duplicado por”: a tarefa que tem esta indicação de “Duplicado por”, ao ser encerrada irá também encerrar a outra tarefa.
        4. “Bloqueia”: inibir uma outra tarefa de ser encerrada antes que esta esteja encerrada. (Se Tarefa A bloqueia a tarefa B, B não pode ser fechada, a menos que A já esteja fechada).
        5. “Bloqueado por”: indicação que esta tarefa foi bloqueada por uma outra (por exemplo, uma tarefa A), a qual vem sua indicação logo em seguida.
        6. Obs: na caixa de “Situação da Tarefa”, a opção de colocar esta tarefa no estado de fechada/encerrada nem aparece se a outra tarefa A não estiver no estado fechada.

        7. “Precede”: são links de Tarefas que definem uma “ordem”, onde A deve ser concluída antes de “x” dias do início da tarefa B. Se B segue A, as datas de início e final de B serão ajustadas automaticamente pelo sistema onde a data de início será igual ou maior que a data final de A. Após estabelecer a relação, verificar graficamente este relacionamento através do módulo Gantt.
        8. “Segue”: recíproca de “Precede”. Uma facilidade para configurar que a outra tarefa “precede” esta que está se utilizando da facilidade “segue”. Após estabelecer a relação, verificar graficamente este relacionamento através do módulo Gantt.
        9. “Copiada” (para): ocorre este relacionamento na Tarefa que serve de fonte para criar uma outra tarefa. Tarefa B foi criada a partir da Tarefa A, na Tarefa A aparece a referência da Tarefa B.
        10. “Copiado” (de): ocorre este relacionamento quando uma tarefa foi criada a partir de uma outra pre-existente. Na Tarefa A usar a opção Copiar, na Tarefa B (que é uma cópia) aparece a referência da Tarefa A.

        f) Comunicação: web feed
        Um web feed, traduzido como fluxo web ou fonte web, é um formato de dados usado em formas de comunicação com conteúdo atualizado frequentemente, como sítios de notícias ou blogues. Feeds são usados para que um usuário de internet possa acompanhar os novos artigos e conteúdos de um site ou blogue sem que precise visitar o site em si. Ou seja, os web feeds permitem que programas de software verifiquem se existem actualizações em algum determinado site da web. Sempre que um novo conteúdo for publicado, o assinante do feed poderá lê-lo de seu agregador.
        Os serviços que possibilitam aos usuários assinarem diferentes feeds são conhecidos como agregadores. Um agregador é um programa que reúne as informações dos diferentes feeds escolhidos pelo usuário, e se conecta periodicamente ou sob comando do usuário para verificar a existência de novas atualizações.
        Atualmente há três principais especificações para a criação de arquivos feed:

        • RSS 1.0 – RDF Site Summary 1.0 (RSS-DEV).
        • RSS 2.0 – Really Simple Syndication 2.0 (Userland).
        • Atom (IETF).

        6. Automações

        O objetivo desta seção é descrever algumas automações que podem ser utilizadas no dia-a-dia de uso do Redmine, proporcionando mais agilidade na utilização da ferramenta.

        a) Necessidade 1: criar tarefas muito semelhantes a uma outra já existente.

        solução 1: utilizar o recurso “copiar” existente em “Tarefas relacionadas”: na lista de tarefas (https://url-servidor/projects/forcd/issues), utilize a opção “Copiada” existente em “…” que está presente na última coluna à direita da tarefa que servirá de fonte. Logo em seguida será apresentada a tela de edição de uma nova tarefa, na qual é possível modificar as caixas que se deseja modificar.

        solução 2: utilizar o recurso “copiada” existente em “Tarefas relacionadas”.

        b) Necessidade 2: inibir uma tarefa de ser encerrada antes que uma outra esteja nesta condição.

        solução 1: utilizar o recurso “Bloqueia” existente em “Tarefas relacionadas”: editar a tarefa que deverá ser obrigatoriamente encerrada primeiro, e adicione o relacionamento “bloqueia” referenciando a outra tarefa.

        solução 2: utilizar o recurso “Bloqueado por” existente em “Tarefas relacionadas”: editar a tarefa que só deverá ser encerrada se a outra já estiver encerrada, e adicione o relacionamento “bloqueado por” referenciando a outra tarefa.

        c) Necessidade 3: condicionar o necessidade de que uma tarefa só inicie após uma outra.

        solução: utilizar o recurso “Precede”, ou o recurso “Segue”, existente em “Tarefas relacionadas”.

        d) Necessidade 4: encerrar automaticamente uma tarefa, quando uma outra determinada tarefa for encerrada.

        solução: utilizar o recurso “Duplica”, ou o recurso “Duplicado por”, existente em “Tarefas relacionadas”.

        e) Necessidade 5: criar um novo “Papel”, mas tendo por base as permissões de um “Papel” já existente.

        solução: utilizar o recurso “copiar” daquele “Papel” que já existe (link ao final da linha em que está citado o papel). Ao clicar neste link, uma tela para criação do novo “Papel” será aberta. https://url-servidor/roles
        Obs: se desejar copiar também o “Fluxo de Trabalho” deste papel já existe ou de algum outro, após ser mostrada a tela para criação do novo “Papel” selecione a origem das informações através da caixa “Copiar fluxo de trabalho de”.

        f) Necessidade 6: definir um fluxo de trabalho semelhante a um já existente.

        solução: utilizar o botão “Copiar” o que irá abrir uma tela para escolher as opções “de onde copiar o fluxo” (DE) para o “fluxo de destino” (PARA). https://url-servidor/workflows/edit

        g) Necessidade 7: adicionar ou alterar informações de uma tarefa de uma maneira muito rápida

        solução: é possível adicionar/alterar parte das informações de uma tarefa sem necessitar abrir sua edição. Ao listar as tarefas em https://url-servidor/projects/forcd/issues, basta clicar em “…” presente na última coluna da tarefa em foco, e uma lista de opções de campos será mostrada permitindo a alteração de seus valores, sem necessitar abrir a tarefa para edição.

        h) Necessidade 8: lançar o tempo gasto com uma atividade sem necessidade abrir a tarefa para edição.

        solução: para lançar individualmente esta informação, conforme descrito na necessidade 7 acima, basta listar as “Tarefas” e clicar em “…” presente na última coluna da tarefa em foco, e usar a opção “Tempo de Trabalho”. https://url-servidor/projects/forcd/issues

        7. Jogo rápido

        O objetivo desta seção é criar caminhos rápidos para contemplar necessidades de configurações do Redmine.

        a) como associar “Tipos de Tarefa” aos projetos?
        Basta acessar https://url-servidor/trackers

        b) como definir a “Situação Padrão” para cada “Tipo de Tarefa”?
        Uma situação padrão é o estado inicial em que é colocada uma tarefa quando esta for criada. Basta acessar https://url-servidor/trackers
        OBS: utilizar o “botão RESUMO” para facilitar a análise geral – ou ir diretamente através do link https://url-servidor/trackers/fields

        c) onde obter um quadro resumo dos fluxos de trabalho (_workflows_)?
        É só buscar acessar o relatório dos “resumos” dos workflows. https://url-servidor/workflows/

        d) como deixar um “Papel” apenas enxergando e editando suas tarefas?
        Abrir a edição do “Papel” e selecionar a caixa “Visibilidade das tarefas” com “Tarefas criadas ou atribuídas ao usuário”. https://url-servidor/roles
        Obs: pode-se deixar os botões de seleção “Editar Tarefas” e “Edit Own Issues” marcados.

        e) como deixar um “Papel” apenas enxergando “Início”, “Data Prevista”, “% Terminado”, “Situação”, “Descrição” e “Prioridade” mas sem poder editar estes campos?
        Editar o “fluxo de trabalho” para este “Papel” e “Tipo de Tarefa”, e usando a aba “Permissões de campo” marcar os respectivos campos como “Somente leitura”. Observar que isto tem que ser feito para as necessárias “Situações da Tarefa”. https://url-servidor/workflows/edit

        8. Plugins

        O objetivo desta seção é documentar plugins extras instalados, ou ainda registrar plugins interessantes que poderiam a ser instalados num futuro breve.

        a) “Redmine Tint Issues”:
        Aessar página de plugins e configurar o plugin https://url-servidor/admin/plugins
        O projeto que tiver interesse de usar o plugin, deve ativar este módulo. Isto é realizado, por exemplo, em https://url-servidor/projects/forcd/settings

        b) “Redmine Project Themes”:
        O projeto que tiver interesse de usar o plugin, deve ativar este módulo. Isto é realizado, por exemplo, em https://url-servidor/projects/forcd/settings
        Após realizar o passo anterior, cada projeto pode escolher um tema diferente. Entrar na configuração do projeto e escolher o tema preferido para o projeto. https://url-servidor/projects/forcd/settings/project_themes_settings


        9. Integrações via API

        O objetivo desta seção é mostrar que é possível realizar integrações com o Redmine de uma maneira muito fácil e rápida utilizando o padrão REST via protocolo HTTP.

        https://url-servidor/issues.json
        https://url-servidor/issues.xml
        https://url-servidor/projects.json
        https://url-servidor/users.xml
        https://url-servidor/issue_statuses.xml
        https://url-servidor/groups.json
        https://url-servidor/enumerations/issue_priorities.json

        Obs: Uma relação completa e atualizada dos métodos existentes na API do Redmine, incluindo o funcionamento de cada um deles, pode ser encontrada no seguinte endereço: http://www.redmine.org/projects/redmine/wiki/Rest_api/

        10. Referências interessantes

        O objetivo desta seção é trazer alguns links de referências técnicas para utilização do Redmine.

        Projetos utilizando Redmine:

        * guia Redmine: https://www.redmine.org/projects/redmine/wiki/Guide
        * http://redmine.roboime.com.br/projects/
        * http://redmine.workdev.com.br:8080/redmine/projects/docs/wiki/Guia_Usuario

        Referências sintaxe Wiki:

        * https://url-servidor/help/pt-br/wiki_syntax_detailed_textile.html
        * https://www.redmine.org/projects/redmine/wiki/BrRedmineWikiFormatting
        * http://redmine.workdev.com.br:8080/redmine/projects/docs/wiki/Guia_Usuario
        * https://www.redmine.org/projects/redmine/wiki/RedmineTextFormattingTextile
        * https://code.mpimet.mpg.de/projects/redmine-user/wiki/Examples
        * https://alphanodes.com/de/infografiken/redmine-wikisyntax-cheatsheet.pdf

      1. Instalar Apache e PHP
      # apt-get install apache2 apache2-utils libapache2-mod-php php apache2-doc

      2. Atualize as definições do firewall
      Por padrão, o firewall do Ubuntu está desativado. Deve-se atualizar a configuração iptables para permitir o tráfego HTTP. Atualize iptables com os comandos a seguir:

      # iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
      # netfilter-persistent save

      Pronto, o acesso a página default do Apache estará liberada em http://ip-servidor/

      3. Alguns comandos de verificação
      3.1 Versão do PHP:
      $ php -v
      PHP 8.1.2-1ubuntu2.13 (cli) (built: Jun 28 2023 14:01:49) (NTS)
      Copyright (c) The PHP Group
      Zend Engine v4.1.2, Copyright (c) Zend Technologies
      with Zend OPcache v8.1.2-1ubuntu2.13, Copyright (c), by Zend Technologies

      3.2 Verificar sintaxe do arquivo virtualhost:
      # apache2ctl -S

      3.3 Verificar se o serviço do Apache está ativo:
      # ps -A | grep apache2
      20614 ? 00:00:00 apache2
      20616 ? 00:00:00 apache2
      20617 ? 00:00:00 apache2
      20618 ? 00:00:00 apache2
      20619 ? 00:00:00 apache2
      20620 ? 00:00:00 apache2
      20874 ? 00:00:00 apache2
      20875 ? 00:00:00 apache2
      20876 ? 00:00:00 apache2

      3.4 Configuração do PHP:
      Criar o arquivo /var/www/html/phpinfo.php com o conteúdo abaixo e acessá-lo com o navegador em http://ip-servidor/phpinfo.php:
      <?php
      phpinfo();
      ?>

      Referências:
      1- Instalar servidor LAMP (Linux + Apache + PHP + MySQL) no Debian
      2- Oracle Cloud: Instalar o Apache e o PHP em uma Instância com Ubuntu
      3- Oracle Cloud: criar um servidor Web em uma instância de computação

      Certificado SSL em site

      Publicado: 14/08/2023 em Linux, Serviços IP
      Tags:, , ,

      Tendo um dominio com hospedagem VPS na Hostinger, com um subdominio conforme abaixo:

      Domínio: exemplo.com
      Subdomínio: wiki.exemplo.com
      Servidor de página: Nginx
      Sistema operacional: Ubuntu

      O desafio é colocar um certificado SSL para o subdominio. A seguir iremos descrever os procedimentos realizados para instalar o certificado SSL no subdomínio wiki.exemplo.com.

      1. Instalar dependências
      # apt update
      # apt install python3 python3-venv libaugeas0
      # apt remove certbot

      Obs:
      a) como pode ser visto, utilizou-se o “certbot” para gerar o certificado SSL. O “certbot” é uma ferramenta que facilita a obtenção, instalação e renovação de certificados SSL/TLS para sites.
      b) usar o Python 3.6, ou superior.
      c) incluir os módulos venv e Augeas (para o plugin do Apache).
      d) Se receber um aviso quando rodar o comando de remoção do “certbot”, informando que o pacote não está instalado, deve-se ignorar e continuar.
      

      2. Criar um ambiente virtual
      # python3 -m venv /opt/certbot/
      # /opt/certbot/bin/pip install --upgrade pip

      3. Instalar o Certbot
      a) se o servidor de páginas for o Apache:
      # /opt/certbot/bin/pip install certbot certbot-apache

      b) se o servidor de páginas for o Nginx:
      # /opt/certbot/bin/pip install certbot certbot-nginx

      4. Criar um ponteiro para o certbot ser utilizado
      # ln -s /opt/certbot/bin/certbot /usr/bin/certbot

      5. Gerar o certificado
      a) se estiver usando o Apache:
      # certbot --apache

      b) se estiver usando o Nginx:
      # certbot --nginx

      Obs:
      a) nesta etapa de geração do certificado algumas perguntas serão feitas, inclusive para qual subdomínio se deseja gerar o certificado (quando houver mais de um subdomínio).
      b) quando o comando acima é executado, o “certbot” interage com o servidor de páginas web (o Apache ou o Nginx) para configurar automaticamente as regras necessárias para habilitar o uso de certificados SSL nos domínios configurados no servidor de páginas. Essas configurações são salvas nos arquivos de configuração do próprio servidor de páginas.
      c) para adicionar certificados SSL para novos sites no futuro, deve-se executar o mesmo comando “certbot --nginx” (ou “certbot --apache“), e o “certbot” detectará quais domínios ainda não têm certificados SSL válidos e executará as ações necessárias para gerar e configurar esses novos certificados.
      d) é sempre uma boa prática manter o “certbot” atualizado e verificar as opções e documentação mais recentes, já que as novas versões podem ter pequenas diferenças em sua sintaxe ou funcionalidade.

      6. Adicionar um um cron job para garantir a renovação do certificado automaticamente
      # echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

      7. Verificar se o certificado está funcionando
      Por último, visitar o website wiki.exemplo.com utilizando do navegador e verificar que o SSL está funcionando (o site agora é seguro).

      1. Saber qual SO
      $ cat /etc/os-release
      NAME="Red Hat Enterprise Linux"
      VERSION="8.5 (Ootpa)"
      ID="rhel"
      ID_LIKE="fedora"
      VERSION_ID="8.5"
      PLATFORM_ID="platform:el8"
      PRETTY_NAME="Red Hat Enterprise Linux 8.5 (Ootpa)"

      $ uname -a ; saber qual versão do kernel do Linux
      Linux proddf0544 4.18.0-348.20.1.el8_5.x86_64 #1 SMP Tue Mar 8 12:56:54 EST 2022 x86_64 x86_64 x86_64 GNU/Linux

      $ cat /proc/version ; informações mais detalhadas do kernel do Linux
      Linux version 4.18.0-348.20.1.el8_5.x86_64 (mockbuild@x86-vm-07.build.eng.bos.redhat.com) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)) #1 SMP Tue Mar 8 12:56:54 EST 2022

      $ cat /etc/hostname
      proddf0544

       

      2. Como copiar textos entre janelas windows e PuTTY
      a) Copiar texto do windows para o PuTTY
      – Marcar o texto na janela windows (botão esquerdo do mouse);
      – Ctrl-C para copiar texto do Windows;
      – Shift+Insert para colar o texto na janela do PuTTY.

      b) Copiar texto da janela PuTTY para o Windows
      – Marcar o texto na janela PuTTY (botão esquerdo do mouse);
      – Usar botão direito do mouse;
      – Ctrl-V na janela Windows.
       

      3. Atualizar pacotes
      # yum update

      4. Instalar pacote
      # yum install <pacote-1> <pacote-2> <pacote-n>
       

      5. Verificar se existe assinatura do Red Hat Enterprise Linux Server anexada:
      # subscription-manager list --installed
      +-------------------------------------------+
      Estado de Produtos Instalados
      +-------------------------------------------+
      Nome do Produto: Red Hat Enterprise Linux for x86_64
      ID do Produto: 479
      Versão: 8.5
      Arq: x86_64
      Estado: Desconhecido
      Detalhes de Status:
      Inicia:
      Finaliza:

      Obs: se houvesse assinatura, deveria mostrar “Server” no Nome do Produto e “Subscribed” como o Estado.
       

      6. Repositórios
      /etc/yum.conf – arquivo com as informações de configuração para yum e utilidades relacionadas;

      a) Para adicionar um repositório ao sistema e habilitá-lo:
      # yum-config-manager --add-repo repository_URL
       

      7. Instalar LAMP
      # dnf update
      # dnf install httpd mariadb-server
      # dnf install php php-mysqlnd php-mbstring php-opcache php-gd php-xml php-zip php-pear php-json
      # systemctl enable httpd.service mariadb.service
      ; Ligar os servidores Apache e MariDB no momento da inicialização.
      # mysql_secure_installation ; configurar senha do usuário root do banco de dados; proteger o servidor MariaDB
      # systemctl start httpd ; iniciar o servidor Apache

      Definir o fuso horário do PHP no arquivo /etc/php.ini:
      date.timezone = America/Sao_Paulo

      Visualizar as propriedades da instalação do PHP:
      $ php -i
      $ php -i | grep "\.ini"

       

      8. Configurar o Mariadb
      # mkdir /var/lib/mysql
      # chown mysql:mysql /var/lib/mysql
      # systemctl start mariadb
      ; iniciar o servidor mariadb
      # mysql ; login no servidor mariadb

      Welcome to the MariaDB monitor. Commands end with ; or \g.
      Your MariaDB connection id is 8
      Server version: 10.3.28-MariaDB MariaDB Server

      MariaDB [(none)]> show databases;
      +--------------------+
      | Database           |
      +--------------------+
      | information_schema |
      | mysql              |
      | performance_schema |
      +--------------------+
      3 rows in set (0.000 sec)

       
      # ps -A | grep mysql

      35970 ? 00:00:00 mysqld

       

      Finalmente, deve-se proteger a instalação do MariaDB. Com o comando abaixo, serão feitas algumas perguntas sobre a instalação do MariaDB de forma a se poder alterar a senha do usuário root do banco de dados, desabilitar o banco de dados de teste, desabilitar usuários anônimos e desabilitar o login root remotamente:
      # mysql_secure_installation

      Verificar usuários habilitados a fazer login no MariaDB:

      MariaDB [(none)]>  SELECT User, Host, Password FROM mysql.user;
      +------+-----------+-------------------------------------------+
      | User | Host      | Password                                  |
      +------+-----------+-------------------------------------------+
      | root | localhost | *BCD148177BEE4C4AF62537365050FC2DCE9B7BFF |
      | root | 127.0.0.1 | *BCD148177BEE4C4AF62537365050FC2DCE9B7BFF |
      | root | ::1       | *BCD148177BEE4C4AF62537365050FC2DCE9B7BFF |
      +------+-----------+-------------------------------------------+
      3 rows in set (0.001 sec)

      No caso mostrado temos apenas o usuário root com direito de acesso ao MariaBD, e a partir da própria máquina em que está o MySQL. Seja utilizando o nome do host como localhost, ou o endereço IP 127.0.0.1.

      Agora, só será possível fazer login no MariaDB através de senha:
      $ mysql -u root -p

      Se necessitar alterar configurações do MariaDB, utilizar do arquivo /etc/my.cnf.d/mariadb-server.cnf.
      Pastas importantes:
      datadir=/var/lib/mysql
      socket=/var/lib/mysql/mysql.sock
      log-error=/var/log/mariadb/mariadb.log
      pid-file=/run/mariadb/mariadb.pid

       

      9. Abrir porta 80
      Por default, firewall mo RHEL 8 bloqueia acesso para HTTP TCP na porta 80. Para abrir HTTP na porta 80, executar:
      # firewall-cmd --permanent --add-service=http --zone=public
      # firewall-cmd --reload
      # firewall-cmd --list-services --zone=public

       

      10. Instalar o phpMyAdmin
      # dnf install wget
      $ wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
      $ tar xvf phpMyAdmin-5.2.1-all-languages.tar.gz
      # mv phpMyAdmin-5.2.1-all-languages/ /usr/share/phpmyadmin
      # chown -R root:root /usr/share/phpmyadmin/
      # mkdir -p /var/lib/phpmyadmin/tmp ; Criar pasta para arquivos temporários do phpMyAdmin.
      # chown -R apache:apache /var/lib/phpmyadmin
      # mkdir /etc/phpmyadmin/
      ; Criar uma pasta para os arquivos de configuração do phpMyAdmin.
      # cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php ; Criar o arquivo de configuração do phpMyAdmin.

      Editar o arquivo /usr/share/phpmyadmin/config.inc.php definindo uma senha secreta de 32 caracteres e o diretório temporário:
      $cfg['blowfish_secret'] = 'H2OxcGXxflSd8JwrwVlh6KW6s2rER63i';
      $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
      $cfg['Servers'][$i]['pmadb'] = 'bdmyadmin';

      Observações:

      • o valor para “pmadb” a ser escolhido deve corresponder ao nome da base de dados que vamos criar mais adiante neste script.
      • a sequência de 32 caracteres não é uma senha que precise ser lembrada, a qual será apenas utilizada internamente pelo algoritmo AES.
      • caso a sequência inserida contiver menos de 32 caracteres, ocasionará cookies criptografados menos seguros. Mais de 32 caracteres não causará nenhum dano.

      Configurar o servidor web Apache, criando o arquivo de configuração Apache do phpMyAdmin
      (em /etc/httpd/conf.d/phpmyadmin.conf):

      # Apache configuration for phpMyAdmin
      Alias /phpMyAdmin /usr/share/phpmyadmin/
      Alias /phpmyadmin /usr/share/phpmyadmin/
      
      <Directory /usr/share/phpmyadmin/>
         AddDefaultCharset UTF-8
      
         <IfModule mod_authz_core.c>
           # Apache 2.4
           Require all granted
         </IfModule>
         <IfModule !mod_authz_core.c>
           # Apache 2.2
           Order Deny,Allow
           Deny from All
           Allow from 127.0.0.1
           Allow from ::1
         </IfModule>
      </Directory>
      

      Validar a configuração do Apache:
      $ apachectl configtest
      Syntax OK
      # systemctl restart httpd
      ; Reiniciar o serviço httpd para carregar a nova configuração.

      Acessar com o navegador http://IP_ou_dominio/phpmyadmin/ para obter a tela de login:

      Tela inicical do phpmyadmin

      Criar usuário do phpMyAdmin no banco de dados MySQL:
      # mysql -u root
      MariaDB [(none)]> SELECT user,password FROM mysql.user;
      MariaDB [(none)]> CREATE USER usuario_myadmin@localhost IDENTIFIED BY 'senha_usuario';
      MariaDB [(none)]> CREATE DATABASE bdmyadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_swedish_ci;
      MariaDB [(none)]> GRANT ALL PRIVILEGES on bdmyadmin.* to 'usuario_myadmin'@'localhost';
      MariaDB [(none)]> FLUSH PRIVILEGES;
      MariaDB [(none)]> quit;

      Observações:

      • o nome da base (aqui escolhido como bdmyadmin) e o nome do usuário (aqui escolhido como usuario_myadmin) são meros exemplos. Mas deve corresponder ao que fora definido antes na configuração do arquivo /usr/share/phpmyadmin/config.inc.php.
      • Ao fazer a autenticação no aplicativo, o acesso a base de dados bdmyadmin já estará disponível. Se o usuário tiver acesso a outras bases de dados, estas também estarão disponíveis simultaneamente.
      • Para fazer a autenticação no aplicativo, utilize as credenciais escolhidas:
        usuario: usuario_myadmin
        senha: senha_usuario

       

      11. Sobre o Apache
      a) Configuração do Apache
      /etc/httpd/ – Pasta principal de configuração do Apache.
      /etc/httpd/conf/httpd.conf – Arquivo principal de configuração do Apache.
      /var/log/httpd/ – Pasta com arquivos de erro e de acesso.
      /etc/httpd/conf.modules.d – Pasta de configuração dos módulos Apache (tais como o proxy, php e outros).

       
      b) Comandos para iniciar/parar/reiniciar o Apache
      # systemctl start httpd.service ## <- Start Apache ##
      # systemctl stop httpd.service ## <- Stop Apache ##
      # systemctl restart httpd.service ## <- Restart Apache ##
      # systemctl reload httpd.service ## <- Reload Apache ##
      # systemctl status httpd.service ## <- Get status of Apache ##
      # systemctl enable httpd.service ## <- Start Apache at boot time ##
       

      12. Comandos úteis
      a) Verificar IP do servidor:
      $ ip a
      b) Para buscar e instalar módulos adicionais PHP:
      $ dnf search php-
      $ dnf search php- | grep -i mysql

      c) Verificar se porta 80 está aberta:
      $ sudo ss -tulpn | grep :80
      d) Informações sobre alguns módulos PHP isntalados:
      $ dnf info php-mbstring
      $ dnf info php-gd

      e) Lista de Repositórios:
      $ dnf repolist
      f) Tornar comando “locate” disponível:
      # dnf install mlocate
      g) Listar módulos PHP instalados:
      $ php -m
      h) Visualizar as propriedades da instalação do PHP:
      $ php -i
      $ php -i | grep "\.ini"

       
      Referências:
      1- How To Install phpMyAdmin on CentOS 8 / RHEL 8
      2- Instalar phpMyadmin numa máquina com Debian
      3- Tutorial MySQL ( instalar em ambiente Linux – Debian )

      1)Ambiente inicial (que iremos alterar)
      $ apt-cache policy mysql-server
      mysql-server:
      Instalado: 8.0.32-0ubuntu0.22.04.2

      $ php -v
      PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
      Copyright (c) The PHP Group
      Zend Engine v4.1.2, Copyright (c) Zend Technologies

      $ apachectl -v
      Server version: Apache/2.4.52 (Ubuntu)

      2) Selecionar a língua default para o sistema (pt_BR.UTF-8)
      $ echo $LANG
      # apt-get install locales
      # dpkg-reconfigure locales
      …selecionando pt_BR.UTF-8 UTF-8

      3) Atualizar data e hora do servidor
      # dpkg-reconfigure tzdata

      Para verificar:
      # date
      Dom Set 17 13:14:05 -03 2017

      4) Instalar complementos do PHP
      # php -v
      PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
      # apt install php-mbstring php-gd php-zip php-cgi php-xml php-intl

      5) Definir parâmetros do PHP
      # vim /etc/php/8.1/apache2/php.ini
      memory_limit 128M
      session.auto_start = 0
      session.use_trans_sid = 0
      date.timezone = America/Sao_Paulo

      6) Preparar base de dados
      mysql> create database nome_base;
      mysql> CREATE USER nome_usuario@localhost IDENTIFIED BY 'senha_escolhida';
      mysql> GRANT ALL PRIVILEGES on nome_base.* to 'nome_usuario'@'localhost';
      mysql> FLUSH PRIVILEGES;

      7)Baixar o pacote e já desempacotá-lo a partir da pasta raiz do virtualhost
      https://sourceforge.net/projects/dotproject/ (dotProject-2.2.0.zip)

      8) Criar um HostVirtual para a aplicação: /etc/apache2/sistes-available/dotproject.conf

      
      <VirtualHost *:80>
         ServerAdmin info@exercicio.com.br
         DocumentRoot /var/www/html/project/
         ServerName dotproject
         ServerAlias www.dotproject.exercicio.com.br
         <Directory /var/www/project/>
            Options FollowSymLinks
            AllowOverride All
         </Directory>
      </VirtualHost>
      

      # a2ensite dotproject.conf
      # /etc/init.d/apache2 restart

      9) Instalar PHP7.4
      Obs: no momento deste post o dotProject estava incompatível com o PHP8. Vamos usar o php7.4
      # add-apt-repository ppa:ondrej/php && sudo apt update
      # apt-get install php7.4 php7.4-mysql libapache2-mod-php7.4 php7.4-mbstring php7.4-gd php7.4-zip php7.4-xml php7.4-intl
      # update-alternatives --set php /usr/bin/php7.4
      # a2dismod php*
      # a2enmod php7.4
      # systemctl restart apache2
      # update-alternatives --set php /usr/bin/php7.4
      # php -v
      PHP 7.4.33 (cli) (built: Feb 14 2023 18:31:54) ( NTS )
      # apt show php7.4 -a
      add-apt-repository ppa:ondrej/php --remove

      Obs: de forma alternativa, para listar as alternativas de versões PHP instaladas e poder fazer a escolha desejada, utilize o comando update-alternativas acima da seguinte forma:
      # update-alternatives --config php

      10) Instalar módulo português do dotProject (na pasta “locales” da instalação do dotProject)
      No momento da publicação deste post, baixar o arquivo dotProject-2.2.0.zip disponível em https://sourceforge.net/projects/dotmods/files/
      Obs: a instalação deve gerar a pasta locales/pt_br, com os arquivos necessários dentro desta pasta.

      11) Acertar os privilégios das pastas e dos arquivos
      a) Fazer todos os diretórios terem modo 755
      find . -type d -exec chmod 755 {} \;

      b) Fazer todos os arquivos terem modo 644
      find . -type f -exec chmod 644 {} \;

      12) Acessar a url do projeto e fazer a instalação/configuração da aplicação
      http://endereco/project

      Tela inicial de Instalação do dotProject

      13) Fornecer as Informações de configuração da base de dados

      Configuração da base de dados do dotProject

      14) Remover pasta de instalação do dotProject (por segurança)
      Após instalação ser bem sucedida, remover pasta de instalação:
      # rm -R install

      15) Aplicar patches
      a) Modificar o código em modules/files/index_table.php na linha 172:
      DE
      $q2->addGroup('f.file_version_id DESC');

      PARA
      $q2->addGroup('f.file_version_id');
      $q2->addOrder('f.file_version_id DESC');

      b) modules/tasks/todo.php linha 137:
      $q->addWhere( "ta.task_start_date is not null AND ta.task_start_date != '0000-00-00 00:00:00'" );

      c) modules/tasks/tasks.php line 232: "AND (task_percent_complete < 100 OR task_end_date is null) "
      e linha 240 "AND (task_percent_complete < 100 OR task_end_date is null) "

      d) No arquivo baixado do locale português faltou o seguinte arquivo: lang.php
      Se ele não existir na pasta locales/pt_br, crie o arquivo com o seguinte conteúdo:

      <?php
      $dir = basename(dirname(__FILE__));
      $LANGUAGES["pt_br"] = array ($dir, "Português", "Português", "pt_br");
      ?>

      e) No arquivo baixado do locale português faltou o seguinte arquivo: locales.php
      Se ele não existir na pasta locales/pt_br, crie o arquivo com o seguinte conteúdo:

      <?php
      //$locale_char_set = 'iso-8859-1';
      $locale_char_set = 'utf-8';
      // 0 = sunday, 1 = monday
      define('LOCALE_FIRST_DAY', 0);
      define('LOCALE_TIME_FORMAT', '%I:%M %p');
      ?>

       

      16) Configurar para o português
      Em System Admin -> System Configuration, mudar a caixa “Host Locale” para pt_br, conforme figura abaixo.

      Configurar dotProject para locale pt_br

       

      Depois fazer System Admin -> Default User Preferences, e mudar a caixa “Locale” para Português, conforme figura abaixo.

      Configurar opção de idioma para o português.

       
      Pronto. Fazer logout e quando fizer novamente login o dotProject já estará no idioma Português.

      17) Complementação da tradução para o português
      Algumas mensagens continuaram em língua inglesa mesmo após da utilização dos arquivos de traduções. Abaixo uma lista de outras mensagens que necessitaram de serem inseridas nos arquivos de tradução:
      a) No arquivo locales/pt_br/system.inc:
      "Add a new Custom Field to this Module"=>"Adicionar um novo Campo personalizado a este Módulo",
      "Billing Code Table"=>"Tabela de códigos de cobrança",
      "custom fields"=>"campos personalizados",
      "Custom Field Editor"=>"Editor de campo personalizado",
      "Custom field editor"=>"Editor de campo personalizado",
      "Custom Fields - Add/Edit"=>"Campos Personalizados - Adicionar/Editar",
      "default user preferences"=>"Preferências Padrões do Usuário",
      "Default User Preferences"=>"Preferências Padrões do Usuário",
      "Field Description"=>"Descrição do Campo",
      "Field Display Type"=>"Tipo do campo",
      "Field Name/Identifier"=>"Nome/Identificador do Campo",
      "HTML Tag Options"=>"Opções de Tags HTML",
      "Import Contacts"=>"Importar Contatos",
      "List of Options"=>"Lista de Opções",
      "New Custom Field In"=>"Novo Campo Personalizado no",
      "System Configuration"=>"Configuração do Sistema",
      "system configuration"=>"Configuração do Sistema",
      "(No Spaces)"=>"(Sem Espaços)",
      "Checkbox"=>"Caixa de Selecao",
      "Select List"=>"Lista Escolha",
      "Separator"=>"Separador",
      "Text Input"=>"Entrada de Texto",
      "Text Area"=>"Area de texto",

      b) No arquivo locales/pt_br/common.inc
      "End"=>"Fim",
      "no departments"=>"Não há departamentos",
      "Search"=>"Procurar ",
      "Start"=>"Início",

      c) No arquivo locales/pt_br/projects.inc
      "All Projects"=>"Todos Projetos",
      "All Users"=>"Todos Usuarios",
      "All w/o in progress"=>"Todos w/o em progresso",
      "Assigned Users"=>"Usuarios Atribuidos",
      "Attach a file"=>"Anexe um arquivo",
      "Collapse"=>"Recolher",
      "Comments"=>"Comentarios",
      "Cost Code Filter"=>"Filtro de codigo de custo",
      "Division"=>"Divisao",
      "Done"=>"Feita",
      "Events"=>"Eventos",
      "Expand"=>"Expandir",
      "Future Task"=>"Tarefa Futura",
      "Go"=>"Executar",
      "Hide 100% Complete"=>"Ocultar 100% Completa",
      "Hide Inactive"=>"Ocultar Inativa",
      "Incomplete Tasks Only"=>"Apenas Tarefas Incompletas",
      "Internal Company"=>"Empresa Interna",
      "Key"=>"Filtro",
      "Move to Folder"=>"Mover para a Pasta",
      "Move to Project"=>"Mover para o Projeto",
      "My projects"=>"Meus Projetos",
      "new event"=>"novo evento",
      "new file"=>"novo arquivo",
      "new forum"=>"novo forum",
      "New Log"=>"Novo Log",
      "No Project Association"=>"Nenhuma Associacao a Projeto",
      "One Level"=>"Um Nivel",
      "organize tasks"=>"organizar tarefas",
      "Overdue"=>"Atrasada",
      "Priority"=>"Prioridade",
      "Project Hours"=>"Horas do Projeto",
      "Scheduled Hours"=>"Horas Programadas",
      "Should have started"=>"Deveria ter iniciado",
      "show all"=>"Mostrar Tudo",
      "Show Archived"=>"Mostrar Arquivado",
      "Show captions"=>"Mostrar legendas",
      "Show Tasks"=>"Mostrar Tarefas",
      "Show work instead of duration"=>"Mostrar trabalho em vez da duracao",
      "Sort by Task Name"=>"Classificar por Nome da Tarefa",
      "Sort Tasks By Name"=>"Classificar Tarefas Por Nome",
      "Started and on time"=>"Iniciadas e Em Dia",
      "Task Logs"=>"Logs de Tarefas",
      "Task Owner"=>"Dono da Tarefa",
      "Template"=>"Modelo",
      "User Filter"=>"Filtro de Usuario",

      d) No arquivo locales/pt_br/companies.inc
      "Owner filter"=>"Filtro de proprietario",
      "Reset search"=>"Redefinir pesquisa",

      e) No arquivo locales/pt_br/tasks.inc
      "Additional Email Comments"=>"Comentários Adicionais por e-mail",
      "Daily Working Hours"=>"Horas Diárias de Trabalho",
      "Dates"=>"Datas",
      "Dependencies"=>"Dependencias",
      "Dependency Tracking"=>"Rastreamento de Dependência",
      "Done"=>"Completa",
      "Do not track this task"=>"Não rastreie esta tarefa",
      "Human Resources"=>"Recursos Humanos",
      "my pinned tasks"=>"minhas tarefas fixadas",
      "Set task start date based on dependency"=>"Defina a data de início da tarefa com base na dependência",
      "Should have started"=>"Deveriam ter iniciadas",
      "Task Owner"=>"Dono da Tarefa",
      "Tasks depending on this Task"=>"Tarefas que depende desta Tarefa",
      "tasks per user"=>"tarefas por usuario",
      "Task Type"=>"Tipo da Tarefa",
      "Working Days"=>"Dias Úteis",

      f) No arquivo locales/pt_br/calendar.inc
      "Event Filter"=>"Filtro de Evento",
      "All Events"=>"Todos Eventos",
      "Dynamic Tasks"=>"Tarefas Dinamicas",
      "Empty Dates"=>"Datas Em Aberto",
      "Events I Created"=>"Eventos Eu Criei",
      "My Tasks"=>"Minhas Tarefas",
      "Pinned Only"=>"Fixado Apenas",
      "Projects on Hold"=>"Projetos em Espera",
      "Selection"=>"Selecionar",
      "Show Events for"=>"Mostrar Eventos para",
      "Show Todo for:"=>"Mostrar Tarefas para: ",
      "Sun"=>"Dom",
      "Mon"=>"Seg",
      "Tue"=>"Ter",
      "Wed"=>"Qua",
      "Thu"=>"Qui",
      "Fri"=>"Sex",
      "Sat"=>"Sab",
      "Sunday"=>"Domingo",
      "Monday"=>"Segunda-feira",
      "Tuesday"=>"Terça-feira",
      "Wednesday"=>"Quarta-feira",
      "Thursday"=>"Quinta-feira",
      "Friday"=>"Sexta-feira",
      "Saturday"=>"Sábado",
      "March"=>"Março",
      "April"=>"Abril",
      "May"=>"Maio",
      "June"=>"Junho",
      "July"=>"Julho",
      "August"=>"Agosto",

      g) No arquivo locales/pt_br/files.inc
      "All Files"=>"Todos Arquivos",
      "Application"=>"Aplicação",
      "Category"=>"Categoria",
      "Document"=>"Documento",
      "Folder"=>"Pasta",
      "Folder Explorer"=>"Explorar Pastas",
      "Move to Folder"=>"Mover para a Pasta",
      "Move to Project"=>"Mover para o Projeto",
      "new folder"=>"Nova Pasta",
      "No Project Association"=>"Nenhuma Associacao a Projeto",
      "No Result(s)"=>"Sem Resultado(s)",
      "Task Name"=>"Nome da Tarefa",
      "Unknown"=>"Desconhecido",
      "Versions"=>"Versoes",

      h) No arquivo locales/pt_br/admin.inc
      "back"=>"Voltar",
      "Confirm Password"=>"Confirme a Senha",
      "Company"=>"Empresa",
      "Inform new user of their account details?"=>"Informar o novo usuário sobre os detalhes da conta?",
      "User Role"=>"Papel do Usuário",
      "Password"=>"Senha",
      "Required Fields"=>"Campos Obrigatórios",
      "select dept"=>"Selecione Dept.",
      "show all"=>"Mostrar todos",
      "show this month"=>"Mostrar este mês",
      "sort by"=>"ordenar por",
      "submit"=>"Enviar",

      i) No arquivo locales/pt_br/ticketsmith.inc
      "Open Ticket Report"=>"Relatorio de Chamado Aberto",
      "Open Tickets"=>"Chamados Abertos",
      "Report as PDF"=>"Relatório em PDF",

      Referências:
      1- Correções no locales pt_br

      A instalação do phpMyadmin descrita neste post foi testada numa máquina com Debian 10 (buster).

      1. Instalar pacotes recomendados
      # apt update
      # apt-get install php7.3-cgi php7.3-gd php7.3-zip php7.3-mbstring libapache2-mod-php7.3 php7.3-common php-pear mariadb-server php7.3-mysql

      2. Baixar o phpMyadmin
      Os releases do phpMyAdmin estão disponíveis para download em sua página oficial. Baixar a versão mais recente, que no momento deste post foi realizado através da seguinte maneira:
      $ wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.tar.gz

      3. Extrair o arquivo baixado
      $ tar xvf phpMyAdmin-5.1.3-all-languages.tar.gz

      4. Mover o resultado para a pasta /usr/share/phpmyadmin
      O camando abaixo moverá todos os arquivos e subdiretórios para o destino:
      # mv phpMyAdmin-*/ /usr/share/phpmyadmin

      5. Criar a pasta para arquivos temporários do phpMyAdmin
      # mkdir -p /var/lib/phpmyadmin/tmp
      # chown -R www-data:www-data /var/lib/phpmyadmin

      6. Criar a pasta os arquivos de configuração do phpMyAdmin
      # mkdir /etc/phpmyadmin/

      7. Criar o arquivo de configuração phpMyAdmin
      # cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

      8. Editar o arquivo de configuração /usr/share/phpmyadmin/config.inc.php

      $cfg['blowfish_secret'] = 'H2OxcGXxflSd8JwrwVlh6KW6s2rER63i';
      $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
      $cfg['Servers'][$i]['pmadb'] = 'bdmyadmin';

      observações:

      • o valor para pmadb a ser escolhido deve corresponder ao nome da base de dados que vamos criar mais adiante neste script.
      • a sequência de 32 caracteres não é uma senha que precise ser lembrada, a qual será apenas utilizada internamente pelo algoritmo AES.
      • caso a sequência inserida contiver menos de 32 caracteres, ocasionará cookies criptografados menos seguros. Mais de 32 caracteres não causará nenhum dano.

      9. Configurar Apache web Server
      Criar o seguinte arquivo em /etc/apache2/conf-available/phpmyadmin.conf

      
      Alias /phpmyadmin /usr/share/phpmyadmin
      
      <Directory /usr/share/phpmyadmin>
         Options SymLinksIfOwnerMatch
         DirectoryIndex index.php
      
         <IfModule mod_php5.c>
            <IfModule mod_mime.c>
               AddType application/x-httpd-php .php
            </IfModule>
            <FilesMatch ".+\.php$">
               SetHandler application/x-httpd-php
            </FilesMatch>
      
            php_value include_path .
            php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
            php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
            php_admin_value mbstring.func_overload 0
         </IfModule>
         <IfModule mod_php.c>
            <IfModule mod_mime.c>
               AddType application/x-httpd-php .php
            </IfModule>
            <FilesMatch ".+\.php$">
               SetHandler application/x-httpd-php
            </FilesMatch>
      
            php_value include_path .
            php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
            php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
            php_admin_value mbstring.func_overload 0
         </IfModule>
      </Directory>
      
      # Authorize for setup
      <Directory /usr/share/phpmyadmin/setup>
         <IfModule mod_authz_core.c>
            <IfModule mod_authn_file.c>
               AuthType Basic
               AuthName "phpMyAdmin Setup"
               AuthUserFile /etc/phpmyadmin/htpasswd.setup
            </IfModule>
            Require valid-user
         </IfModule>
      </Directory>
      
      # Disallow web access to directories that don't need it
      <Directory /usr/share/phpmyadmin/templates>
         Require all denied
      </Directory>
      <Directory /usr/share/phpmyadmin/libraries>
         Require all denied
      </Directory>
      <Directory /usr/share/phpmyadmin/setup/lib>
         Require all denied
      </Directory>
      

       

      Deve ter sido criado o seguinte link simbólico em /etc/apache2/conf-enabled:
      phpmyadmin.conf -> ../conf-available/phpmyadmin.conf

      Em seguida, usar os seguintes comandos:
      # a2enconf phpmyadmin.conf
      # systemctl reload apache2

      10. Visitar a interface web phpMyAdmin
      Com o navegador, acessar a interface web do phpMyAdmin em http://localhost/phpmyadmin
      A seguinte página deve ser obtida:

      Página inicial do phpmyadmin

      11. Criar usuário no banco de dados MySQL

      # mysql -u root
      MariaDB [(none)]> SELECT user,password FROM mysql.user;
      MariaDB [(none)]> CREATE USER usuario_myadmin@localhost IDENTIFIED BY 'senha_usuario';
      MariaDB [(none)]> CREATE DATABASE bdmyadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_swedish_ci;
      MariaDB [(none)]> GRANT ALL PRIVILEGES on bdmyadmin.* to 'usuario_myadmin'@'localhost';
      MariaDB [(none)]> FLUSH PRIVILEGES;
      MariaDB [(none)]> quit;

      Observações:

      • o nome da base (aqui escolhido como bdmyadmin) e o nome do usuário (aqui escolhido como usuario_myadmin) são meros exemplos. Mas deve corresponder ao que fora definido antes na configuração do arquivo /usr/share/phpmyadmin/config.inc.php.
      • Ao fazer a autenticação no aplicativo, o acesso a base de dados bdmyadmin já estará disponível. Se o usuário tiver acesso a outras bases de dados, estas também estarão disponíveis simultaneamente.
      • Para fazer a autenticação no aplicativo, utilize as credenciais escolhidas:
        • usuario: usuario_myadmin
        • senha: senha_usuario

      Neste caso, a página inicial após fazer autenticação estará da seguinte forma (cujas bases de dados de trabalho estarão sendo mostradas à esquerda):
      Página do phpMyadmin após login

      Referências:
      1- How To Install phpMyAdmin on Debian 11/Debian 10
      2- Como instalar o phpMyAdmin no Debian 10