Pesquisa de site

Como instalar o Craft CMS no Debian 12


Este tutorial existe para estas versões do sistema operacional

  • Debian 12 (Bookworm)
  • Debian 11 (alvo)
  • Debian 9 (esticar)

Nesta página

  1. Pré-requisitos
  2. Passo 1 - Configurar Firewall
  3. Passo 2 - Instale o Nginx
  4. Passo 3 – Instale PHP e extensões
  5. Passo 4 - Configurar PHP-FPM
  6. Passo 5 - Instalar o Compositor
  7. Passo 6 – Instalar e configurar o PostgreSQL
  8. Etapa 7 - Instalar e configurar o Redis
  9. Passo 8 - Instale o Craft CMS

    1. Faça o Redis funcionar com Craft CMS
  10. Passo 9 – Instalar SSL
  11. Etapa 10 – Configurar o Nginx
  12. Passo 11 - Acesse o Craft CMS
  13. Etapa 12 - Backup e restauração do Craft CMS
  14. Passo 13 - Atualizar Craft CMS
  15. Conclusão

Craft CMS é um sistema de gerenciamento de conteúdo de código aberto para a criação de todos os tipos de sites. É um CMS seguro e escalonável com um extenso ecossistema de plugins e plugins gratuitos e pagos de alta qualidade. Possui um painel de controle intuitivo e fácil de usar para criação de conteúdo e tarefas administrativas. Ele é construído na estrutura Yii PHP. O mecanismo de template Twig alimenta seu sistema de templates. Ele pode funcionar com bancos de dados MySQL e PostgreSQL para armazenamento e usa o banco de dados Redis para armazenamento em cache e sessão.

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

Pré-requisitos

    Um servidor rodando Debian 12 com no mínimo 1 GB de RAM.

    Um usuário não root com privilégios sudo.

    O Firewall Descomplicado (UFW) está ativado e em execução.

    Um nome de domínio totalmente qualificado (FQDN) como craftcms.example.com apontando para o seu servidor.

    Uma conta SMTP com um serviço de e-mail como Amazon SES ou Mailgun.

    Tudo está atualizado.

    $ sudo apt update && sudo apt upgrade
    

    Alguns pacotes essenciais são necessários para que o tutorial e o Craft CMS sejam executados. Alguns deles já estarão em seu servidor.

    $ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y
    

Passo 1 - Configurar Firewall

A primeira etapa antes de instalar qualquer pacote é configurar o firewall para permitir conexões HTTP e HTTPS.

Verifique o status do firewall.

$ sudo ufw status

Você deverá ver algo como o seguinte.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Permitir portas HTTP e HTTPs.

$ sudo ufw allow http
$ sudo ufw allow https

Verifique o status novamente para confirmar.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Passo 2 - Instale o Nginx

O Debian 12 vem com uma versão mais antiga do Nginx. Você precisa baixar o repositório oficial do Nginx para instalar a versão mais recente.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação. Em sistemas Debian, o comando a seguir funcionará apenas com sudo.

$ sudo nginx -v
nginx version: nginx/1.24.0

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Verifique o status do serviço.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-12-01 09:46:46 UTC; 18s ago
       Docs: https://nginx.org/en/docs/
    Process: 39483 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 39484 (nginx)
      Tasks: 2 (limit: 2315)
     Memory: 1.7M
        CPU: 6ms
     CGroup: /system.slice/nginx.service
             ??39484 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??39485 "nginx: worker process"

Passo 3 – Instale PHP e extensões

O Debian 12 vem com PHP 8.2 por padrão. Você pode instalá-lo e as extensões exigidas pelo Craft CMS executando o seguinte comando.

$ sudo apt 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

Para ficar sempre atualizado com a versão mais recente do PHP ou se quiser instalar várias versões do PHP, adicione o repositório PHP do Ondrej.

Primeiro, importe a chave PHP GPG do repositório de Sury.

$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Adicione o repositório PHP de Ondrej Sury.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Atualize a lista de repositórios do seu sistema.

$ sudo apt update

