Pesquisa de site

Instale TYPO3 CMS com Nginx no AlmaLinux 9


TYPO3 é um sistema de gerenciamento de conteúdo de nível empresarial gratuito e de código aberto. Ele fornece vários recursos de nível empresarial, como CMS escalonável com suporte multisite, instalações multilíngues, forte implementação de segurança, extremamente rápido e pode ser executado em qualquer lugar.

Usar o TYPO3 CMS permite construir sites flexíveis e confiáveis. O TYPO3 CMS é o backend de uma comunidade profissional vibrante. E por design, o TYPO3 CMS é um sistema de gerenciamento de conteúdo conectável com arquitetura adaptável e desacoplada.

Neste guia, mostrarei como instalar o TYPO3 CMS em um AlmaLinux 9 passo a passo. Instalaremos o TYPO3 CMS com o servidor web Nginx, servidor de banco de dados MariaDB e PHP-FPM.

Pré-requisitos

Antes de prosseguir, certifique-se de ter o seguinte:

  • Um servidor AlmaLinux 9 - Este exemplo usa um servidor com o nome de host almalinux9.
  • Um usuário não root com privilégios de root sudo.
  • Um nome de domínio apontado para o endereço IP do servidor.

Instalando Dependências

Nas etapas a seguir, você instalará dependências de pacote para TYPO3 CMS, incluindo:

  • Nginx: como servidor web.
  • MariaDB: Como servidor de banco de dados.
  • PHP-FPM: Este exemplo usará PHP 8.1 para TYPO3 CMS.
  • Composer: Um gerenciamento de dependências para aplicativos PHP.

Agora vamos começar.

Primeiro, execute o seguinte comando para adicionar os repositórios EPEL e Remi ao seu sistema. O repositório Remi fornece várias versões de pacotes PHP e algumas extensões PHP adicionais que não estão disponíveis no repositório appstream padrão.

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

Insira y para confirmar a instalação e pressione ENTER.

Adicionando repositório EPEL.

Adicionando repositório PHP Remi para RHEL 9.

Agora, execute o seguinte comando para redefinir o módulo de repositório PHP padrão e habilitar o módulo PHP 8.1 do repositório Remi.

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

Em seguida, execute o comando dnf abaixo para instalar dependências de pacote para TYPO3 CMS. Quando solicitado, insira y para confirmar e pressione ENTER.

sudo dnf install nginx mariadb-server composer ImageMagick php-fpm php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

Após a instalação das dependências, execute o comando systemctl abaixo para iniciar e habilitar os serviços principais, como Nginx, MariaDB e PHP-FPM.

sudo systemctl enable --now nginx mariadb php-fpm

Em seguida, verifique os serviços usando o comando a seguir para garantir que todos esses serviços estejam em execução.

sudo systemctl status nginx mariadb php-fpm

Se o serviço estiver em execução, você deverá ver a saída ativo (em execução). Um exemplo abaixo mostra que o serviço Nginx está em execução.

Por último, execute o seguinte comando para garantir que o Composer esteja instalado e verifique sua versão.

sudo -u nginx composer -V

No momento em que este artigo foi escrito, o Composer v2.5.5 estava instalado através do repositório EPEL.

Configurando o Firewalld

Depois de instalar as dependências do pacote, a próxima etapa é configurar o firewalld e abrir os protocolos HTTP e HTTPS sobre ele.

Execute o comando firewall-cmd abaixo para abrir os serviços HTTP e HTTPS. Em seguida, recarregue o firewalld para aplicar as alterações.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Agora verifique a lista de portas e serviços abertos no firewalld usando o seguinte comando.

sudo firewall-cmd --list-all

Na seção de serviços, você verá que HTTP e HTTPS estão ativados.

Configurando o servidor MariaDB

Na seção a seguir, você protegerá o servidor MariaDB e criará um novo banco de dados e usuário que será usado pela instalação do TYPO3 CMS.

Primeiro, execute o comando mariadb-secure-installation para proteger sua instalação do MariaDB.

sudo mariadb-secure-installation

Ao longo do processo, você será solicitado a fornecer as configurações do servidor MariaDB. Insira Y para confirmar a etapa.

  • Mudar a autenticação raiz do MariaDB para unix_socket? Entrada n.
  • Configurar a senha de root do MariaDB? Insira y, digite a nova senha e repita.
  • Desativar login remoto para o usuário root? Inpu y.
  • Remover teste de banco de dados padrão? Insira y novamente.
  • Remover usuário anônimo padrão? Insira y para confirmar.
  • Recarregar privilégios de tabela para aplicar as alterações? Insira você.

Assim que o MariaDB estiver protegido, faça login no MariaDB usando o comando mariadb abaixo. Quando a senha for solicitada, insira sua senha root do MariaDB.

sudo mariadb -u root -p

