Instalar WordPress com Ubuntu 22.04, Apache2, MariaDB e PHP 8.2-FPM

Se planeia alojar o WordPress no Cloud Server, este guia vai ser-lhe útil. LAMP significa Linux, Apache, MariaDB e software PHP que, em conjunto, são conhecidos como LAMP stack.

Prós e contras de escolher o servidor web Apache em vez do NGINX

  • Prós: Suporta ficheiro .htaccess que é normalmente utilizado por muitos Page Caching & Optimization. Esta é uma grande escolha para não-codificador.
  • Cons: É ligeiramente menos performante do que NGINX mas que pode ser gerido usando APO. Para um local de alto tráfego, a pilha LEMP é a melhor escolha..

Siga estes 3 passos e veja o vídeo. Precisa de ajuda? Contacte-me. 😊

  1. Configuração do DNS Cloudflare
  2. Obter o Ubuntu Server
  3. Implantação do LAMP Stack

Agora antes de começar, aqui vai uma dica rápida. Use Search and Replace Extension para mudar em massa o example.com para o seu próprio domínio nesta página web.

Dica de poupança de tempo para os utilizadores do Google Chrome.
search replace

Parte A: Manter os Nameservers activos

Vamos utilizar o Cloudflare DNS para obter o certificado Let’s Encrypt Wildcard SSL. Complete este passo primeiro para desfrutar de migração de tempo zero.

Verificar Nameservers actuais

Parte B: Preparar um servidor Ubuntu 22.04 LTS Server

Ubuntu
Logótipo Ubuntu

1. Inscreva-se na Vultr para obter $100 Créditos grátis (Válido por 14 dias)

Como alguém que experimentou tantas empresas de servidores Cloud, a minha experiência diz-me que não se pode errar com a Vultr. Estes tipos são genuínos e atenciosos quando se trata de apoio e serviços.

vultr

⚡ Desempenho

  • 3ª Geração AMD EPYC™
  • NVME / SSD
  • CPU até 4 GHz
  • Velocidade de rede até 5Gbps
  • Datacenter na América, Europa, Ásia, Austraillia
  • IPV6 pronto

💡 Características

  • Painel de instrumentos para principiantes
  • Um clique para Snapshot
  • Cópias de segurança automáticas (pagas)
  • Firewall Nuvem Livre
  • Protecção DDoS (Paid)
  • 100% KVM Virtualization

⚙ Apoio

  • PayPal/Cartão
  • Suporte de bilhetes 24/7
  • Documentação

2. Deloy um novo servidor

Basta clicar no botão “mais” para começar

Deploy New Server

3. Escolha o tipo de servidor

Seleccione Cloud Compute para CPU partilhada em preços acessíveis.

Cloud Compute

Depois disto, pode seleccionar a opção AMD High Performance ou Intel High Frequency em Tecnologia de CPU & Armazenamento. Tem o CPU e o Disco NVMe mais rápido de sempre. Se o orçamento for menor, então vá com o plano Regular com CPU Intel, no qual obterá o disco SSD.

CPU Technology

4. Escolha uma localização de servidor

A Vultr oferece servidor nos quatro continentes. Para a menor latência e melhor desempenho, deve sempre escolher uma região que seja a mais próxima para o seu público.

vultr server region

Por exemplo, se 99% do tráfego vier da Índia, escolha a região mais próxima – Mumbai.

Ásia

  • Mumbai, Índia
  • Delhi NCR, Índia
  • Bengaluru, Índia
  • Singapura, Singapura
  • Tóquio, Japão
  • Seul, Coreia do Sul

América

  • Miami, Estados Unidos
  • Atlanta, Estados Unidos
  • Chicago, Estados Unidos
  • Dallas, Estados Unidos
  • Honolulu, Estados Unidos
  • Los Angeles, Estados Unidos
  • Cidade do México, México
  • Nova Iorque (NJ), Estados Unidos
  • Seattle, Estados Unidos
  • Vale do Silício, Estados Unidos
  • Toronto, Canadá, São Paulo

Europa

  • Estocolmo, Suécia
  • Londres, Reino Unido
  • Amsterdão, Países Baixos
  • Frankfurt, Alemanha
  • Madrid, Espanha
  • Paris, França
  • Varsóvia, Polónia

