Ir para o conteúdo

Como instalar o WordPress em um VPS pela linha de comando

por Gabriel

Nesse tutorial vamos aprender a instalar o WordPress do zero em um VPS pela linha de comando, pagando no máximo 20 reais por mês. O foco aqui será montar um blog funcionando perfeitamente, mas sem entrar em detalhes quanto à otimização ou segurança. Será necessário ter um domínio já registrado e um cartão de crédito internacional.

Hospedagem

O primeiro passo é escolher uma hospedagem para o seu site. Em recomendo uma das seguintes:

Além dessas duas que eu recomendo, existem outras como: Linode, Google Cloud, Amazon EC2, Amazon Lightsail, Locaweb.

Depois de se cadastrar em uma empresa de hospedagem e criar um servidor VPS, você vai receber um endereço IPv4, possivelmente um endereço IPv6 e uma senha para se conectar ao servidor via SSH.

Nesse momento você já pode ir nas configurações de DNS do seu domínio e criar a entrada A apontando para o IPv4 e AAAA apontando para o IPv6:

Tipo  | Nome | Valor
--------------------------------
A     |  @   | IPv4
AAAA  |  @   | IPv6
CNAME | www  | dominio.com.br

Conectar ao servidor VPS via SSH pelo Windows

Se você estiver usando o Windows, será necessário instalar um pequeno programa chamado PuTTY.

Depois de baixar e instalar o PuTTY, abra o programa. Em "Host Name (or IP address)", preencha o endereço IP do servidor. Em "Port", deixe 22, que é o padrão. E clique no botão "Open".

PuTTY Windows

Feito isso, deve aparecer uma mensagem de alerta, que diz "The server's host key is not cached in the registry[...]". Clique no botão "Sim".

PuTTY - alerta de segurança

Agora o terminal com a tela preta vai abrir, com uma mensagem:

Login as:

Digite "root" e aperte Enter.

Logo vai pedir o password. Para colar no terminal no PuTTY você deve apertar o botão direito do mouse dentro da tela preta ou pressionar a combinação Shift+Insert. Ctrl+V não funciona aqui. Ao colar uma senha, geralmente nada vai aparecer na tela. Pressione Enter para confirmar.

Conectar ao servidor VPS via SSH pelo Linux

Se estiver usando Linux, é mais fácil ainda. Basta executar o comando:

ssh root@IP

Substitua IP pelo IP do servidor.

Feito isso, deve aparecer a mensagem:

The authenticity of host 'IP (IP)' can't be established.
ECDSA key fingerprint is SHA256:tcGyXtYJ+0iu8+xLGyGTr33cbSo0jpSC+5eKu3/71QE.
Are you sure you want to continue connecting (yes/no)?

Digite "yes" e dê Enter. Em seguida, cole a senha apertando Ctrl+Shift+V e dê Enter.

Começando com o servidor VPS

Em alguns casos deve aparecer a seguinte mensagem:

Changing password for root.
(current) UNIX password:

Nesse caso, informe a senha atual. E vai aparecer a mensagem:

Enter new UNIX password:

Informe uma nova senha. E vai aparecer a mensagem:

Retype new UNIX password:

Informe a nova senha novamente. Se tudo estiver certo, vai aparecer o seguinte texto indicando que você está logado no servidor wordpress como root (administrador):

root@wordpress:~#
Terminal PuTTY

Configuração inicial do VPS

A qualquer momento você pode pressionar Ctrl+L para limpar a tela.

Vamos criar um novo usuário. Substitua "fulano" pelo seu nome, sem espaços:

adduser --gecos '' fulano

Preencha a senha e dê Enter. Repita a senha e dê Enter. Guarde essa senha. A partir de agora só vamos entrar com seu usuário pessoal e essa nova senha.

Agora adicione o usuário ao grupo sudo. Lembre-se: daqui em diante substitua sempre "fulano" pelo usuário que você criou.

usermod -aG sudo fulano

Saia do servidor:

exit

Agora entre novamente, mas dessa vez especifique "fulano" no campo "Login as" no Windows. No Linux, entre com o comando ssh fulano@IP.

Se tudo deu certo, vai aparecer na tela:

fulano@wordpress:~$

Digite date para ver a data e hora atuais. Você vai notar que a hora está em outro fuso horário.

Digite o comando para mudar para o fuso horário de Brasília:

