Skip to content

Sexto projeto do curso nanodegree da Udacity de Desenvolvedor Full-stack.

Notifications You must be signed in to change notification settings

giordanna/projeto-deploy-linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 

Repository files navigation

Projeto de deploy de Servidor Linux

Sexto projeto do curso nanodegree da Udacity de Desenvolvedor Full-stack. O projeto consiste em configurar um servidor remoto hospedado através do serviço da Amazon Lightsail. Nele, deve servir uma aplicação feita em Flask.

Items obrigatórios

i. Endereço de IP e porta SSH

  • Endereço IP: 54.145.86.10;
  • Porta SSH utilizada: 2200.

O login é feito através do comando: ssh grader@54.145.86.10 -p 2200 -i ~/.ssh/grader, sendo ~/.ssh/grader a localização da chave privada.

ii. URL da aplicação web

Por conta da API do google de autenticação não permitir o uso de IPs públicos, foi necessário utilizar o serviço de xip.io.

iii. Resumo do software instalado e mudanças feitas em configuração

Configuração do servidor:

  • Amazon Lightsail;
  • Plataforma: Linux/UNIX;
  • SO: Ubuntu 16.04 LTS;
  • Plano de 512 MB RAM, 1 vCPU, 20 GB SSD.

Configuração do Ubuntu:

  • Atualização de pacotes feitas em 19/11/2018;
  • Criação de um usuário chamado grader;
  • Poderes de sudo foram cedidos ao grader copiando o arquivo /etc/sudoers.d/ubuntu e renomeando para grader dentro de seu conteúdo;
  • Gerado o novo par de chaves localmente, copiando a chave pública e inserindo em .ssh/authorized_keys dentro de /home/grader/, com as devidas permissões (700 para .ssh e 600 para .ssh/authorized_keys);
  • Desativação do login via root editando /etc/ssh/sshd_config em PermitRootLogin no;
  • Edição de /etc/ssh/sshd_config, mudando a porta para 2200;
  • Permissão de algumas portas no firewall com o sudo ufw allow, ativando www, 2200/tcp e ntp. Foi desativada a porta ssh padrão com sudo ufw deny e por fim o firewall foi ativado com sudo ufw enable;
  • Alteração do fuso horário para UTC com sudo dpkg-reconfigure tzdata.

Configuração de rede:

  • HTTP: 80 - TCP;
  • (Custom) NTP: 123 - UDP;
  • (Custom) SSH: 2200 - TCP.

Pacotes instalados:

  • apache2;
  • python3;
  • python3-pip;
  • libapache2-mod-wsgi-py3;
  • git;
  • postgresql.

Configuração do Postgresql:

  • Criação de usuário grader com senha 123qwe;
  • Criação de banco de dados catalogo, onde o usuário grader tem privilégios de alterar seu conteúdo.

Configuração da aplicação:

  • Clonagem do projeto de Catálogo de Itens (branch para usar o wsgi) no diretório /home/grader/;
  • Foi copiado o arquivo webtool.wsgi do repositório para o diretório /var/www/projeto-catalogo/;
  • Foi seguido os passos descritos no README do branch linux-deploy para fazer a configuração correta do projeto;
  • Foi necessário alterar certas coisas do projeto para funcionar corretamente:
    • Os caminhos foram configurados para serem absolutos e não relativos;
    • A URI do banco de dados foi alterada de sqlite para postgresql, assim sendo agora postgresql://grader:123qwe@localhost/catalogo;
    • O conteúdo de algumas requisições ajax precisam agora ser decodificadas para utf-8 para funcionarem, com decode("utf-8");
    • Mudar de xrange para range;
    • As strings agora precisam ser codificadas para utf-8 antes de ser feito o hashing com encode("utf-8").

Configuração de /etc/apache2/sites-enabled/000-default.conf (sem os comentários):

<VirtualHost *:80>
        ServerAdmin gior.grs@gmail.com
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        WSGIDaemonProcess projeto-catalogo user=grader group=grader threads=5
        WSGIScriptAlias / /var/www/projeto-catalogo/webtool.wsgi

        <Directory /var/www/projeto-catalogo>
                WSGIProcessGroup projeto-catalogo
                WSGIApplicationGroup %{GLOBAL}
                Order deny,allow
                Allow from all
        </Directory>

        <Directorymatch "^/.*/\.git/">
                Order deny,allow
                Deny from all
        </Directorymatch>
</VirtualHost>

iv. Lista de recursos de terceiros utilizados para completar o projeto

About

Sexto projeto do curso nanodegree da Udacity de Desenvolvedor Full-stack.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published