Catálogo de Sistemas

Documentação e procedimentos

Ferramentas do usuário

Ferramentas do site


sistema_academico:criacao_de_ambiente_de_desenvolvimento

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
sistema_academico:criacao_de_ambiente_de_desenvolvimento [22/08/2019 09:36]
Carlitos criada
sistema_academico:criacao_de_ambiente_de_desenvolvimento [09/06/2021 15:51]
Carlitos [2. Docker Apache2/PHP5.6]
Linha 1: Linha 1:
 ====== Criação de ambiente de desenvolvimento ====== ====== Criação de ambiente de desenvolvimento ======
  
-Para facilitar e padronizar a criação do ambiente de desenvolvimento foi adotado o uso de Dockers para construção do servidor da aplicação (HTTP/​Apache e PHP) e do banco de dados (Postgres). E para facilitar a construção das dockers foi utilizado o docker-compose. As dockers funcionam em diferentes sistemas operacionais,​ porém recomendamos o uso de Ubuntu ou Debian atualizados. ​+Para facilitar e padronizar a criação do ambiente de desenvolvimento foi adotado o uso de [[https://​www.docker.com/​get-started|Dockers]] para construção do servidor da aplicação (HTTP/​Apache e PHP) e do banco de dados (Postgres). E para facilitar a construção das dockers foi utilizado o [[https://​docs.docker.com/​compose/​|docker-compose]]. As dockers funcionam em diferentes sistemas operacionais,​ porém recomendamos o uso de Ubuntu ou Debian atualizados ​na máquina hospedeira 
 + 
 +Então é preciso instalar o Docker e o Docker-compose seguindo os passos abaixo: 
 +<​code>​ 
 +sudo apt update 
 + 
 +# instalar o Docker 
 +sudo apt install docker.io 
 + 
 +# Confira se foi instalado corretamente com 
 +docker --version 
 + 
 +# instalar o Docker-compose -> ver aqui atualizado: https://​docs.docker.com/​compose/​install/​ 
 +sudo curl -L "​https://​github.com/​docker/​compose/​releases/​download/​1.29.2/​docker-compose-$(uname -s)-$(uname -m)" -o /​usr/​local/​bin/​docker-compose 
 +sudo chmod +x /​usr/​local/​bin/​docker-compose 
 + 
 +# testar a instalação 
 +sudo docker-compose --version 
 + 
 +# se não funcionar, experimente criar um link simbólico 
 +sudo ln -s /​usr/​local/​bin/​docker-compose /​usr/​bin/​docker-compose 
 +</​code>​
  
 Serão necessárias duas dockers. São elas: Serão necessárias duas dockers. São elas:
Linha 7: Linha 28:
 ===== 1. Docker Postgres 9.5 ===== ===== 1. Docker Postgres 9.5 =====
  
-Para construir essa docker crie uma pasta chamada ​"postgres". Dentro dessa pasta crie um arquivo chamado ​"docker-compose.yml" ​com o conteúdo:+Para construir essa docker crie uma pasta chamada ​''​postgres''​. Dentro dessa pasta crie outra pasta chamada ''​data''​ e um arquivo chamado ​''​docker-compose.yml'' ​com o conteúdo:
 <​code>​ <​code>​
 version: "​2"​ version: "​2"​
Linha 20: Linha 41:
     volumes:     volumes:
       - "​.:/​var/​lib/​postgresql/​backup"​       - "​.:/​var/​lib/​postgresql/​backup"​
 +      - "​./​data:/​var/​lib/​postgresql/​data"​
     ports:     ports:
       - 5003:5432       - 5003:5432
Linha 30: Linha 52:
 </​code>​ </​code>​
  
-Copie o arquivo de DUMP (padrão compactado com Inserts explícitos) ​do banco para dentro da mesma pasta "postgres", por exemplo: dump.backup. ​+Copie o arquivo de DUMP do banco (padrão compactado com Inserts explícitos ​- deve ser solicitado junto a equipe de desenvolvimento) para dentro da mesma pasta ''​postgres''​, por exemplo: ​''​dump.backup''​
  
 E então após a salvar o arquivo vá até o terminal e entre com os comandos abaixo: E então após a salvar o arquivo vá até o terminal e entre com os comandos abaixo:
Linha 39: Linha 61:
  
 # construindo a docker... pode demorar um pouco dependendo da sua conexão com a Internet # construindo a docker... pode demorar um pouco dependendo da sua conexão com a Internet
-docker-compose build+sudo docker-compose build
  
 # subindo a docker e colocando-a em background # subindo a docker e colocando-a em background
-docker-compose up -d+sudo docker-compose up -d
  
 # quando tiver UP, vamos restaurar o DUMP do banco nela... isso pode demorar um pouco, algumas tabelas são grandes # quando tiver UP, vamos restaurar o DUMP do banco nela... isso pode demorar um pouco, algumas tabelas são grandes
-docker exec -it postgres sh -c "​pg_restore -U postgres -d dbsigaedu < /​var/​lib/​postgresql/​backup/​dump.backup --verbose"​+sudo docker exec -it postgres sh -c "​pg_restore -U postgres -d dbsigaedu < /​var/​lib/​postgresql/​backup/​dump.backup --verbose"​
  
 # Alterando a senha de todos os usuários para 1234 # Alterando a senha de todos os usuários para 1234
-docker exec -it postgres sh -c "psql -U postgres -d dbsigaedu -c \"​UPDATE usuario SET senha = md5('​1234'​)\""​+sudo docker exec -it postgres sh -c "psql -U postgres -d dbsigaedu -c \"​UPDATE usuario SET senha = md5('​1234'​)\""​ 
 +</​code>​
  
 +Pronto! Caso queira testar essa conexão pode utilizar o [[https://​www.pgadmin.org/​download/​|PgAdmin]] e acessar o banco de dados ''​dbsigaedu''​ pela porta ''​5003''​ através do ''​localhost'',​ conforme definido no arquivo de configuração da docker ''​postgres''​.
 +
 +===== 2. Docker Apache2/​PHP5.6 =====
 +
 +Para construir essa docker crie uma pasta chamada ''​apache_php''​. Dentro dessa pasta crie um arquivo chamado ''​docker-compose.yml''​ com o conteúdo:
 +
 +<​code>​
 +version: '​2'​
 +
 +services:
 +  servidor:
 +    build: .
 +    container_name:​ apache_php
 +    ports:
 +      - "​8092:​80"​
 +    volumes:
 +      - /​tmp/​sigaeduext_git:/​var/​www/​html/​cakephp/​sigaeduext_git
 +</​code>​
 +
 +Crie um outro arquivo chamado ''​Dockerfile''​ com o conteúdo:
 +
 +<​code>​
 +FROM ubuntu:​xenial
 +MAINTAINER Stefan van Gastel <​stefanvangastel@gmail.com>​ e alterado por Carlitos Oliveira (IFMS)
 +
 +# Install packages and PHP 5.6
 +ENV DEBIAN_FRONTEND noninteractive
 +ENV LANG C.UTF-8
 +
 +RUN apt-get update && \
 +    apt-get install -y software-properties-common && \
 +    add-apt-repository ppa:​ondrej/​php && \
 +    apt-get update && \
 +    apt-get install -y \
 +    wget \
 +    # supervisor \
 +    php5.6 \
 +    #php5.6-cgi \
 +    php5.6-cli \
 +    php5.6-common \
 +    #php5.6-fpm \
 +    #​php5.6-mysql \
 +    php5.6-pgsql \
 +    php5.6-mbstring \
 +    php5.6-curl \
 +    php5.6-dev \
 +    php5.6-gd \
 +    php5.6-xml \
 +    php5.6-mcrypt \
 +    php5.6-xmlrpc \
 +    php5.6-zip \
 +    #​libxrender1 ​ \
 +    #libxext6 \
 +    #​libfontconfig1 \
 +    #​wkhtmltopdf \
 +    #xvfb \
 +    git \
 +    #curl \
 +    apache2 \
 +    libapache2-mod-php5.6 && \
 +    #openssl && \
 +    apt-get clean && \
 +    echo "​ServerName localhost"​ >> /​etc/​apache2/​apache2.conf
 +
 +# Add apache config to enable .htaccess and do some stuff you want
 +COPY apache_default /​etc/​apache2/​sites-available/​000-default.conf
 +
 +# Enable mod rewrite and listen to localhost
 +RUN a2enmod rewrite && \
 + echo "​ServerName localhost"​ >> /​etc/​apache2/​apache2.conf
 +
 +################################################################​
 +# CakePHP 2.1 installation from source                #
 +################################################################​
 +
 +# Clonar Cakephp 2.1.5
 +RUN mkdir /​var/​www/​html/​cakephp && git clone --branch 2.1.5 --depth 1 https://​github.com/​cakephp/​cakephp.git /​var/​www/​html/​cakephp
 +
 +####################################################​
 +# Expose port and run Apache webserver ​            #
 +####################################################​
 +
 +EXPOSE 80
 +CMD ["/​usr/​sbin/​apache2ctl",​ "​-DFOREGROUND"​]
 +</​code>​
 +
 +E crie outro arquivo chamado ''​apache_default'',​ com o conteúdo abaixo:
 +
 +<​code>​
 +<​VirtualHost *:80>
 +        ServerAdmin webmaster@localhost
 +
 +        DocumentRoot /​var/​www/​html
 +        <​Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </​Directory>​
 +        <​Directory /​var/​www/​html>​
 +                Options Indexes FollowSymLinks MultiViews
 +                # To make .htaccess work
 +                AllowOverride FileInfo
 +                Order allow,deny
 +                allow from all
 +        </​Directory>​
 +
 +        ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +        <​Directory "/​usr/​lib/​cgi-bin">​
 +                AllowOverride None
 +                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +                Order allow,deny
 +                Allow from all
 +        </​Directory>​
 +
 +        ErrorLog ${APACHE_LOG_DIR}/​error.log
 +
 +        # Possible values include: debug, info, notice, warn, error, crit,
 +        # alert, emerg.
 +        LogLevel debug
 +
 +        CustomLog ${APACHE_LOG_DIR}/​access.log combined
 +
 + #
 + # Set HTTPS environment variable if we came in over secure
 + #  channel.
 + SetEnvIf x-forwarded-proto https HTTPS=on
 +
 +</​VirtualHost>​
 +</​code>​
 +
 +E então após salvar os arquivos vá até o terminal e entre com os comandos abaixo:
 +
 +<​code>​
 +#navegue até a pasta "​apache_php"​
 +cd ~/​apache_php
 +
 +# construindo a docker... pode demorar um pouco dependendo da sua conexão com a Internet
 +sudo docker-compose build
 +
 +# subindo a docker e colocando-a em background
 +sudo docker-compose up -d
 +</​code>​
 +
 +Pronto! Para testar se o Apache está OK, basta abrir um navegador e acessar o endereço: [[http://​localhost:​8092]].
 +
 +===== Vinculando as dockers e finalizando a configuração =====
 +
 +Agora temos as duas dockers prontas, uma com o banco e a outra com o servidor da aplicação. Precisamos agora baixar os códigos da aplicação. Observe no arquivo "​~/​apache_php/​docker-compose.yml"​ que o diretório "/​tmp/​sigaeduext_git"​ ficou definido como sendo o diretório dos códigos da aplicação. Portanto para baixar os códigos do repositório para este diretório será necessário criar o arquivo "/​tmp/​install.sh"​ abaixo:
 +
 +<​code>​
 +#!/bin/bash
 +
 +DIRETORIO=/​tmp/​sigaeduext_git
 +BRANCH=homolog
 +DB_HOST=173.20.0.1
 +DB_USER=postgres
 +DB_PASS=1234
 +DB_PORT=5003
 +DB_NAME=dbsigaedu
 + 
 +read -r -p "1. Deseja apagar tudo do $DIRETORIO (yes/no)? " APAGAR_DIRETORIO
 +
 +if [ $APAGAR_DIRETORIO == "​yes"​ ];
 +then
 + echo " > Diretorio limpo"
 + rm -r $DIRETORIO
 + mkdir $DIRETORIO
 + chmod 775 -R $DIRETORIO
 +
 + echo "2. Baixando os arquivos do projeto do Bitbucket: "
 + git clone -b $BRANCH https://​bitbucket.org/​ifms/​sigaeduext.git $DIRETORIO
 +
 + echo "3. Setando pastas padrão..."​
 + mkdir $DIRETORIO/​tmp
 + mkdir $DIRETORIO/​tmp/​cache
 + mkdir $DIRETORIO/​tmp/​cache/​models
 + mkdir $DIRETORIO/​tmp/​cache/​persistent
 + mkdir $DIRETORIO/​tmp/​cache/​views
 + mkdir $DIRETORIO/​tmp/​logs
 + mkdir $DIRETORIO/​tmp/​sessions
 + mkdir $DIRETORIO/​tmp/​tests
 +
 + echo "4. Criando configurações do banco de dados"
 + echo "<?​php
 + class DATABASE_CONFIG {
 +    public \$sigaedu = array(
 +        '​datasource'​ => '​Database/​Postgres',​
 +         '​persistent'​ => false,
 +         '​host'​ => '​$DB_HOST',​
 +         '​login'​ => '​$DB_USER',​
 +         '​password'​ => '​$DB_PASS',​
 +         '​encoding'​ => '​utf8',​
 +         '​port'​ => '​$DB_PORT',​
 +         '​database'​ => '​$DB_NAME'​
 +     );
 +
 + ?>"​ > $DIRETORIO/​Config/​database.php
 +
 +else
 + echo " > Mantido diretório"​
 +fi
 +
 +echo "​Concedendo permissões de arquivos..."​
 +chown -R www-data:​www-data $DIRETORIO
 +chmod 777 -R $DIRETORIO/​tmp ​
 +chmod 775 -R $DIRETORIO/​upload
 +chmod 775 -R $DIRETORIO/​Fotos
 +chmod 775 -R $DIRETORIO/​PATs
 +</​code>​
 +
 +Feito isto, vá até o terminal e execute os comandos abaixo:
 +<​code>​
 +# dar permissão de execução no arquivo
 +sudo chmod +x /​tmp/​install.sh
  
 +# executar arquivo... será solicitado o usuário e a senha do Bitbucket
 +sudo sh /​tmp/​install.sh
 </​code>​ </​code>​
  
 +Se tudo estiver OK ao acessar o endereço: [[http://​localhost:​8092/​cakephp/​sigaeduext_git]] você verá a tela de login da aplicação. Para acessar o usuário administrativo basta entrar com usuário: **admin** e senha **1234**.
sistema_academico/criacao_de_ambiente_de_desenvolvimento.txt · Última modificação: 21/06/2021 16:55 por Carlitos