# Instalação e configuração da VM de Aplicação.

## Acesso SSH

IP: 192.168.20.60  
Usuário: omnichannel   
Senha: dev@2023  
 
Recursos

## Hardware

* HD: 30GB
* Memória: 4GB
* CPU: 4vCPU


## Software

* Ubuntu Server20 (última versão estável.
* php 7.2
* Apache 2.4
* Composer 2.5
* Git
* Laravel 5.5
* htop (Última versão estável)



## Instalando do PHP 7.2 no Ubuntu usando PPA**

1. O primeiro passo para instalar versão 7.2 do PHP é adicionar o PPA mantido por Ondrej Surý no Ubuntu.

        sudo add-apt-repository ppa:ondrej/php

2. Agora, é preciso que você atualize o sistema:

        sudo apt-get update && sudo apt-get upgrade
        sudo apt update && sudo apt dist-upgrade -y

3. Agora, vamos instalar as versões 7.2 do PHP no Ubuntu

    sudo apt install php7.2

    sudo apt-get install php7.2 php7.2-mcrypt php7.2-xml php7.2-gd php7.2-opcache php7.2-mbstring php7.2-pdo php7.2-mysql

4. Conferir a versão do PHP

     php -v



## Instalando Composer 2.5 no ubuntu server 20.04**

1. Instalar dependências

        sudo apt update
        sudo apt install unzip

2.  Baixar e instalar o Composer

        cd ~
        curl -sS https://getcomposer.org/installer -o composer-setup.php

3. Usando o curl, pegue a última assinatura e armazene-a em uma variável shell:

        HASH=`curl -sS https://composer.github.io/installer.sig`

4. Agora, execute o seguinte código PHP para verificar se o script de instalação está seguro para ser executado:

        php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

5. Baixará e instalará o Composer como um comando de sistema chamado

        sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer


6. Para testar a sua instalação, execute:

        composer



## Instalar apache 2.4 no Ubuntu server 20.04**

1. Instale o Apache. Também precisaríamos instalar o pacote libapache2-mod-php7.2 para conectar o Apache com PHP.

        sudo apt install apache2 libapache2-mod-php7.2


## Instalar Laravel 5.5 no Ubuntu server 20.04**

1. Antes de começar, é sempre uma boa ideia verificar se as fontes e o software existentes em nosso computador estão atualizados.

        sudo apt update && sudo apt-get upgrade

Precisaremos instalar outros componentes essenciais antes de instalar o Laravel.


Checklist

1. Instale PHP 7.2 OK
2. Instale o Apache 2.4 OK
3. Composer 2.5 OK
4. Git


2. Instale o Laravel. 


Para instalar o Laravel, iremos ao diretório html público do seu sistema. Como estamos no Ubuntu e usando o Apache, vamos instalá-lo no diretório /var/www/html.

        cd /var/www/html
        sudo composer create-project --prefer-dist laravel/laravel omnichannel

O comando acima irá criar o diretório «omnichanne» com a instalação do Laravel. O Composer usa o git para baixar e instalar todos os pacotes e módulos que o Laravel requer trabalhar.

3. Configurando o Apache

Agora que instalamos o Laravel, passamos para configurar servidor web Apache.

4. O próximo passo é conceda as permissões apropriadas para o diretório do projeto. Para isso, precisamos habilitar o acesso ao grupo www-data e conceder permissões de gravação ao diretório de armazenamento. 

        sudo chgrp -R www-data /var/www/html/omnichannel
        sudo chmod -R 775 /var/www/html/omnichannel/storage

5. Agora iremos para o diretório /etc/apache2/sites-available e usaremos o seguinte comando para criar um arquivo de configuração para a nossa instalação do Laravel:


        cd /etc/apache2/sites-available
        sudo vim laravel.conf

laravel host virtual

6. Quando o nano abrir, adicionaremos o seguinte conteúdo ao arquivo. Haverá substitua seudominio.tld com o nome de domínio do seu site dentro do arquivo. Haverá também renomear o projeto pelo qual criamos anteriormente. No caso de usá-lo localmente, escreva localhost.tld.


        <VirtualHost *:80>
            ServerName omnichannel
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html/omnichannel/public
            <Directory /var/www/html/omnichannel>
                AllowOverride All
            </Directory>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
        </VirtualHost>

7. Agora temos que habilitar este arquivo .conf recém-criado. Nós também teremos que desative o arquivo .conf padrão que é instalado com a instalação do Apache. Além disso, devemos ativar mod_rewrite para que os links permanentes funcionem corretamente.

        sudo a2dissite 000-default.conf && sudo a2ensite laravel.conf && sudo a2enmod rewrite

8. E acabamos reiniciando o apache com:

        sudo service apache2 restart

# Instalação e configuração das VMs de banco.


## Acesso SSH

Banco - 01
IP: 192.168.20.61  
Usuário: omnichannel   
Senha: dev@2023

Banco - 02
IP: 192.168.20.62  
Usuário: omnichannel   
Senha: dev@2023

## Acesso MySQL

Usuario: root/omnichannel       
Senha: dev@2023

 
Recursos

## Hardware

* HD: 100GB
* Memória: 4GB
* CPU: 4vCPU


## Software

* Ubuntu Server20 (última versão estável.
* MySQL 8.0.34

### Instalação MySQL ao Ubuntu 20.04.

1. Antes de mais nada, você deve atualizar os pacotes do Ubuntu. Abra o terminal e utilize sudo su - para entrar no super usuário.

        sudo apt update && sudo apt-get upgrade

2. Instalar o MySql server Utilize o comando abaixo e confirme a instalação com “Y” ou “s” quando for solicitado. Não se preocupe se ao fim da instalação surgirem alguns erros ao final do console, pois isso é comum.

        apt install mysql-server

3. Verifique se o MySQL já foi instalado utilizando o comando:

        systemctl status mysql

4. Dará que ele está parado (“MySQL is stopped”). Inicie o serviço com

        systemctl enable mysql 
        systemctl restart mysql


5. Ainda no modo de super usuário, utilize o comando vamos configurar o MySQL 

mysql_secure_installation

* Você não precisa usar o plugin de validação de senha do MySQL (“Validate Password Component“), já que a sua máquina é de desenvolvimento. Responda apenas com “n”.

* Ele irá perguntar se você deseja ou não remover o acesso de usuários anônimos. Basta responder com “y” ou “s”

* Ele perguntará também se o acesso do root deverá ou não ficar habilitado remotamente. Responda como for mais conveniente para você.

* Agora, ele irá perguntar se você deseja ou não remover o database de teste. Basta responder com “y” ou “s”, pois você irá criar o seu.

* Por fim, ele perguntará se você quer recarregar os privilégios dos usuários nas tabelas. Basta responder com “y” ou “s”

Pronto! Seu MySQL Server já está instalado e pronto para uso.



### Criando usuario no MySQL

1. Acesse a linha de comando e entre no servidor MySQL:

        mysql

2. Então execute o seguinte comando:

        CREATE USER 'omnichannel'@'%' IDENTIFIED BY 'dev@2023'; 

3. Para garantir todos os privilégios do banco de dados para um usuário recém-criado, execute o seguinte comando:

        GRANT ALL PRIVILEGES ON *.* TO 'omnichannel'@'%';  

4. Assim que isso estiver feito, a sua nova conta de usuário vamos testar e colocor um senha para o usuario root.

        ALTER USER 'root'@'localhost' IDENTIFIED BY 'dev@2023';

5. Para que as mudanças tenham efeito, execute imediatamente um flush dos privilégios ao executar o seguinte comando:

        FLUSH PRIVILEGES;


### Liberando acesso remoto no banco 


        vim /etc/mysql/mysql.conf.d/mysqld.cnf


        bind-address            = 0.0.0.0


### Fazendo restore das bases no banco principal e clientes.

1. Para restaurar a base, basta agora utilizar o comando mysql.

        mysql -u root -p

        mysql> create database meu-database;

2. Realizar o restore com o comnado abaixo:

        mysql -u root -p meu-database < meu-arquivo-dump.sql

