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

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
sistema_academico:criacao_de_ambiente_de_desenvolvimento [09/06/2021 15:51]
Carlitos [2. Docker Apache2/PHP5.6]
sistema_academico:criacao_de_ambiente_de_desenvolvimento [21/06/2021 16:55] (atual)
Carlitos
Linha 3: Linha 3:
 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. ​ 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 ​Docker e o Docker-compose seguindo os passos abaixo: +Para isso basta seguir ​README do projeto de montagem das Dockers[[https://​bitbucket.org/​ifms/​docker-sistema-academico]].
-<​code>​ +
-sudo apt update+
  
-# instalar ​Docker +Vídeo mostrando ​passo passo da montagem ​do ambiente usando Dockers ​- https://​www.youtube.com/watch?v=kyxBji9BYQ0
-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: +
- +
-===== 1. Docker Postgres 9.5 ===== +
- +
-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>​ +
-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"​ +
-      - "​./​data:/​var/​lib/​postgresql/​data"​ +
-    ports: +
-      - 5003:5432 +
- +
-networks: +
-  static-network:​ +
-    ipam: +
-      config: +
-        - subnet: 173.20.0.1/​32 +
-</​code>​ +
- +
-Copie o arquivo de DUMP do banco (padrão compactado com Inserts explícitos - deve ser solicitado junto 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: +
- +
-<​code>​ +
-#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'​)\""​ +
-</​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>​ +
- +
-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.1623268319.txt.gz · Última modificação: 09/06/2021 15:51 por Carlitos