Instalação Craft CMS · 22 min read · Sep 11, 2025

Como Instalar o Craft CMS no Rocky Linux 9

Craft CMS é um sistema de gerenciamento de conteúdo de código aberto para criar websites. É um CMS seguro e escalável com um extenso ecossistema de plugins e plugins gratuitos e pagos de alta qualidade. Possui um painel de controle intuitivo e amigável para criação de conteúdo e tarefas administrativas. É construído sobre o framework Yii PHP. O motor de templates Twig alimenta seu sistema de templates. Ele pode trabalhar com bancos de dados MySQL e PostgreSQL para armazenamento e usa o banco de dados Redis para cache e armazenamento de sessões.

Neste tutorial, você aprenderá como instalar o Craft CMS em um servidor Debian 12. Você também aprenderá como habilitar o Redis para trabalhar com ele e como fazer backup e restaurar um site feito usando o Craft CMS.

Pré-requisitos

  • Um servidor rodando Rocky Linux 9 com um mínimo de 1 GB de RAM.
  • Um usuário não-root com privilégios sudo.
  • Um Nome de Domínio Totalmente Qualificado (FQDN) como craftcms.example.com apontando para seu servidor.
  • Uma conta SMTP com um serviço de e-mail como Amazon SES ou Mailgun.
  • Tudo atualizado. $ sudo dnf update
  • Alguns pacotes essenciais são necessários para o tutorial e para o Craft CMS funcionar. Alguns deles já estarão no seu servidor. $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y

Passo 1 - Configurar o Firewall

O primeiro passo é configurar o firewall. O Rocky Linux usa o Firewalld Firewall. Verifique o status do firewall.

$ sudo firewall-cmd --state
running

O firewall funciona com diferentes zonas, e a zona pública é a padrão que usaremos. Liste todos os serviços e portas ativos no firewall.

$ sudo firewall-cmd --permanent --list-services

Deve mostrar a seguinte saída.

cockpit dhcpv6-client ssh

Permita as portas HTTP e HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Verifique novamente o status do firewall.

$ sudo firewall-cmd --permanent --list-services

Você deve ver uma saída semelhante.

cockpit dhcpv6-client http https ssh

Recarregue o firewall para habilitar as alterações.

$ sudo firewall-cmd --reload

Passo 2 - Instalar o Nginx

O Rocky Linux 9 vem com uma versão mais antiga do Nginx. Você precisa usar o repositório oficial do Nginx para instalar a versão mais recente.

Crie e abra o arquivo /etc/yum.repos.d/nginx.repo para edição.

$ sudo nano /etc/yum.repos.d/nginx.repo

Cole o seguinte código nele.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Uma vez que você terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Instale o Nginx.

$ sudo dnf install nginx -y

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.24.0

Habilite e inicie o serviço do servidor Nginx.

$ sudo systemctl enable nginx --now

Verifique o status do serviço.

$ sudo systemctl status nginx
? nginx.service - nginx - servidor web de alto desempenho
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-12-04 14:01:19 UTC; 3s ago
       Docs: http://nginx.org/en/docs/
    Process: 59396 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 59397 (nginx)
      Tasks: 2 (limit: 10866)
     Memory: 1.9M
        CPU: 10ms
     CGroup: /system.slice/nginx.service
             ??59397 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??59398 "nginx: worker process"

Passo 3 - Instalar PHP e extensões

O Rocky Linux 9 vem com PHP 8.1 por padrão. Para sempre ficar na versão mais recente do PHP ou se você quiser instalar várias versões do PHP, precisamos usar o repositório REMI.

O primeiro passo é pegar o repositório Epel.

$ sudo dnf install epel-release -y

Em seguida, instale o repositório Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Verifique os streams de PHP disponíveis.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

A versão padrão é 8.1. No momento da redação deste tutorial, o Craft CMS é compatível com PHP 8.2. Portanto, habilite o repositório PHP 8.2 do Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Instale o PHP e suas extensões necessárias para o Craft CMS.

$ sudo dnf install php php-cli php-common php-json php-gmp php-fpm php-xmlrpc php-bcmath php-imagick php-curl php-zip php-gd php-mysql php-xml php-mbstring php-xmlrpc php-intl php-pgsql

Verifique a versão do PHP instalada.

$ php --version
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.13, Copyright (c), by Zend Technologies

Habilite e inicie o serviço PHP-FPM.