sudo ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

Sempre que aparecer a mensagem...

[sudo] password for fulano:

...digite a senha do seu usuário.

E digite date novamente para verificar que agora o fuso horário está correto.

Criando e editando arquivos com nano

Vamos fazer um teste para aprendermos a criar, editar e excluir um arquivo de texto. Vamos criar o arquivo teste.txt. Para isso digite:

nano teste.txt

E digite alguma coisa qualquer. Depois pressione Ctrl+X para fechar. Vai aparecer a pergunta:

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?

Digite "y" e dê Enter para salvar o arquivo.

Novamente vamos abrir o arquivo para edição:

nano teste.txt

Veja o texto que você digitou. Dessa vez não modifique o texto e pressione Ctrl+X para fechar. Nenhuma pergunta é feita e o terminal volta ao estado anterior.

Se quiser apenas ver o conteúdo do arquivo, digite:

cat teste.txt

Para apagar o arquivo, digite:

rm teste.txt

Tente ler o arquivo novamente:

cat teste.txt

E vai aparecer a mensagem indicando que o arquivo não existe:

cat: teste.txt: No such file or directory

Em breve vamos usar o nano para editar alguns arquivos de configuração, então é bom que você já esteja treinado.

Instalando o LEMP

Vamos instalar o nginx como servidor HTTP, MariaDB como banco de dados, PHP 7 e Let's Encrypt para certificado TLS (https):

# Adicionar chave para o repositório do nginx
wget -qO - http://nginx.org/keys/nginx_signing.key | sudo apt-key add -

# Adicionar chave para o repositório do nginx
sudo sh -c "echo 'deb [arch=amd64] http://nginx.org/packages/\
mainline/ubuntu/ xenial nginx' > /etc/apt/sources.list.d/nginx.list"

# Adicionar repositório do PHP
sudo add-apt-repository -y ppa:ondrej/php

# Adicionar chave para o repositório do MariaDB
sudo apt-key adv --recv-keys --keyserver \
hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

# Adicionar repositório do MariaDB
sudo sh -c "echo 'deb [arch=amd64] http://nyc2.mirrors.\
digitalocean.com/mariadb/repo/10.3/ubuntu xenial main' > \
/etc/apt/sources.list.d/mariadb.list"

# Adicionar repositório do Let's Encrypt
sudo add-apt-repository -y ppa:certbot/certbot

# Atualizar lista de repositórios
sudo apt-get update

# Instalar alguns pacotes necessários
sudo apt-get install -y curl zip unzip p7zip-full htop ntp \
certbot python3-pyasn1

# Remover alguns pacotes
sudo apt-get purge -y unattended-upgrades snapd

# Atualizar todos os pacotes
sudo apt-get dist-upgrade -y

Aguarde alguns minutos. Caso apareça algum erro do tipo The following packages have unmet dependencies, digite:

sudo apt-get -f install

E continue a instalação:

# Instalar nginx
sudo apt-get install -y nginx

sudo rm -f /etc/nginx/conf.d/default.conf

# Instalar PHP
sudo apt-get install -y php7.3-{fpm,mysql,mbstring,curl,gd,zip,xml}

# Instalar MariaDB
sudo apt-get install -y mariadb-server

Logo depois, vai aparecer a mensagem:

While not mandatory, it is highly recommended that you set a password
for the MariaDB administrative "root" user.

If this field is left blank, the password will not be changed.

New password for the MariaDB "root" user:

Informe uma senha administrativa para o banco de dados e pressione Enter. Anote bem essa senha. Depois repita a senha e dê Enter novamente.

Falando em senhas, já temos três no momento que você deve ter anotado:

senha root                   **********
senha fulano                 **********
senha do banco de dados root **********

Use senhas fortes e diferentes para cada função.

E continue com a configuração do banco de dados:

# Instalação segura
sudo mysql_secure_installation

Vai aparecer:

Enter current password for root (enter for none):

E informe a sua senha root do banco de dados criada anteriormente.

Em seguinte vai aparecer:

Change the root password? [Y/n]

Digite "n" e depois Enter. Então vai aparecer:

Remove anonymous users? [Y/n]

Digite "y" e depois Enter. Então vai aparecer:

Disallow root login remotely? [Y/n]

Digite "y" e depois Enter. Então vai aparecer:

Remove test database and access to it? [Y/n]

