OpenBSD como uma solução de comércio eletrônico com PrestaShop e Apache

Introdução

Este tutorial demonstra o OpenBSD como uma solução de comércio eletrônico usando o PrestaShop e o Apache.

O Apache é necessário porque o PrestaShop possui requisitos complexos de reescrita de URL que não são suportados pelo servidor da Web incorporado do OpenBSD, httpd. Este tutorial usa certificados autoassinados. Por favor, use um certificado verificado para produção.

Tarefas de preparação

Crie temporariamente um usuário comum com permissão para usar doassem uma senha. Este acesso será removido após a instalação.

user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf

Adicione o repositório de pacotes do OpenBSD.

echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl

Encaminhe e-mails diários de status e segurança para o seu endereço.

echo '[email protected]' > /root/.forward

Defina o nome do host do servidor.

echo 'www.example.com' > /etc/myname
hostname www.example.com

Adicione o FQDN e o endereço IP do seu servidor a /etc/hosts.
Substitua 192.0.2.1pelo seu endereço IP Vultr.

127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com

Adicione os pacotes necessários para o PrestaShop e o Apache. Escolha as versões mais recentes quando solicitado.

doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip

Criou um certificado SSL autoassinado para teste. Defina Nome comum como o FQDN do seu servidor, por exemplo, www.example.com.

openssl req -x509 -new -nodes -newkey rsa:4096 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/example.com.crt -days 3650 -sha256
chmod 0600 /etc/ssl/private/example.com.key

Faça o download e extraia o PrestaShop

Localize o URL da versão mais recente do PrestaShop , faça o download /tmpe extraia para /var/www/htdocs/prestashop.

cd /tmp
wget <https://download.prestashop.com/download/releases/prestashop_1.7.6.4.zip>
unzip prestashop_1.7.6.4.zip -d /var/www/htdocs/prestashop
chown -R www:www /var/www/htdocs/prestashop

Configurar o firewall do OpenBSD (pf)

Configure o firewall para bloquear todo o tráfego de entrada, exceto ssh , www e https .

Faça uma cópia de segurança de /etc/pf.conf.

cp /etc/pf.conf /etc/pf.conf.bak

Edite /etc/pf.confcomo mostrado.

set skip on lo

block in
pass out  

pass in on egress inet proto tcp to port {ssh, www, https} \
    flags S/SA keep state

Teste e ative as regras do firewall.

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf

Configurar o OpenSMTPD como uma retransmissão de email

Faça backup do seu /etc/mail/smtpd.confarquivo.

cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak

Edite /etc/mail/smtpd.confcomo mostrado abaixo.

Notas: * A definição da tabela para segredos contém o nome de usuário e a senha da retransmissão de email. * A ação de saída procura o nome de usuário e senha sob o rótulo prestashopde /etc/mail/secretse relés o e-mail através do seu servidor de e-mail.

    table aliases file:/etc/mail/aliases
    table secrets file:/etc/mail/secrets

    listen on lo0

    action "local_mail" mbox alias <aliases>
    action "outbound" relay host smtp+tls://[email protected]:587 \
        tls no-verify auth <secrets>

    match from local for local action "local_mail"
    match from local for any action "outbound"

Crio /etc/mail/secrets

Substitua o endereço de email e a senha pelas credenciais usadas no seu servidor de email.

echo "prestashop [email protected]:password" > /etc/mail/secrets

Definir permissões para proteger /etc/mail/secrets

chmod 0600 /etc/secrets

Teste o arquivo de configuração quanto a erros e reinicie o daemon smtpd.

smtpd -n
rcctl restart smtpd

Configurar o ambiente PHP e PHP-FPM

Configure o processo PHP-FPM para escutar em um soquete TCP em vez de um soquete de domínio UNIX.

Faça a seguinte alteração abaixo para o /etc/php-fpm.confarquivo.

...
; If using a TCP port, never expose this to a public network.
;listen = /var/www/run/php-fpm.sock
listen = 127.0.0.1:9000

