O LEMP é uma das stacks mais utilizadas para aplicações web em Linux. O nome representa:
- Linux
- Engine X — Nginx
- MySQL
- PHP
Neste artigo vamos configurar um ambiente LEMP moderno no Deepin 25, incluindo PHP-FPM, extensões normalmente utilizadas por frameworks como Laravel e Symfony, Composer e uma configuração básica do Nginx.
Stack utilizada
A configuração recomendada neste guia é:
Deepin: 25.x
Nginx: 1.30.x Stable
PHP: 8.5
PHP-FPM: 8.5
MySQL: 8.4 LTS
Composer: 2.x
Em outubro de 2026, o PHP 8.5 continua sob suporte ativo e recebe correções regulares. O PHP 8.6 ainda não é uma versão estável para produção.
O Nginx possui duas linhas principais de distribuição: stable e mainline. Para servidores convencionais, utilizaremos a linha stable. A versão estável atual é da série 1.30.x.
Para banco de dados, utilizaremos o MySQL 8.4 LTS, uma escolha conservadora e adequada para aplicações PHP que precisam de estabilidade e ampla compatibilidade. O repositório oficial do MySQL continua disponibilizando a série 8.4 LTS.
1. Atualizar o Deepin
Antes de instalar os serviços, atualize a lista de pacotes e os pacotes já instalados:
sudo apt update
sudo apt upgrade -y
Também podemos instalar algumas ferramentas que serão utilizadas durante a configuração:
sudo apt install -y \
curl \
wget \
ca-certificates \
gnupg \
lsb-release \
unzip
Verifique a versão do sistema:
cat /etc/os-release
No Deepin 25 você encontrará o repositório da série crimson.
O Deepin 25 utiliza oficialmente seu próprio repositório:
deb https://community-packages.deepin.com/deepin/beige/ crimson main commercial community
Não substitua os repositórios do Deepin por repositórios Debian ou Ubuntu indiscriminadamente. Isso pode causar conflitos de dependências.
2. Instalar o Nginx
Começaremos instalando o servidor web:
sudo apt install -y nginx
Inicie o serviço:
sudo systemctl start nginx
Configure para iniciar automaticamente junto com o sistema:
sudo systemctl enable nginx
Confira o status:
sudo systemctl status nginx
A saída deve indicar:
Active: active (running)
Verifique também a versão instalada:
nginx -v
Você pode testar diretamente no navegador:
http://localhost
Ou através do endereço IP da máquina.
Para descobrir o IP:
hostname -I
3. Testar a configuração do Nginx
Uma regra importante ao administrar o Nginx é testar a configuração antes de reiniciar ou recarregar o serviço:
sudo nginx -t
O resultado esperado é semelhante a:
syntax is ok
test is successful
Depois disso podemos recarregar:
sudo systemctl reload nginx
Isso é preferível a reiniciar o serviço sempre que modificarmos somente arquivos de configuração.
4. Instalar o PHP
O PHP 8.5 foi lançado em novembro de 2025 e possui suporte ativo até 31 de dezembro de 2027 e atualizações de segurança até 31 de dezembro de 2029.
Antes de prosseguir, verifique quais versões estão disponíveis no Deepin:
apt-cache policy php
apt-cache search php8 | grep fpm
Se o repositório do sistema disponibilizar PHP 8.5, instale:
sudo apt install -y \
php8.5 \
php8.5-cli \
php8.5-fpm \
php8.5-common \
php8.5-mysql \
php8.5-curl \
php8.5-mbstring \
php8.5-xml \
php8.5-zip \
php8.5-gd \
php8.5-bcmath \
php8.5-intl \
php8.5-opcache
Essas extensões cobrem grande parte das necessidades de aplicações PHP modernas, incluindo Laravel e Symfony.
Importante: não recomendo adicionar automaticamente o repositório
packages.sury.orgapontando parabookworm,trixieou outro codename Debian apenas para obter uma versão mais nova do PHP. O Deepin 25 utilizacrimsone misturar repositórios de distribuições diferentes pode causar conflitos de bibliotecas.
5. Verificar o PHP
Confira a versão:
php -v
A saída deve ser semelhante a:
PHP 8.5.x (cli)
Veja os módulos carregados:
php -m
Também podemos verificar especificamente algumas extensões:
php -m | grep -E 'curl|mbstring|mysqli|pdo_mysql|xml|zip|gd|intl'
6. Configurar o PHP-FPM
Verifique o serviço:
sudo systemctl status php8.5-fpm
Caso ainda não esteja iniciado:
sudo systemctl enable --now php8.5-fpm
O PHP-FPM normalmente cria um socket semelhante a:
/run/php/php8.5-fpm.sock
Podemos confirmar:
ls -la /run/php/
O socket será utilizado posteriormente pelo Nginx.
7. Configurar o PHP para desenvolvimento
O arquivo principal do PHP utilizado pelo FPM normalmente fica em:
/etc/php/8.5/fpm/php.ini
Faça um backup antes de modificá-lo:
sudo cp \
/etc/php/8.5/fpm/php.ini \
/etc/php/8.5/fpm/php.ini.backup
Edite:
sudo nano /etc/php/8.5/fpm/php.ini
Para uma máquina de desenvolvimento, algumas configurações úteis são:
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
date.timezone = America/Sao_Paulo
Em desenvolvimento:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
Em produção, prefira:
display_errors = Off
display_startup_errors = Off
log_errors = On
Depois de alterar:
sudo systemctl restart php8.5-fpm
8. Instalar o Composer
Atualmente o Composer está na série 2.x; em outubro de 2026, a versão estável publicada é da série 2.10.
Baixe o instalador:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Baixe dinamicamente a assinatura oficial:
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
Calcule o hash do arquivo:
ACTUAL_CHECKSUM="$(php -r 'echo hash_file("sha384", "composer-setup.php");')"
Valide:
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
>&2 echo 'ERROR: Invalid Composer installer checksum'
rm composer-setup.php
exit 1
fi
Instale globalmente:
sudo php composer-setup.php \
--install-dir=/usr/local/bin \
--filename=composer
Remova o instalador:
rm composer-setup.php
Confira:
composer --version
9. Instalar o MySQL
Para novos servidores, uma escolha bastante segura é o MySQL 8.4 LTS.
Antes de instalar, verifique o pacote disponível:
apt-cache policy mysql-server
Se o Deepin disponibilizar diretamente o MySQL:
sudo apt install -y mysql-server mysql-client
Depois da instalação:
sudo systemctl enable --now mysql
Verifique:
sudo systemctl status mysql
E consulte a versão:
mysql --version
10. MySQL 8.4 LTS através do repositório oficial
Se você precisa especificamente do MySQL 8.4 LTS e a versão não estiver disponível no repositório do Deepin, o MySQL disponibiliza seu próprio repositório APT.
A Oracle disponibiliza atualmente um pacote mysql-apt-config responsável por configurar as versões oferecidas pelo repositório.
Contudo, existe uma consideração importante:
O MySQL declara suporte oficial para Debian e Ubuntu. O Deepin é uma distribuição Debian-like, mas não aparece explicitamente entre as plataformas suportadas pelo repositório APT do MySQL.
Por isso, em uma máquina de produção, prefira o pacote validado pelo Deepin ou teste cuidadosamente a compatibilidade antes de adicionar o repositório da Oracle.
11. Executar o mysql_secure_installation
Após instalar o MySQL, execute:
sudo mysql_secure_installation
A ferramenta permite configurar itens como:
- política de senha;
- usuários anônimos;
- acesso remoto ao usuário root;
- banco de dados
test; - privilégios.
As perguntas apresentadas podem variar dependendo da versão instalada.
12. Acessar o MySQL
Em sistemas Debian-like, o usuário root do MySQL pode utilizar autenticação através do próprio sistema operacional.
Nesse caso:
sudo mysql
13. Criar um usuário MySQL para desenvolvimento
Em vez de utilizar root nas aplicações, crie um usuário específico.
Entre no MySQL:
sudo mysql
Crie o banco:
CREATE DATABASE app
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Crie o usuário:
CREATE USER 'app'@'localhost'
IDENTIFIED BY 'uma-senha-forte';
Dê acesso somente ao banco necessário:
GRANT ALL PRIVILEGES
ON app.*
TO 'app'@'localhost';
Finalize:
FLUSH PRIVILEGES;
Saia:
EXIT;
Teste:
mysql -u app -p
14. Criar o primeiro Virtual Host
Vamos criar um projeto em:
/var/www/app
Crie o diretório:
sudo mkdir -p /var/www/app/public
Altere o proprietário:
sudo chown -R $USER:$USER /var/www/app
Crie um arquivo PHP de teste:
nano /var/www/app/public/index.php
Adicione:
<?php
phpinfo();
15. Configurar Nginx + PHP-FPM
Dependendo do pacote do Nginx presente no Deepin, você poderá ter uma estrutura semelhante a:
/etc/nginx/sites-available
/etc/nginx/sites-enabled
Crie:
sudo nano /etc/nginx/sites-available/app
Adicione:
server {
listen 80;
listen [::]:80;
server_name app.test;
root /var/www/app/public;
index index.php index.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
}
location ~ /\.ht {
deny all;
}
}
Ative:
sudo ln -s \
/etc/nginx/sites-available/app \
/etc/nginx/sites-enabled/app
Teste:
sudo nginx -t
Se estiver correto:
sudo systemctl reload nginx
16. Configurar domínio local
Edite:
sudo nano /etc/hosts
Adicione:
127.0.0.1 app.test
Agora abra:
http://app.test
A página do phpinfo() deverá aparecer.
17. Remover o phpinfo()
Não mantenha phpinfo() disponível em um servidor real.
Ele revela diversas informações do ambiente, como:
- versão do PHP;
- módulos instalados;
- caminhos internos;
- configurações do servidor;
- variáveis de ambiente.
Depois do teste:
rm /var/www/app/public/index.php
18. Testar MySQL através do PHP
Crie novamente:
nano /var/www/app/public/index.php
Use:
<?php
$pdo = new PDO(
'mysql:host=localhost;dbname=app;charset=utf8mb4',
'app',
'uma-senha-forte',
);
echo 'LEMP funcionando corretamente.';
Abra:
http://app.test
Se tudo estiver configurado corretamente:
LEMP funcionando corretamente.
Isso confirma o funcionamento de:
Nginx
↓
PHP-FPM
↓
PHP
↓
PDO
↓
MySQL
19. Verificar todos os serviços
Nginx:
systemctl status nginx
PHP-FPM:
systemctl status php8.5-fpm
MySQL:
systemctl status mysql
Também podemos verificar de uma vez:
systemctl is-active nginx php8.5-fpm mysql
O esperado é:
active
active
active
20. Conferir as versões instaladas
Execute:
nginx -v
php -v
mysql --version
composer --version
Também podemos executar:
printf "\nNginx:\n"
nginx -v
printf "\nPHP:\n"
php -v
printf "\nMySQL:\n"
mysql --version
printf "\nComposer:\n"
composer --version
21. Estrutura final
Depois de concluir a instalação teremos aproximadamente:
Deepin Linux
│
├── Nginx
│ └── :80 / :443
│
├── PHP 8.5
│ └── PHP-FPM
│ └── /run/php/php8.5-fpm.sock
│
├── MySQL
│ └── :3306
│
└── Composer
└── /usr/local/bin/composer
Para uma requisição PHP:
Browser
│
▼
Nginx
│
▼
PHP-FPM
│
▼
PHP 8.5
│
▼
MySQL
22. Comandos resumidos
Para referência, os principais comandos da configuração são:
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
curl \
wget \
ca-certificates \
gnupg \
lsb-release \
unzip
sudo apt install -y nginx
sudo systemctl enable --now nginx
PHP, caso PHP 8.5 esteja disponível nos repositórios configurados:
sudo apt install -y \
php8.5 \
php8.5-cli \
php8.5-fpm \
php8.5-common \
php8.5-mysql \
php8.5-curl \
php8.5-mbstring \
php8.5-xml \
php8.5-zip \
php8.5-gd \
php8.5-bcmath \
php8.5-intl \
php8.5-opcache
sudo systemctl enable --now php8.5-fpm
MySQL:
sudo apt install -y mysql-server mysql-client
sudo systemctl enable --now mysql
sudo mysql_secure_installation
Composer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
ACTUAL_CHECKSUM="$(php -r 'echo hash_file("sha384", "composer-setup.php");')"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
>&2 echo 'ERROR: Invalid Composer installer checksum'
rm composer-setup.php
exit 1
fi
sudo php composer-setup.php \
--install-dir=/usr/local/bin \
--filename=composer
rm composer-setup.php
Finalmente:
nginx -v
php -v
mysql --version
composer --version
Com isso temos um ambiente LEMP moderno no Deepin pronto para receber aplicações PHP.
Top comments (1)
Good Post!
I wanna discuss about collaboration with you.
How about you?