Há algum tempo fizemos um post sobre Instalando o WordPress no CentOS7, aqui faremos uma atualização e uma expansão ao conteúdo, especificando um perfil de edição e instalando alguns plugins, mas não entraremos na instalação do SO em si, apenas as etapas pós a instalação do CentOS.

Sugerimos que, ao final da execução desse post, leia também os Posts:

Instalação do banco de dados

Execute os procedimentos abaixo no servidor de banco:

firewall-cmd –zone=public –add-port=3306/tcp
firewall-cmd –zone=public –add-port=3306/tcp –permanent


yum install mariadb mariadb-server -y
systemctl enable mariadb.service
systemctl start mariadb
mariadb-secure-installation

Se esse comando não funcionar, utilize o comando mysql_secure_installation

Aparecerá uma tela para confirmar algumas informações, responda da seguinte forma:

PerguntaO que deverá ser respondido
Enter current password for root (enter for none):Deixe em branco e pressione ENTER
Switch to unix_socket authentication [Y/n]N e pressione ENTER
Set root password? [Y/n]Y e pressione ENTER
New password:Insira a senha (veja qual é) e pressione ENTER
Re-enter new password:Repita a senha e pressione ENTER
Remove anonymous users? [Y/n]Y e pressione ENTER
Disallow root login remotely? [Y/n]N e pressione ENTER
Remove test database and access to it? [Y/n]Y e pressione ENTER
Reload privilege tables now? [Y/n]Y e pressione ENTER

Para criação dos bancos para o WordPress, execute:

mysql -u root -p

Será solicitado a senha do root, informe-a e em seguida execute (altere a senha secretpassword pela senha que será utilizada para o usuário do banco):

create database wordpress;
grant all privileges on wordpress.* to 'Userwordpress' identified by 'secretpassword' with grant option;
flush privileges;
quit

OBSERVAÇÃO: Se for um ambiente de produção não se esqueça de adicionar uma rotina de backup para o banco.

Instalação do servidor Web

Caso queira utilizar outra versão, acesse https://br.wordpress.org/download/#download-install para verificar a versão (e o caminho para download) desejado. Execute as sessões abaixo:

yum install httpd -y
systemctl enable httpd
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent
mkdir -p /var/www/html/blank
touch /var/www/html/blank/index.html
chown -R apache.apache /var/www/html/blank
chmod -R 500 /var/www/html/blank
service httpd start

Caso não ocorra erros (se ocorrer, verifique o procedimento que foi feito), execute os comandos abaixo para instalar o PHP 8.1:

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cat /etc/centos-release | grep -E -o '[[:digit:]]+').noarch.rpm
yum -y install http://rpms.remirepo.net/enterprise/remi-release-$(cat /etc/centos-release | grep -E -o '[[:digit:]]+').rpm

yum -y install yum-utils

yum install php81 php81-php php81-php-pecl-apcu php81-php-common php81-php-curl php81-php-dom php81-php-gd php81-php-intl php81-php-pecl-zip php81-php-devel php81-php-ldap php81-php-mbstring php81-php-mysql php81-php-odbc php81-php-pear php81-php-snmp php81-php-soap php81-php-xml php81-php-xmlrpc zlib-devel -y

yum install curl exif mhash php81-php-pecl-igbinary php81-php-pecl-imagick php81-php-intl php81-php-mbstring openssl pcre php81-php-xml php81-php-pecl-zip php81-php-pecl-apcu memcached php81-php-opcache zlib -y

service php81-php-fpm stop
service httpd stop
mv /etc/php.ini /etc/php.old

ln -s /etc/opt/remi/php81/php.ini /etc/php.ini
sed -i "s/;date.timezone =/date.timezone = America\/Sao_Paulo\n;/g" /etc/opt/remi/php81/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 20M/g" /etc/opt/remi/php81/php.ini
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/g" /etc/opt/remi/php81/php.ini

service php81-php-fpm restart

service httpd restart

Instalação do WordPress

Agora é necessário criar a pasta do site LGPD (assim como explicitado acima, altere as partes em cinza para o ambiente correto)

SITE="seusite.com.br"

Com a variável de ambiente criada, vamos executar os comandos:

HOST=$(echo $SITE | cut -d. -f1)
groupadd $HOST
usermod -a -G $HOST apache
useradd -mg $HOST $HOST

echo "umask 112" >> /home/$HOST/.bashrc
cd /var/www/html
wget https://br.wordpress.org/latest-pt_BR.tar.gz
tar -zxvf latest-pt_BR.tar.gz

mv wordpress $SITE
rm -rf latest-pt_BR.tar.gz
chown -R apache:apache /var/www/html/$SITE
chmod -R 775 /var/www/html/$SITE
touch /var/log/httpd/$SITE-error.log
touch /var/log/httpd/$SITE-requests.log

Agora, execute conteúdo:

echo "<VirtualHost *:80>" >> /etc/httpd/conf.d/vhosts.conf
echo "        ServerName $SITE" >> /etc/httpd/conf.d/vhosts.conf
echo "        ServerAlias $HOST" >> /etc/httpd/conf.d/vhosts.conf
echo "        ServerAdmin suporte@$SITE" >> /etc/httpd/conf.d/vhosts.conf
echo "        DocumentRoot /var/www/html/$SITE" >> /etc/httpd/conf.d/vhosts.conf
echo "        ErrorLog \"/var/log/httpd/$SITE-error.log\"" >> /etc/httpd/conf.d/vhosts.conf
echo "        CustomLog \"/var/log/httpd/$SITE-requests.log\" combined" >> /etc/httpd/conf.d/vhosts.conf
echo "</VirtualHost>" >> /etc/httpd/conf.d/vhosts.conf
echo "<Directory /var/www/html/$SITE>" >> /etc/httpd/conf.d/vhosts.conf
echo "        AllowOverride All" >> /etc/httpd/conf.d/vhosts.conf
echo "</Directory>" >> /etc/httpd/conf.d/vhosts.conf

Feito isso digite a tecla ESC e em seguida digite :wq! e pressione ENTER para sair e salvar.

service httpd restart

Abra o site em uma guia anônima e abra o novo site com http e configure.

Na tela de configuração de banco, utilize os dados que foram utilizados na criação do banco (nome da database, usuário e senha). No prefixo da tabela utilize wp_nomedosite_ , clique em Enviar e na tela seguinte, clique em Instalar. Na tela seguinte, preencha os dados de acesso (passe a senha para a equipe de rede), clique em Instalar WordPress e depois em Acessar.

Na tela seguinte, acesse para teste (com os dados cadastrados)

Estando tudo certo, acesse o site de administração, vá em usuários e altere o nome de exibição do usuário admin (não deve ficar igual ao Login). Vá em configurações e Links permanentes apagar o campo estrutura personalizada e selecione category e postname.

Opcional – Configurando para uso SSL com um Proxy Reverso

Vá na administração do WordPress, clique no menu Plugins, adicione, instale e ative o plugin SSL Insecure Content Fixer. Em seguida clique em Configurações, clique em SSL Insecure Content e altere:

  • Em Fix insecure content, altere para Capture All;
  • Em Fixes for specific plugins and themes deixe marcado apenas WooCommerce + Google Chrome HTTP_HTTPS bug
  • Em Ignore external sites, marque a opção Only fix content pointing to this WordPress site;
  • Em HTTPS detection, marque a opção HTTP_X_FORWARDED_PROTO (e.g. load balancer, reverse proxy, NginX)
  • Com todas as alterações, salve a configuração.

Agora edite o arquivo wp-config.php do seu site, com o comando:

vim /var/www/html/seusite.com.br/wp-config.php

Dentro, pressione a tecla INSERT de seu teclado para entrar em modo de inserção coloque o seguinte conteúdo acima das primeiras configurações existentes:

if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’]) && $_SERVER[‘HTTP_X_FORWARDED_PROTO’] === ‘https’) {   $_SERVER[‘HTTPS’] = ‘on’; }  

Ao final digite a tecla ESC, para sairdo modo de inserção, em seguida digite :wq! e pressione ENTER para sair e salvar.

Com todas as alterações, salve a configuração, altere a configuração no DNS (para apontar o site para sue proxy) e no proxy reverso para utilizar o WordPress.

Criando o perfil (role) Designer

Abra a pasta do wp-includes do WordPress, faça uma cópia do arquivo functions.php e execute o comando:

vim /var/www/html/seusite.com.br/wp-includes/functions.php

Localize a linha com function mysql2date (observe se a formatação se mantém correta) e inclua acima dela o seguinte:

// ———————————- Criação do perfil Designer ———————————-
 // Adiciona uma nova role chamada “designer”
function create_designer_role() {
    add_role(
        ‘designer’, // Identificador único para a role
        __( ‘Designer’ ), // Nome exibido da role
        array(
            ‘read’                     => true, 
            ‘edit_posts’               => true, 
            ‘edit_pages’               => true, 
            ‘edit_others_posts’        => true, 
            ‘edit_others_pages’        => true, 
            ‘edit_theme_options’       => true, 
            ‘switch_themes’            => true,
            ‘edit_themes’              => true,
            ‘moderate_comments’        => true,
            ‘manage_categories’        => true,
            ‘manage_links’             => true,
            ‘upload_files’             => true,
            ‘import’                   => true,
            ‘edit_posts’               => true,
            ‘edit_others_posts’        => true,
            ‘edit_published_posts’     => true,
            ‘publish_posts’            => true,
            ‘edit_pages’               => true,
            ‘edit_others_pages’        => true,
            ‘edit_published_pages’     => true,
            ‘publish_pages’            => true,
            ‘delete_pages’             => true,
            ‘delete_others_pages’      => true,
            ‘delete_published_pages’   => true,
            ‘delete_posts’             => true,
            ‘delete_others_posts’      => true,
            ‘delete_published_posts’   => true,
            ‘delete_private_posts’     => true,
            ‘edit_private_posts’       => true,
            ‘read_private_posts’       => true,
            ‘update_themes’            => true,
            ‘install_themes’           => true,
            ‘edit_theme_options’       => true,
            ‘delete_themes’            => true,
            ‘export’                   => true,
                                               ‘unfiltered_html’          => true,
        )
    );
}
add_action(‘init’, ‘create_designer_role’);

Salve o arquivo. Verifique no menu Usuários > Adicionar Novo Usuário se o novo tipo de usuário aparece em Roles.

Fontes/Referências

NVLAN – Configurar o WordPress para utilizar SSL por um proxy reverso NginX
NVLAN – Instalação de plugins para o WordPress

Mais Informações

Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.

Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria