# Tutorial (venv) de instalação Biuri Landing:
## Instalação e configuração do apache
- Referência: https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-18-04-pt
Primeiro vamos atualizar os pacotes do sistema:
```
sudo apt update
```
Vamos instalar o apache2
```
sudo apt install apache2
```
No final do processo de instalação, o Ubuntu 18.04 inicia o Apache. O servidor Web já deve estar em funcionamento.
Verifique com o sistema init ```systemd``` para garantir que o serviço está funcionando digitando:
```
sudo systemctl status apache2
```
```
# saída
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2018-04-24 20:14:39 UTC; 9min ago
Main PID: 2583 (apache2)
Tasks: 55 (limit: 1153)
CGroup: /system.slice/apache2.service
├─2583 /usr/sbin/apache2 -k start
├─2585 /usr/sbin/apache2 -k start
└─2586 /usr/sbin/apache2 -k start
```
Agora podemos entrar no browser e verificar se a instalção e o serviço apache está funcionando:
```http://198.74.62.126```
Configurando arquivo padrão de configuração do servidor apache2:
```
nano /etc/apache2/sites-available/000-default.conf
```
Ao abrir o arquivo ```000-default.conf``` copie e cole a seguinte configuração:
```
<VirtualHost *:80>
ServerAdmin oda@member.fsf.org
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName biuri.wemind.com.br
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
RewriteEngine on
# RewriteCond %{SERVER_NAME} =biuri.wemind.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
```
Como editamos o arquivo padrão de configuração após salva-lo ele já estará habilitado por padrão. Recomenda-se que em casos de configuração de mais de 1 domínio você crie novos arquivos invés de editar o arquivo padrão, isso facilitará na organização do seu servidor.
Ao criar um novo arquivo ele não estará habilitado por padrão, para isso você poderá utilizar a ferramenta ```a2ensite``` para habilitá-lo. Siga um tutorial para isso [aqui](https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-18-04-pt#passo-5-%E2%80%94-configurando-hosts-virtuais-(recomendado)).
## Dowload do repositório para servidor
Primeiramente vamos instalar o git:
```
sudo apt install git
```
Na home ou no diretório do seu usuário crie uma pasta para o projeto:
```
mkdir biuri-landing
```
Agora entre na pasta e dê um ```git init```:
```
cd biuri-landing
git init
```
Configure o repositório web como origem:
```
git remote add origin https://bitbucket.org/biuri/biuri-landing/src/master/
```
Agora vamos baixar o repositório para o servidor:
```
git clone https://bitbucket.org/biuri/biuri-landing/src/master/
```
Pronto, agora podemos instalar o MYSQL
## Instalação do MYSQL
### Passo 1 - Instalando MYSQL
Para instalar o MySQL, atualize o índice de pacotes em seu servidor se ainda não tiver feito isso:
```
sudo apt update
```
Depois disso, instale o pacote ```mysql-server```:
```
sudo apt install mysql-server
```
Isso instalará o MySQL, mas não solicitará que você defina uma senha ou que faça outras alterações de configuração. Como isso deixa sua instalação do MySQL não segura, abordaremos isso a seguir.
### Passo 2 - Configurando MYSQL
Execute o script sendo ```sudo```:
```
sudo mysql_secure_installation
```
Isso levará você através de uma série de prompts onde é possível fazer algumas alterações nas opções de segurança de sua instalação do MySQL. O primeiro prompt perguntará se você gostaria de definir o plug-in de validar senha, que pode ser usado para testar a força de sua senha do MySQL.
Caso você escolha configurar o plug-in de validar senha (recomendado para servidor de produção), o script solicitará que você escolha um nível de validação de senha. O nível mais forte — que você seleciona ao digitar 2 — exigirá que sua senha tenha pelo menos oito caracteres de tamanho e inclua uma mistura de caracteres em maiúsculo, minúsculo, numérico e especial:
```
#Saída
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2
```
Independentemente de você escolher configurar o plug-in de validar senha, o próximo prompt será o de definir uma senha para o usuário **root** do MySQL. Digite e, em seguida, confirme uma senha segura de sua escolha:
```
#Saída
Please set the password for root here.
New password:
Re-enter new password:
```
Caso tenha usado o plug-in de validar senha, você receberá o feedback da força dela. Então, o script perguntará se você deseja continuar com a senha que acabou de digitar, ou se quer digitar uma nova. Supondo que esteja satisfeito com a força da senha que acabou de digitar, digite Y para continuar o script:
```
#Saída
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
```
A partir daí você poderá pressionar Y e depois ENTER para aceitar a maioria das configurações padrão _menos a pergunta desativar os logins remotos para a raiz_. Isso removerá alguns usuários anônimos e o banco de dados de teste, e manter ativo os logins remotos para a raiz e carregará essas novas regras para que o MySQL respeite imediatamente as alterações que você fez.
Note que, embora tenha definido uma senha para o usuário **root** do MySQL, este usuário não está configurado para autenticar-se com uma senha ao conectar-se ao shell do MySQL. Se quiser, é possível ajustar esta configuração seguindo o [Passo 3](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04-pt#passo-3-%E2%80%94-(opcional)-ajustando-a-autentica%C3%A7%C3%A3o-e-os-privil%C3%A9gios-do-usu%C3%A1rio).
### Passo 4 - Criando Banco de Dados
Depois de instalar o MYSQL é preciso criar o banco de dados mysql, para isso digite o comando que abrirá a interface MYSQL:
- Referência: https://www.mysqltutorial.org/mysql-create-database/
```
mysql -u root -p
```
```
# saída
mysql> 'digite o comando aqui'
```
Agora vamos criar o banco de dados de nossa aplicação com o comando:
```
CREATE DATABASE biuri;
```
Você pode conferir seus bancos de dados Mysql com o comando:
```
SHOW DATABASES;
```
## Instalação do Python 3.6
Agora vamos instalar o python3.6 ao lado do 3.8:
```
add-apt-repository ppa:deadsnakes/ppa
apt-get update
apt-get install python3.6-dev
```
Em seguida instalamos o pip3:
```
sudo apt install pip3
```
## Instalação das dependências
Vá até o master e confira quais são os pacotes que faltam no arquivo ```base.txt```:
```
nano /biuri-landing/master/requirements/base.txt
```
Especifique que a instalação dos pacotes será feita com o python3.6:
```
python3.6 -m pip install -r requirements.txt
python3.6 -m pip install -r dev.txt
```
## Migração do Banco de Dados
Com o banco de dados criado e o python 3.6 instalado temos fazer uma migração do nosso DB com os seguintes comandos:
```
python3.6 manage.py makemigrations
python3.6 manage.py migrate
```
### Criando um super usuário
```
python3.6 manage.py createsuperuser
```
Quando esse comando for concluído, um novo superusuário será adicionado ao banco de dados.
## Colocando o Servidor para rodar
Agora vamos iniciar o servidor de desenvolvimento para que possamos testar o login:
```
python3.6 manage.py runserver
```
## Configurando SSL com o Let's Encrypt
[](https://www.youtube.com/watch?v=d-FQ0JTfUxI)
> Tutorial de instalação gratuira de Let's Encrypt com a ferramenta CertBot
Agora vamos utilizar a ferramenta [CertBot](https://certbot.eff.org/) para instalar e configurar gratuitamente um SSL em nosso domínio.