Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
sistema_academico:criacao_de_ambiente_de_desenvolvimento [22/08/2019 10:01] Carlitos |
sistema_academico:criacao_de_ambiente_de_desenvolvimento [21/06/2021 16:55] (atual) Carlitos |
||
---|---|---|---|
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. |
- | Serão necessárias duas dockers. São elas: | + | Para isso basta seguir o README do projeto de montagem das Dockers: [[https://bitbucket.org/ifms/docker-sistema-academico]]. |
- | ===== 1. Docker Postgres 9.5 ===== | + | Vídeo mostrando o passo a passo da montagem do ambiente usando Dockers - https://www.youtube.com/watch?v=kyxBji9BYQ0 |
- | + | ||
- | Para construir essa docker crie uma pasta chamada "postgres". Dentro dessa pasta crie 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" | + | |
- | ports: | + | |
- | - 5003:5432 | + | |
- | + | ||
- | networks: | + | |
- | static-network: | + | |
- | ipam: | + | |
- | config: | + | |
- | - subnet: 173.20.0.1/32 | + | |
- | </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. | + | |
- | + | ||
- | 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 | + | |
- | docker-compose build | + | |
- | + | ||
- | # subindo a docker e colocando-a em background | + | |
- | docker-compose up -d | + | |
- | + | ||
- | # 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" | + | |
- | + | ||
- | # 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')\"" | + | |
- | </code> | + | |
- | + | ||
- | Pronto! Caso queira testar essa conexão pode utilizar o pgAdmin e acessar o banco de dados "dbsigaedu" pela porta 5003 através do IP 173.20.0.1, 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: | + | |
- | + | ||
- | <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 | + | |
- | docker-compose build | + | |
- | + | ||
- | # subindo a docker e colocando-a em background | + | |
- | 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**. | + |