Catálogo de Sistemas

Documentação e procedimentos

Ferramentas do usuário

Ferramentas do site


sistema_academico:criacao_de_ambiente_de_desenvolvimento

Essa é uma revisão anterior do documento!


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 na máquina hospedeira.

Então é preciso instalar o Docker e o Docker-compose seguindo os passos abaixo:

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

Serão necessárias duas dockers. São elas:

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:

version: "2"
services:
  db:
    image: postgres:9.5
    container_name: "postgres"
    environment:
      - POSTGRES_DB=dbsigaedu
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=1234
    volumes:
      - ".:/var/lib/postgresql/backup"
    ports:
      - 5003:5432

networks:
  static-network:
    ipam:
      config:
        - subnet: 173.20.0.1/32

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:

#navegue até a pasta "postgres"
cd ~/postgres

# 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

# quando tiver UP, vamos restaurar o DUMP do banco nela... isso pode demorar um pouco, algumas tabelas são grandes
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
sudo docker exec -it postgres sh -c "psql -U postgres -d dbsigaedu -c \"UPDATE usuario SET senha = md5('1234')\""

Pronto! Caso queira testar essa conexão pode utilizar o pgAdmin e acessar o banco de dados “dbsigaedu” pela porta 5003 através do localhost, conforme definido no docker-compose.

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:

version: '2'

services:
  servidor:
    build: .
    container_name: apache_php
    ports:
      - "8092:80"
    volumes:
      - /tmp/sigaeduext_git:/var/www/html/cakephp/sigaeduext_git

Crie um outro arquivo chamado “Dockerfile” com o conteúdo:

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"]

E crie outro arquivo chamado “apache_default”, com o conteúdo abaixo:

<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>

E então após salvar os arquivos vá até o terminal e entre com os comandos abaixo:

#navegue até a pasta "apache_php"
cd ~/apache_php

# construindo a docker... pode demorar um pouco dependendo da sua conexão com a Internet
docker-compose build

# subindo a docker e colocando-a em background
docker-compose up -d

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:

#!/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

Feito isto, vá até o terminal e execute os comandos abaixo:

# 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

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.1623253749.txt.gz · Última modificação: 09/06/2021 11:49 por Carlitos