Se você está lendo este post aqui, no meu site, é exatamente sobre ele que vamos falar! E sim, esse é um ótimo exercício de metalinguagem: um post em um site explicando como o próprio site foi feito. Acho isso genial (ou pelo menos curioso o suficiente para ser o primeiro post).
A motivação principal era simples: eu queria um espaço para organizar meu portfólio, mostrar alguns projetos e guardar qualquer coisa que achasse interessante ou útil.
Neste primeiro tutorial, vou deixar de lado os detalhes sobre o registro de domínio e a criação da VM, mas só pra você não ficar totalmente perdido: usei o registro.br e uma VM gratuita da Oracle Cloud como servidor (você também pode preferir usar AWS, Azure, GCP ou outro).
Com isso, esse site foi construído com WordPress rodando sobre Ubuntu 24.04 LTS com Apache, PHP 8.3.6 e MySQL 8.0. A seguir, o passo a passo para fazer tudo funcionar!
1. Instale as dependências
sudo apt update
sudo apt upgrade
sudo apt install nano apache2 mysql-server ghostscript php php-mysql libapache2-mod-php php-bcmath php-curl php-igbinary php-json php-imagick php-intl php-mbstring php-xml php-zip certbot python3-certbot-apache
Em seguida habilite o Apache e MySQL para iniciar automaticamente com o sistema.
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql
e por último, siga os passos para instalar o MySQL em modo seguro.
sudo mysql_secure_installation
2. Configure o banco de dados
sudo mysql
Dentro do prompt do MySQL (mysql>), execute os comandos abaixo linha por linha:
OBS: Substitua o que for necessário, mas principalmente a senha.
CREATE DATABASE wp_db;
CREATE USER wp_user@localhost IDENTIFIED BY 'sua-senha';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON wp_db.* TO wp_user@localhost;
FLUSH PRIVILEGES;
EXIT;
3. Instale o WordPress
Crie o diretório, altere a propriedade, baixe e extraia a última versão do WP, diretamente do wordpress.org
sudo mkdir -p /srv/www
sudo chown www-data: /srv/www
curl https://wordpress.org/latest.tar.gz | sudo -u www-data tar zx -C /srv/www
4. Configure o Apache
Crie o arquivo
sudo nano /etc/apache2/sites-available/wordpress.conf
Com o seguinte conteúdo:
<VirtualHost *:80>
ServerName seudominio.com.br
ServerAlias www.seudominio.com.br
Redirect permanent / https://seudominio.com.br/
</VirtualHost>
<VirtualHost *:443>
ServerName seudominio.com.br
ServerAlias www.seudominio.com.br
DocumentRoot /srv/www/wordpress
<Directory /srv/www/wordpress>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
</Directory>
<Directory /srv/www/wordpress/wp-content>
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
Habilite o site e os módulos necessários, desabilite o site padrão e reinicie o Apache:
sudo a2ensite wordpress
sudo a2enmod rewrite
sudo a2dissite 000-default
sudo service apache2 reload
sudo systemctl restart apache2
5. Obtenha um certificado SSL
Obs: Essa parte só deve funcionar se o VirtualHost do Apache estiver configurado corretamente com um domínio válido apontando para seu servidor.
Se você ainda não tem um domínio, pode pular essa etapa e voltar nela mais tarde.
sudo certbot --apache
E siga as instruções na tela, não tem como ser mais fácil que isso
6. Configure o WordPress para se conectar com o banco de dados
Copie o arquivo de configuração exemplo para começar:
sudo -u www-data cp /srv/www/wordpress/wp-config-sample.php /srv/www/wordpress/wp-config.php
Edite o arquivo de configuração:
sudo nano /srv/www/wordpress/wp-config.php
No editor, localize as linhas onde são definidas as credenciais do banco de dados e substitua pelo usuário, senha, nome do banco e host criados na etapa anterior:
define('DB_NAME', 'wp_db');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'sua-senha');
define('DB_HOST', 'localhost');
Encontre o seguinte:
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
Substitua essas linhas pelo conteúdo aleatório desse link:
https://api.wordpress.org/secret-key/1.1/salt/
OBS: Este endereço gera chaves aleatórias para garantir maior segurança ao seu site, prevenindo ataques baseados em segredos conhecidos.
7. Teste e finalize a instalação
Nessa etapa, se tudo tiver dado certo, você deve ser capaz acessar http://seudominio.com.br/wp-login.php e seguir as etapas para configurar o seu usuário, e acessar o dashboard do seu site!
8. Solução de problemas
1. Aqui está uma nota para quem estiver usando iptables.
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# Permite conexões TCP novas na porta 80 (HTTP).
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
# Permite conexões TCP novas na porta 443 (HTTPS).
sudo iptables-save > iptables.save
# Salva a configuração atual do iptables em um arquivo.
sudo iptables-restore < iptables.save
# Restaura as regras do iptables a partir do arquivo salvo.
sudo sh -c '/sbin/iptables-save > /etc/iptables/rules.v4'
# Salva as regras atuais do iptables para carregamento automático.
cat /etc/iptables/rules.v4
# Exibe o conteúdo do arquivo com regras salvas do iptables.
sudo iptables -L
# Lista as regras atuais do iptables.
sudo iptables -F
# Limpa (remove) todas as regras atuais do iptables.
2. Dependendo da quantidade de memória da sua VM o MySQL pode pesar em algumas operações, e travar o servidor. (senti isso com aVM.Standard.E2.1.Micro da OCI que tem 1GB).
Abaixo uma nota para adicionar swap e contornar a falta de memória RAM.
sudo fallocate -l 2G /swapfile
# Cria arquivo de 2 GB.
sudo chmod 600 /swapfile
# Protege o arquivo.
sudo mkswap /swapfile
# Formata o arquivo para swap.
sudo swapon /swapfile
# Ativa o swap.
sudo nano /etc/fstab
# Edita arquivo para montar swap no boot.
/swapfile none swap sw 0 0
# adicionar essa linha para ativar swap automaticamente (no arquivo acima).
3. Por padrão, o tamanho máximo de upload de arquivo para o site é de 2 MB, e isso é uma limitação do PHP.
php -i | grep "Loaded Configuration File"
# Veja qual é o arquivo de configuração que está sendo utilizado
sudo nano /etc/php/8.3/apache2/php.ini
# Procure no arquivo e altere os valores desejados.
# upload_max_filesize = 2M
Pronto! com esse breve tutorial você consegue montar um site básico com WordPress no Ubuntu. Depois é só fazer os ajustes que precisar. Essa é mais uma anotação para mim no futuro, mas pode ser útil para quem estiver lendo também. Qualquer dúvida, é só chamar 😀
Deixe um comentário