Australlia

  • Sydney, Austrálias
  • Melbourne, Austrália

5. Seleccione a Imagem do Servidor > Sistema Operativo > Ubuntu 22.04 LTS x64

ubuntu os

O apoio a longo prazo (LTS) é uma política de gestão do ciclo de vida do produto em que uma versão estável do software informático é mantida durante um período de tempo mais longo do que a edição padrão.

ubuntu releases 2

6. Escolha um tamanho de servidor

server size

O plano de $6/mo seria um óptimo ponto de partida para um novo blogue. Pode actualizar a qualquer altura de acordo com os requisitos.

Dica: Se estiver a migrar, verifique o tamanho total da instalação em Informação sobre saúde do Sítio..

Site health info

7. Habilitar IPV6, Backup

vultr enable backup ipv6

8. Acrescentar uma chave SSH

Este é um passo recomendado e opcional para o reforço da segurança.

Add SSH key
  • Clique em Adicionar novo botão para adicionar uma nova chave SSH para submeter a sua chave 🔒Public.
  • Gerar Chaves usando o método abaixo conforme o seu SO.
win os
  • Descarregar a aplicação PuTTy.
  • Procura de PuTTygen no menu Iniciar
  • Clique em Gerar botão e passe o ponteiro do rato
  • Copiar chave pública e fornecer à Vultr
  • Introduza a frase-chave
  • Guardar 🔑Private Chave no local mais seguro.
  • Isto pode ser usado para login no SSH ou SFTP.
linux 2
  • Corre: ssh-keygen -t rsa. Para uma chave mais segura de 4096 bits, execute: ssh-keygen -t rsa -b 4096
  • Prima enter quando lhe for perguntado onde pretende guardar a chave (isto irá utilizar a localização predefinida).
  • Introduza uma frase-chave para a sua chave.
  • Corre cat ~/.ssh/id_rsa.pub – isto dar-lhe-á a chave no formato adequado para colar no painel de controlo.
  • Assegure-se de que faz cópias de segurança dos ~/.ssh/id_rsa ficheiro. Isto não pode ser recuperado se for perdido.

Seleccione a sua chave SSH

Seguindo estas etapas, anexará a sua chave pública à sua nova Instância. Depois, poderá iniciar sessão no SSH utilizando a palavra-passe de texto simples e a chave SSH ambas.

select SSH public key

9. Ligar a regra da Firewall Web à Instância do Servidor

Firewall
  1. Clique em Gerir e criar um novo Grupo Firewall.
  2. Permitir a porta TCP 22 para SSH. 80 para HTTP e 443 HTTPS para IPV4 e IPV6, ambas as regras.
  3. Uma vez feito, ligue o grupo Firewall à sua Instância.
firewall status
Aceitar ligação TCP apenas a partir de 22, 80, 443
Link Firewall Group
Ligar a regra de firewall a uma nova instância

10. Digite Hostname e clique em Deploy Now

server hostname label

Agora, verá a instalação no progresso

Instance Installing

11. Ir para a página de Nova Instância

Copiar endereço IP, nome de utilizador e palavra-passe. A sua porta padrão é 22.

new instance info page

12. Desactivar Password Login

Por razões de segurança, recomenda-se desactivar a autenticação por senha e permitir apenas a autenticação baseada em chaves.

  1. Editar o ficheiro de configuração nano /etc/ssh/sshd_config
  2. Encontrar (CTRL + W) e pesquisar PasswordAuthentication
  3. Mudança de valor de sim para não
  4. Para salvar o tipo, CTRL + O
  5. Reiniciar o serviço SSH usando o comando sudo service ssh restart
disable password auth
Desactivar a autenticação por palavra-passe

A partir da próxima vez, só poderá usar SSH através da chave, conforme mostrado no vídeo.

Para Linux ou Mac, utilizar Terminal com comando como este

ssh [email protected] -p 22 -i id_rsa

Passo 13. Desactivar o UFW

Quando se implementa uma nova instância na VULTR, esta vem com a UFW (Uncomplicated Firewall) activada que mantém todas as portas bloqueadas excepto a porta SSH 22. Isto pode retornar ERR_CONNECTION_REFUSED Error no navegador. Para corrigir isto, eu sugeriria manter o UFW desactivado.

