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.