$ sudo systemctl enable php-fpm --now

Verifique o status do serviço PHP.

$ sudo systemctl status php-fpm
? php-fpm.service - O Gerenciador de Processos PHP FastCGI
     Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-12-04 14:05:58 UTC; 6s ago
   Main PID: 61410 (php-fpm)
     Status: "Pronto para lidar com conexões"
      Tasks: 6 (limit: 10866)
     Memory: 16.6M
        CPU: 96ms
     CGroup: /system.slice/php-fpm.service
             ??61410 "php-fpm: master process (/etc/php-fpm.conf)"
             ??61411 "php-fpm: pool www"
             ??61412 "php-fpm: pool www"
             ??61413 "php-fpm: pool www"
             ??61414 "php-fpm: pool www"
             ??61415 "php-fpm: pool www"

Passo 4 - Configurar PHP-FPM

Abra php.ini para edição.

$ sudo nano /etc/php.ini

Para definir os tamanhos de upload de arquivos, altere os valores das variáveis upload_max_filesize e post_max_size. Este valor decide o tamanho do arquivo que você pode enviar para o Craft CMS. Para nossos propósitos, estamos definindo em 128 MB. Você pode definir conforme sua preferência.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php.ini

Configure o limite de memória do PHP dependendo dos recursos e requisitos do seu servidor.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini

Abra o arquivo /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Precisamos definir o usuário/grupo Unix dos processos PHP como nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere para nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Encontre as linhas listen.owner = nobody, listen.group = nobody, listen.mode = 0660 no arquivo e altere-as da seguinte forma após descomentá-las.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Reinicie o processo PHP-fpm. Certifique-se de ter o Nginx instalado antes de reiniciar o serviço PHP, caso contrário, falhará, pois não conseguirá encontrar o grupo nginx.

$ sudo systemctl restart php-fpm

Altere o grupo do diretório de sessões PHP para Nginx.

$ sudo chgrp -R nginx /var/lib/php/session

Passo 5 - Instalar o Composer

O Composer atua como um gerenciador de dependências para PHP. Ele também é o gerenciador de dependências do framework PHP Laravel, que é o que alimenta o Craft CMS.

Baixe o script de instalação do Composer.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Verifique o instalador baixado.

$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Você receberá a seguinte saída.

Installer verified

Execute o script de instalação para baixar a versão mais recente do Composer.

$ php composer-setup.php

Remova o script de instalação.

$ php -r "unlink('composer-setup.php');"

Mova o arquivo binário baixado para o diretório /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Confirme a instalação.

$ composer --version
Composer version 2.6.5 2023-10-06 10:11:52

Passo 6 - Instalar e Configurar o PostgreSQL

O Rocky Linux 9 vem com PostgreSQL 13 por padrão. No entanto, usaremos o PostgreSQL 16 a partir de seu repositório oficial.

Instale o repositório RPM do PostgreSQL.

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Desative o módulo PostgreSQL embutido.

$ sudo dnf -qy module disable postgresql

Agora, você pode instalar o PostgreSQL usando o comando abaixo.

$ sudo dnf install -y postgresql16-server postgresql16-contrib

O pacote postgresql-contrib contém algumas utilidades extras.

Verifique a versão.

$ psql --version
psql (PostgreSQL) 16.1

Inicialize o banco de dados PostgreSQL.

$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Initializing database ... OK

Habilite o serviço PostgreSQL.

$ sudo systemctl enable postgresql-16

Inicie o serviço PostgreSQL.

$ sudo systemctl start postgresql-16

Verifique o status do serviço PostgreSQL.

$ sudo systemctl status postgresql-16
? postgresql-16.service - servidor de banco de dados PostgreSQL 16
     Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
     Active: active (running) since Mon 2023-12-04 22:28:34 UTC; 2s ago
       Docs: https://www.postgresql.org/docs/16/static/
    Process: 72143 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 72148 (postgres)
      Tasks: 7 (limit: 10866)
     Memory: 17.4M
        CPU: 45ms
     CGroup: /system.slice/postgresql-16.service
             ??72148 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ??72149 "postgres: logger "
             ??72150 "postgres: checkpointer "
             ??72151 "postgres: background writer "
             ??72153 "postgres: walwriter "
             ??72154 "postgres: autovacuum launcher "
             ??72155 "postgres: logical replication launcher "