Você provavelmente receberá informações sobre atualizações pendentes. Execute-os.

$ sudo apt upgrade

Instale o PHP e suas extensões.

$ sudo apt install php8.2 php8.2-cli php8.2-common php8.2-gmp php8.2-fpm php8.2-xmlrpc php8.2-bcmath php8.2-imagick php8.2-curl php8.2-zip php8.2-gd php8.2-mysql php8.2-xml php8.2-mbstring php8.2-xmlrpc php8.2-intl php8.2-pgsql

Verifique a versão do PHP instalada.

$ php --version
PHP 8.2.13 (cli) (built: Nov 24 2023 13:10:42) (NTS)
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

Verifique o status do serviço PHP.

$ sudo systemctl status php8.2-fpm
? php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-12-01 10:29:53 UTC; 34min ago
       Docs: man:php-fpm8.2(8)
    Process: 65825 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 82 (code=exited, status=0/SUCCESS)
   Main PID: 65821 (php-fpm8.2)
     Status: "Processes active: 0, idle: 3, Requests: 208, slow: 0, Traffic: 0.2req/sec"
      Tasks: 4 (limit: 2315)
     Memory: 83.4M
        CPU: 6.456s
     CGroup: /system.slice/php8.2-fpm.service
             ??65821 "php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)"
             ??65823 "php-fpm: pool www"
             ??65824 "php-fpm: pool www"
             ??65843 "php-fpm: pool www"

Passo 4 - Configurar PHP-FPM

Abra php.ini para edição.

$ sudo nano /etc/php/8.2/fpm/php.ini

Para definir 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-o em 128 MB. Você pode configurá-lo ao seu gosto.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php/8.2/fpm/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/8.2/fpm/php.ini

Abra o arquivo /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Precisamos definir o usuário/grupo Unix de processos PHP como nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere-as 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.
user = nginx
group = nginx
...

Além disso, encontre as linhas listen.owner=www-data e listen.group=www-data no arquivo e altere-as para nginx.

listen.owner = nginx
listen.group = nginx

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, ele falhará, pois não será capaz de encontrar o grupo nginx.

$ sudo systemctl restart php8.2-fpm

Passo 5 - Instalar o Compositor

O Composer atua como um gerenciador de dependências para PHP. É também o gerenciador de dependências do framework Laravel PHP, 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 Debian 12 vem com PostgreSQL 15 por padrão. Em vez disso, usaremos o PostgreSQL 16.

Execute o seguinte comando para adicionar a chave GPG do PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Adicione o repositório APT à sua lista de fontes.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Atualize o repositório do sistema.

$ sudo apt update

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

$ sudo apt install postgresql postgresql-contrib

O pacote postgresql-contrib contém alguns utilitários extras.

Verifique a versão.

$ psql --version
psql (PostgreSQL) 16.1 (Debian 16.1-1.pgdg120+1)