Após fazer login no MariaDB, execute as seguintes consultas para criar um novo banco de dados typo3db, um usuário typo3 e a senha typo3password.

CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON typo3db.* to typo3@localhost IDENTIFIED BY 'typo3password';
FLUSH PRIVILEGES;

Em seguida, execute a consulta a seguir para verificar o privilégio do usuário MariaDB typo3 e garantir que o usuário possa acessar o banco de dados typo3db.

SHOW GRANTS FOR typo3@localhost;

Na saída, você deve informar que o usuário MariaDB typo3 pode acessar o banco de dados typo3db.

Digite quit para sair do servidor MariaDB e conclua a etapa.

Configurando PHP-FPM

Com o servidor MariaDB configurado, o próximo passo é configurar a instalação do PHP-FPM. Você integrará a instalação do PHP-FPM ao servidor web Nginx.

Primeiro, execute o seguinte comando para configurar o fuso horário padrão para o seu sistema.

sudo timedatectl set-timezone Europe/Stockholm

Agora abra a configuração do PHP /etc/php.ini usando o comando do editor vim.

sudo vim /etc/php.ini

Remova o comentário do parâmetro date.timezone e altere o valor com o fuso horário adequado.

date.timezone = Europe/Stockholm

Aumente e habilite alguns dos parâmetros PHP como este. Para o parâmetro memory_limit, ajuste-o com a memória atual que você possui.

memory_limit = 512M
max_execution_time = 300
max_input_vars = 2000

Agora aumente os parâmetros post_max_size e upload_max_filesize para 30 MB.

post_max_size = 30M
upload_max_filesize = 30M

Salve o arquivo e saia do editor quando terminar.

Em seguida, abra a configuração do pool PHP-FPM /etc/php-fpm.d/www.conf usando o editor vim.

sudo vim /etc/php-fpm.d/www.conf

Altere o valor padrão do parâmetro user e group para nginx assim:

user = nginx
group = nginx

Salve o arquivo e saia do editor.

Agora execute o seguinte comando para reiniciar o serviço PHP-FPM e aplicar as alterações. Em seguida, verifique o PHP-FPM para garantir que ele esteja em execução.

sudo systemctl restart php-fpm
sudo systemctl status php-fpm

Se estiver executando, você deverá obter uma saída como esta:

Além disso, você também pode verificar o PHP-FPM verificando o arquivo de soquete padrão do PHP-FPM, que é /run/php-fpm/www.sock. Execute o comando ss abaixo para obter a lista de soquetes disponíveis em seu sistema e filtre a saída para mostrar apenas www.sock.

ss -pl | grep www.sock

Se o PHP-FPM estiver em execução, você verá que o arquivo de soquete PHP-FPM padrão /run/php-fpm/www.sock está disponível assim:

Baixando CMS TYPO3

O TYPO3 CMS pode ser instalado de várias maneiras e, para esta demonstração, você instalará o TYPO3 CMS por meio do gerenciador de pacotes Composer.

Execute o seguinte comando para criar um novo diretório /var/www/typo3. Este será usado como diretório de destino para a instalação do TYPO3 CMS

mkdir -p /var/www/typo3

Em seguida, execute o comando abaixo para alterar a propriedade do diretório /var/www/typo3 para o usuário nginx e garantir o acesso de leitura e gravação para o proprietário desse diretório.

sudo chown -R nginx:nginx /var/www/typo3
sudo chmod u+rw /var/www/typo3

Agora, vá para o diretório /var/www/typo3 e execute o comando Composer abaixo para baixar o código-fonte do TYPO3 CMS.

cd /var/www/typo3
sudo -u nginx composer create-project typo3/cms-base-distribution:^12 .

Quando a instalação estiver em execução, você deverá ver o processo assim:

Após o download do TYPO3, execute o seguinte comando para verificar a lista de arquivos e diretórios em /var/www/typo3.

ls -lah /var/www/typo3

Você deverá ver arquivos e diretórios semelhantes como este:

Por último, execute o arquivo binário TYPO3 CMS para iniciar a configuração e serão solicitadas algumas configurações.

sudo -u nginx ./vendor/bin/typo3 setup

Você será questionado sobre algumas configurações do TYPO3 CMS.

  • Insira o driver do banco de dados em mysqli.
  • Insira o usuário do banco de dados, senha, porta e host.
  • Agora digite o nome do banco de dados que será usado para o TYPO3 CMS. Neste exemplo o nome do banco de dados é typo3db.
  • Insira o novo usuário administrador, e-mail e senha para TYPO3 CMS.
  • Para o nome do projeto e URL básico do site, pressione ENTER para deixá-lo como padrão.

Assim que a configuração do TYPO3 CMS for concluída, você deverá ver a mensagem "Parabéns - a configuração do TYPO3 foi concluída".

Configurando o bloco de servidor Nginx para TYPO3 CMS