Dec 04 22:28:33 craftcms.nspeaks.com systemd[1]: Starting PostgreSQL 16 database server...
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] LOG:  redirecting log output to logging collector process
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] HINT:  Future log output will appear in directory "log".
Dec 04 22:28:34 craftcms.nspeaks.com systemd[1]: Started PostgreSQL 16 database server.

Você pode ver que o serviço está habilitado e em execução por padrão.

Inicie o shell do PostgreSQL.

$ sudo -i -u postgres psql

Crie o banco de dados Craft CMS.

postgres=# CREATE DATABASE craftcms;

Crie o usuário Craft CMS e escolha uma senha forte.

postgres-# CREATE USER craftuser WITH PASSWORD 'Your_Password';

Altere o proprietário do banco de dados para o usuário Craft CMS.

postgres-# ALTER DATABASE craftcms OWNER TO craftuser;

Conceda todos os privilégios no banco de dados ao usuário Craft CMS.

postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;

Saia do shell.

postgres-# \q

Verifique se suas credenciais funcionam.

$ psql --username craftuser --password --host localhost craftcms
Password:
psql (16.1)
Type "help" for help.

craftcms=>

Saia do shell digitando \q.

Passo 7 - Instalar e Configurar o Redis

O Rocky Linux 9 vem com Redis 6.2 por padrão. No entanto, usaremos o Redis 7.0 que instalaremos usando o Repositório Remi.

Como já instalamos o repositório Remi ao instalar o PHP, podemos pular essa parte. Liste todos os módulos Redis disponíveis.

$ sudo dnf module list redis
Rocky Linux 9 - AppStream
Name                                       Stream             Profiles                       Summary
redis                                      7                  common [d]                     Redis persistent key-value database

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                                       Stream             Profiles                       Summary
redis                                      remi-5.0           common [d]                     Redis persistent key-value database
redis                                      remi-6.0           common [d]                     Redis persistent key-value database
redis                                      remi-6.2           common [d]                     Redis persistent key-value database
redis                                      remi-7.0           common [d]                     Redis persistent key-value database
redis                                      remi-7.2           common [d]                     Redis persistent key-value database

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Habilite o módulo Redis 7.2 mais recente.

$ sudo dnf module enable -y redis:remi-7.2

Instale o Redis.

$ sudo dnf install redis

Verifique a versão.

$ redis-server --version
Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=7bd3173e4e30c3e4

Habilite o serviço Redis.

$ sudo systemctl enable redis

Inicie o serviço Redis.

$ sudo systemctl start redis

Verifique o status do serviço.

$ sudo systemctl status redis
? redis.service - Redis persistent key-value database
     Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/redis.service.d
             ??limit.conf
     Active: active (running) since Mon 2023-12-04 22:36:25 UTC; 1min 32s ago
   Main PID: 72877 (redis-server)
     Status: "Pronto para aceitar conexões"
      Tasks: 5 (limit: 10866)
     Memory: 7.5M
        CPU: 176ms
     CGroup: /system.slice/redis.service
             ??72877 "/usr/bin/redis-server 127.0.0.1:6379"

Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Starting Redis persistent key-value database...
Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Started Redis persistent key-value database.

O próximo passo é adicionar autenticação ao servidor Redis. Desde a versão 6.0 do Redis, a melhor maneira de adicionar autenticação é usar ACL (Listas de Controle de Acesso). Abra o arquivo /etc/redis/redis.conf para edição.

$ sudo nano /etc/redis/redis.conf

Encontre a linha # aclfile /etc/redis/users.acl e descomente-a removendo o hash (#) na frente dela.

aclfile /etc/redis/users.acl

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Em seguida, crie e abra o arquivo /etc/redis/users.acl para edição.

$ sudo nano /etc/redis/users.acl

Adicione a seguinte linha a ele.

user navjot on +@all ~* >yourpassword

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Reinicie o servidor Redis para implementar a mudança.

$ sudo systemctl restart redis

Abra o shell do Redis.

$ redis-cli

Use o comando PING. Ele dará um erro de autenticação.

127.0.0.1:6379> PING
(error) NOAUTH Authentication required.

Use o comando AUTH para fazer login.

127.0.0.1:6379> AUTH navjot yourpassword
OK

Use o comando PING novamente.

127.0.0.1:6379> PING
OK

Saia do shell.

127.0.0.1:6379> exit

Você também precisará instalar a extensão PHP Redis.