Faça algumas alterações adicionais no ambiente PHP em /etc/php-7.3.ini. Esse nome de arquivo pode mudar um pouco se a versão for mais recente que 7.3. Estas mudanças:

  • Permitir o upload de arquivos maiores.
  • Desative o ambiente chroot.
  • Configure o PHP para enviar email via sendmail.

    ; Default Value: not set
    ;chroot = /var/www
    ...
    ; Maximum allowed size for uploaded files.
    ; <http://php.net/upload-max-filesize>
    upload_max_filesize = 6M
    ...
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; <http://php.net/sendmail-path>
    ;sendmail_path =
    sendmail_path = /usr/sbin/sendmail -t -i
    ...
    ; Whether to allow the treatment of URLs (like <http://> or <ftp://)> as files.
    ; <http://php.net/allow-url-fopen>
    allow_url_fopen = On
    ...
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; <http://php.net/post-max-size>
    post_max_size = 12M
    

    Ative os plugins do PHP.

    cp /etc/php-7.3.sample/* /etc/php-7.3/.

Ative e inicie o daemon PHP-FPM. O nome do daemon pode ser ligeiramente diferente se a versão for mais recente.

rcctl enable php73_fpm
rcctl start php73_fpm

Configurando o MariaDB

O MariaDB fornece o back-end do banco de dados para o PrestaShop. Como o MariaDB precisa de mais arquivos abertos do que a classe padrão permite, crie uma classe especial no /etc/login.conf.

Na parte inferior do arquivo, adicione as seguintes linhas:

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

Instale o MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configure a segurança do MariaDB.

 mysql_secure_installation

Crie o banco de dados PrestaShop. Use uma senha forte.

mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT

Configurando o Apache

Cópia de segurança /etc/apache2/httpd2.conf

cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak

Faça as seguintes alterações em /etc/apache2/httpd2.conf, usando #para ativar e desativar os módulos.

Listen 443
...
LoadModule mpm_event_module /usr/local/lib/apache2/mod_mpm_event.so
#LoadModule mpm_prefork_module /usr/local/lib/apache2/mod_mpm_prefork.so
LoadModule proxy_module /usr/local/lib/apache2/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/lib/apache2/mod_proxy_fcgi.so
LoadModule ssl_module /usr/local/lib/apache2/mod_ssl.so
LoadModule rewrite_module /usr/local/lib/apache2/mod_rewrite.so
...
ServerAdmin [email protected]
ServerName 192.0.2.1:80
  • Várias outras alterações /etc/apache2/httpd2.confocorrem na parte inferior do arquivo. Remova #das instruções de inclusão indicadas.

  • Adicione as linhas de hospedagem virtual por último.

    # Server-pool management (MPM specific)
    Include /etc/apache2/extra/httpd-mpm.conf
    ...
    # Virtual Hosts
    IncludeOptional /etc/apache2/sites/*.conf
    

Crie o /etc/apache2/sitesdiretório

mkdir /etc/apache2/sites

Crie /etc/apache2/sites/example.confcom as seguintes informações:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

  SSLEngine On
  SSLCertificateFile "/etc/ssl/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCipherSuite HIGH:!aNULL

</VirtualHost>

Configure o módulo proxy do Apache adicionando o seguinte a /etc/apache2/sites/example.conf

<IfModule proxy_module>
  <IfModule dir_module>
    DirectoryIndex index.php
  </IfModule>
  <FilesMatch "\.php$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>
</IfModule>

Teste a configuração, ative e inicie o Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Verifique se o Apache está escutando nas portas 80 e 443.

netstat -ln -finet

Active Internet connections (only servers)
Proto   Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp          0      0  *.443                  *.*                    LISTEN
tcp          0      0  127.0.0.1.25           *.*                    LISTEN
tcp          0      0  *.22                   *.*                    LISTEN
tcp          0      0  *.80                   *.*                    LISTEN
tcp          0      0  127.0.0.1.3306         *.*                    LISTEN
tcp          0      0  127.0.0.1.9000         *.*                    LISTEN

Instale o PrestaShop

Navegue para o seu site em http://www.example.com. O assistente de instalação do PrestaShop será iniciado.

Depois de concluir a instalação, observe os links administrativos e de frente de loja e exclua o diretório /var/www/htdocs/prestashop/install.

Ative o SSL.

  • Clique em Parâmetros da loja
  • Clique em Geral
  • Ative o SSL para todas as partes da sua loja

Mude sua senha administrativa.

  • Clique em Parâmetros avançados
  • Clique em Equipe
  • Mude sua senha.

Algumas tarefas finais

Faça backup da sua loja e seu banco de dados:

cd /var/www/htdocs
doas tar cvfz /home/auser/prestashop.tar.gz prestashop/
doas mysqldump -u prestashop -p prestashop | gzip -4 > /home/auser/prestashop.sql.tar.gz
doas chown auser:auser /home/auser/prestashop*

Remova o acesso doas da sua conta de usuário recriando o doas.confarquivo.

echo 'permit keepenv :wheel' > /etc/doas.conf


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.