ufw disable

Agora, vou acelerar o processo original para a instalação do WordPress na pilha de LAMP.

Parte C. Implantar WordPress no LAMP Stack

1. Actualização de repositórios

Digite abaixo o comando e prima a tecla enter

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

ou

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

Da próxima vez, usar sempre abaixo o comando de atalho para actualizar.

./update

2. Instalar o MariaDB com segurança

Faça novamente login e entre com o seguinte comando

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Responder às perguntas abaixo

  • Enter current password for root (enter for none): Prima a tecla Enter
  • Switch to unix_socket authentication [Y/n]: Prima N e entre
  • Set root password? [Y/n]: Prima a tecla Enter.
  • New password: Digite a sua palavra-passe, pode usar Dashlane para gerar. Direito de clicar em colar.
  • Re-enter new password: Digite novamente a sua palavra-passe.

Após a definição bem sucedida da senha, verá

Senha actualizada com sucesso!
Recarregar tabelas de privilégios...
... Sucesso!

Além disso, é necessário responder às seguintes perguntas.

  • Remove anonymous users? [Y/n]: Prima Y e entre
  • Disallow root login remotely? [Y/n]: Prima Y e entre
  • Remove test database and access to it? [Y/n]: Prima Y e entre
  • Reload privilege tables now? [Y/n]: Prima Y e entre

3. Criar uma nova base de dados para WordPress

Inicie sessão no MySQL, prima a tecla enter quando pedir a palavra-passe.

mysql -u root -p

Criar uma nova base de dados, e conceder privilégios para utilizar o seu utilizador com palavra-passe. É aqui que o WordPress armazena toda a informação de correio, páginas, temas, plugin, etc.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Onde o seu …
base de dados é wordpress
nome de utilizador é gulshan
a senha é 5pY8CKJxDRJEGQNkX7

Dica: Considere usar uma credencial de login única

4. Instalar PHP 8.2, Apache2 e definir Permission

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Ajustar a configuração PHP

A maioria dos temas e plugins extravagantes requer uma configuração PHP de alta qualidade para funcionar. Por conseguinte, devemos fazer estas alterações.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Instalar Wildcard Let’s Encrypt SSL Certificate

Criar um ficheiro cloudflare.ini dentro de /root/.secrets/directório.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Adicionar código abaixo e guardar usando CTRL+O e sair usando CTRL+X

dns_cloudflare_email = "[email protected]"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Encontre o seu e-mail Cloudflare e chave API Global em “O Meu Perfil” > Tokens API > Chave API Global

chmod 0400 /root/.secrets/cloudflare.ini

Instalar Certbot e DNS Authenticator de acordo com OS e servidor web HTTP

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Obter Certificado SSL Wildcard

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Definir Renovação Automática usando Cron Job

  • Tipo crontab -e
  • Tipo 1 para nano editor
  • Entre abaixo do comando e salve
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Renovação de testes

certbot renew --dry-run

Activar estes módulos úteis

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Criar Directório App para cada sítio WordPress que pretende instalar

mkdir -p /var/www/example.com/public

Este será o seu caminho Raiz do Documento no seu ficheiro de Configuração Apache. A razão de criar o site example.com dentro de www é manter cada site organizado de forma organizada. Segundo, também criei directório público com o objectivo de manter todos os ficheiros centrais do WordPress lá, mas wp-config.php um nível acima (/var/www/example.com/).

7. Criar configuração do Apache2

Isto é importante onde precisa de configurar o seu domínio, como o Apache2 deve tratar os seus pedidos HTTP.

Eliminar ficheiros de configuração de blocos de servidor padrão do Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

Agora, Criar um novo bloco de servidores ficheiros de configuração. Tem de fazer este passo sempre que quiser adicionar um novo WordPress no mesmo servidor.

Por favor, substitua example.com por domínio próprio e não se esqueça de terminar o nome do ficheiro de configuração com a extensão .conf. Caso contrário, não funcionará.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Substituir example.com com domínio próprio
  2. Introduza o código abaixo e prima ctrl+o para guardar e ctrl+x para sair.