$ sudo apt install php-redis

Passo 8 - Instalar o Craft CMS

Antes de instalar o Craft CMS, você pode verificar se atende a todos os requisitos do servidor para executá-lo usando o seguinte comando.

$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash

Você receberá a seguinte saída.

Running Craft Server Check…

Craft CMS Requirement Checker

This script checks if your web server configuration meets the requirements for running a Craft CMS installation.
It checks if the server is running the right version of PHP, if appropriate PHP extensions have been loaded,
and if php.ini file settings are correct.


Results:
--------

PHP 8.2+: OK

BCMath extension: OK

ctype extension: OK

cURL extension: OK

DOM extension: OK

Fileinfo extension: OK

GD extension or ImageMagick extension: OK

iconv extension: OK

Intl extension: OK

JSON extension: OK

Multibyte String extension (with Function Overloading disabled): OK

OPcache extension (with save_comments): OK

OpenSSL extension: OK

PCRE extension (with UTF-8 support): OK

PDO extension: OK

Reflection extension: OK

SPL extension: OK

Zip extension: OK

ignore_user_abort(): OK

password_hash(): OK

proc_close(): OK

proc_get_status(): OK

proc_open(): OK

proc_terminate(): OK

allow_url_fopen: OK

ini_set calls: OK

Memory Limit: OK

------------------------------------------
Errors: 0   Warnings: 0   Total checks: 27

Uma vez que tudo esteja ok, você pode prosseguir. Crie o diretório raiz da web.

$ sudo mkdir /var/www/html/craftcms -p

Defina o usuário atualmente logado como o proprietário deste diretório.

$ sudo chown -R $USER:$USER /var/www/html/craftcms

Mude para o diretório.

$ cd /var/www/html/craftcms

Baixe e instale o Craft CMS usando o Composer. O ponto (.) no final do comando significa que a instalação deve ser realizada no diretório atual.

$ composer create-project craftcms/craft .

Durante a instalação, você será solicitado a fornecer vários detalhes sobre o banco de dados, e a conta de administrador. URL do site e seu idioma, conforme mostrado abaixo.

