Aqui você vê as diferenças entre duas revisões dessa página.
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**. |