Executando o WordPress no OpenBSD 6.6 com o OpenBSDs HTTPD

Introdução

Dada a propensão do OpenBSD à segurança, só faz sentido alimentar o seu site WordPress, especialmente porque WordPress e PHP tendem a ser alvos móveis para crianças de scripts. Como o httpd do OpenBSD é projetado principalmente para servir páginas estáticas, as operações POST são reservadas para os processos fastcgi e slowcgi. Isso torna mais difícil para um ator desonesto potencialmente interromper o processo do servidor da web e obter acesso ao seu servidor. As operações do POST são canalizadas para o processo fastcgi e usam um intérprete externo. Este artigo discutirá não apenas a configuração do site WordPress, mas algumas técnicas básicas de manutenção e como fazer backup e restaurar o site e o banco de dados. Onde quer que você veja example.como domínio, substitua-o pelo seu domínio.

Configuração inicial

Se você ainda não o fez, será necessário criar um /etc/doas.confarquivo. O comando doas é o substituto fácil do OpenBSD para o sudo. Por conveniência, adicionei a opção nopass para que você não precise redigitar sua senha ao usar doas. Se você preferir não ter isso, simplesmente omita nopass.

su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf

Dependendo de como o OpenBSD foi empacotado para implantação, algumas vezes o gerenciador de pacotes pode não ter um repositório configurado. Para configurar o repositório oficial do OpenBSD, precisamos criar o /etc/installurlarquivo.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

Agora temos que adicionar PHP e alguns módulos extras que o WordPress precisará para lidar com coisas como imagens e criptografia. Quando solicitado, escolha instalar o pacote mais recente do PHP. Uma coisa que você precisa fazer é copiar os arquivos ini do módulo do diretório de amostra para o principal. Isso precisa ser feito para ativar os módulos PHP adicionais.

doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.

Obter Certificados Vamos Criptografar

No mundo de hoje, os sites devem ser veiculados via SSL ou serem prejudicados pelos mecanismos de pesquisa. Felizmente, o OpenBSD possui um ótimo aplicativo chamado acme-client. O cliente acme gerará automaticamente uma nova chave privada e solicitará um novo certificado totalmente válido. O cliente acme depende da existência de um servidor da Web, portanto, precisamos criar uma definição rápida do servidor padrão.

Com seu editor favorito, crie /etc/httpd.conf. Adicionaremos as outras definições de servidor ao arquivo posteriormente. Por enquanto, isso será suficiente para que o acme-client funcione corretamente.

prefork 5
types { include "/usr/share/misc/mime.types" }

server "default" {
    listen on egress port 80
    root "/htdocs"
    directory index "index.html"

    location "/.well-known/acme-challenge/*" {
        request strip 2
        root "/acme"
    }
}

Também usando seu editor favorito, crie /etc/acme-client.conf.

authority letsencrypt {
    api url "https://acme-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    api url "https://acme-staging-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain example.com {
    alternative names { www.example.com }
    domain key "/etc/ssl/private/example.com.key"
    domain full chain certificate "/etc/ssl/example.com.crt"
    sign with letsencrypt
}

Agora temos que ativar e iniciar o httpd. Depois de fazer isso, podemos executar o acme-client e esperar que ele obtenha nosso novo certificado. Depois disso, adicionaremos uma tarefa cron para solicitar automaticamente uma nova a cada 7 dias, para que não tenhamos que nos preocupar com a expiração.

doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com

Agora criamos o trabalho cron. Adicione esta linha abaixo da última entrada. Nesse caso, estamos dizendo ao acme-client para solicitar o novo certificado às 01:00 todos os sábados.

doas crontab -e
0       1       *       *       6       acme-client -F example.com && rcctl reload httpd

Configurando o HTTPD para WordPress

Agora é hora de configurar o httpd para WordPress. Em vez de colocar a definição de nosso site diretamente /etc/httpd.conf, vamos colocá-la em um arquivo separado chamado /etc/httpd.conf.example.come incluí-lo no arquivo de configuração principal. Geralmente, é uma boa prática separar as duas, mantendo as definições de todo o site no arquivo de configuração principal e as configurações específicas do domínio em uma diferente.

Adicione a seguinte linha na parte inferior do seu /etc/httpd.confarquivo:

include "/etc/httpd.conf.example.com"

Agora, usando seu editor favorito, crie seu /etc/httpd.conf.example.com. Por conveniência, vamos criar arquivos de log separados para o seu domínio. Isso facilita quando você tenta encontrar problemas em potencial no seu site.

server "example.com" {
    listen on egress port 80
    alias "www.example.com"

    # Automatically redirect to SSL
    block return 302 "https://$SERVER_NAME$REQUEST_URI"

    log {
            access "access-example.com"
            error "error-example.com"
    }
}

server "example.com" {
    listen on egress tls port 443
    alias "www.example.com"
    root "/htdocs/wordpress"
    directory index "index.php"

    log {
            access "access-example.com"
            error "error-example.com"
    }
    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/example.com.crt"
            key "/etc/ssl/private/example.com.key"
    }
    hsts {
            # max-age value is the number of seconds in 1 year
            max-age 31556952
            preload
            subdomains
    }

    location "/.well-known/acme-challenge/*" {
            root "/acme"
            request strip 2
    }
    location "/posts/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/page/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/comments/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
     location "/wp-json/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/wp-login.php*" {
            authenticate "WordPress" with "/htdocs/htpasswd"
            fastcgi socket "/run/php-fpm.sock"
    }
    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

