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:
- 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.
- 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.
- 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:
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- nano:
- Um editor de texto simples para a linha de comando. Embora
vim
eemacs
sejam populares, muitos usuários preferem a simplicidade donano
. - Comando de instalação:
sudo apt install nano
- Um editor de texto simples para a linha de comando. Embora
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 nanoInstalaçã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:
- mysql-client-8.0:
- O cliente MySQL 8.0, que inclui o comando
mysql
usado para se conectar e interagir com servidores MySQL.
- O cliente MySQL 8.0, que inclui o comando
- 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:
- 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