Digite "y" e depois Enter. Então vai aparecer:

Reload privilege tables now? [Y/n]

Digite "y" e depois Enter. Então vai aparecer:

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Pronto. Agora vamos criar um usuário comum no banco de dados e um banco de dados para o WordPress. Digite o comando a seguir, mas substitua SENHA_ROOT_DB pela senha criada anteriormente e SENHA_DB por um nova senha, que a partir de agora vamos chamar apenas de senha do banco de dados. Substitua também "fulano", por um nome de usuário, que pode ser o mesmo usuário atual que você está usando. Se quiser, substitua "wordpress" por outro nome do banco de dados.

db_root_pw=SENHA_ROOT_DB
db_pw=SENHA_DB
db_wordpress=wordpress
db_user=fulano

E crie o usuário e o banco de dados do WordPress:

mysql -u root -p$db_root_pw -e "CREATE USER $db_user@localhost IDENTIFIED BY '$db_pw'"
mysql -u root -p$db_root_pw -e "GRANT ALL PRIVILEGES ON *.* TO $db_user@localhost"
mysql -u root -p$db_root_pw -e "FLUSH PRIVILEGES"
mysql -u root -p$db_root_pw -e "CREATE DATABASE $db_wordpress"

Agora vamos precisar editar um arquivo do nginx usando o nano. Para isso, digite:

sudo nano /etc/nginx/nginx.conf

O início do arquivo deve ser mais ou menos:

user  nginx;
worker_processes  1;

Edite o início do arquivo, substituindo "nginx" por "www-data":

user  www-data;
worker_processes  1;

E salve o arquivo.

A partir de agora, em todos os casos, substitua "exemplo.com.br" pelo seu domínio.

Digite o comando a seguir e não esqueça da substituição nesse comando e nos textos que você vai colar:

sudo nano /etc/nginx/conf.d/exemplo.com.br.conf

E cole o código:

server {
    listen [::]:80;
    listen 80;

    server_name exemplo.com.br;
    root /home/fulano/sites/exemplo.com.br/www;

    index index.php;

    location ~ \.php$ {
        try_files $uri =404;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

Salve o arquivo. Para refrescar sua memória, você deve pressionar Ctrl+X, depois digitar Y e em seguida dar Enter.

Agora vamos criar a pasta do site, onde vão ficar os arquivos do WordPress:

# Criar pasta do site
mkdir ~/sites
mkdir ~/sites/exemplo.com.br
mkdir ~/sites/exemplo.com.br/www

Vamos criar um arquivo de teste:

echo "Funcionando!" > ~/sites/exemplo.com.br/www/index.php

Vamos reiniciar o serviço do nginx:

sudo service nginx restart

Se o DNS já estiver configurado perfeitamente, basta digitar no browser o seu domínio e ver o resultado. Se aparecer "Funcionando!" na tela, significa que você seguiu todos os passos corretamente até o momento. Parabéns!

Site funcionando

OK. Agora temos que configurar o certificado TLS, para que o site seja acessado com segurança via HTTPS.

Instalando o certificado SSL

# Instalar certificado SSL
mkdir ~/.letsencrypt
mkdir ~/.letsencrypt/config
mkdir ~/.letsencrypt/lib
mkdir ~/.letsencrypt/log

certbot \
    --config-dir ~/.letsencrypt/config \
    --logs-dir ~/.letsencrypt/log \
    --work-dir ~/.letsencrypt/lib \
    certonly \
    --cert-name mycert --webroot \
    -w ~/sites/exemplo.com.br/www \
    -d exemplo.com.br -d www.exemplo.com.br

Volto a enfatizar: não esqueça de substituir "exemplo.com.br" pelo seu domínio.

Vai aparecer a pergunta:

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):

Informe seu e-mail e pressione Enter. Depois vai aparecer:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel:

Pressione A e dê Enter. Em seguida vai aparecer:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)

Pressione N e dê Enter. Se tudo der certo, vai aparecer:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for exemplo.com.br
Using the webroot path /home/fulano/sites/exemplo.com.br/www for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Non-standard path(s), might not work with crontab installed by your operating system package manager

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at: [....]

Agora nosso site já possui HTTPS. Mas ainda é necessário configurar alguns arquivos. Vamos apagar e reconfigurar o arquivo exemplo.com.br.conf do nginx, dessa vez ajustando algumas configurações para habilitar o acesso via HTTPS:

sudo truncate -s 0 /etc/nginx/conf.d/exemplo.com.br.conf

sudo nano /etc/nginx/conf.d/exemplo.com.br.conf

E cole o conteúdo:

server {
    listen [::]:80;
    listen 80;
    access_log off;
    server_name exemplo.com.br;

    return 301 https://exemplo.com.br$request_uri;
}

server {
    listen [::]:80;
    listen 80;
    access_log off;
    server_name www.exemplo.com.br;

    return 301 https://www.exemplo.com.br$request_uri;
}

server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    access_log off;
    server_name www.exemplo.com.br;
    include conf.d/ssl.conf;

    return 301 https://exemplo.com.br$request_uri;
}

server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;

    server_name exemplo.com.br;
    root /home/fulano/sites/exemplo.com.br/www;

    index index.php;

    include conf.d/ssl.conf;

    location ~ \.php$ {
        try_files $uri =404;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

Salve o arquivo. Agora vamos criar o arquivo ssl.conf:

sudo nano /etc/nginx/conf.d/ssl.conf

Cole o conteúdo:

ssl_certificate     /home/fulano/.letsencrypt/config/live/mycert/fullchain.pem;
ssl_certificate_key /home/fulano/.letsencrypt/config/live/mycert/privkey.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_buffer_size 1400;

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /home/fulano/.letsencrypt/config/live/mycert/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

Reinicie o nginx:

sudo service nginx restart

Agora volte ao navegador e digite seu domínio da barra de endereços. Se tudo der certo, vai aparecer assim no Google Chrome:

Site https funcionando no Google Chrome

E assim no Firefox. Note o cadeado verde!

Site https funcionando no Firefox

Importante notar também que o endereço começando com www deve redirecionar para o domínio sem www:

www.exemplo.com.br -> exemplo.com.br

Agora já podemos apagar o arquivo de teste:

rm ~/sites/exemplo.com.br/www/index.php

O que falta nesse momento? O principal que é justamente baixar e instalar o WordPress em português do Brasil.

Instalando o WordPress

# Baixar WordPress
cd ~/sites/exemplo.com.br/www

wget https://br.wordpress.org/latest-pt_BR.tar.gz

# Descompactar WordPress
tar xzf latest-pt_BR.tar.gz

mv wordpress/* ./

rm latest-pt_BR.tar.gz

rmdir wordpress

sudo chown fulano:www-data ~/sites/exemplo.com.br/www

Agora vamos voltar ao browser e digitar o endereço do seu site. Se aparecer a tela abaixo, significa que o WordPress foi instalado perfeitamente. Basta configurá-lo:

Tela do WordPress

Clique no botão "Vamos lá". Na tela seguinte preencha:

Em "Nome do banco de dados", escolha o nome do banco de dados que você criou, que deveria ser "wordpress".

Em "Nome de usuário", preencha o usuário do banco de dados, que deveria ser "fulano".

Em "Servidor do banco de dados", deixe o padrão, que é "localhost".

Em "Prefixo da tabela", deixe o padrão, que é "wp_".

Clique no botão "Enviar".

Se tudo ocorreu bem, aparece a mensagem na tela:

Muito bem! Você concluiu esta parte da instalação. Agora o WordPress pode se comunicar com seu banco de dados. Se você estiver pronto, é hora de…

É só clicar no botão "Instalar".

Se tudo ocorreu conforme o esperado, você vai entrar na tela de boas-vindas.

Em "Título do site", escolha um nome para o seu site. Tudo aqui pode ser alterado mais tarde, então não se preocupe por enquanto.

Em "Nome de usuário", escolha um nome de usuário para o WordPress. Na hora de fazer login no WordPress você vai precisar desse nome e da senha a seguir.

Em "Senha", escolha uma senha para o WordPress.

Em "O seu e-mail", informe o seu e-mail.

Deixe a caixinha "Evitar que mecanismos de busca indexem este site" desmarcada.

E por fim clique no botão "Instalar WordPress".

Só para recapitular, até o momento temos 5 senhas:

senha root                   **********
senha fulano                 **********
senha do banco de dados root **********
senha do banco de dados      **********
senha do WordPress           **********

Uma vez que a instalação esteja completa, vai aparecer a tela:

Sucesso!
O WordPress foi instalado. Obrigado e divirta-se!

Agora volte ao terminal pela última vez para ajustar algumas permissões de arquivos. Edite o arquivo wp-config.php:

nano ~/sites/exemplo.com.br/www/wp-config.php

Logo acima do texto:

// ** Configurações do MySQL - Você pode pegar estas informações com o serviço de hospedagem ** //
/** O nome do banco de dados do WordPress */
define( 'DB_NAME', 'wordpress' );

Adicione a linha:

define('FS_METHOD', 'direct');

Ou seja, o arquivo vai ficar assim:

[...]
 * @link https://codex.wordpress.org/pt-br:Editando_wp-config.php
 *
 * @package WordPress
 */

define('FS_METHOD', 'direct');

// ** Configurações do MySQL - Você pode pegar estas informações com o serviço de hospedagem ** //
/** O nome do banco de dados do WordPress */
define( 'DB_NAME', 'wordpress' );

/** Usuário do banco de dados MySQL */
define( 'DB_USER', 'fulano' );
[...]

E salve o arquivo. Não esqueça que você pode maximizar a janela do terminal para facilitar a visualização.

Agora digite os comandos:

sudo find ~/sites/exemplo.com.br/www -exec chown fulano:www-data {} \;
find ~/sites/exemplo.com.br/www -type d -exec chmod 775 {} \;
find ~/sites/exemplo.com.br/www -type f -exec chmod 664 {} \;

Pronto! Está quase acabando. Só faltando configurar o cronjob (agendador de tarefas) para renovar automaticamente o certificado TLS. Para isso, entre:

crontab -e

Deve aparecer a mensagem:

no crontab for fulano - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:

Digite 2 e dê Enter.

Vai iniciar a edição pelo nano. Pressione a tecla Page Down para ir para o final do arquivo.

Digite o código:

# Renovar certificados SSL
10 3 * * * certbot --config-dir /home/fulano/.letsencrypt/config --logs-dir /home/fulano/.letsencrypt/log --work-dir /home/fulano/.letsencrypt/lib renew -q

Mais um vez: não esqueça de substituir sempre "fulano" pelo seu usuário. Esse cronjob vai servir para tentar renovar o certificado todo dia às 3:10 AM.

Feche com Ctrl+X. Pressione Y e depois Enter.

Agora outro cronjob, dessa vez para o usuário root:

sudo crontab -e

Mais uma vez, pressione Page Down para ir para o final do arquivo e cole o código:

# Reload nginx para atualizar a validade do certificado SSL
20 3 * * * /etc/init.d/nginx reload

Feche com Ctrl+X. Pressione Y e depois Enter. Isso vai reiniciar o nginx todo dia às 3:20 AM, para o caso de ter renovado o certificado TLS.

Vamos ativar o firewall:

# Habilitar firewall para HTTP/HTTPS/SSH
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw --force enable

Um lembrete importante: por padrão o limite de upload é de 2MB. Caso queira aumentar para 10MB, é necessário editar 2 arquivos.

Edite o arquivo /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf

Insira a seguinte linha:

client_max_body_size 10M;

Abaixo de:

http {

Ou seja, o arquivo vai ficar assim:

user  www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    client_max_body_size 10M;    # <--- adicionamos essa linha
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    [...]

É necessário também editar o arquivo php.ini. Dessa vez, vamos fazer uma substituição direta com o comando sed:

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php/7.3/fpm/php.ini

Por garantia vamos reiniciar nosso servidor:

sudo reboot

Pronto! Nossos códigos no terminal já terminaram. Se estiver usando o Windows, já pode fechar o PuTTY. Se estiver usando Linux, pode fechar o terminal.

Daqui para frente, vamos mexer apenas diretamente no browser, no painel do WordPress.

Digite o endereço do seu blog mais /wp-admin no navegador, algo como exemplo.com.br/wp-admin. Deve aparecer a famosa tela de login do WordPress:

Tela do WordPress

Digite seu nome de usuário ou e-mail e sua senha do WordPress e clique no botão "Acessar".

Se estiver certo, você vai entrar na tela do WordPress.

Agora é com você. Você tem seu próprio site WordPress com HTTPS, pagando apenas 20 reais por mês! Instale plugins, seu tema favorito, ajuste algumas configurações e comece a blogar. Não se esqueça de que você será o responsável pela administração e atualização do seu servidor.

Blog WordPress exemplo