Verifique o status do serviço PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Wed 2023-11-29 05:54:03 UTC; 11s ago
   Main PID: 20170 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Nov 29 05:54:03 craftcms systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Nov 29 05:54:03 craftcms systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

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 do 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 (Debian 16.1-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

craftcms=>

Saia do shell digitando \q.

Etapa 7 - Instalar e configurar o Redis

O Debian 12 vem com Redis 7.0 por padrão, que é o que usaremos. Instale o Redis.

$ sudo apt install redis

Verifique a versão.

$ redis-server --version
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=c4e7f6bf175a885b

Se, no entanto, você deseja instalar a versão mais recente, pode fazê-lo usando o repositório oficial do Redis emitindo os seguintes comandos.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
$ sudo apt update
$ sudo apt install redis

A próxima etapa é adicionar autenticação ao servidor Redis. Desde o Redis v6.0, 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 entrada da linha # aclfile /etc/redis/users.acl e remova o comentário 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. Isso 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 - Instale 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ê obterá 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

Quando tudo estiver bem, você pode prosseguir. Crie o diretório raiz da web.

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

Defina o usuário conectado no momento 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, serão solicitados vários detalhes sobre o banco de dados e a conta do 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
               ______ .___  ___.      _______.
              /      ||   \/   |     /       |
             |  ,----'|  \  /  |    |   (----`
             |  |     |  |\/|  |     \   \
             |  `----.|  |  |  | .----)   |
              \______||__|  |__| |_______/


Generating an application ID ... done (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Generating a security key ... done (iMdcUi6wQyf9MshEda__vZcCwILbclxz)


Welcome to Craft CMS!

Are you ready to begin the setup? (yes|no) [no]:yes
Which database driver are you using? (mysql or pgsql) [mysql] pgsql
Database server name or IP address: [127.0.0.1]
Database port: [5432]
Database username: [root] craftuser
Database password:
Database name: craftcms
Database table prefix:
Testing database credentials ... success!
Using default schema "public".
Saving database credentials to your .env file ... done

Install Craft now? (yes|no) [yes]:yes

Username: [admin] navjot
Email: [email 
Password:
Confirm:
Site name: Howtoforge Tutorials
Site URL: https://craftcms.example.com
Site language: [en-US]
*** installing Craft

Faça o Redis funcionar com 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 maneira.

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,

                // Full Redis connection details:
                '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 permite o Redis como armazenamento em cache para Craft CMS. Você também pode usar o Redis para armazenar dados de sessão PHP, fila de trabalhos e como driver mutex. Você pode encontrar a configuração dele 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 no final do arquivo.

REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword

Escolha as opções conforme mostrado acima. Ao terminar, altere o grupo do diretório para nginx. Desta 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 ao grupo nginx para gravar 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 poderá realizar todas as operações sem usar privilégios de root.

Passo 9 – Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório Debian ou obter a versão mais recente usando a ferramenta Snapd. Estaremos usando a versão Snapd.

O Debian 12 não vem com o Snapd instalado. Instale o pacote Snapd.

$ sudo apt install snapd

Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core && sudo snap refresh core

Instale o Cerbot.

$ sudo snap install --classic certbot

Use o comando a seguir 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  -d craftcms.example.com

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

Gere um certificado do grupo Diffie-Hellman.

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

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

$ sudo systemctl list-timers

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

NEXT                        LEFT         LAST                        PASSED     UNIT                      ACTIVATES     
---------------------------------------------------------------------------------------------------------------------------               
Fri 2023-12-01 10:39:00 UTC 12min left   Fri 2023-12-01 10:09:01 UTC 17min ago  phpsessionclean.timer    phpsessionclean.service
Fri 2023-12-01 17:01:47 UTC 6h left      Thu 2023-11-30 17:01:47 UTC 17h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2023-12-01 18:34:00 UTC 8h left      -                           -          snap.certbot.renew.timer snap.certbot.renew.service

Faça uma simulação do processo para verificar se a renovação do SSL está funcionando bem.

$ sudo certbot renew --dry-run

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

Etapa 10 – 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 128 MB, que é o que definimos para 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/php8.2-fpm.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 11 - Acesse o Craft CMS

Abra o URL https://craftcms.example.com em seu navegador e você será direcionado para a página a seguir.

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

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

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

Etapa 12 - Backup e restauração do 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 de banco de dados.

Clique no botão Backup para baixar o backup do seu 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 o utilitário de linha de comando Craft CMS. A vantagem deste utilitário é que você não precisa passar as credenciais do seu banco de dados. Leia mais sobre o utilitário do console de comando Craft CMS aqui.

$ cd /var/www/html/craftcms
$ php craft db/backup ~/
Backing up the database ... done
Backup file: /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á gravado no diretório /var/www/html/craftcms/storage/backups.

Para fazer backup dos arquivos, basta copiar e salvar 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 comando a seguir. Digite sua senha quando solicitado.

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

Passo 13 - Atualizar Craft CMS

Existem duas maneiras de atualizar o Craft CMS. Um é 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á backup automaticamente do banco de dados antes de realizar uma atualização.

Você também pode atualizá-lo através do 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-a nos comentários abaixo.