> @php craft setup/welcome

   ______ .______          ___       _______ .___________.
  /      ||   _  \        /   \     |   ____||           |
 |  ,----'|  |_)  |      /  ^  \    |  |__   `---|  |----`
 |  |     |      /      /  /_\  \   |   __|      |  |
 |  `----.|  |\  \----./  _____  \  |  |         |  |
  \______|| _| `._____/__/     \__\ |__|         |__|

     A       N   E   W       I   N   S   T   A   L   L
               ______ .___  ___.      _______.
              /      ||   \/   |     /       |
             |  ,----'|  \  /  |    |   (----`
             |  |     |  |\/|  |     \   \
             |  `----.|  |  |  | .----)   |
              \______||__|  |__| |_______|


Gerando um ID de aplicativo ... feito (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Gerando uma chave de segurança ... feito (iMdcUi6wQyf9MshEda__vZcCwILbclxz)


Bem-vindo ao Craft CMS!

Você está pronto para começar a configuração? (yes|no) [no]:yes
Qual driver de banco de dados você está usando? (mysql ou pgsql) [mysql] pgsql
Nome ou endereço IP do servidor de banco de dados: [127.0.0.1]
Porta do banco de dados: [5432]
Nome de usuário do banco de dados: [root] craftuser
Senha do banco de dados:
Nome do banco de dados: craftcms
Prefixo da tabela do banco de dados:
Testando credenciais do banco de dados ... sucesso!
Usando esquema padrão "public".
Salvando credenciais do banco de dados no seu arquivo .env ... feito

Instalar o Craft agora? (yes|no) [yes]:yes

Nome de usuário: [admin] navjot
Email: [email protected]
Senha:
Confirmar:
Nome do site: Howtoforge Tutorials
URL do site: https://craftcms.example.com
Idioma do site: [en-US]
*** instalando o Craft

Fazer o Redis funcionar com o Craft CMS

Instale o pacote yiisoft/yii2-redis.

$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"

Abra o arquivo /var/www/html/craftcms/config/app.php para edição.

$ nano config/app.php

Você verá o seguinte conteúdo nele.

use craft\helpers\App;

return [
    'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];

Altere-o da seguinte forma.

use craft\helpers\App;

return [
    'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
    'components' => [
        'cache' => function() {
            $config = [
                'class' => yii\redis\Cache::class,
                'keyPrefix' => Craft::$app->id,
                'defaultDuration' => Craft::$app->config->general->cacheDuration,

                // Detalhes completos da conexão Redis:
                'redis' => [
                    'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost',
                    'port' => 6379,
                    'username' => App::env('REDIS_USERNAME') ?: null,
                    'password' => App::env('REDIS_PASSWORD') ?: null,
                ],
            ];

            return Craft::createObject($config);
        },
    ],
];

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado. Isso habilita o Redis como armazenamento de cache para o Craft CMS. Você também pode usar o Redis para armazenar dados de sessão PHP, fila de trabalho e como um driver de mutex. Você pode encontrar a configuração para isso na documentação do Craft CMS.

Você também precisa adicionar a configuração do Redis ao arquivo .env.

$ nano .env

Adicione o seguinte código ao final do arquivo.

REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword

Escolha as opções conforme mostrado acima. Uma vez terminado, altere o grupo do diretório para nginx. Dessa forma, tanto o usuário atualmente logado quanto o Nginx terão acesso ao Craft CMS.

$ sudo chgrp -R nginx /var/www/html/craftcms

Dê permissão de escrita ao grupo nginx no diretório.

$ sudo chmod -R g+w /var/www/html/craftcms

A partir daqui, você não precisará alterar as permissões novamente e pode realizar todas as operações sem usar privilégios de root.

Passo 9 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Usaremos o instalador de pacotes Snapd para isso. Como o Rocky Linux não vem com ele, instale o instalador Snapd. Ele requer o repositório EPEL (Pacotes Extras para Linux Empresarial) para funcionar. Mas como já o instalamos no passo 3, podemos seguir em frente.

Instale o Snapd.

$ sudo dnf install -y snapd

Habilite e inicie o serviço Snap.

$ sudo systemctl enable snapd --now

Instale o pacote core do Snap e certifique-se de que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Crie os links necessários para o Snapd funcionar.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Verifique se o Certbot está funcionando corretamente.

$ certbot --version
certbot 2.7.4

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d craftcms.example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/craftcms.example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifique o serviço agendador de renovação do Certbot.

$ sudo systemctl list-timers

Você encontrará snap.certbot.renew.service como um dos serviços agendados para execução.

NEXT                        LEFT         LAST                        PASSED     UNIT                      ACTIVATES     
---------------------------------------------------------------------------------------------------------------------------               
Mon 2023-12-04 23:38:47 UTC 18min left Mon 2023-12-04 22:19:02 UTC 1h 0min ago dnf-makecache.timer          dnf-makecache.service
Tue 2023-12-05 00:00:00 UTC 40min left -                           -           logrotate.timer              logrotate.service
Tue 2023-12-05 09:36:00 UTC 10h left   -                           -           snap.certbot.renew.timer     snap.certbot.renew.service

Faça um teste do processo para verificar se a renovação do SSL está funcionando corretamente.

$ sudo certbot renew --dry-run

Se você não ver erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 10 - Configurar o SELinux

Altere o contexto de segurança do arquivo para o Craft CMS.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/craftcms(/.*)?"

Aplique a política.

$ sudo restorecon -Rv /var/www/html/craftcms/

Aplique a política para permitir que o Nginx tenha acesso ao PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Aplique a política para permitir que conexões sejam feitas para hosts externos.

$ sudo setsebool -P httpd_can_network_connect 1

Com o MariaDB 10.11, você enfrentará outro problema que é que o SELinux impede que o PHP-FPM se conecte ao MariaDB. Isso pode ser resolvido instalando um módulo SELinux. O primeiro passo é criar um arquivo de type enforcement.

Crie o arquivo my-phpfpm.te no seu diretório inicial e abra-o para edição.

$ cd ~
$ nano my-phpfpm.te

Cole o seguinte código nele.

module my-phpfpm 1.0;

require {
        type unconfined_service_t;
        type httpd_t;
        type httpd_sys_content_t;
        class dir write;
        class unix_stream_socket connectto;
}

#============= httpd_t ============== 

#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;

#!!!! This avc is allowed in the current policy
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

O próximo passo é convertê-lo em um módulo de política usando o seguinte comando. Não modifique o nome do arquivo no comando, caso contrário, não funcionará. O módulo é chamado my-phpfpm e o nome do arquivo deve ser o mesmo que o nome do módulo.

$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te

Em seguida, precisamos compilar o módulo de política para criar um pacote de política.

$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod

O passo final é carregar o pacote de política usando o comando semodule, que instala a política a ser usada.

$ sudo semodule -i my-phpfpm.pp

Passo 11 - Configurar o Nginx

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Crie e abra o arquivo /etc/nginx/conf.d/craftcms.conf para edição.

$ sudo nano /etc/nginx/conf.d/craftcms.conf

Cole o seguinte código nele. Substitua craftcms.example.com pelo seu nome de domínio. Certifique-se de que o valor de client_max_body_size esteja definido como 128MB, que é o que definimos para o Craft CMS ao configurar o PHP anteriormente.

server {

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

    server_name craftcms.example.com;
    root /var/www/html/craftcms/web;

    index index.php;
    client_max_body_size 128M;

    access_log  /var/log/nginx/craftcms.access.log;
    error_log   /var/log/nginx/craftcms.error.log;

    ssl_certificate      /etc/letsencrypt/live/craftcms.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/craftcms.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/craftcms.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

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

    location ~ [^/]\.php(/|$) {
        try_files $uri $uri/ /index.php?$query_string;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_keep_conn on;
        include fastcgi_params;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTP_PROXY "";
    }
}
# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  craftcms.example.com;
    return 301   https://$host$request_uri;
}

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique sua configuração do Nginx.

$ sudo nginx -t

Reinicie o servidor Nginx.

$ sudo systemctl restart nginx

Passo 12 - Acessar o Craft CMS

Abra a URL https://craftcms.example.com em seu navegador e você será levado à seguinte página.

Página Inicial do Craft CMS

Para acessar a página de administração, visite a URL https://craftcms.example.com/admin e você será levado à página de login.

Página de Login do Craft CMS

Digite suas credenciais de administração e clique na tecla Entrar para fazer login. Você será levado ao seguinte painel.

Painel de Administração do Craft CMS

Agora você pode começar a usar o Craft CMS para construir seu site.

Passo 13 - Fazer Backup e Restaurar o Craft CMS

Você pode fazer backup do banco de dados do Craft CMS de dentro do painel de administração visitando Painel de Administração >> Utilitários >> Backup do Banco de Dados.

Backup do Banco de Dados do Craft CMS

Clique no botão Backup para baixar seu backup do banco de dados. Você também pode criar o backup usando o terminal. Execute o seguinte comando para criar o backup. Digite sua senha quando solicitado.

$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sql

Você também pode criar o backup do banco de dados usando a utilidade de linha de comando do Craft CMS. A vantagem dessa utilidade é que você não precisa passar suas credenciais do banco de dados. Leia mais sobre a utilidade do console de comando do Craft CMS aqui.

$ cd /var/www/html/craftcms
$ php craft db/backup ~/
Fazendo backup do banco de dados ... feito
Arquivo de backup: /home/navjot/howtoforge-tutorials--2023-12-03-065138--v4.5.11.1.sql (200.019 KB)

Se você não especificar nenhum local no comando acima, o arquivo de backup será escrito no diretório /var/www/html/craftcms/storage/backups.

Para fazer backup dos arquivos, copie e salve toda a pasta /var/www/html/craftcms.

$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms

Para restaurá-lo em um novo servidor, extraia os arquivos para a pasta /var/www/html.

$ tar -xzf craftcms.tar.gz -C /var/www/html/

Crie um banco de dados com as mesmas credenciais no novo servidor e restaure o banco de dados usando o seguinte comando. Digite sua senha quando solicitado.

$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql

Passo 14 - Atualizar o Craft CMS

Existem duas maneiras de atualizar o Craft CMS. Uma é de dentro do painel de administração. Quando uma atualização estiver disponível, você receberá um aviso. Clique no aviso para atualizar. O Craft CMS fará automaticamente o backup do banco de dados antes de realizar uma atualização.

Você também pode atualizá-lo via terminal.

Para verificar todas as atualizações disponíveis, execute o seguinte comando.

$ cd /var/www/html/craftcms/
$ php craft update

Se uma atualização estiver disponível, execute o seguinte comando para aplicá-la.

$ php craft update all

Conclusão

Isso conclui nosso tutorial onde você aprendeu como instalar o software Craft CMS em um servidor Debian 12. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.