Mudanças entre as edições de "Tutoriais:Implantação resumida"
(6 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 380: | Linha 380: | ||
'''PASSO 8''' | '''PASSO 8''' | ||
Talvez precise instalar o sshpass.. entao olhe o tutorial | Talvez precise instalar o sshpass.. entao olhe o tutorial | ||
Linha 410: | Linha 402: | ||
http://tekwiki.teksystem.com.br/~teksys/tekwiki/index.php?title=Certificado_SSL_GRATUITO_LETS_ENCRIPT | http://tekwiki.teksystem.com.br/~teksys/tekwiki/index.php?title=Certificado_SSL_GRATUITO_LETS_ENCRIPT | ||
'''ISIRA TODOS COMANDOS DE CRON AUTOMATICAMENTE''' | |||
/home/ecommerce/Teksystem_scripts/ativa-todos-cron-por-tempo.sh | |||
ATENCAO, NECESSARIO INSTALAR O PHP, SOMENTE O PHP SEM APACHE, RODE: | |||
apt-get install php7.0-fpm | |||
Dessa forma ele vai preencher os eventos sem você ter que ficar lembrando, mas note que o cron deve estar limpo de inserir isto pois ele vai duplicar a linha... |
Edição atual tal como às 19h52min de 8 de setembro de 2020
PASSO 1
Criar uma maquina linux debian 7GB de memoria ram e pelo menos 100GB de HD, não faça menos que isso. Lembre-se de apontar o dominio para o servidor da maquina e vice-versa. Deixa-a no jeito.
PASSO 2
Jogue a pasta com scripts Teksystem_Scripts (http://192.168.254.201/ecommerce-magento/infra) na mesma altura onde será inserido o magento2-ready(Codigo fonte do magento)
PASSO 3 Rode o comando para ser possivel utilizar a pasta com scripts:
chmod +x configura_maquina_linux.sh
rode o comando de configuracao da maquina linux
./configura_maquina_linux.sh
PASSO 4
Envie o arquivo do magento zipado pelo filezilla
PASSO 5
Apos enviado o magento e descompacta-lo:
Acesse o arquivo index.php
PASSO 6
obs: Não se esqueça de configurar o Tek-Prot!!! Ou seja o código do usuário da tekapi.
Código fonte da index:
<?php function dataVerificacaoExpirada(){ $arquivo = "data_ultima_bloqueio.txt"; $hora_espera = 2; if (is_writable($arquivo)) { $fp = fopen($arquivo, "r+"); $dataAnterior = fgets($fp, 256); date_default_timezone_set('America/Sao_Paulo'); $dataAtual = new DateTime('NOW'); $dataAnterior = new DateTime($dataAnterior); $diferenca = $dataAnterior->diff($dataAtual); $horas = $diferenca->h+($diferenca->days * 24); if($horas >= $hora_espera){ return true; } fclose($fp); }else{ $fp = fopen($arquivo, "a+"); date_default_timezone_set('America/Sao_Paulo'); $dataAtual = new DateTime('NOW'); fwrite($fp, $dataAtual->format('Y-m-d H:i:s')); fclose($fp); return true; } return false; } function gravarUltimaDataValida(){ $arquivo = "data_ultima_bloqueio.txt"; if (is_writable($arquivo)) { $fp = fopen($arquivo, "r+"); file_put_contents($arquivo, ""); // limpa arquivo date_default_timezone_set('America/Sao_Paulo'); $dataAtual = new DateTime('NOW'); fwrite($fp, $dataAtual->format('Y-m-d H:i:s')); fclose($fp); } } function gravarSeEcommerceEstaValidoNoArquivo($boolEhValido){ $arquivoValidacaoTP = "eh-valido-tekprot.txt"; $boolEhValido = $boolEhValido ? "sim" : "nao"; if (is_writable($arquivoValidacaoTP)) { $fp = fopen($arquivoValidacaoTP, "r+"); file_put_contents($arquivoValidacaoTP, ""); // limpa arquivo fwrite($fp, $boolEhValido); fclose($fp); }else{ $fp = fopen($arquivoValidacaoTP, "a+"); fwrite($fp, $boolEhValido); fclose($fp); } } function lerSeEcommerceEstaValidoNoArquivo(){ $arquivoValidacaoTP = "eh-valido-tekprot.txt"; $fp = fopen($arquivoValidacaoTP, "r+"); $boolEhValido = fgets($fp, 200); return $boolEhValido == "sim"; } // Sim, esse processo ira utilizar o mesmo token para varios clientes, mas nao importa pois ira bloquear os ataques de bots function gravarUltimoTokenEncriptadoNoArquivoPassandoToken($key, $url, $configToken, $tokenDaApiEncriptado){ $arquivoToken = "token.txt"; if (is_writable($arquivoToken)) { $fp = fopen($arquivoToken, "r+"); file_put_contents($arquivoToken, ""); // limpa arquivo fwrite($fp, $tokenDaApiEncriptado); fclose($fp); }else{ $fp = fopen($arquivoToken, "a+"); fwrite($fp, $tokenDaApiEncriptado); fclose($fp); } } function buscarUltimoTokenEncriptadoNoArquivo(){ $arquivoToken = "token.txt"; $fp = fopen($arquivoToken, "r+"); $tokenEncriptado = fgets($fp, 1024); return $tokenEncriptado; } function buscaToken($configToken, $url){ $userData = array("token" => $configToken); $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($userData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); $data = curl_exec($ch); $err = curl_error($ch); if($err === ""){ $json = json_decode($data); if(isset($json->errors)) return $json->data->token; else return false; }else{ return false; } } function validaIntegracao($configUrlWebservice, $token){ gravarUltimaDataValida(); $canal = "ECOMMERCE_MAGENTO"; $url = $configUrlWebservice. "integracao/tekecommerce/" . $canal ; $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Bearer " . $token)); // Fim - Requisicao $result = curl_exec($ch); $err = curl_error($ch); if($err === ""){ $json = json_decode($result); if(isset($json->errors)){ return $json->data; }else { return false; } }else{ return false; } } function liberaMagento(){ switch($_SERVER['HTTP_HOST']) { case '35.196.243.242 ': $mageRunCode = 'base'; $mageRunType = 'website'; break; case 'teksystemcommerce.com.br': $mageRunCode = 'tc'; $mageRunType = 'website'; break; case 'www.teksystemcommerce.com.br': $mageRunCode = 'tc'; $mageRunType = 'website'; break; } $params = $_SERVER; $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = $mageRunCode; $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = $mageRunType; $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params); /** @var \Magento\Framework\App\Http $app */ $app = $bootstrap->createApplication('Magento\Framework\App\Http'); $bootstrap->run($app); } function paginaErro($msg){ echo '<div class="container"> <div class="title"> <h3>AVISO IMPORTANTE</h3> </div> <div class="bg-tek"> <img src="http://teksystemcommerce.com.br/pub/static/version1553773995/frontend/Emthemes/everything_fashionshop/pt_BR/images/logo@2x.svg" width="300px"/> <p>Este site está temporariamente indisponível !!!</p> </div> </div> <style> .container{ border: solid 1px; margin: 0 20% 0 20%; text-align: center; } .title{ color: white; font-size: 19px; font-family:"Segoe UI", Tahoma, Geneva, Verdana, sans-serif; background-color: #000; padding: 1px; } p{ padding: 5% 0 5% 0; font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif; font-size: 25px; font-weight:900; } img{ padding-top: 10%; } .bg-tek{ background-color: #59a4f9; padding-bottom: 1px; } @media only screen and (max-width: 767px) { p{ padding: 10% 0 0 0; font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif; font-size: 45px; font-weight:900; } img{ width: 600px; } .container{ margin: unset; } } </style>'; } try { require __DIR__ . '/app/bootstrap.php'; } catch (\Exception $e) { echo <<<HTML <div style="font:12px/1.35em arial, helvetica, sans-serif;"> <div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;"> <h3 style="margin:0;font-size:1.7em;font-weight:normal;text-transform:none;text-align:left;color:#2f2f2f;"> Autoload error</h3> </div> <p>{$e->getMessage()}</p> </div> HTML; exit(1); } $key = "0fb32560a639adbb2b05b27f920a3a08"; //encrypitamento do token $expireCookie = 3600; // expira o cookie em 1h, para fazer uma nova consulta no TEKPROT $configToken = "b2121-21445-454a-bb67-0f7d622123faf"; //Token do usuario $configUrlWebservice = "http://ts.teksystem.com.br:9090/api/v1/"; //URL da api $url = $configUrlWebservice . "auth"; //URL de autenticacao if(!isset($_COOKIE["token"])){ $tokenEncriptado = buscarUltimoTokenEncriptadoNoArquivo(); if($tokenEncriptado != null){ setcookie("token", buscarUltimoTokenEncriptadoNoArquivo() , -1, '/'); } } if(isset($_COOKIE["token"]) && buscarUltimoTokenEncriptadoNoArquivo() != $_COOKIE["token"]){ setcookie("token", buscarUltimoTokenEncriptadoNoArquivo(), -1, '/'); } if(dataVerificacaoExpirada()){ //licenca invalida $result = buscaToken($configToken, $url); $encry = $result . $key ; $encry = base64_encode($encry); if($result){ gravarUltimoTokenEncriptadoNoArquivoPassandoToken($key, $url, $configToken, $encry); setcookie("token", $encry, -1, '/'); $result = validaIntegracao($configUrlWebservice, $result); gravarSeEcommerceEstaValidoNoArquivo($result); if($result){ liberaMagento(); }else{ paginaErro("Erro de conexao - Liberacao"); } }else{ paginaErro("Erro de conexao - Token"); } }elseif (lerSeEcommerceEstaValidoNoArquivo()) { liberaMagento(); }else{ paginaErro("Erro de conexao - Token"); }
ALTERE O CONFIG TOKEN:
$configToken = "b2121-21445-454a-bb67-0f7d622123faf";
PASSO 7
Acesse IP-DO-CLIENTE/phpmyadmin
Vá no repositorio: http://192.168.254.201/ecommerce-magento/inicializacao-scripts
Rode a sql procedure-implantacao.sql trocando pelas informações da empresa.
Depois rode a limpeza: procedure-limpa-pedidos-produtos.sql
Não se esqueça de colocar HTTP na url do host!
PASSO 8
Talvez precise instalar o sshpass.. entao olhe o tutorial
PASSO 9
Configure o backup automatico e aproveite para colocar no cron os scripts necessarios para rotina do magento:
http://tekwiki.teksystem.com.br/~teksys/tekwiki/index.php?title=BACKUP_CRON
PASSO 10
Adicionar caminho do arquivo e empresa em:
http://192.168.254.201/ecommerce-magento/acesso-ssh-mac-ou-linux/tree/master/Teksystem_scripts
PASSO 11
Instale o certificado gratuito lets encript:
http://tekwiki.teksystem.com.br/~teksys/tekwiki/index.php?title=Certificado_SSL_GRATUITO_LETS_ENCRIPT
ISIRA TODOS COMANDOS DE CRON AUTOMATICAMENTE
/home/ecommerce/Teksystem_scripts/ativa-todos-cron-por-tempo.sh
ATENCAO, NECESSARIO INSTALAR O PHP, SOMENTE O PHP SEM APACHE, RODE:
apt-get install php7.0-fpm
Dessa forma ele vai preencher os eventos sem você ter que ficar lembrando, mas note que o cron deve estar limpo de inserir isto pois ele vai duplicar a linha...