##############################################################
#                                                               
# NOTAS: Por favor, faça uma pesquisa e substitua o site example.com para possuir o domínio. 
#                                                                
##############################################################


# Vamos forçar HTTPS non-www
# Se quiser HTTPS www, por favor mantenha https://www.example.com/ na última linha.
# Ou poderá enfrentar um problema de loop redireccionado.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Recommended for Cloudflare users
   # RemoteIPHeader X-Forwarded-For
   
   # Document Root Path (Pay attention to this path to avoid 404)
   DocumentRoot /var/www/example.com/public
   
   # Logs Path is /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Permitir o uso de ficheiro .htaccess para anular a configuração
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Bloquear a execução PHP dentro do Directório de Uploads
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Proteger wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth para segurança adicional
  # Se quiser a página de login HTTP Auth para WordPress, 
  # então considere    descomentar este bloco de código.
  # Se o fizer, deve também gerar um ficheiro .htpasswd.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Bloquear XML-RPC para evitar o ataque DDoS. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Manusear a execução PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>


Para guardar, prima a tecla CTRL+O e Enter. Em seguida, sair do nano editor usando o comando CTRL+X.

Para activar o bloco do servidor, introduza o comando

Antes de correr abaixo do comando, substitua por favor example.com para possuir o domínio.

a2ensite example.com.conf

Configuração de teste (opcional)

apache2 -t

Reiniciar e actualizar

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Instalar ficheiros WordPress

Descarregar ficheiros WordPress em /var/www/example.com/public/ directório e definir permissão.

cd /var/www/example.com/public/ && wget https://pt.wordpress.org/latest-pt_PT.tar.gz && tar -xvzf latest-pt_PT.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest-pt_PT.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

Para actualizar a permissão no futuro, utilize o comando abaixo. Isto irá definir www-data para tudo dentro do directório /var/www/

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Actualização do DNS

Se estiver a alojar o WordPress localmente, quiser contornar o proxy ou quiser realizar uma migração sem tempo de paragem, este passo é útil. Geralmente prefiro no caso da área Static WordPress Dev😉

  • Há duas maneiras de apontar o DNS. Se estiver a migrar para Vultr e quiser testar primeiro localmente, então edite o seu ficheiro de anfitrião e aponte para lá.

Para Windows

  • Ir para propriedades de ‪‪C:\Windows\System32\drivers\etc\hosts
  • Alterar a permissão “Segurança” para controlo total do seu nome de utilizador actual
  • Ncomo pode editar livremente o ficheiro anfitrião sob o seu utilizador do Sistema e guardá-lo.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Um exemplo, é este o aspecto que deve ter

Para Mac ou Linux

Pode editar ficheiros de anfitriões usando este comando sob sudo user.

sudo nano /etc/hosts

Actualização do DNS com Cloudflare

  • Se tudo parecer perfeito e quiser fazer o seu site ao vivo, inicie a sessão no Cloudflare DNS e actualize o novo IP.
Record TypeNameValue
A@IPV4
AAAA@IPV6
CNAMEwwwexample.com

onde @ denota exemplo de domínio example.com

9. Visite o seu nome de domínio para configurar o WordPress

Se quiser manter o domínio da versão não-www para o seu WordPress, então visite a versão não-www.

https://example.com
  • Fornecer credencial de login na base de dados para iniciar a configuração do WordPress
  • Instalação em execução
  • Preencha os detalhes básicos do seu novo site e instale o WordPress.
  • Iniciar sessão no WordPress

Outras coisas necessárias

  • Aumentar a memória de troca para lidar com a carga repentina
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • Certifique-se de utilizar um plugin de Page Caching para manter a carga do servidor sob controlo. Como se trata de uma pilha LAMP, recomendo-lhe o WP Fastest Cache.
  • Manter sempre os backups.
  • Utilize os Serviços SMTP plugin para o envio de e-mail do WordPress, caso contrário não poderá receber a ligação de redefinição de palavra-passe, formulário de contacto 7 mensagens.

Finalmente, a instalação do WordPress foi concluída.

Aprecio muito o vosso precioso tempo na leitura deste artigo. Vejo-o no próximo tutorial!

Deixe um comentário