Configurando ambiente PHP no Linux
Tags: php, mysql, linux, programming
Published: 2022-02-23 21:03:05

<p align="justify">Este tutorial poderá ser reaproveitado para qualquer distribuição baseada no Debian, podendo ser PopOS, Lubuntu, Mint, Debian, Ubuntu e afins.
Configurar um ambiente linux para desenvolver com PHP, não é nada complexo, porém necessita de alguns passos para se obter uma instalação estável e que se comporte de maneira produtiva. A seguir iremos abordar os pontos aos quais eu creio serem importantes para a instalação de um ambiente para os iniciantes ou até mesmo para os um pouco mais experientes. </p>

**Instalando e configurando o PHP**

De início ao se utilizar um ambiente linux, é necessário verificar se existe alguma dependência desatualizada, para isso execute o seguinte comando, para realizar a verificação e atualização ao mesmo tempo:
```bash
sudo apt update && sudo apt upgrade -y
```

Após a devida atualização do seu sistema, iremos partir para as partes específicas do PHP.

```bash
sudo apt install software-properties-common -y
```
Adicione o repositório do PHP.

```bash
sudo add-apt-repository ppa:ondrej/php -y
```
Execute novamente o comando de atualização dos repositórios e instalação dos mesmos:
```bash
sudo apt update && sudo apt upgrade -y
```
Instale agora o PHP com inclusão do Apache:
```bash
sudo apt install php8.1 libapache2-mod-php8.1
```
Agora você poderá verificar a versão do seu PHP com o comando:
```bash
php -v
```
Obs: No caso de querer utilizar alguma versão específica do PHP ao invés da versão 8.1 que é apresentada neste artigo, você poderá no comando acima, bem como nos comandos abaixo alterar a versão trocando-a diretamente nos comandos respectivos, como o exemplo abaixo:


- PHP 7.3
```bash
sudo apt install php7.3 libapache2-mod-php7.3
```
- PHP 7.4

```bash
sudo apt install php7.4 libapache2-mod-php7.4
```

- PHP 8.0
```bash
sudo apt install php8.0 libapache2-mod-php8.0
```
E assim respectivamente, o mesmo serve para os comandos que serão citados a seguir.

Agora iremos instalar algumas bibliotecas e extensões úteis para o PHP com o seguinte comando:

```bash
sudo apt install php8.1-intl php8.1-mysql php8.1-sqlite3 php8.1-gd -y
```

Caso vá fazer uso de testes ou utilizar algum framework que dependa ou implemente testes, é aconselhável você instalar o phpunit com o seguinte comando:

```bash 
sudo apt install phpunit 
```

**Instalando e configurando o MySQL**

Este parte do tutorial é baseada no artigo escrito pela Digital Ocean descrito neste [artigo](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04-pt). Você poderá visita-lo para quaisquer dúvidas posteriores.

Vamos instalar o mysql-server com o seguinte comando:

```
bash sudo apt install mysql-server -y 
```
Obs: Ao executar o comando acima, a versão que será instalada dependerá da versão do seu Linux, como por exemplo se é uma versão 18.04, muito possivelmente será instalado o mysql-server 5.7, no caso de a distro ser 20.04+, é provavel quer a versão instalada seja, o server 8.0. Quaisquer dúvidas referente a instalação do MySQL, poderá ser verificado no artigo da [Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04-pt).

Ao finalizar a instalação iremos passar para a parte de autenticação e segurança do mysql com o seguinte comando:

```
bash sudo mysql_secure_installation 
```

A partir daí lhe será perguntado se deseja instalar o plugin de autenticação e validações de senhas. As escolhas a partir daí dependerão da sua necessidade, porém, eu aconselharia a aceitar todas as condições como “remover acesso remoto, não permitir usuário anônimo e afins”.

Ao escolher utilizar e configurar o plugin você será questionado referente a força da encriptação que o plugin fará, você terá 3 opções, 0– low strength, 1- medium strength, 2- strong strength em uma tela parecida com este:

```text
Output
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
```

No caso de ser um ambiente local, que nunca servirá de host para aplicações em produção ou se apenas você utiliza o computador. Você poderá escolher a opção mais fraca, para qualquer outro cenário eu aconselharia utilizar o plugin com a força de encriptação forte, digitando o número 2 e avançando.

Lhe será perguntada a senha a ser incluída no MySQL de acordo com os parâmetros necessários descritos no output acima, após escolher a senha e confirmar lhe será perguntado questões como “desativar acesso remoto, não permitir usuários anônimos e afins”, você pode apenas digitar “y” para tudo.

Podemos agora evitar maiores complicações e erros que ajustando algumas configurações no mysql para poder logar com usuário e senha de maneira devida e segura, vamos aos seguites passos:

1º Acesse o mysql com o seguinte comando:
```bash
 sudo mysql 
```
2º Verfique as autenticações utilizadas por cada usuário:
```sql
SELECT user,authentication_string,plugin,host FROM mysql.user; 
```

3º Altere a forma de autenticação para o plugin que você instalou anteriormente alterando a palavra “password” pela senha escolhida anteriormente:
```sql
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;
```
4º Recarregue os privilégios dos usuários com o comando:
```sql
FLUSH PRIVILEGES;
```

5º Verifique se o usuário root está usando o plugin de autenticação caching_sha2_password com o comando:
```sql
SELECT user,authentication_string,plugin,host FROM mysql.user;
```
Se tudo estiver certo, poderá dar um “exit” e sair do mysql.
Para testar execute o comando:
```bash
mysql -u root -p
```
Sua senha será solicita, confirmando e logando, poderá sair, seu MySQL está configurado corretamente. Para maiores informações como instalação de Workbench e afins, verifique o artigo citado acima.

Espero ter conseguido ajudar em algo, até a próxima.