Para maior segurança, implementaremos um prompt adicional de nome de usuário e senha ao fazer login no site de administração do WordPress. Como as crianças de script gostam de tentar e repetir o login do WordPress com força bruta, criamos um login adicional no nível do servidor da web. Normalmente, eles recebem cerca de 5 palpites antes que o WordPress gere um erro 401 Não autorizado.

doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd

Preparar e configurar PHP e PHP-FPM

Temos que fazer uma alteração no php para que sua instalação do WordPress possa enviar e-mails. O WordPress e alguns plugins dependem da capacidade de enviar e-mails notificando você sobre atualizações, alertas e alterações. A incapacidade de enviar e-mails pode quebrar certos recursos do WordPress. Como o httpd é executado no ambiente chroot, temos que dizer ao php como enviar e-mails. Além disso, temos que fazer algumas apresentações de desempenho para php-fpm.

Procure a sendmail_pathlinha /etc/php-7.3.inie faça a seguinte alteração:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i

Procure as seguintes linhas /etc/php-fpm.confe altere-as da seguinte maneira:

pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6

O próximo passo é habilitar e iniciar o php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

Preparar e configurar o MariaDB

MariaDB é um fork de substituição do MySQL. Precisamos fazer alguns trabalhos iniciais de configuração e preparação de banco de dados para o WordPress.

Antes de podermos usar o MariaDB efetivamente, precisamos permitir que o daemon mysql use mais recursos que o padrão. Para fazer isso, faça as seguintes alterações /etc/login.confadicionando esta entrada na parte inferior.

mysqld:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

Temos que fazer algumas alterações no arquivo de configuração do MariaDB /etc/my.cnf,. Ao fazer com que o cliente e o servidor mysql se comuniquem via soquete de domínio UNIX em vez de TCP, o uso de memória do seu servidor pode ser reduzido. Você não precisa fazer todas as alterações sugeridas abaixo. Os dois importantes a mudar são a socketlinha e comentar a bind-addresslinha. Isso move o soquete dentro do /var/wwwambiente chroot para que o WordPress possa se conectar ao banco de dados. Comentando a bind-addresslinha, impedimos que o MariaDB escute em uma porta TCP.

[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306

# This will be passed to all MariaDB clients
[client]
#password=my_password

# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

Agora precisamos executar o binário de instalação do MariaDB, ativar e iniciar o MariaDB. Este procedimento definirá uma senha root e, opcionalmente, descartará o banco de dados de teste. É uma boa ideia seguir todas as sugestões no estágio de instalação segura.

doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation

Crie o banco de dados WordPress e o usuário do banco de dados. Lembre-se de substituir <wp_user>por sua escolha de nome de usuário do banco de dados e <password>por uma senha complexa de sua escolha.

mysql -u root -p 
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT

Instale e configure o WordPress

O WordPress não possui uma porta oficial do OpenBSD há algum tempo, porque praticamente funciona imediatamente. Baixe, extraia e mova a pasta de instalação do WordPress.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Temos que copiar /etc/resolv.confe /etc/hostspara um diretório que vamos criar chamado /var/www/etc. Isso é para que o WordPress possa alcançar com sucesso o mercado. Você precisará disso para baixar plugins e temas através do site de administração do WordPress. Também é importante que o plugin Jet Pack funcione corretamente.

doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.

A partir daqui, navegue até o site do WordPress usando https através do URL que você especificou na definição de servidor da web. Se tudo estiver funcionando corretamente, você deverá ver o assistente de instalação do WordPress. Quando você chegar à opção de especificar um servidor de banco de dados, uselocalhost:/var/run/mysql/mysql.sock

Depois que o WordPress for instalado, é hora de configurar os links permanentes para que eles pareçam mais amigáveis ​​ao SEO. Na tela de administração do WordPress, vá para Settings -> Permalinks. Clique em Estrutura personalizada e digite /posts/%postname%. Depois de fazer essa alteração, clique no botão Salvar alterações. Agora você tem links muito mais agradáveis. Por exemplo, um link permanente ficará assim:https://example.com/posts/example-blog-post

A partir daqui, você deve ter um site básico pronto para usar. Certifique-se de instalar plug-ins como o Jet Pack e o WP-Super Cache. O plug-in WP-Super Cache ajuda a acelerar seu site, armazenando em cache páginas da web e eliminando pesquisas constantes no banco de dados, e o JetPack fornece excelentes estatísticas de visualização.

Fazendo backup de seu site e banco de dados WordPress

Não é necessário dizer que é muito importante fazer backup do site e do banco de dados. Felizmente, isso é uma coisa relativamente fácil de fazer. Faça o backup do seu diretório pessoal e copie-o via scp para outro local. Você também pode criar um instantâneo através do Painel de controle do Vultr. É uma boa ideia fazer as duas coisas.

cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql

Restaurando seu site WordPress

Se seu banco de dados foi corrompido e uma restauração é necessária, execute o seguinte:

gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql

Se você fez uma alteração em um arquivo de script do WordPress que quebrou alguma coisa, sempre pode reinstalar o WordPress por meio do painel de controle do administrador. Procure a Updatesseção e clique no link. Procure um botão rotulado Re-install Now. Isso corrigirá pelo menos o que está quebrado, mas a maior parte da sua configuração deve permanecer intacta.

Se o seu banco de dados estiver em boa forma, mas você editou acidentalmente um arquivo e quebrou as coisas ao ponto de não conseguir acessar o console de administração do WordPress, faça o seguinte:

rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.