Skip to main content

Como Instalar o LEMP (Linux, Nginx, MySQL, PHP) no Ubuntu

Atualiza o Sistema Operacional

Iniciamos com o comando “apt update”, para verificar os repositórios e averiguar se há algum update disponível

apt update

O comando apt -y upgrade, realiza a instalação caso houver no repositório

apt -y upgrade

Criar um SWAP FILE

Precisamos criar um swap file, para que caso o servidor chegue em seu limite de memória, o swap file já tenha uma quantidade de memória emprestada através do disco para evitar buffer overflow, e assim, evitar de corromper o banco de Dados.

sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Instalação de todos os pacotes de uma vez

Para Instalar tudo de uma vez só e abreviar teu tempo segue o comando completo. caso queira entender o que está instalando siga o tutorial abaixo que tem cada pacote explicado.

sudo apt install php php-intl php-fpm php-curl php-apcu php-mbstring php-cli php-bz2 php-mysql php-xml php-zip php-gd php-xmlrpc php-soap php-readline php-8.3opcache php-common php-ldap nginx certbot python3-certbot-nginx mysql-client-8.0  mysql-server-8.0

Instalação do NGINX

O NGINX, ou pronunciando-se (Engine X), é um servidor de alto desempenho com proxy reverso e conexão HTTP.

Para instalá-lo, precisamos lembrar do mesmo comando do linux “apt install”

apt install -y nginx certbot python3-certbot-nginx

Explicação dos Pacotes:

  1. nginx:
    • Um servidor web de alto desempenho, conhecido por sua estabilidade, recursos avançados, configuração simples e baixo uso de recursos. É frequentemente usado para servir páginas web estáticas e dinâmicas, streaming de mídia, cache reverso, balanceamento de carga, etc.
  2. certbot:
    • Uma ferramenta fácil de usar que automatiza o processo de obtenção e renovação de certificados SSL/TLS gratuitos da Let’s Encrypt. Certbot ajuda a configurar a criptografia HTTPS para seus sites de forma rápida e fácil.
  3. python3-certbot-nginx:
    • Um plugin para Certbot que facilita a configuração de certificados SSL/TLS para sites servidos pelo Nginx. Este plugin automatiza a edição das configurações do Nginx para usar os certificados obtidos pelo Certbot.

Há vários pacotes adicionais que podem ser interessantes dependendo das suas necessidades específicas. Aqui estão alguns pacotes úteis que você pode considerar instalar junto com Nginx e Certbot:

  1. nginx-extras:
    • Este pacote contém módulos adicionais para Nginx que não estão incluídos na instalação padrão. Pode incluir funcionalidades como autenticação via JWT, suporte a HTTP/2, etc.
    • Comando de instalação: sudo apt install nginx-extras
  2. ufw:
    • UFW (Uncomplicated Firewall) é uma ferramenta de configuração de firewall amigável que facilita a gestão das regras de firewall.
    • Comando de instalação: sudo apt install ufw
  3. fail2ban:
    • Fail2ban monitora logs de serviço (como o Nginx) e banha automaticamente endereços IP que mostram o comportamento malicioso, como tentativas de login repetidas e falhas.
    • Comando de instalação: sudo apt install fail2ban
  4. logrotate:
    • Logrotate é usado para gerenciar automaticamente o crescimento dos arquivos de log, permitindo a rotação, compressão, e exclusão de logs antigos.
    • Comando de instalação: sudo apt install logrotate
  5. htop:
    • Htop é uma ferramenta interativa para monitoramento de processos no sistema, oferecendo uma visualização amigável do uso de recursos do sistema.
    • Comando de instalação: sudo apt install htop
  6. mc (Midnight Commander):
    • Um gerenciador de arquivos de console que facilita a navegação e gestão de arquivos no servidor.
    • Comando de instalação: sudo apt install mc
  7. git:
    • Ferramenta de controle de versão que é essencial para a gestão do código fonte e colaboração.
    • Comando de instalação: sudo apt install git
  8. nano:
    • Um editor de texto simples para a linha de comando. Embora vim e emacs sejam populares, muitos usuários preferem a simplicidade do nano.
    • Comando de instalação: sudo apt install nano

Instalação de Pacotes Adicionais

Você pode instalar todos esses pacotes com um único comando:

sudo apt install -y nginx-extras ufw fail2ban logrotate htop mc git nano

Instalação do PHP

Instalar o PHP é importante, a grande maioria dos sistemas utilizam PHP, portanto, vamos instalá-lo:

apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
sudo apt install php php-intl php-fpm php-curl php-apcu php-mbstring php-cli php-bz2 php-mysql php-xml php-zip php-gd php-xmlrpc php-soap php-readline php-opcache php-common php-ldap

Uma breve explicação de cada um dos pacotes instalados:

php:

  • O interpretador PHP 8.3 principal.

php-intl:

  • Extensão para suporte a funções de internacionalização, como formatação de data, hora, número, calendário, e manipulação de texto em diferentes idiomas e regiões.

php-fpm:

  • PHP FastCGI Process Manager. Um gerenciador de processos FastCGI que é usado para lidar com solicitações PHP em um servidor web de alto desempenho, como Nginx.

php-curl:

  • Extensão para suporte à biblioteca cURL, que permite que o PHP se conecte e se comunique com diferentes tipos de servidores usando diversos protocolos, incluindo HTTP, HTTPS, FTP, e outros.

php-apcu:

  • Extensão para o cache de usuário PHP, proporcionando armazenamento em cache de dados na memória para melhorar o desempenho da aplicação.

php-mbstring:

  • Extensão para manipulação de strings multibyte, necessária para lidar corretamente com strings em diferentes codificações, como UTF-8.

php-cli:

  • Interface de linha de comando do PHP, útil para rodar scripts PHP no terminal e para tarefas automatizadas.

php-bz2:

  • Extensão para suporte à compressão Bzip2, permitindo a manipulação de arquivos Bzip2.

php-mysql:

  • Extensão para suporte a MySQL/MariaDB, permitindo que o PHP se conecte e interaja com bancos de dados MySQL.

php-xml:

  • Extensão para suporte a manipulação de XML, necessária para trabalhar com documentos e dados XML.

php-zip:

  • Extensão para suporte a arquivos ZIP, permitindo a criação, leitura e manipulação de arquivos ZIP.

php-gd:

  • Extensão para suporte à biblioteca GD, usada para criar e manipular imagens.

php-xmlrpc:

  • Extensão para suporte a XML-RPC, um protocolo de chamada de procedimento remoto (RPC) que usa XML para codificação e HTTP para transporte.

php-soap:

  • Extensão para suporte a SOAP (Simple Object Access Protocol), permitindo que o PHP se comunique com web services baseados em SOAP.

php-readline:

  • Extensão para suporte à biblioteca GNU Readline, que fornece edição de linha e recursos de histórico para a interface de linha de comando do PHP.

php-opcache:

  • Extensão de cache de operação, que melhora o desempenho do PHP armazenando bytecode pré-compilado na memória compartilhada, reduzindo o tempo de carregamento de scripts.

php-common:

  • Pacote que contém arquivos comuns necessários para a instalação de outras extensões PHP.

php-ldap:

  • Extensão para suporte a LDAP (Lightweight Directory Access Protocol), permitindo que o PHP se conecte e interaja com diretórios LDAP.

Instalação do Mysql

Mysql, banco de dados é responsável por subir os dados e uma boa parte dos conteúdos da aplicação, vamos instalar no ssh

apt install mysql-client-8.0  mysql-server-8.0

Explicação dos Pacotes:

  1. mysql-client-8.0:
    • O cliente MySQL 8.0, que inclui o comando mysql usado para se conectar e interagir com servidores MySQL.
  2. mysql-server-8.0:
    • O servidor MySQL 8.0, que permite hospedar e gerenciar bancos de dados MySQL no seu servidor.

Após a Instalação:

Depois de instalar os pacotes, você pode querer realizar algumas configurações básicas:

  1. Segurança da Instalação do MySQL:O MySQL vem com um script de segurança que ajuda a configurar a instalação inicial de forma segura. Execute o script:
sudo mysql_secure_installation

Este script irá guiá-lo por uma série de perguntas para ajudar a melhorar a segurança do seu servidor MySQL, como configurar a senha root, remover usuários anônimos, desabilitar logins remotos de root, e remover o banco de dados de teste.

Acessar o MySQL:

Após a instalação, você pode acessar o MySQL usando o comando mysql:

sudo mysql -u root -p

Você será solicitado a inserir a senha root que configurou durante o processo de instalação ou no script mysql_secure_installation.

Configurar um Novo Usuário e Banco de Dados:

Depois de acessar o MySQL, você pode criar um novo banco de dados e um novo usuário com privilégios:

CREATE DATABASE my_database;
CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'localhost';
FLUSH PRIVILEGES;

Ferramenta util para criar usuário e banco de dados e em seguida dar as devidas permissões:

configurar NGINX

Com o nginx instalado, vamos começar a configurá-lo:

nano /etc/nginx/sites-available/default
systemctl restart nginx
certbot --nginx -d domain.com -d www.domain.com

Guia passo a passo para instalar e configurar um servidor LEMN no Ubuntu 20.04 para iniciantes

Instalar um servidor LEMN (Linux, Nginx, MySQL, Node.js) envolve várias etapas, cada uma crucial para garantir que seu servidor web esteja pronto para hospedar aplicações web. Este guia passo a passo visa fornecer uma visão clara sobre como configurar um servidor LEMN do zero.

1. Preparação do Sistema Operacional Linux

O primeiro passo é escolher e instalar uma distribuição Linux. Ubuntu Server é uma escolha popular devido à sua ampla documentação e suporte. Após escolher sua distribuição, faça o download da imagem ISO do site oficial e siga as instruções de instalação.

Atualize o sistema: Após a instalação, é importante atualizar o sistema para garantir que todos os pacotes estejam na última versão disponível. No Ubuntu, você pode fazer isso com os seguintes comandos:

sudo apt update sudo apt upgrade

2. Instalação do Nginx

Nginx é um servidor web de alto desempenho e fácil de configurar. Para instalá-lo, use o gerenciador de pacotes da sua distribuição. No Ubuntu, o comando é:

sudo apt install nginx

Após a instalação, você pode verificar se o Nginx está rodando com:

systemctl status nginx

3. Instalação do MySQL

MySQL é um sistema de gerenciamento de banco de dados relacional. Para instalá-lo no Ubuntu, execute:

sudo apt install mysql-server

Depois da instalação, é recomendável executar o script de segurança mysql_secure_installation para configurar opções de segurança básicas, incluindo a definição de senha para o usuário root do MySQL.

4. Instalação do Node.js

Node.js é uma plataforma de desenvolvimento em JavaScript do lado do servidor, e o NPM (Node Package Manager) é essencial para gerenciar pacotes Node.js. Para instalar a versão mais recente do Node.js e do NPM, você pode usar o NodeSource, um repositório que oferece as últimas versões do Node.js. Execute os seguintes comandos para adicionar o repositório e instalar o Node.js e o NPM:

curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash - sudo apt install -y nodejs

Após a instalação, você pode verificar as versões para confirmar que o Node.js e o NPM foram instalados corretamente:

node -v npm -v

Para garantir que você está utilizando a última versão do Node.js e gerenciar múltiplas versões de forma eficaz, você pode instalar o n, um gerenciador de versões do Node.js, utilizando o NPM:

npm install -g n

Após a instalação do n, você pode atualizar para a versão mais recente do LTS (Long Term Support) do Node.js com o comando:

n lts

Para instalar a última versão disponível do Node.js, use:

n latest

Finalmente, para remover versões antigas e manter seu sistema limpo, execute:

n prune

Esses comandos garantem que você tenha flexibilidade para alternar entre diferentes versões do Node.js conforme necessário e manter seu ambiente de desenvolvimento atualizado e otimizado.

5. Configuração do Servidor Nginx para Node.js

O Nginx pode ser configurado para atuar como um proxy reverso para aplicações Node.js, direcionando o tráfego da porta 80 (HTTP) para a porta onde sua aplicação Node.js está rodando. Edite o arquivo de configuração do Nginx para sua aplicação:

sudo nano /etc/nginx/sites-available/sua_aplicacao

Adicione a seguinte configuração, substituindo sua_aplicacao e porta_da_sua_aplicacao pelos valores correspondentes:

server { listen 80; server_name sua_aplicacao.com; location / { proxy_pass http://localhost:porta_da_sua_aplicacao; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }

Ative a configuração fazendo um link simbólico para o diretório sites-enabled e reinicie o Nginx:

sudo ln -s /etc/nginx/sites-available/sua_aplicacao /etc/nginx/sites-enabled/ sudo systemctl restart nginx

6. Conclusão

Após completar estas etapas, seu servidor LEMN estará configurado e pronto para hospedar suas aplicações web. É importante também considerar aspectos de segurança, como a configuração de firewalls e a obtenção de certificados SSL para habilitar HTTPS em seu servidor. Com essas bases, você está pronto para desenvolver e implantar aplicações web robustas e de alta performance.