Depois de instalar e configurar o TYPO3 CMS, você configurará o bloco do servidor Nginx para o TYPO3 CMS. Antes de começar, certifique-se de ter o nome de domínio apontado para o endereço IP do seu servidor.

Crie uma nova configuração de bloco do servidor Nginx/etc/nginx/conf.d/typo3.conf usando o vim.

sudo vim /etc/nginx/conf.d/typo3.conf

Insira a seguinte configuração e certifique-se de alterar o nome do domínio de destino no parâmetro server_name.

server {
    listen       80;
    server_name  typo3.hwdomain.io;
    root         /var/www/typo3/public;
    index index.php;
    # Load configuration typo3.conf.
    include /etc/nginx/default.d/typo3-nginx.conf;
}

Salve e saia do arquivo quando terminar.

Em seguida, crie outra configuração /etc/nginx/default.d/typo3-nginx.conf usando o comando vim abaixo.

sudo vim /etc/nginx/default.d/typo3-nginx.conf

Insira a seguinte configuração no arquivo. Esta é a configuração principal do Nginx para TYPO3 CMS.

# Compressing resource files will save bandwidth and so improve loading speed, especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/css gzip; }
}
# TYPO3 - Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
if (!-e $request_filename) {
    rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}
# TYPO3 - Block access to composer files
location ~* composer\.(?:json|lock) {
    deny all;
}
# TYPO3 - Block access to flexform files
location ~* flexform[^.]*\.xml {
    deny all;
}
# TYPO3 - Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
    deny all;
}
# TYPO3 - Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
    deny all;
}
# TYPO3 - Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
    deny all;
}
# TYPO3 - Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
    deny all;
}
# TYPO3 - Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
    deny all;
}
# TYPO3 - Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
    deny all;
}
# TYPO3 - Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
    deny all;
}
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}
location = /typo3 {
    rewrite ^ /typo3/;
}
location /typo3/ {
    absolute_redirect off;
    try_files $uri /typo3/index.php$is_args$args;
}
location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 16k;
    fastcgi_connect_timeout 240s;
    fastcgi_read_timeout 240s;
    fastcgi_send_timeout 240s;
    # this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
    fastcgi_pass         unix:/run/php-fpm/www.sock;
    fastcgi_index        index.php;
    include              fastcgi.conf;
}

Salve e feche o arquivo quando terminar.

Agora execute o seguinte comando para garantir que você tenha a configuração Nginx adequada. Em seguida, reinicie o serviço Nginx para aplicar as alterações.

sudo nginx -t
sudo systemctl restart nginx

Depois que o comando for executado, você deverá obter uma saída "sintaxe ok - teste bem-sucedido" e sua instalação do TYPOC3 CMS deverá estar acessível.

Protegendo CMS TYPO3 com SSL/TLS

Na seção a seguir, você protegerá sua instalação TYPO3 CMS com certificados SSL/TLS que serão gerados a partir do Letsencrypt. Para conseguir isso, você deve instalar o Certbot em seu sistema.

Execute o comando dnf abaixo para instalar o Certbot e o plugin Certbot para Nginx. Insira y para confirmar a instalação e pressione ENTER.

sudo dnf install certbot python3-certbot-nginx

Agora execute o seguinte comando para gerar novos certificados SSL do Letsencrypt para o TYPO3 CMS. Certifique-se de alterar o nome de domínio e o endereço de e-mail.

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email [email  -d typo3.hwdomain.io

Se o processo estiver funcionando perfeitamente, os novos certificados SSL serão gerados no diretório /etc/letsencrypt/live/typo3.hwdomain.io. Além disso, a configuração do bloco do servidor para TYPO3 CMS será automaticamente configurada com SSL habilitado via certbot.

Inicie seu navegador e visite o endereço de instalação do TYPO3 CMS (ou seja: https://typo3.hwdomain.io/). Você deverá obter a tela de login do TYPO3 CMS.

Insira o usuário de administrador e a senha que você criou e clique em Login.

Se você tiver o usuário de administrador e a senha corretos, deverá ser mostrado o painel de administrador do TYPO3 CMS como este:

No menu superior direito, clique no ícone de informações e você deverá obter os detalhes das pilhas de software que está usando atualmente para a instalação do TYPO3 CMS. Nesta demonstração, a versão instalada do TYPO3 CMS é v12 com servidor web Nginx, servidor de banco de dados MariaDB e PHP-FPM 8.1.

Conclusão

Está tudo pronto! Você concluiu a instalação do TYPO3 CMS em seu servidor AlmaLinux 9 com servidor de banco de dados MariaDB, PHP-FPM e servidor web Nginx. Você também protegeu sua implantação por meio de certificados SSL/TLS da Letsencrypt. Com isso em mente, agora você pode criar um novo site via TYPO3 CMS.

Artigos relacionados: