Sumário O Básico do Uso no Painel Antes de Começar Sobre o Suporte Especializado Serviços de Atuação do Suporte Atuação Parcial de Suporte O que o Suporte Não Ajuda Sobre o Suporte de Programadores Como funciona o serviço PHP e HTML O Uso do PHP Em Servidores Compartilhados Memória e Upload de Arquivos do PHP Local dos Arquivos PHP ou HTML Página Inicial em PHP ou HTML Resumo do Local e Página Inicial de Sites PHP/HTML Uso de Processamento em PHP Como visualizar um site PHP ou HTML sem o domínio Cada Painel de Controle Portas de cada painel de controle O https do WHM/cPanel ou NGasi O Painel de Controle WHM - Revenda O acesso ao painel de controle WHM Criando novos domínios como revenda de sites Criando um Pacote de Revenda Adicionando o cPanel para um novo Domínio Listando Domínios da Revenda Alterando a senha do acesso ao painel cPanel do domínio revendido DNS Próprio em Revenda O Painel de Controle cPanel O acesso ao painel de controle cPanel Permissões de Arquivos e Diretórios Fantastico De Luxe para Aplicativos OpenSource PHP Instalando o WordPress em sua conta Removendo um aplicativo como o WordPress Instalando o WordPress em um subdomínio Problema ao instalar um aplicativo no Fantastico De Luxe Usando um Programa de FTP Usando o FileZilla Adicionando novos Domínios no cPanel Adicionando Domínios Suplementares Adicionando Domínios Estacionados Adicionando subdomínios no cPanel Adicionando um Subdomínio Adicionando novos Domínios no WHM Adicionando novas contas de e-mail Alterando a Senha ou Excluindo Contas de Email Redirecionando Contas de Email 1 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 30 32 33 34 36 37 38 39 40 44 46 48 49 50 53 54 55 56 57 58 59 61 62 Acesso ao E-mail Acesso ao E-mail pelo Webmail Acesso ao E-mail pelo PC ou MAC Acesso ao E-mail pelo Outlook 2010 - Windows Acesso ao E-mail pelo Mail do Mac OS Acesso ao E-mail pelo Thunderbird (Linux/Windows/Mac OS) Sobre as regras de envio de emails Evitando Spams com os recursos do painel Verificando a legitimidade de um e-mails enviado O Spam Assassin O BoxTrapper Tradução das Mensagens do BoxTrapper Visualizando as estatísticas de acesso ao seu site Personalizando as paginas de erro do Apache Como funciona o serviço Java A memória do servidor Java Uso de Processamento em Java O Painel de Usuário Java O acesso o painel NGasi Erros do cliente e direito de suporte Acesso Java em conexão ao banco de dados Instalando o servidor Java Local onde o servidor Java é instalado A estrutura do servidor Java Suas bibliotecas JAR Compartilhando seu servidor Java em outros domínios ou subdomínios Como mapear outro domínio ou subdomínio no painel Java O Básico de Uso dos Servidores Java Sobre a exibição no domínio Usando o servidor Java Tomcat Subindo o aplicativo no Tomcat Subindo um aplicativo na Raiz do domínio com o Tomcat Configurando o acesso ao Manager do Tomcat Configurando o manager do Tomcat 7/8 Mapeando o Manager no Tomcat Usando o servidor Java Jetty Subindo um aplicativo na Raiz do domínio com o Jetty Usando o servidor Java JBoss Usando o servidor Java JBoss 5 e 6 Subindo um aplicativo na Raiz do domínio com o JBoss 5 e 6 Usando o servidor Java JBoss 7 Usando o servidor Java JBoss 7 com aplicativo na raiz do domínio Pequeno exemplo do deploy na raiz com JBoss 7 Usando o servidor Java Wildfly Usando o servidor Java Wildfly com aplicativo na raiz do domínio Pequeno exemplo do deploy na raiz com Wildfly Usando o servidor Java GlassFish Colocando seu aplicativo na raiz do domínio com o servidor GlassFish Aplicativo EAR na raiz com o GlassFish 2 64 65 66 67 71 74 76 77 78 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 114 115 117 118 119 121 122 123 127 131 Logs de Acesso do Servidor Java Alterando o Locale: Data, hora, números e moedas Alterando o Locale do Tomcat Alterando o Locale do GlassFish Um mesmo servidor Java em vários domínios Trabalhando com o Banco de Dados Criando Banco de Dados PostgreSQL no Painel Usuário PADRÃO do PostgreSQL no Painel Exportando no PostgreSQL do cPanel Importando no PostgreSQL do cPanel Importando no PostgreSQL Bancos Grandes Criando Banco de Dados MySQL no Painel Criando o usuário ao Banco de Dados MySQL no Painel Definindo o usuário ao Banco de Dados MySQL no Painel Formas de acesso ao Banco de Dados Usando o phpMyAdmin para o MySQL Usando o MySQL pelo Aplicativo Hospedado Usando o phpPgAdmin para o PostgreSQL Usando o PostgreSQL pelo Aplicativo Hospedado Acesso Remoto ao Banco de Dados Liberando o acesso remoto ao MySQL Acessando remotamente o MySQL Erro comum: Host is blocked because of many connection errors Exceção no PostgreSQL Dúvidas Comuns Encontradas na Hospedagem Uso do HTTPS HTTPS em Painéis HTTPS em Domínio 128bits ou 256bits Erro no certificado SSL: Elementos não criptografados Erros Comuns Encontrados na Hospedagem Erros Gerais Erro 500 Resolvendo o Erro 500 Erro 503 Erro 503 com servidor Java iniciado O Erro 404 Resolvendo o Erro 404 no PHP Resolvendo o Erro 404 no Java Erros de Memória o Servidor Java Resolvendo o erro PermGen Resolvendo o erro Java heap space Proxy Error no Acesso ao Aplicativo Java Erros Comuns de Operação no Banco de Dados Erro de Permissão ou Privilégio no MySQL Erro de Permissão ou Privilégio no Usuário Erro de Permissão ou Privilégio em Functions, Views e Procedures Resolvendo erro de Privilégio Erro de Permissão no PostgreSQL 3 132 133 134 135 136 138 139 140 141 143 144 145 146 147 149 150 151 152 154 155 156 157 158 159 160 161 162 163 164 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 185 186 Resolvendo o Erro de Permissão no PostgreSQL Banco de Dados existente após exclusão O Erro Broken Pipe ou Communications link failure Servidor Java não quer parar ou reiniciar Fantastico De Luxe - Access denied for user Troca de Senha do Admin Do GlassFish Serviço Java não responde com erro de Timeout Erro do MySQL: Host is blocked because of many connection errors Erros Comuns de E-mail Erro 501 Too many syntax or protocol errors Alguns emails não vão para a caixa de enviados no Outlook Outlook não salva emails em itens enviados Erro de E-mail: Retry timeout exceeded copy Causas da falha: Retry timeout exceeded O SVN Criando seu Repositório SVN Testando o acesso remoto Realizando Dump do Repositório Recuperando o Dump do Repositório Erro no repositório do SVN O GIT Para Desenvolvedores Instalando o WebServices Axis2 no Tomcat Enviando E-mails Enviando E-mail com Java Enviando E-mail com PHP Alterando o Comportamento com as Diretrizes Apache Desenvolvendo seu .htaccess URL Amigável ou Mod_Rewrite Procedimentos em seu Banco de Dados Criando uma Stored Procedures no MySQL Criando Functions no MySQL Criando Triggers no MySQL Privilégios em Procedimentos no MySQL Uso Avançado do Painel e Serviços Novas contas de FTP Removendo contas de FTP Cuidados ao excluir uma conta extra de FTP Acesso SSH através do sistema operacional Acesso SSH através do Linux/Unix e Windows Linux/Mac OS X/FreeBSD/ Unix em Geral Windows XP/Vista/7/8 Gerando chaves de acesso SSH no cPanel Usando as chaves caso esteja usando o Linux/MacOS X Usando as chaves caso esteja usando o Windows Personalizando os DNS do seu Serviço Vários Domínios ou Subdomínios na Raiz de um GlassFish Configurando no GlassFish Desativando erros do PHP 4 187 188 189 191 192 193 195 196 197 198 199 200 201 202 203 204 207 209 210 211 212 212 213 214 214 215 217 218 219 221 222 223 224 225 226 227 228 229 230 231 232 233 235 238 239 240 242 243 245 Ativando o GZip para Conteúdo Web Criando Tarefas Automatizadas - Cron 246 247 5 O Básico do Uso no Painel Este%capítulo%ensina%a%base%de%uso%do%painel%no%serviço%de%hospedagem%da%Integrator. 6 Antes de Começar Antes%de%iniciar%a%jornada%em%conhecer%os%pontos%chaves%de%seu%serviço,%através%deste% manual,%queremos%que%entenda%alguns%pontos%técnicos,%simples%que%não%estão%sobre%seu% controle%por%não%serem%exclusivamente%seus. 1. A% porta% 80% do% servidor% da% Integrator% é% compartilhada% entre% todos% os% usuários.% Nossos%servidores%Java%executam%em%portas%exclusivamente%lançadas%pelo%nosso%sistema% e%roteadas%pelo%painel. 2. Não%altere%a%porta%do%seu%servidor%Java,%por%exemplo%para%8080,%ou%qualquer%outra% que%“considere”%importante.%Se%o%Jizer,%seu%servidor%será%paralisado%sem%aviso%prévio. 3. O%Banco%de%dados,%até%o%plano%Java%EE/PHP,%incluindo%promocionais%de%similares% características,%não%são%servidores%exclusivos,%ou%seja,%você%não%é%o%administrador%geral% do%serviço%de%banco%de%dados%como%um%todo.%Isso%signiJica%que%NÃO%é%possível%alterar%a% porta,%mudar%o%encoding%default%do%PostgreSQL,%acessar%remotamente%o%PostgreSQL,%dar% permissões%administrativas%para%o%seu%usuário%de%forma%que%ele%crie%banco%de%dados%por% script,% além% de% entre% outras% modiJicações% que% exigem% serem% feitas% diretamente% pelo% administrador%geral.%Se%esta%for%a%sua%necessidade,%considere%mudar%de%plano%para%um% que%permita%tais%condições%ou%adicionar%um%servidor%de%banco%de%dados%dedicado. 4. Você%tem%o%direito%de%alterar%o%que%precisar%em%seu%servidor%Java.%Mas%nunca%altere% a%memória%\%além%do%já%considerado%no%item%2.%Isso%fará%seu%servidor%cair%ou%até%mesmo% ser%suspensa%sua%conta. 5.% Jamais%realize%envios%massivos,%ou%SPAM. 6. ConJigurações%técnicas%que%não%fazemos%cujo,%em%princípio,%precisa%saber:% ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ Uso%de%keep\alive%connection,% Timeout%acima%de%5%minutos,% Execução%de%conexões%persistentes%inJinitas,% SVN%via%protocolo%http,% Mais%de%um%repositório%SVN%por%domínio,% Múltiplos%usuários%GIT%em%um%mesmo%terminal%SSH%para%a%mesma%conta,% Acesso%SHELL%para%usuários%de%plano%#1,% PostgreSQL%em%muitos%planos%não%possuem%acesso%externo%pelo%pgAdmin,% Uso%de%CPU%intenso%acima%de%5%,% Memória%além%do%plano%contratado%sem%custo,% Alterações% personalizadas% no% seu% servidor% Java% para% suas% necessidades% e% que% Implicam%em%falhas%de%segurança%em%nossos%serviços,% Adicionar%outros%serviços%Java%além%do%servidor%Java Subir%outro%servidor%Java%em%paralelo Subir%outro%domain%do%GlassFish Os% pontos% acima% são% dúvidas% comuns% respondidas% sobre% a% hospedagem% que% escolheu.% Caso% necessite% de% um% ou% mais% itens% expostos% nos% tópicos% como% sendo% indisponível% no% plano% que% escolheu,% nos% comunique% seu% desejo% enviando% um% email% para% [email protected],%que%lhe%direcionamos%para%um%plano%adequado.%% 7 Sobre o Suporte Especializado Chamamos%de%suporte%especializado%os%seguintes%proJissionais%que%atendem%aos% chamados%de%hospedagem: • Administradores%de%Painéis%\%Administram%painéis%e%analisam%erros%pertencentes% a%eles • Administradores%Linux%\%Administram%os%serviços%do%sistema%operacional • Administradores%de%servidor%Java%\%Administram%serviços%de%servidores%Java 8 Serviços de Atuação do Suporte Cada%administrador%tem%um%papel%e%faz%parte%de%uma%equipe.%Estes%administradores%são% acionados%dependendo%o%chamado%para%analisar: 1.%Erros%apresentados%nos%painéis%de%controle 2.%Erros%apresentados%em%serviços%executando%no%Linux 3.%Erros%apresentados%ao%subir%um%servidor%Java 9 Atuação Parcial de Suporte O%suporte%especializado%da%Integrator%ajuda%parcialmente%em%%resolver%casos%como: 1.%Erro%de%envio%de%email%pelos%nossos%serviços 2.%Acesso%por%porta%de%servidor%Tomcat 3.%Problema%ocasionado%de%permissão%em%banco%de%dados 4.%Análise%de%falhas%de%segurança%de%aplicativo%para%resolução%mais%rápida 10 O que o Suporte Não Ajuda O%suporte%especializado%da%Integrator%negará%ajuda%em%%resolver%casos%como: 1.%Erro%apresentado%pelo%aplicativo%PHP 2.%Erro%apresentado%pelo%aplicativo%Java 3.%Falha%parcial%de%aplicativo 4.%Correção%de%código%para%funcionamento%em%serviços 5.%Dicas%para%contornar%problemas%programáticos 6.%Ensino%de%servidores%Java 7.%Ensino/ajuda%em%uso%de%programas%externos%para%qualquer%serviço 8.%Leitura%de%Logs%de%servidores%Java%para%ajuda%com%erros%de%aplicativo%de%usuário 11 Sobre o Suporte de Programadores Os%programadores%especialistas%não%são%acessíveis%no%suporte%de%primeiro%nível%padrão% em%todos%os%serviços%de%hospedagem,%onde%consideramos%apenas%administradores. O% suporte% de% programadores% é% contratado% separadamente% ou% adicionado% em% plano% especíJico%contratado.% Para% informações% se% o% seu% plano% possui% tal% suporte% sem% custo,% consulte% o% [email protected]. 12 Como funciona o serviço PHP e HTML Assim% que% liberada% sua% conta,% páginas% PHP% 5.x% e% HTML% funcionam.% O% acesso% ao% seu% servidor% para% levar% arquivos% está% basicamente% restrito% ao% usuário% do% FTP% do% seu% domínio.% O%servidor%da%Integrator%não%opera%com%caches,%ou%seja,%não%temos%em%nossas%máquinas% Varnish,%%Memcached%e%nem%outro%cacheador%de%servidor. Nada%do%que%existe%padronizado%pode%ser%alterado,%isso%inclui%adicionar%novas%extensões% PHP%que%estejam%fora%do%já%existente%serviço%fornecido. Situações*que*não*prestamos*suporte: • Problemas%referentes%a%formatação%de%páginas%HTML%e%CSS • Correção%de%versões%antigas%de%páginas%feitas%em%código%PHP%defasado • Falhas%de%segurança%advindas%de%sites%antigos%e%sem%manutenção • Ensino%de%linguagem%PHP%ou%de%formatação%HTML/CSS • O%Apache%não%é%somente%seu,%portanto%não%poderá%personalizá\lo • Site%e%conJigurações%de%domínio%sempre%pelo%painel%cPanel/WHM • Personalizações% de% .htaccess% para% resolver% questões% de% sites% desenvolvidos% por% terceiros. 13 O Uso do PHP Em Servidores Compartilhados A%Integrator%Host%sempre%opera%com%o%PHP%na%última%versão%mais%estável%e%compatível% com%99%%dos%aplicativos%opensource%existentes%no%mercado. Não%há%como%personalizarmos%versões%para%usuários%de%hospedagem%compartilhada. 14 Memória e Upload de Arquivos do PHP A%Integrator%Host%utiliza%em%sua%hospedagem%compartilhada%as%seguintes%conJigurações% de%memória%e%upload%de%arquivos%para%o%uso%de%PHP: • • Máximo*de*Memória*RAM*disponível*por*processo:%128MB%de%RAM Tamanho*Máximo*para*Upload*de*arquivos:%25MB%de%tamanho%máximo 15 Local dos Arquivos PHP ou HTML Existe%um%padrão%inicial%do%local%onde%Jicam%os%arquivos%PHP%ou%HTML: 1)%Diretório%public_html 2)%Atalho(Link%Simbólico)%em%www%(o%mesmo%que%public_html) 16 Página Inicial em PHP ou HTML Existe%um%padrão%para%página%inicial%no%local%onde%Jicam%os%arquivos%PHP%ou%HTML: • PHP:%index.php • HTML:%index.htm%ou%index.html 17 Resumo do Local e Página Inicial de Sites PHP/HTML Seguindo%o%padrão,%suba%suas%páginas%PHP/HTML,%dentro%do%diretório%public_html,% contendo%um%index.php,%índex.html%ou%índex.htm.%Evidentemente,%só%haverá%um% index,%sendo%os%demais%nomes%suas%páginas%como%criadas. Uma%estrutura%simples,%ao%ser%colocada%em%public_html,%de%páginas%HTML%seria: public_html/ * ****index.html ****pagina1.html ****pagina2.html 18 Uso de Processamento em PHP A%Integrator%Host%permite%o%uso%máximo%de%5%%de%CPU%em%20%minutos%de%tempo% máximo.% Caso%o%usuário%comece%a%ter%problemas%de%processamento%enviaremos%um%alerta.%Na% insistência%do%processamento,%o%usuário%terá%um%informativo%explicando%sobre%o%melhor% plano%para%o%caso. A%Integrator%não%abre%exceções%quanto%ao%uso%de%processamento%em%qualquer%plano%de% hospedagem%compartilhada%que%houver. Caso%a%sua%necessidade%seja%de%processar%arquivos%com%alto%índice%de%processamento% por%severos%minutos,%entre%em%contato%com%[email protected]%para%lhe% oferecermos%um%plano%mais%adequado%ao%seu%caso. 19 Como visualizar um site PHP ou HTML sem o domínio Para%%visualizar%o%site%em%PHP%ou%HTML%ainda%sem%o%domínio,%utilize%o%IP%com%o%nome%de% usuário,%do%servidor,%assim: http://IP_DO_EMAIL_CONFIGURACOES/~usuarioTftp Por%exemplo,%digamos%que%o%IP%do%servidor%onde%está%hospedado,%informado%no%e\mail% de% ConVigurações* e* Instruções* de* Uso% seja% 174.142.48.58% e% seu% usuário% FTP% seja% integrator.%Você%acessa%seu%site%PHP%ou%HTML%da%seguinte%forma: http://174.142.48.58/~integrator/ IMPORTANTE:% O% IP% informado% no% e\mail% de% ConVigurações* e* Instruções* de* Uso% não% lhe% pertence.% Se% contratar% um% IP% dedicado% (veja% o% valor% de% um% IP% dedicado% mandando% um%e\mail%ao%[email protected]),%ai%sim,%o%IP%acessado%será%seu. 20 Cada Painel de Controle Na%hospedagem%temos%três%painéis%de%controle:%WHM,%cPanel%e%NGasi. ◆ O% WHM% é% o% painel% de% controle% geral,% de% revenda.% Ele% permite% a% você% adicionar,% remover,% acrescentar% ou% retirar% recursos% de% domínios.% É% neste% painel% que% você% controla%espaço,%banda%de%uso,%paralisa%um%cliente. ◆ O%cPanel%é%o%painel%que%o%cliente%acessa.%Ele%é%onde%estão%os%recursos%do%domínio% como:%email,%bancos%de%dados,%DNSs%se%você%permitir,%usuários%e%senhas%do%FTP% entre%outros. ◆ O%NGasi%é%o%painel%Java,%onde%o%cliente%pode%escolher%o%servidor%que%vai%instalar,% iniciar,%parar%e%ler%os%logs%de%saída%do%terminal. IMPORTANTE:* Nem% toda% hospedagem% possui% os% três% painéis% de% controle.% Caso% tenha% dúvidas% sobre% o% plano% que% escolheu,% ou% deseja% mudar% de% plano,% envie% sua% questão% ao% email%[email protected]%para%maiores%detalhes%ou%ajuda.% 21 Portas de cada painel de controle Cada%painel%de%controle%possui%uma%porta%especíJica.%Estas%portas%precisam%ser%liberadas% em%seu%Firewall%Caso%precise%acessar. • • • WHM%\%Utiliza%a%porta%padrão%2087 CPanel%\%Utiliza%a%porta%padrão%2083 NGasi%\%Utiliza%a%porta%padrão%8663*ou*8666 22 O https do WHM/cPanel ou NGasi Os%painéis%WHM/cPanel%e%NGasi%são%todos%direcionados%a%usar%um%SSL%autoassinado.% Um%certiJicado%SSL%precisa%ser%atribuído%a%um%domínio,%sempre.%O%painel%é%acessado%por% IP%e,%como%não%tem%um%domínio%vinculado%e%nem%SSL%reconhecido%por%ele%atribuído,%verá% uma%mensagem%de%alerta,%como%este%que%aparece%no%browser%Google%Chrome: Não*se*preocupe.*Basta%prosseguir%e%adicionar%exceções%no%browser,%quando%houver.%O% SSL% está% ativo,% mesmo% não% estando% em% um% domínio,% para% criptografar% os% dados% transmitidos%de%usuário%e%senha%do%seu%browser,%colocados%para%entrar%no%painel,%para% serem% recebidos% pelo% servidor.% Mesmo% não% sendo% reconhecido% pelo% painel,% os% dados,% ainda%assim,%são%criptografados. IMPORTANTE:*Se%alterar%sua%senha,%não%temos%como%saber.%O%que%poderemos%fazer,%caso% isto% ocorra,% é% alterar% a% senha% para% aquela% que% lhe% enviamos% com% seu% e\mail% de* ConVigurações*e*Instruções*de*Uso. Portas*de*cada*painel*de*controle Portas*de*cada*painel*de*controle 23 O Painel de Controle WHM - Revenda O%WHM%é%o%painel%de%controle%geral,%de%revenda.%Ele%permite%a%você%adicionar,%remover,% acrescentar% ou% retirar% recursos% de% domínios.% É% neste% painel% que% você% controla% espaço,% banda%de%uso,%paralisa%um%cliente. 24 O acesso ao painel de controle WHM Para%acessar%o%painel%de%controle%WHM,%inicialmente,%utilize%o%endereço%apresentado%em% seu%e\mail%de%ConVigurações*e*Instruções*de*Uso,%que%sempre%terá%o%seguinte%formato: O%padrão%mais%simples: http://IP/whm% Pela%porta%diretamente: %http://IP:2087/ Pelo domínio que utiliza na Integrator (precisa apontar para a Integrator): %http://seusite.com.br:2087/ IMPORTANTE:*Temos%o%IP%que%deve%ser%substituído%pelo%informado%no%email%supra% citado%ou%o%“seusite.com.br”,%caso%aponte%para%a%Integrator,%como%seu%domínio. 25 Criando novos domínios como revenda de sites Caso% o% seu% plano% suporte% revenda% de% sites,% % a% criação% de% domínios% de% revenda% exigem% dois%passos%simples:% 1)%Criar%um%pacote%ou%utilizar%um%pacote%criado%existente 2)%Adicionar%o%acesso%cPanel%criando%o%cadastro%do%domínio%no%painel 26 Criando um Pacote de Revenda 1)%Vá%em%Packages* » *Add*a*Package/Pacotes*»Adicionar*um*pacote. 2)%Dê%um%nome%para%o%seu%pacote%(Nome%do%estilo)%: 3)%Selecione%os%recursos%do%pacote.%Os%recursos%principais%são: • Cota*(MB)%–%tamanho%em%MB%do%espaço%usado%em%disco; • Largura*de*banda*(MB)%–%este%local%pode%ser%colocado%um%número%grande,%pois% a%banda%não%tem%limites; • Max*Contas*FTP%–%Quantidade%de%contas%FTP%que%o%domínio%terá%permissão%para% criar. • Max* Contas* de* eTmail% –% Quantidade% de% e\mails% que% o% cliente% poderá% criar% no% painel%cPanel. • Max*Bancos*de*Dados%–%Quantidade%de%bancos%de%dados%que%será%permitido%ao% cliente%criar%no%painel%cPanel. • Max*Subdomínios%–%Número%máximo%de%subdomínios%permitidos%ao%cliente% criar%no%painel%cPanel; • Max*Domínios*Estacionados%–%Número%máximo%de%domínios%estacionados%que% o%cliente%será%permitido%criar; • Max*Domínios*Suplementares%–%Número%máximo%de%domínios%adicionais%que%o% cliente%será%permitido%criar%no%cPanel%(isto%dividirá%o%espaço%dele%com%todos%os% domínios%que%ele%criar). • ETmail*horária*máxima*pelo*domínio*de*Retransmissão%–%Número%máximo%de% e\mails%que%podem%ser%enviados%por%hora.%Este%valor%não%pode%superar%250% emails%por%domínio,%uma%vez%que%a%nossa%restrição%global%impede%acima%disto.%% Coloque%valores%baixos%se%desconJiar%que%seu%usuário%realizará%spam. • Percentual*máximo*de*mensagens*que*falharam*ou*diferida*um*domínio* pode*enviar*por*hora%–%Porcentagem%dos%emails%enviados%que%retornam%com% erro.%Ao%dar%uma%porcentagem,%o%usuário%poderá%ser%bloqueado%após%tantos%%%do% enviado%ser%retornado%por%falha%no%envio.%Esta%falha%vai%desde%email%inexistente,% até%recusa%por%empresas%cujo%o%email%que%foi%enviado%não%é%solicitado%ou%está% sendo%considerado%spam.%Deixe%sempre%uma%porcentagem%de%falhas%para%que%o% 27 usuário%seja%bloqueado%caso%ele%falhe%muito,%evitando%problemas%de%spam%e% nosso%bloqueio%da%conta%que%possui%por%ter%usuário%realizando%spam. 4)% Você% poderá% permitir% que% o% cliente% tenha% acesso% ao% SHELL*,% podendo% executar% comandos%via%SSH,%assim%como%determinar%a%língua%do%painel%cPanel. 5)%Para%conJirmar%a%criação%do%pacote,%clique%em%Adicionar. 28 IMPORTANTE:*O%acesso%Shell,%mesmo%ativo%por%você,%não%é%liberado%automaticamente.% Lembre\se%que%o%SSH%é%um%recurso%de%segurança%extrema%e%a%grande%maioria%dos% usuários%não%necessitam%deste%recurso.%Liberá\lo%poderá%causar%problemas%a%sua% revenda%caso%este%cliente%que%liberou%cause%transtornos%ao%servidor%da%Integrator.% Pedimos%cautela%no%pedido%de%liberação%de%acesso%shell.%Nós%precisamos%dar%a%última% autorização.%Envie%o%pedido%para%[email protected].% 29 Adicionando o cPanel para um novo Domínio 1)%Ainda%no%WHM,%vá%em%Account*Functions* » *Create*New*Account/Funções*Conta* »Criar*uma*nova*conta. 2)%Preencha%o%formulário%com%os%dados%do%domínio%que%vai%liberar%(Informações%de% Domínio): 3) Determine o Pacote/Package que criou para a revenda. 4)%Determine%a%língua%do%painel%cPanel: 5) Em DNS Configurations/Configurações de DNS, deixe marcada apenas as opções 30 “Enable DKIM on this account” e “Enable SPF on this account (…)”. 6)%Selecione%o%primeiro%item%para%as%conJigurações%de%email%(Correio%conJigurações%de% roteamento): 7)%ConJirme%a%criação%do%domínio%no%botão%Create/Criar. 31 Listando Domínios da Revenda Para%listar%e%acessar%o%cPanel,%através%de%sua%revenda,%no%WHM,%vá%em%Account* Information* » *List*Accounts/Informações*da*Conta*»Contas*Lista: 32 Alterando a senha do acesso ao painel cPanel do domínio revendido Vá% em% Account* Information»List* Accounts/Informações* da* Conta* »Contas* Lista.%% Clique% no% sinal% de% .% Altere% a% senha% do% painel% em% Change* Password/Alterar* senha. Confirme no Change/Mudar. 33 DNS Próprio em Revenda 1) Entre no painel WHM com o seu usuário e senha de revenda; 2) Em Server Configuration»Basic cPanel & WHM Setup/Configuração do Servidor »Básico cPanel & WHM Setup; 3) No campo "Nameserver 1" alterar os nomes dos NS1 e NS2 para o desejado (o correto é 34 do seu domínio principal, sempre) e clicar em "Save Changes"; 4) Ao criar novos domínios com os DNS, vá em “Account Functions »Create a New Account/Funções Conta »Criar uma nova conta" e selecione as opções de DNS: IMPORTANTE:*Seu%domínio%deve%conter%seus%DNS%próprios%criados%no%registro.br,%por% exemplo,%antes%de%usar%em%outros%domínios%de%sua%revenda.%Os%DNS%próprio%exigem% respectivamente%os%IPs.%Caso%não%saiba%quais%são%seus%IPs%de%revenda,%peça%ao% [email protected]. 35 O Painel de Controle cPanel O%cPanel%é%o%painel%que%o%cliente%acessa.%Ele%é%onde%estão%os%recursos%do%domínio%como:% email,%bancos%de%dados,%DNSs%se%você%permitir,%usuários%e%senhas%do%FTP%entre%outros. 36 O acesso ao painel de controle cPanel Para%acessar%o%painel%de%controle%cPanel%use%o%endereço%apresentado%em%seu%e\mail%de% ConJigurações%e%Instruções%de%Uso,%ao%qual%possui%duas%formas%principais: Pelo IP e nome do painel: http://IP/cpanel%% Pelo%IP%e%Porta: https://IP:2083/ Pelo domínio que utiliza na Integrator (precisa apontar para a Integrator): %http://seusite.com.br:2083/ IMPORTANTE:*Temos%o%IP%que%deve%ser%substituído%pelo%informado%no%email%supra% citado%ou%o%“seusite.com.br”,%caso%aponte%para%a%Integrator,%como%seu%domínio. 37 Permissões de Arquivos e Diretórios Permissões de Arquivos e Diretórios Para%diretórios%e%arquivos,%seja%para%uso%ou%envio%de%upload,%precisam%estar%com%estas% regras%sempre: Diretórios%\%755 Arquivos%\%644 Executáveis%\%777%(procure%evitá\los) IMPORTANTE:*Os%executáveis%são%para%arquivos%shell%em%geral. 38 Fantastico De Luxe para Aplicativos OpenSource PHP Existem%alguns%aplicativos%PHP%muito%populares,%como%o%WordPress,%Joomla%e%outros,% cujo%automatizamos%sua%instalação%dentro%do%cPanel.% A%visão%que%teremos%agora%é%de%como%usar%o%Fantastico%De%Luxe%para%instalar%aplicativos% pré\deJinidos.% Como% exemplo,% iremos% usar% o% WordPress.% Mas% a% sequência% serve% para% qualquer% aplicativo%como:%Joomla,%Drupal,%phpBB%e%outros. IMPORTANTE:% O% Fantastico% De% Luxe% possui% aplicativos% PHP% conhecidos% e% são% atualizados% automaticamente% pelo% painel.% As% versões% mais% novas% que% não% estiverem% ainda% aparecendo% neste% local,% podem% ser% instaladas% manualmente% pelo% usuário,% no% diretório%que%este%desejar,%desde%que%dentro%de%public_html. 39 Instalando o WordPress em sua conta 1)%Em%Software/Serviços%clique%em%Fantastico*De*Luxe: 2)%Assim%que%apresentar%a%janela%do%Fantástico,%clique%em%WordPress%e%depois%em%Nova* instalação: 40 3)% Na% instalação,% você% preenche% o% formulário% e% conJirma% por% Jim% em% Instalar* WordPress: 4)%No%segundo%passo%será%informado%o%nome%do%banco%de%dados%que%será%criado%em%sua% conta% e% onde% você% determinou% a% criação% do% seu% WordPress.% ConJirme% em% Terminar* instalação: 41 5)% Ao% Jinalizar% a% instalação,% você% verá% as% instruções% de% acesso.% Poderá% também% enviar% estas%informações%ao%seu%e\mail: 42 43 Removendo um aplicativo como o WordPress 1)%Retorne%ao%Fantastico*De*Luxe%e%clique%em%Wordpress.%Clique%em%Remova%caso%tenha% um%instalado. 2)%Aparecerá%a%conJirmação.%ConJirme%no%botão%Remova*WordPress. 3)%Uma%terceira%mensagem%surgirá%informando%que%foram%removidos%as%conJigurações. 44 45 Instalando o WordPress em um subdomínio 1)% Caso% queira% instalar% em% um% subdomínio,% crie\o% primeiro% em% Domínios* * Subdomínios: » 1.1)%Por%exemplo,%vamos%criar%um%subdomínio%chamado%blog: 2)%Ao%iniciar%a%instalação%do%WordPress,%no%Fantástico,%selecione%o%subdomínio: 2.2)% Não% preencha% nada% em% Instalar* na* directoria.% Os% demais% campos% você% preenche% normalmente%como%ensinado%em%“Instalando%o%WordPress%em%sua%conta%”. 46 IMPORTANTE:% A% Integrator% não% ensina% a% operar,% apenas% hospeda,% qualquer% aplicativo% PHP%existente%no%Fantastico.%O%Fantastico%apenas%automatiza%a%instalação,%mas%operar%o% WordPress,%Joomla%ou%outros,%dependem%exclusivamente%do%conhecimento%do%cliente.% 47 Problema ao instalar um aplicativo no Fantastico De Luxe Caso% ao% tentar% instalar% um% aplicativo% no% Fantastico% De% Luxe,% ocorrer% o% seguinte% erro% \% onde%USUARIO%é%o%seu%usuário: Access denied for user ‘USUARIO’@‘localhost' (using password: YES) Vá% em% “Preferências% » % Alterar% Senha”,% recoloque% a% senha% do% cPanel,% antiga% e% nova% e% marque%a%opção%“Synchronize MySQL password”.%% ConJirmando% no% “Altere% sua% senha% agora!”,% volte% ao% Fantastico% De% Luxe% e% tente% instalar% novamente. IMPORTANTE:% O% Fantastico% apenas% automatiza% a% instalação% e% algumas% de% suas% características% não% são% controladas% por% nós,% como% da% obrigação% de% sincronização% de% senhas%com%o%MySQL.% 48 Usando um Programa de FTP Caso% o% cliente% não% possua% nenhuma% experiência% em% um% programa% de% FTP,% recomendamos%baixar%o%cliente%FTP%FileZilla%no%seguinte%endereço: http://Jilezilla\project.org/download.php?type=client Baixe%a%versão%correspondente%ao%seu%sistema%operacional%instalado%em%sua%máquina. 49 Usando o FileZilla Assim%que%instalar%o%FileZilla,%vá%no%menu%Arquivo* » *Gerenciador*de*Sites. Ao%aparecer%a%caixa%de%diálogo%Gerenciador*de*Sites,%clique%no%botão%Novo*Site. Na%aba%Geral,%preencha: • Host%–%coloque%o%seu%domínio; • Protocolo%–%coloque%o%protocolo%FTP; • Tipo*de*logon%–%selecione%Normal; • Usuário% –% digite% o% usuário% do% seu% FTP% indicado% no% email% de% ConJigurações% e% Instruções%de%Uso; • Senha%–%digite%a%senha%do%usuário%de%FTP%indicado%no%email%de%ConJigurações%e% Instruções%de%Uso; Após%conJigurar%o%Gerenciador*de*Sites,%preenchendo%os%dados%do%seu%domínio,%clique% no%botão%Conectar. 50 O% programa% de% FTP% abrirá% os% diretórios% locais% e% do% seu% site% remoto,% onde% hospeda% conosco,%para%que%possa%subir%seus%arquivos. Arraste% os% arquivos/diretórios% do% lado% da% sua% máquina% para% o% diretório% que% deseja% no% lado%do%seu%site%(servidor). 51 52 Adicionando novos Domínios no cPanel Se%você%não%é%revenda,%não%tem%o%WHM,%mas%quer%adicionar%domínios%e%não%se%importa% de%compartilhar%o%mesmo%painel%de%controle,%é%possível%com%o%cPanel.%Mas%atento%aos% detalhes: 1)%Não%há%um%usuário%diferente%para%o%novo%domínio 2)%O%domínio%novo%tem%usuário%FTP%com%nome%por%extenso%como:%[email protected] 3)%Não%há%como%liberar%parcialmente%uma%área%do%cPanel%para%um%usuário,%isso%inclui%e\ mails 4)%O%Webmail%não%tem%o%nome%personalizado%do%domínio:%webmail.siteadicional.com.br 53 Adicionando Domínios Suplementares Vá% em% Domínios* * » * Domínios* Suplementares.% O% domínio% suplementar% permite% compartilhar%o%mesmo%espaço,%mas%com%outro%usuário%e%senha%do%domínio%principal%do% cliente%no%cPanel. IMPORTANTE: O exemplo abaixo produzirá o domínio novo dentro de public_html, onde o usuário FTP específico seria “[email protected]”. Não há como ser apenas “usuario”. 54 Adicionando Domínios Estacionados Entre no cPanel, clique em "Domínios *» Domínios Estacionados". Adicione o outro domínio em "Criar um Novo Domínio Estacionado" e confirme no botão "Adicionar Domínio": Depois de adicionado, clique em "Gerenciar Redirecionamento". Informe o domínio para onde será redirecionado, em "Redirecionamento de Domínio Estacionado" e confirme no botão "Salvar". 55 Adicionando subdomínios no cPanel Subdomínios%são%partes%de%um%domínio%com%início%próprio%e%localização,%conteúdo,% independente.%Um%subdomínio%é%algo%como: app.seusite.com.br 56 Adicionando um Subdomínio Crie o subdomínio no cPanel, em "Domínios *» Subdomínios". Na criação de um subdomínio, o nome do diretório dado para ele, somente servirá para aplicativos PHP e HTML. subdomínio 57 Adicionando novos Domínios no WHM Ver%tópico%Criando%novos%domínios%como%revenda%de%sites%%do%manual. 58 Adicionando novas contas de e-mail 1)%No%cPanel,%vá%em%Correio* » *Contas*de*ETmail: 2)%No%assistente,%crie%a%conta%de%e\mail: 3)% As% contas% de% e\mail% criadas% aparecem% abaixo,% onde% você% pode% alterar% a% senha% ou% excluir: 59 60 Alterando a Senha ou Excluindo Contas de Email As%contas%de%e\mail%criadas%aparecem%abaixo,%onde%você%pode%alterar%a%senha%ou%excluir: 61 Redirecionando Contas de Email Para redirecionar um email para outro, siga os passos: 1) Vá no cPanel, em "Correio *» Remetentes". 2) Clique no botão "Adicionar Remetente": 3) Em "Adicionar um Novo Remetente", digite o endereço do email que você possui em sua conta no cPanel, no campo "Endereço para Encaminhamento". Em "Destino *» Encaminhar para o endereço de e-mail", você define para onde o email será encaminhado, quando o endereço para encaminhamento receber. 4) Confirme tudo em "Adicionar Remetente". 62 63 Acesso ao E-mail Na%Integrator%você%pode%acessar%suas%contas%de%email%de%duas%formas: 1)%Pelo%Webmail 2)%Por%seu%programa%favorito%em%seu%PC/Mac 64 Acesso ao E-mail pelo Webmail Existem%três%formas%de%acessar%o%Webmail: 1)%Na%conta%criada,%via%cPanel,%você%pode%ir%em%Ações*» **More**» Acessar*Webmail: 2)%No%cPanel,%em%Correio*» *Webmail: 3)%Para%acessar%diretamente%pelo%seu%navegador,%entre%pelo%endereço%apresentado%em% seu%e\mail%de%ConVigurações*e*Instruções*de*Uso,%ao%qual%possui%o%seguinte%formato: Pelo%IP: http://IP/webmail Pelo%seu%domínio%(site): http://seusite.com.br/webmail Onde “seusite.com.br” é o nome do seu site. IMPORTANTE:*Para%logar%no%Webmail,%digite%o%e\mail%completo%e%a%senha.%O%email%deve% ter%sido%criado%antes%no%cPanel. 65 Acesso ao E-mail pelo PC ou MAC Para%acessar%sua%conta%de%email%pelo%seu%programa%de%PC%ou%Mac,%seja%os%clientes%Mail,% Outlook,%Thunderbird,%temos%as%seguintes%conJigurações%padrão: ◆ ◆ ◆ Host:%mail.SEUDOMINIO.com.br Usuário:*[email protected] Senha:%do%seu%Email ◆ SMTP: ⁃ Porta: 587 ◆ POP3: ⁃ Porta: 110 66 Acesso ao E-mail pelo Outlook 2010 - Windows O exemplo abaixo será de configurações no Outlook 2010. Caso sua versão seja diferente e precise de ajuda, envie um email para [email protected]. Os passos após iniciar o Outlook 2010 1. Clique no menu Arquivo e logo após em Configurações de Conta e depois na opção que surgirá logo abaixo chamada Adicione e remova contas ou altere as configurações... conforme mostra a imagem abaixo. 2. Na tela Configurações de Conta clique em Novo. 67 3) Na tela Adicionar Nova Conta 3.1 - Marque a opção Definir manualmente as configurações do servidor ou tipo de servidores adicionais. 3.2 - Clique em Avançar. 4) Marque a opção Email da Internet e depois clique em Avançar. 5) Configurações de Email na Internet, insira suas informações pessoais, informações da conta de Email e servidores. 68 1º - Informe o Nome da Pessoa ou Responsável pela Conta de Email. 2º - Informe o Endereço de Email completo: suaconta@seudomínio. 3º - Selecione o tipo de Servidor de entrada de Emails que poder ser POP ou IMAP. 4ª - Informe o servidor de entrada de Emails que é mail.seudomínio. 5º - Informe o servidor de saída de Emails que é mail.seudomínio. 6º - Informe o Nome de Usuário que é o seu endereço de e-mail completo suaconta@seudomínio. 7º - Informe a sua senha. 8º - Marque a opção Lembrar senha. 9º - Desmarque a opção Teste as configurações da Conta clicando no botão Avançar. 10º - Clique em Mais Configurações e siga o exemplo na imagem abaixo. 69 Clique na guia Servidor de Saída e Marque as opções: Meu servidor de saída (SMTP) requer autenticação e a opção: Usar as mesmas config. do servidor de entrada de e-mails Cique em OK. Irá aparecer a tela de Configurações de Email na Internet novamente, clique em Avançar. 70 Acesso ao E-mail pelo Mail do Mac OS Abra o Mail e execute um dos seguintes procedimentos: 1. 2. 3. 4. 5. Caso você nunca tenha configurado contas de email usando o Mail, a página Bem-vindo ao Mail será exibida. Vá para a etapa 2. Caso você já tenha criado contas de email usando o Mail, no menu Mail, clique em Preferências. Na guia Contas, clique no sinal de adição (+) na parte inferior do painel de navegação para abrir a janela Adicionar Conta. Na janela Bem-vindo ao Mail ou Adicionar Conta: 1. Na caixa Nome Completo, digite o nome a ser exibido para as pessoas às quais você envia email. 2. Na caixa Endereço de Email, digite seu endereço de email principal. 3. Na caixa Senha, digite a senha da sua conta de email e clique em Continuar. Na janela Servidor de Correio de Entrada, digite o seguinte: Ao lado de Tipo de Conta, selecione POP ou IMAP. 1. Na caixa Descrição, digite um nome como lembrete da finalidade dessa conta de email. 2. Na caixa Servidor de Correio de Entrada, insira o nome do servidor de e-mail, informado anteriormente por nós. Ex: mail.seudominio.com.br. 3. Na caixa Nome de Usuário, digite seu endereço de email principal criado no painel de controle (ex: [email protected]). 4. Na caixa Senha, digite a senha da sua conta de email. 5. Clique em Continuar. O Mail irá testar a sua conexão ao servidor de entrada usando as configurações padrão. IMPORTANTE: Caso apareça a opção de certificado, devido ao SSL autoassinado do cPanel, clique em Mostrar Certificado, depois selecione Confiar Sempre e mande Conectar. Confirme a senha do seu usuário do Mac OS e não terá mais esta mensagem em seu Mail. 71 Se o teste não for bem-sucedido, clique novamente em Continuar. Você pode verificar suas configurações após concluir este procedimento: 1. Na janela Servidor de Correio de Saída, faça o seguinte: 1. Na caixa Descrição, insira o nome deste servidor de email; por exemplo, Servidor de envio da Integrator. 2. Na caixa Servidor de Correio de Saída, digite o nome do servidor SMTP. Ex.: mail.seudominio.com.br. 3. Marque a caixa de seleção Usar somente este servidor. 4. Marque a caixa de seleção Usar Autenticação. O seu nome de usuário e a senha que você inseriu para o servidor de entrada poderão ser exibidos nas caixas de texto Nome de Usuário e Senha. Esses valores são os mesmos para o servidor de Entrada ensinado anteriormente, caso não apareça. Clique em Continuar. 5. O Mail testará a sua conexão com o servidor de email de saída usando as configurações padrão. Mesma Nota acima para o SSL autoassinado do cPanel. No final do assistente, terá um sumário da criação da conta. Mantenha marcada a opção Conectar conta e clique em Criar. 72 73 Acesso ao E-mail pelo Thunderbird (Linux/Windows/Mac OS) O Thunderbird é um programa cliente gratuito, da Mozilla, OpenSource que executa nas plataformas Linux/Windows e Mac OS. O Tutorial abaixo permite configurar suas contas de email em qualquer plataforma que ele executar. 1) Crie a conta indo em Configurar Contas: 2) Cadastre a conta: 3) Espere ele testar. 4) Marque POP3 e clique em Config. Manual: 74 5) Altere os parâmetros para cada porta e tipo de acesso, confirmando em Retestar. Veja o detalhe do campo Nome do usuário. Por fim, assim que retestar, clique em Concluir. 75 Sobre as regras de envio de emails A%Integrator%é%contra%o%envio%de%e\mails%em%massa.%Por%padrão,%qualquer%%domínio%pode% enviar%de%100%emails%%até%250%emails%por%hora.%Caso%haja%a%necessidade%de%enviar%mais%e\ mails,%de%forma%legítima,%sem%ser%envios%em%massa,%entre%em%contato%com%o% [email protected],%pedindo%o%aumento%de%envios%de%e\mail%por%hora,%com%a% justiJicativa%para%tal. IMPORTANTE:%O%uso%imprudente%de%envios%de%email,%caracterizando%envios%em%massa,% causará%a%suspensão%automática%do%serviço%de%hospedagem%do%domínio%sem%devolução% do%valor%pago,%onde%consideraremos%o%ato%como%quebra%de%contrato. 76 Evitando Spams com os recursos do painel Atualmente%o%número%de%spams%que%recebemos%é%muito%grande.%Podemos%fazer%um% bloqueio%dos%e\mails%considerados%Spam%de%diversas%formas.%O%padrão%da%Integrator%é% apresentado%de%duas%formas: 1.%Temos%conJigurado%no%servidor%geral%para%rejeitar%emails%em%blacklists%conhecidas 2.%No%cPanel%contamos%com%o%SpamAssassin%e%o%BoxTrapper%para%barrar%os%e\mails% massivos 77 Verificando a legitimidade de um e-mails enviado Indo%em%Correio*»*Autenticação*de*ETmail:% Neste%local%encontramos%o%DomainKeys.%A%explicação%de%como%funciona%está%no%próprio% painel: Temos%também%o%SPF: IMPORTANTE:%O%SPF%pode%ter%exceções%que%podem%ser%adicionadas%neste%mesmo%local,% 78 dependendo%muito%de%como%a%empresa%que%lhe%envia%e\mails%trabalha.%Entretanto,%não% só% o% seu% conhecimento% a% respeito% é% necessário,% como% também% saber% como% está% conJigurado%o%servidor%no%qual%deseja%adicionar%as%conJigurações%de%SPF.%Seja%como%for,% são% instruções% a% respeito,% sempre,% da% empresa/domínio% no% qual% está% lhe% enviando% e\ mails% e,% por% questões% de% conJigurações% diferentes% do% padrão% no% SPF,% você% não% está% recebendo.%A%empresa%no%qual%lhe%envia%e\mails%precisa%se%informar%onde%hospeda%das% regras% de% SPF% que% estão% usando% para% que% possa% adicionar% nas% ConVigurações* Avançadas.% 79 O Spam Assassin O% Spam* Assassin% é% um% sistema% de% Jiltragem% automatizado% de% e\mails,% cujo% sua% característica% é% identiJicar% mensagens% consideradas% spam% baseados% no% conteúdo% dos% cabeçalhos%e%no%corpo/texto%do%e\mail.%Mais%detalhes%são%explicados%no%próprio%painel,% no%local%onde%acessamos%o%Spam%Assassin%para%ativá\lo. Para%ativar,%vá%em%Correio**»*Spam*Assassin: 80 O BoxTrapper O%serviço%BoxTrapper**(Correio*» *BoxTrapper)%protege%sua%caixa%de%entrada%de% spams,%exigindo%que%todos%os%remetentes%de%e\mail%de%sua%lista%respondam%a%uma% mensagem%de%veriJicação,%antes%que%você%receba%seus%e\mails. 1) Procure a conta de email que deseja habilitar o BoxTrapper e clique em Manage. 81 2) Clique em Ativar IMPORTANTE:%Os%usuários%precisam%Jicar%sempre%analisando%a%lista%que%existe%no% BoxTrapper,%de%forma%a%certiJicar\se%de%que%os%e\mails,%legítimos,%que%desejam%receber,% não%Jiquem%parados%indevidamente. *Explicações-extraídas-do-próprio-cPanel 82 Tradução das Mensagens do BoxTrapper Abaixo a tradução das mensagens de confirmação geradas pelo BoxTrapper. Você pode editar os textos como preferir após copiar para a caixa de texto IMPORTANTE: não altere os valores entre os caracteres "%". Esses valores são interpretados pelo programa e representam dados da mensagem! Não altere também os valores To e Subject no início da mensagem 1) verify - Mensagem automática enviada a um novo remetente To: %email% Subject: Seu e-mail requer verificação (verify#%msgid%) A mensagem que enviou requer que você prove que é um ser vivo humano real e não uma fonte de spam. %if can_verify_web% Para completar esta verificação, basta responder a esta mensagem e deixar a linha de assunto intacta. Os cabeçalhos da mensagem enviada do seu endereço são mostrados abaixo: %headers% 2) verifyreleased - Mensagem enviada quando um remetente é adicionado à lista branca To: %email% Subject: Você foi adicionado à lista branca de %fromname% e seu e-mail foi entregue. (original: %subject%) Esta mensagem é para notificá-lo de que a sua verificação foi recebida, e seu endereço de e-mail foi adicionado à lista branca. Todas as mensagens pendentes de seu endereço foram entregues à %fromname%. Nenhuma ação é necessária de sua parte. Os cabeçalhos da mensagem enviada do seu endereço são mostrados abaixo: %headers% 83 3) returnverify - Mensagem de confirmação do BoxTrapper To: %email% Subject: Re: %subject% Esta mensagem é uma resposta a uma mensagem de verificação Boxtrapper. Nenhuma ação é necessária de sua parte. Se você estava esperando para ser adicionado à lista branca do usuário, certifique-se de que o e-mail de verificação que você respondeu continha a seqüência correta de verificação no assunto. Boxtrapper viu a chave de verificação como "%msgid%" Os cabeçalhos da mensagem enviada do seu endereço são mostrados abaixo: %headers% 84 Visualizando as estatísticas de acesso ao seu site Para%visualizar%logs%de%estatísticas,%atualizados%diariamente,%vá%em%Logs**» *Webalizer. Você%verá%os%sites%e%subdomínios%existentes%no%seu%cPanel.%Clique%na%lupa%do%domínio/ subdomínio%que%deseja%para%visualizar%as%estatísticas: 85 Personalizando as paginas de erro do Apache Caso%algo%do%seu%site%não%exista%ou%ocorra%um%erro%gerado%por%um%determinado%serviço,% um%número%e%mensagem%aparecerá%no%navegador,%contendo%a%informação%mostrada%em% páginas%padronizadas%pelo%painel,%%que%podem%ser%conJiguradas%em%Avançada**» * Páginas*com*erro,%para%o%usuário.% As%páginas%já%conJiguradas%estão%em%Editar*Códigos*de*Erros*Comuns.%Depois%clique% no%erro%e%edite%a%mensagem. Caso%necessite%de%personalizar%um%erro,%em%especíJico,%clique%em%Mostrar*Todos*os* Códigos*de*Status*de*Erro*HTTP.%Depois%clique%no%erro%e%edite%a%mensagem. 86 Como funciona o serviço Java O%acesso%ao%seu%servidor%java%está%restrito%ao%usuário%do%FTP%do%seu%domínio.%Portanto% uma%alteração%fará%perder%o%acesso%ao%servidor%Java%ou%ter%de%reinstalar%e%reconJigurar% tudo%que%já%o%fez.% Regras%básicas%de%uso%do%serviço%Java: 1)% Jamais% altere% a% memória% de% seu% plano% sem% nossa% expressa% autorização% \% custos% de% mudança%são%informados%caso%nos%peça%para%alterar 2)%Jamais%altere%as%portas%do%servidor%Java%sem%nossa%expressa%autorização 3)% Jamais% tente% subir% outro% serviço% Java% fora% do% servidor% Java% sem% nossa% expressa% autorização IMPORTANTE:*As%regras%básicas%citadas,%no%plano%que%escolheu,%devem%ser%seguidas%a% risca.%Qualquer%alteração%destas%regras%por%sua%conta%colocará%seu%serviço%em%risco%de% ser%paralisado%sem%aviso%prévio. 87 A memória do servidor Java A%Integrator%Host%respeita%totalmente%seu%plano%de%hospedagem%e,%como%tal,%a%memória% contratada%no%plano%escolhido.%A%memória%RAM%é%dedicada%a%máquina%virtual%Java%que% vai%executar%o%servidor%Java.%Ela%não%está%destinada%a%execução%de%aplicativos%Java%fora% do%servidor%Java. Qualquer%tentativa%do%cliente%de%executar%algo%fora%do%padrão%da%memória,%assim%como% tentar% adulterar% a% memória% contratada% do% plano,% para% mais,% seu% plano% poderá% ser% cancelado%imediatamente,%%sem%devolução%do%valor%pago. A%Integrator%Host%também%irá%paralisar%qualquer%serviço%Java%fora%do%servidor%Java%sem% aviso%prévio,%além%de%não%se%responsabilizar%por%eventuais%prejuízos%causados%por%conta% desta%situação. Caso% o% usuário% tenha% dúvidas% sobre% nossas% políticas% no% plano% contratado,% consulte% o% nosso%contrato%informado%em%endereço%no%email%de%ConJigurações%e%Instruções%de%Uso% recebido%ao%liberar%seu%cadastro%ou,%nosso%suporte%pelo%email: [email protected].% 88 Uso de Processamento em Java A%Integrator%Host%permite%o%uso%máximo%de%5%%de%CPU%em%20%minutos%de%tempo% máximo.% Caso%o%usuário%comece%a%ter%problemas%de%processamento%enviaremos%um%alerta.%Na% insistência%do%processamento,%o%usuário%terá%um%informativo%explicando%sobre%o%melhor% plano%para%o%caso. A%Integrator%não%abre%exceções%quanto%ao%uso%de%processamento%em%qualquer%plano%de% hospedagem%compartilhada%que%houver. Caso%a%sua%necessidade%seja%de%processar%arquivos%com%alto%índice%de%processamento% por%severos%minutos,%entre%em%contato%com%[email protected]%para%lhe% oferecermos%um%plano%mais%adequado%ao%seu%caso. 89 O Painel de Usuário Java O%NGasi%é%o%painel%Java,%onde%o%cliente%pode%escolher%o%servidor%que%vai%instalar,%iniciar,% parar%e%ler%os%logs%de%saída%do%terminal. 90 O acesso o painel NGasi O%Painel%Java,%que%permite%instalar%e%conJigurar%o%servidor%Java%em%seu%domínio,%executa% em%duas%portas: • Porta%padrão%pelo%acesso%via%cPanel:%8663 • Porta%fora%do%acesso%via%cPanel:%8666 IMPORTANTE:*O*acesso*via*porta*8663,*portando*por*dentro*do*cPanel,*transmite* sua*senha*no*endereço*http.*Se*estiver*em*um*local*de*acesso*público,*não*realize* tal*acesso. Sempre%que%for%acessar%o%painel%NGasi,%poderá%fazê\lo%diretamente%pelo%painel%cPanel%do% domínio%no%qual%demos%a%permissão%do%serviço%java. No%cPanel%Jica%em%Avançada* » *NGasi*Application*Automation. Caso%esteja%usando%outro%tema,%verá%o%Ngasi%no%cPanel%em%Ferramentas*Avançadas** » NGasi*Application*Automation: 91 Atenção:% %Se%o%painel%Java,%pelo%acesso%via%cPanel,%pedir%a%senha%do%seu%usuário%FTP,%é% normal% em% casos% onde% a% senha% possui% caracteres% especiais% não% resolvidos% pelo% cabeçalho%HTTP.%Digite\a%para%entrar. 92 Erros do cliente e direito de suporte A%Integrator%é%uma%empresa%de%hospedagem.%Não%somos%responsáveis%pela%forma%como% seu%aplicativo%foi%desenvolvido%e%nem%por%erros%dele%causados.%O%que%não%fazemos: • Ensinar%a%operar%um%servidor%Java%(ensinamos%a%usar%nossos%painéis); • Ensinar%a%conJigurar%um%administrador%de%servidor%Java; • Ensinar%a%conJigurar%um%deployment%descriptor; • Otimizar%o%desempenho%do%aplicativo; • Corrigir%erros%de%programação%do%aplicativo%do%cliente. Uma%alegação%comum%dos%clientes%é%que%funciona%localmente.%No%geral,%este%argumento% não%tem%validade%se%o%cliente%executa%tudo%por%um%programa%como%Adobe%Flex,%Eclipse,% NetBeans%ou%outros.%No%deploy,%o%cliente%precisa%esta%ciente%de%que: • • • • Nome% do% banco% de% dados% é% diferente% do% de% desenvolvimento,% assim% como% usuários%e%senhas; No%Linux,%o%servidor%faz%diferença%entre%maiúsculas%e%minúsculas%em:%nomes%de% arquivos,%nomes%de%diretórios,%nome%do%banco%de%dados; Regras%que%impomos%não%podem%ser%burladas,%pois%o%seu%serviço%de%hospedagem% compartilha%recursos%como:%servidor%de%banco%de%dados,%Apache,%PHP%e%outros.% Embora%o%servidor%Java%seja%dedicado,%a%memória%do%servidor%é%limitada%pelo%seu% plano.% Se% o% aplicativo% necessita% de% mais% memória% que% o% contratado,% erros% causados%por%esta%questão%não%são%considerados%como%problemas%nosso,%uma%vez% que%o%cliente%é%o%único%que%sabe%o%quanto%realmente%seu%aplicativo%necessita%de% memória. 93 Acesso Java em conexão ao banco de dados O%Cliente%é%obrigado%a%usar%pool%de%conexões%se%pretende%não%fechar%suas%conexões,%pois% todos% os% servidores% de% bancos% de% dados% permitem% apenas% 40% conexões% simultâneas% abertas,%seja%em%uso%ou%inoperante. O%MySQL%fecha%automaticamente,%conexões%inoperantes,%com%mais%de%8%horas.%Conexão% inoperante%é%aquela%que%não%está%sendo%usada,%mas%está%aberta%pelo%seu%aplicativo. % Esta%regra%vale%somente%para%planos%com%servidores%de%banco%de%dados%compartilhados. Caso%queira%saber%quais%dados%colocar%em%seu%aplicativo%para%se%conectar%ao%banco%de% dados,%vá%até%o%tópico%Formas de acesso ao Banco de Dados para configurar sua conexão. 94 Instalando o servidor Java O% servidor% Java% pode% ser% selecionado*% na% lista,% assim% como% a% versão% que% disponibilizamos%de%cada%um,%na%aba% : IMPORTANTE:* Cada% plano,% que% permite% servidores% Java,% possui% uma% quantidade% de% memória.% Os% servidores% que% são% possíveis% de% serem% executados% são% informados% na% página% da% Integrator.% Se% o% usuário% tentar% executar% um% servidor% Java% que% necessite% de% mais% memória,% além% dele% gerar% erros,% % poderá% ter% problemas% em% para\lo% para% substituição.%Caso%esqueça%qual%é%o%seu%plano,%veja%no%email%da%cobrança.%Os%servidores% Java% que% consegue% rodar% em% seu% plano% são% visíveis% no% site% da% Integrator,% no% link% Hospedagem*de*Sites. 95 Local onde o servidor Java é instalado Qualquer%que%seja%o%servidor%Java,%ele%sempre%será%instalado%em%seu%respectivo%diretório,% que%leva%seu%nome,%dentro%de%appservers.% %Onde%X%é%o%número%da%versão%instalada: 1. 2. 3. 4. Tomcat*5.5/6/7/8%\%appservers/apache\tomcat\Xx% Jetty*6/7/8–*appservers/jetty\Xx JBoss*4/5/6/7*–*appservers/jboss\7x GlassFish*v2/v3/v4*–*appservers/glassJish\Xx IMPORTATE:*O%X%representa%o%número.%Por%exemplo%o%Tomcat*8%é%padronizado%em% instalação%no%diretório%appservers/apacheTtomcatT8x. 96 A estrutura do servidor Java Todos%os%servidores%Java%são%mantidos%em%sua%estrutura%original,%tal%qual%é%exatamente% como% aquele% que% se% obtém% na% Internet.% Nada% é% modiJicado,% para% que% sua% experiência,% com% o% que% já% desenvolve% antes% de% publicar,% seja% aplicado% 100%% na% produção% em% hospedagem%da%Integrator. Nada% do% que% for% exposto% aqui% substitui% o% seu% conhecimento% nos% servidores% Java% e% em% suas%operações.%A%forma%como%trabalhar%com%o%servidor%Java,%de%conJigurar%o%servidor% Java,%continua%sempre%a%mesma%padrão.%A%intenção%do%manual%é,%e%sempre%será,%explicar% como%operar%o%painel%Java%para%que%o%seu%aplicativo%Jique%de%acordo%com%o%seu%desejo%de% acesso%no%domínio.% IMPORTANTE:% Tentar% realizar% um% deploy% de% forma% diferente% do% que% expomos,% acessando% áreas% do% painel% Java% que% não% estamos% aqui% divulgando,% pode% lhe% causar% problemas%na%implantação%do%seu%aplicativo%em%seu%servidor.%Operar%características%que% fogem% do% seu% acesso% direto% ao% servidor% Java,% como% deploy,% não% está% dentro% do% nosso% suporte.% 97 Suas bibliotecas JAR Nada% do% que% está% no% servidor% Java,% que% instalar,% é% personalizado% por% nós.% O% motivo:% compatibilidade%total%com%seu%aplicativo. Isso% mesmo,% queremos% que% você% coloque% suas% bibliotecas% JAR,% nas% versões% que% está% utilizando%em%seu%aplicativo,%sem%conJlitos.% Resumindo:%empacotou%em%WAR/EAR,%com%as%bibliotecas,%faça%o%deploy. IMPORTANTE:*Se%quiser%colocar%as%bibliotecas%que%possui%no%diretório%lib%do%servidor% Java,% também% pode.% Mas% Jique% ciente% de% que,% se% reinstalar% o% servidor% Java,% tudo% será% apagado%e%terá%que%subir%as%bibliotecas%novamente. 98 Compartilhando seu servidor Java em outros domínios ou subdomínios Se%a%sua%intenção%é%ter%o%mesmo%servidor%Java%em%outros%domínios,%saiba%que: 1) Não%é%possível%colocar%dois%ROOTs%independentes%para%cada%domínio; 2) O%domínio%ou%subdomínio%não%poderá%ser%cadastrado%no%WHM,%ou%seja,%precisará% cadastrar%no%cPanel%conforme%os%tópicos%“Adicionando*subdomínios”%ou% “Adicionando*Domínios*Suplementares”. 3) Não%é%possível%separar%sua%memória,%desmembrando%a%quantidade%para%mais%de% uma%JVM,%de%modo%a%distribuir%entre%mais%de%um%domínio/subdomínio%(ex:% 512MB%RAM%dividir%em%duas%JVMs%de%256MB%RAM). 99 Como mapear outro domínio ou subdomínio no painel Java Primeiro,%crie%o%domínio%ou%subdomínio%no%cPanel%conforme%os%tópicos%“Adicionando* subdomínios”%ou%“Adicionando*Domínios*Suplementares”. Depois,%vá%no%painel%Java,%clique%em domínio%suplementar%em%Web*Server*virtual*hosts: .%Selecione%o%subdomínio%ou% Se%o%primeiro%domínio%estiver%com%o%servidor%Java%na%raiz,%não%será%possível%colocar%o% segundo% na% raiz% de% um% aplicativo% independente.% Por% servidor% Java,% só% existe% a% possibilidade%de%ter%apenas%aplicativo%na%raiz%do%domínio. IMPORTANTE:%Se%a%sua%intenção%é%ter%mais%de%um%domínio%com%servidor%na%raiz,%entre% em%contato%com%o%[email protected]%para%saber%de%nossos%preços%por%memória% dedicada.%% 100 O Básico de Uso dos Servidores Java Na%Integrator,%temos%as%seguintes%versões%de%servidores%Java:% 1%\%Tomcat:%5.5.x,%6.0.x%,%7.0.x%e%8.x. 2%\%Jetty:%6.x,%7.x%e%8.x 3%\%JBoss:%4.0.x,%5.0.x,%6.0.x,%7.x%e%8%(WildJly) 4%\%GlassJish:%2.x,%3.x%e%4.x Este%Capítulo%tem%a%intenção%de%mostrar%o%básico%em%termos%de%localização%e%realização% de% deploy.% Este% manual% não% substitui% o% conhecimento% técnico% do% desenvolvedor% no% servidor%Java%que%escolher%operar. 101 Sobre a exibição no domínio Duas%situações%são%possíveis%em%uso%de%aplicações%Java%no%seu%domínio: Aplicativo%com%PHP/HTML%em%conjunto,%ou%seja,%aparecerá%assim: http://seusite.com.br/AplicativoJava Aplicativo%na%raiz%do%domínio%sendo%apenas%Java: http://seusite.com.br IMPORTANTE: Chamamos%de%“raiz”%do%domínio%a%situação%em%que%o%servidor%Java%irá% apresentar%o%seu%aplicativo%diretamente%quando%os%seus%usuários%digitarem%o%domínio% no%navegador%(seja%com%ou%sem%WWW). 102 Usando o servidor Java Tomcat Na% Integrator,% temos% as% seguintes% versões% de% Tomcat:% 5.5.x,% 6.0.x% ,% 7.0.x% e% 8.x.% Um% aplicativo% criado% no% Tomcat% 5.5.x,% executa% em% qualquer% servidor% Tomcat% de% versão% superior.% O% contrário% já% não% é% verdadeiro,% pois% bibliotecas% podem% ser% necessárias% na% versão% disponível% do% Servlet% ou% JSP% que% podem% não% ser% compatíveis% com% uma% versão% retrógrada. O% Tomcat% não% é% ensinado% pelo% nosso% suporte% de% hospedagem.% Esta% parte% do% manual% apenas%irá%orientá\lo%sobre%como%ele%funciona%na%Integrator,%com%um%exemplo%simples.% Caso% necessite% de% mais% orientações% sobre% o% Tomcat,% seu% modo% de% operação,% recomendamos%a%documentação. 103 Subindo o aplicativo no Tomcat Caso%o%aplicativo%seja%grande,%o%mais%correto%em%subir%um%aplicativo%no%Tomcat%é%usando% o%FTP. Para%fazer%deploy%no%Tomcat,%execute%estes%passos: 1) Pare%o%Tomcat%no%painel%Java%em% >% ; 2) Suba%seu%arquivo%WAR,%com%todas%as%bibliotecas,%por%FTP,%no%seguinte%diretório:% a. appservers/apacheTtomcatTXx/webapps% –% onde% X% é% a% versão% do% seu% Tomcat; 3) Inicie%o%Tomcat%no%painel%Java%em% > ; 4) Ainda% no% painel% Java,% mapeie% o% domínio% em% .% O% mapeamento% segue% a% seguinte%regra: a. Digamos% que% você% tenha% enviado% um% aplicativo% WAR% chamado% Aplicacao.war.% No% mapeamento,% digite% Aplicacao* no% campo% mostrado% abaixo%e%conJirme%no%botão%Add: 5) Teremos,% assim% que% adicionado,% a% URL% de% onde% o% aplicativo% Java% está% funcionando.%Por%exemplo: 104 Subindo um aplicativo na Raiz do domínio com o Tomcat A% raiz% de% um% domínio% é% quando% digitamos% o% endereço% do% site% (integrator.com.br% \% por% exemplo)%e%ele%abre%o%aplicativo%Java. No% Tomcat,% existe% um% padrão% para% o% ROOT% do% domínio,% onde% o% seu% aplicativo% deve% se% chamar%ROOT.war%ou%ele%deve%estar%em%ROOT.% %Faça%os%seguintes%passos%para%realizar%tal%conJiguração: 1) Pare%o%Tomcat%no%painel%Java%em% >% ; 2) Renomeie%seu%WAR%Jile%para%ROOT.war. 3) Com% o% FTP,% remova% o% diretório% ROOT,% localizado% em% appservers/apacheT tomcatTXx/webapps*–%onde%X%é%a%versão%do%seu%Tomcat; 4) Agora%suba%seu%arquivo%ROOT.war,%com%todas%as%bibliotecas,%por%FTP,%no%seguinte% diretório:% a. appservers/apacheTtomcatTXx/webapps% –% onde% X% é% a% versão% do% seu% Tomcat; 5) Inicie%o%Tomcat%no%painel%Java%em% > 6) Ainda%no%painel%Java,%mapeie%o%domínio%em% ; .%No%mapeamento,%clique%em% . IMPORTANTE:* Pools% de% conexão% exigem% a% biblioteca% do% banco% de% dados% no% diretório% appservers/apacheTtomcatTXx/lib. 105 Configurando o acesso ao Manager do Tomcat Qualquer% versão% do% servidor% Tomcat% instalada% no% painel% não% possui% o% Manager% conJigurado%por%padrão%com%um%usuário%e%senha%idênticos%ao%do%seu%painel.%Isto%é%você% quem%deve%olhar%o%arquivo%e%alterá\lo%como%quiser. As configurações de acesso ao Manager são feitas no arquivo tomcat-users.xml. O tomcat-users.xml fica em appservers/apache-tomcat-Xx/conf/tomcat-users.xml, onde o "X" é a versão do seu Tomcat. Se o seu Tomcat estiver iniciado, reinicie para ter efeito as mudanças. 106 Configurando o manager do Tomcat 7/8 O que vamos passar abaixo é um exemplo de configuração do tomcat-users.xml do Tomcat na versão 7 ou 8. Com o Tomcat parado, altere o arquivo tomcat-users.xml assim: <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager-jmx"/> <role rolename="manager-script"/> <role rolename="manager-status"/> <role rolename="manager-gui"/> <user username="USER" password="PASS" roles="manager-jmx,manager-script,manager-status,manager-gui"/> </tomcat-users> Onde USER é o usuário que deseja e PASS é a senha que deseja ter. Mas lembre-se, somente no Tomcat 7/8 deve ser assim. 107 Mapeando o Manager no Tomcat Caso não esteja usando o servidor Java na raiz do domínio, mapeie o Manager do Tomcat da seguinte forma: 1) Vá% em% % e,% no% mapeamento,% digite% manager/html* no% campo% ilustrado% na% Jigura%abaixo.%ConJirme%no%botão%Add: 2) Depois acesse o manager assim: http://seudominio/manager/html Um usuário e senha serão requisitados. IMPORTANTE: Não ensinamos as características e formas de configurações do Manager do Tomcat. Caso o usuário deseje aprender mais sobre o Manager do servidor Tomcat, veja a documentação da versão que está usando em http://tomcat.apache.org. 108 Usando o servidor Java Jetty Para%fazer%deploy%no%Jetty,%execute%estes%passos: 1) 2) 3) 4) Pare%o%Jetty%no%painel%Java%em% >% ; Suba%seu%arquivo%WAR,%com%todas%as%bibliotecas,%por%FTP,%no%seguinte%diretório:% appservers/jettyTXx/webapps%–%onde%X%é%a%versão%do%seu%Jetty; Coloque% o% contexto% do% Jetty% em% appservers/jettyTXx/contexts/% –% onde% X% é% a% versão%do%seu%Jetty; 5) Inicie%o%Jetty%no%painel%Java%em% > ; 6) Ainda% no% painel% Java,% mapeie% o% domínio% em% .% O% mapeamento% segue% a% seguinte%regra: a. Digamos% que% você% tenha% enviado% um% aplicativo% WAR% chamado% Aplicacao.war.% No% mapeamento,% digite% Aplicacao* no% campo% mostrado% abaixo%e%conJirme%no%botão%Add: 7) Teremos,% assim% que% adicionado,% a% URL% de% onde% o% aplicativo% Java% está% funcionando.%Por%exemplo: 109 Subindo um aplicativo na Raiz do domínio com o Jetty A%raiz%de%um%domínio%é%quando%digitamos%o%endereço%do%site%e%ele%e%o%aplicativo%Java%é% apresentado. No%Jetty,%faça%os%seguintes%passos: 1) Pare%o%Jetty%no%painel%Java%em% >% ; 2) Agora% suba% seu% arquivo% WAR,% com% todas% as% bibliotecas,% por% FTP,% no% seguinte% diretório:% a. appservers/jettyTXx/webapps%–%onde%X%é%a%versão%do%seu%Jetty; 3) Coloque% o% contexto% do% Jetty% em% appservers/jettyTXx/contexts/% –% onde% X% é% a% versão%do%seu%Jetty; a. O%detalhe%do%contexto%para%colocar%o%aplicativo%Java%na%raiz%do%domínio%é: <Set*name="contextPath">/</Set> 4) Inicie%o%Jetty%no%painel%Java%em% > 5) Ainda% no% painel% Java,% mapeie% o% domínio% em% em% ; .% No% mapeamento,% clique% . IMPORTANTE:* Pools% de% conexão% exigem% a% biblioteca% do% banco% de% dados% no% diretório% appservers/jettyTXx/lib. 110 Usando o servidor Java JBoss O%Servidor%JBoss%tem%sua%estrutura%diferente%nas%versões%4,%5%e%6,%7%e%8.%A%Integrator%não% possui%um%suporte%que%ensina%a%migrar%de%versão%do%JBoss.%O%manual%aqui%é%apenas%uma% demonstração%de%simples%uso%para%deploy. Usuários%que%operam%com%WAR/EAR%e%desconhecem%o%JBoss,%apenas%realizando%deploy% por%ferramentas,%consulte%o%manual%do%servidor%JBoss%antes%para%compreendê\lo.% 111 Usando o servidor Java JBoss 5 e 6 Para%fazer%deploy%no%JBoss,%execute%estes%passos: 1) Pare%o%JBoss%no%painel%Java%em% >% ; 2) Suba% seu% arquivo% WAR% ou% EAR,% com% todas% as% bibliotecas,% por% FTP,% no% seguinte% diretório:% a. appservers/jbossTXx/server/default/deploy% –% onde% X% é% a% versão% do% seu%JBoss; 3) Caso%haja%um%datasource,%no%JBoss,%coloque%em%appservers/jbossTXx/%server/ default/deploy/–%onde%X%é%a%versão%do%seu%JBoss; a. Um% exemplo% seria% colocar% um% datasource% do% MySQL,% com% o% noem% de% mysqlTds.xml%e%o%seguinte%conteúdo: <datasources> <local-tx-datasource> <jndi-name>l8</jndi-name> <connection-url> jdbc:mysql://localhost:3306/banco </connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>USUARIO</user-name> <password>SENHA</password> <exception-sorter-class-name> org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> </local-tx-datasource> </datasources> 4) Inicie%o%JBoss%no%painel%Java%em% > ; 5) Ainda% no% painel% Java,% mapeie% o% domínio% em% .% O% mapeamento% segue% a% seguinte%regra: a. Digamos% que% você% tenha% enviado% um% aplicativo% WAR% chamado% Aplicacao.war.% No% mapeamento,% digite% Aplicacao* no% campo% mostrado% abaixo%e%conJirme%no%botão%Add: 6) Teremos,% assim% que% adicionado,% a% URL% de% onde% o% aplicativo% Java% está% funcionando.%Por%exemplo: 112 113 Subindo um aplicativo na Raiz do domínio com o JBoss 5 e 6 No%JBoss,%faça%os%seguintes%passos: 1) Pare%o%JBoss%no%painel%Java%em% >% ; 2) Agora%suba%seu%arquivo%WAR/EAR,%com%todas%as%bibliotecas,%por%FTP,%no%seguinte% diretório:% a. appservers/jbossTXx/server/default/deploy% –% onde% X% é% a% versão% do% seu%JBoss; b. Detalhe% do% contexto% jboss-web.xml% para% colocar% o% aplicativo% Java% na% raiz% do%domínio%é: <context-root>/</context-root> 3) Inicie%o%JBoss%no%painel%Java%em% > 4) Ainda% no% painel% Java,% mapeie% o% domínio% em% em% ; .% No% mapeamento,% clique% . IMPORTANTE:* Pools% de% conexão% exigem% a% biblioteca% do% banco% de% dados% no% diretório% appservers/jbossTXx/server/default/lib/. 114 Usando o servidor Java JBoss 7 O JBoss 7 é instalado usando a opção "standalone": ~/appservers/jboss-7x/standalone Para%fazer%deploy%no%JBoss%7,%execute%estes%passos: 1) Pare%o%JBoss%no%painel%Java%em% >% ; 2) Suba% seu% arquivo% WAR% ou% EAR,% com% todas% as% bibliotecas,% por% FTP,% no% seguinte% diretório:% ~/appservers/jboss-7x/standalone/deployments 2.1) Para as Bibliotecas JAR: ~/appservers/jboss-7x/standalone/lib/ 3) Inicie%o%JBoss%no%painel%Java%em% > ; 4) Ainda% no% painel% Java,% mapeie% o% domínio% em% .% O% mapeamento% segue% a% seguinte%regra: a. Digamos% que% você% tenha% enviado% um% aplicativo% WAR% chamado% Aplicacao.war.% No% mapeamento,% digite% Aplicacao* no% campo% mostrado% abaixo%e%conJirme%no%botão%Add: 5) Teremos,% assim% que% adicionado,% a% URL% de% onde% o% aplicativo% Java% está% funcionando.%Por%exemplo: 115 116 Usando o servidor Java JBoss 7 com aplicativo na raiz do domínio No%JBoss%7,%faça%os%seguintes%passos: 1) Pare%o%JBoss%no%painel%Java%em% >% ; 2) Agora%suba%seu%arquivo%WAR/EAR,%com%todas%as%bibliotecas,%por%FTP,%no%seguinte% diretório:% ~/appservers/jboss-7x/standalone/deployments 2.1) Para as Bibliotecas JAR: ~/appservers/jboss-7x/standalone/lib/ 3) Inicie%o%JBoss%no%painel%Java%em% > 4) Ainda%no%painel%Java,%mapeie%o%domínio%em% . 117 ; .%No%mapeamento,%clique%em% Pequeno exemplo do deploy na raiz com JBoss 7 Se% você% sobe% o% aplicativo,% descompactado% (sem% estar% no% formato% WAR),% dentro% de% "deployments",% chamado% "site1.war",% você% deve% criar% um% arquivo% chamado% "site1.war.deployed",%sem%aspas,%com%o%conteúdo%abaixo: Isto%fará%o%Deploy%ao%iniciar%o%JBoss%7. Para% que% Jique% na% raiz,% você% deve% ter% o% arquivo% "site1.war/WEBTINF/jbossTweb.xml"% com%este%conteúdo: <?xml version="1.0" encoding="UTF-8"?> <jboss-web> <context-root>/</context-root> </jboss-web> E%deve%desativar%o%"enable\welcome\root"%do%JBoss%7%no%seguinte%arquivo: ~/appservers/jbossT7x/standalone/conViguration/standalone.xml Deixe%a%opção%como%false: <virtualTserver*name="defaultThost"*enableTwelcomeTroot="false"> IMPORTANTE:* Saiba% que% é% conhecimento% do% JBoss% o% que% estamos% fornecendo% neste% pequeno% exemplo.% Logo,% entenda% que% é% um% exemplo% e% não% um% ensino% do% JBoss.% Não% ensinamos% e% nem% resolvemos% características% pertencentes% ao% JBoss,% uma% vez% que% isso% foge%da%hospedagem%de%serviços%Java. 118 Usando o servidor Java Wildfly O Wildfly 1 é instalado usando a opção "standalone": ~/appservers/wildfly-8x/standalone Para%fazer%deploy%no%WildJly,%execute%estes%passos: 1) Pare%o%WildJly%no%painel%Java%em% >% ; 2) Suba% seu% arquivo% WAR% ou% EAR,% com% todas% as% bibliotecas,% por% FTP,% no% seguinte% diretório:% ~/appservers/wildfly-8x/standalone/deployments 2.1) Para as Bibliotecas JAR: ~/appservers/wildfly-8x/standalone/lib/ 3) Inicie%o%WildJly%no%painel%Java%em% > ; 4) Ainda% no% painel% Java,% mapeie% o% domínio% em% .% O% mapeamento% segue% a% seguinte%regra: a. Digamos% que% você% tenha% enviado% um% aplicativo% WAR% chamado% Aplicacao.war.% No% mapeamento,% digite% Aplicacao* no% campo% mostrado% abaixo%e%conJirme%no%botão%Add: 5) Teremos,% assim% que% adicionado,% a% URL% de% onde% o% aplicativo% Java% está% funcionando.%Por%exemplo: 119 120 Usando o servidor Java Wildfly com aplicativo na raiz do domínio No%WildJly,%faça%os%seguintes%passos: 1) Pare%o%WildJly%no%painel%Java%em% >% ; 2) Agora%suba%seu%arquivo%WAR/EAR,%com%todas%as%bibliotecas,%por%FTP,%no%seguinte% diretório:% ~/appservers/wildfly-8x/standalone/deployments 2.1) Para as Bibliotecas JAR: ~/appservers/wildfly-8x/standalone/lib/ 3) Inicie%o%WildJly%no%painel%Java%em% > 4) Ainda%no%painel%Java,%mapeie%o%domínio%em% . 121 ; .%No%mapeamento,%clique%em% Pequeno exemplo do deploy na raiz com Wildfly Se% você% sobe% o% aplicativo,% descompactado% (sem% estar% no% formato% WAR),% dentro% de% "deployments",% chamado% "site1.war",% você% deve% criar% um% arquivo% chamado% "site1.war.dodeploy",% sem% aspas,% sem% conteúdo% algum. Isto% fará% o% Deploy% ao% iniciar% o% WildJly. Para% que% seu% aplicativo% Jique% na% raiz% do% domínio/servidor% WildJly,% você% deve% ter% o% arquivo%"site1.war/WEBTINF/jbossTweb.xml"%com%este%conteúdo: <?xml version="1.0" encoding="UTF-8"?> <jboss-web> <context-root>/</context-root> </jboss-web> IMPORTANTE:* Saiba% que% é% conhecimento% do% WildJly% o% que% estamos% fornecendo% neste% pequeno% exemplo.% Logo,% entenda% que% é% um% exemplo% e% não% um% ensino% do% WildJly.% Não% ensinamos%e%nem%resolvemos%características%pertencentes%ao%WildJly,%uma%vez%que%isso% foge%da%hospedagem%de%serviços%Java.%Para%saber%mais%sobre%nossas%regras%de%suporte,% clique%aqui. 122 Usando o servidor Java GlassFish Após%instalar%o%GlassFish,%você%pode%acessar%o%Admin.% 1) Inicie%o%GlassFish%no%painel%Java%em% > 2) Para%acessar%o%Admin,%assim%que%instalado%o%GlassFish,%faça: http://seudominio:4848 ; Onde%seudominio%é%o%seu%site.%Caso%não%apareça%o%Admin,%assim%que%iniciar%o%servidor% Java%GlassFish,%entre%em%contato%com%o%[email protected],%relatando%a%situação. 3) O%usuário%e%senha%padrão%do%GlassFish: a. Usuário:%admin Senha:%adminadmin 4) Faça%o%deploy%do%seu%aplicativo%indo%em%Applications%no%GlassFish. 5) Clique%em%Deploy: 6) Selecione% o% arquivo% de% sua% máquina% se% sua% internet% for% acima% de% 2MB% e% for% possível%usar%um%upload%de%arquivos%rápido: 123 7) Caso%sua%internet%tenha%um%upload%de%arquivos%baixo,%recomendamos%subir%seu% aplicativo% por% FTP.% Suba% em% um% diretório% qualquer,% podendo% ser% na% raiz% do% seu% usuário%mesmo: 8) Selecione% no% Admin% o% item% Local* Packaged* File* or* Directory* That* Is* Accessible*from*GlassFish*Server,%clicando%no%botão%para%selecionar%o%arquivo: 9) Ao%abrir%a%janela%popup,%%va’em%Look*In*até%onde%está%seu%aplicativo,%sabendo%que% ele%começa%com%/home/USUARIO_FTP.%Por%exemplo,%temos%o%usuário%chamado% clouds10,%acessamos%/home/clouds10.%O%ideal%é%digitar%este%caminho%inicial%e% pressionar%Enter.%Mais%abaixo%você%verá%os%arquivos%listados.%Selecione%o%arquivo% WAR%ou%EAR%e%conJirme%no%botão%Choose*File. 124 10)Assim%que%selecionado,%serão%puxadas%as%conJigurações%iniciais%para%o%deploy: 125 11)%ConJirme%por%Jim%no%botão% . 12)Vá%agora%no%painel%Java,%mapeie%o%domínio%em% .%O%mapeamento%segue%a% seguinte%regra: a. Digamos% que% você% tenha% enviado% um% aplicativo% WAR% chamado% Aplicacao.war,%e%o%manteve%no%Admin%do%GlassFish,%em%Context*Root.%No% mapeamento,%digite%Aplicacao*no%campo%mostrado%abaixo%e%conJirme%no% botão%Add: 13)Teremos,% assim% que% adicionado,% a% URL% de% onde% o% aplicativo% Java% está% funcionando.%Por%exemplo: 126 Colocando seu aplicativo na raiz do domínio com o servidor GlassFish Após%instalar%o%GlassFish,%você%pode%acessar%o%Admin.% 1) Inicie%o%GlassFish%no%painel%Java%em% 2) Para%acessar%o%Admin,%assim%que%instalado%o%GlassFish,%faça: http://seudominio:4848 > ; Onde%seudominio%é%o%seu%site%sem%“www”.%Caso%não%apareça%o%Admin,%assim%que%iniciar% o% servidor% Java% GlassFish,% entre% em% contato% com% o% [email protected],% relatando%a%situação. 3) O%usuário%e%senha%padrão%do%GlassFish: a. Usuário:%admin Senha:%adminadmin 4) Faça%o%deploy%do%seu%aplicativo%indo%em%Applications%no%GlassFish. 5) Clique%em%Deploy: 6) Selecione% o% arquivo% de% sua% máquina% se% sua% internet% for% acima% de% 2MB% e% for% 127 possível%usar%um%upload%de%arquivos%rápido: 7) Caso%sua%internet%tenha%um%upload%de%arquivos%baixo,%recomendamos%subir%seu% aplicativo% por% FTP.% Suba% em% um% diretório% qualquer,% podendo% ser% na% raiz% do% seu% usuário%mesmo: 8) Selecione% no% Admin% o% item% Local* Packaged* File* or* Directory* That* Is* Accessible*from*GlassFish*Server,%clicando%no%botão%para%selecionar%o%arquivo: 9) Ao%abrir%a%janela%popup,%%va’em%Look*In*até%onde%está%seu%aplicativo,%sabendo%que% ele%começa%com%/home/USUARIO_FTP.%Por%exemplo,%temos%o%usuário%chamado% clouds10,%acessamos%/home/clouds10.%O%ideal%é%digitar%este%caminho%inicial%e% pressionar%Enter.%Mais%abaixo%você%verá%os%arquivos%listados.%Selecione%o%arquivo% WAR%ou%EAR%e%conJirme%no%botão%Choose*File. 128 10)Assim%que%selecionado,%serão%puxadas%as%conJigurações%iniciais%para%o%deploy: 11)%ConJirme%por%Jim%no%botão% . 129 5) Vá%agora%no%painel%Java,%mapeie%o%domínio%em% .%No%mapeamento,%clique% em% . 12)%Pronto,%seu%aplicativo%está%na%raiz%do%domínio%pelo%servidor%Java. 130 Aplicativo EAR na raiz com o GlassFish O GlassFish pode ser configurado de diversas formas. O que precisa é a configuração do seu Enterprise Application informando que o seu aplicativo WAR é na raiz. Digamos que o aplicativo se chame AplicacaoEAR.ear, onde teríamos o arquivo application.xml em METAINF. Veja o exemplo do application.xml em detalhes: <?xml version="1.0" encoding="UTF-8"?> <application version="6" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http:// java.sun.com/xml/ns/javaee/application_6.xsd"> <display-name>Aplicacao</display-name> <module> <web> <web-uri>Aplicacao-war.war</web-uri> <context-root>/</context-root> </web> </module> <module> <ejb>Aplicacao-ejb.jar</ejb> </module> </application> No% painel% Java,% mapeie% a% raiz% do% domínio% em% .% No% mapeamento,% clique% em% . IMPORTANTE:%ConJigurações%adicionais%do%aplicativo,%gerado%no%EAR%ou%WAR%Jile%não% fazem% parte% do% conhecimento% que% a% Integrator% fornece.% Se% você% automatiza% tudo% pelo% NetBeans,% por% exemplo,% procure% entender% o% que% é% feito% na% geração% do% WAR/EAR% em% termos% de% conJigurações.% A% Integrator% não% ensina% estes% detalhes% por% se% tratarem% exclusivamente%de%conhecimento%voltado%ao%desenvolvimento. 131 Logs de Acesso do Servidor Java Cada%servidor%Java%possui%um%caminho%padrão%para%acesso%aos%seus%logs.%Abaixo%a% relação%de%cada%servidor%Java%para%que%possa%baixar%os%logs%via%FTP. Substitua%o%“X”,%em%maiúsculo,%pela%versão%instalada. Tomcat 5.5. até 8 ~/appservers/apache-tomcat-Xx/logs/stdout.log JBOSS 4 até 6 ~/appservers/jboss-Xx/server/default/log/server.log JBOSS 7 ~/appservers/jboss-7x/standalone/log/server.log GlassFish 2 até 4 ~/appservers/glassfish-Xx/domains/domain1/logs/server.log IMPORTANTE:* * O% suporte% da% Integrator% não% analisa% logs% e% nem% resolve% problemas% de% aplicativo.% Tais% situações% são% consideradas% de% desenvolvimento% ou% ensino% e% fogem% ao% quesito%hospedar%um%site. 132 Alterando o Locale: Data, hora, números e moedas O%servidor%Java%pode%ser%personalizado%nas%informações%de%locale:%data,%hora,%números%e% moedas%podem%ser%conJiguradas.% Cada%servidor%Java%possui%uma%forma%de%alterar%o%Locale.% 133 Alterando o Locale do Tomcat As%instruções%que%deve%passar,%se%for%conJigurar%no%servidor%Java,%são%feitas%no%shell%que% inicializa% o% serviço.% Por% exemplo,% se% formos% usar% a% região% de% São% Paulo,% passamos% as% informações%mostradas%abaixo.%Mas%atenção,%substitua%o%“X”,%em%maiúsculo,%pela%versão% instalada. Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.region=BR No% Apache% Tomcat,% para% ilustrar% melhor% como% seria,% conJiguramos% no% arquivo% appservers/apacheTtomcatTXx/bin/catalina.sh: export CATALINA_OPTS="-Duser.timezone=America/Sao_Paulo -Duser.language=pt Duser.region=BR" Em%alguns%servidores,%as%instruções%mostradas%são%passadas%na%variável%JAVA_OPTS%no% shell%que%inicializa%o%servidor%Java. Entretanto,%saiba%das%seguintes%regras: 1) Altere%somente%o%que%informamos,%nada%além; 2) Existem%timezones%diferentes%para%algumas%regiões; 3) Reinicie%o%servidor%Java; Estas% mudanças% são% feitas% pelo% cliente% e% de% sua% total% responsabilidade.% O% suporte% da% Integrator% não% tem% obrigação% de% orientar% o% desenvolvedor% a% respeito% de% suas% conJigurações%regionais%para%uso%no%timezone. IMPORTANTE:* * O% suporte% da% Integrator% não% analisa% logs% e% nem% resolve% problemas% de% aplicativo.% Tais% situações% são% consideradas% de% desenvolvimento% ou% ensino% e% fogem% ao% quesito%hospedar%um%site. 134 Alterando o Locale do GlassFish Para locale, adicione a linha abaixo, no Locale do Timezone do Brasil, América, São Paulo: -Duser.timezone=America/Sao_Paulo -Duser.language=pt -Duser.region=BR A alteração deve ser feita no seguinte local do Admin do GlassFish: Configurations » server-config » JVM Settings » JVM Options. Clique em Add JVM Option, adicione a linha ensinada acima. Confirme em Save. IMPORTANTE: Jamais altere a memória do servidor Java, pois nossos sistemas derrubam máquinas alteradas. 135 Um mesmo servidor Java em vários domínios Crie o outro domínio como suplementar/ou subdomínio, no cPanel, em Domínios Suplementares/ Subdomínios. O exemplo abaixo é sobre domínio suplementar. Nós temos o clouds13integrator.com e adicionamos o usuário teste para o domínio "teste.com.br". Veja como ficou o domínio suplementar: O cPanel trata todo domínio suplementar como subdomínio do principal. Logo teste.com.br é para o cPanel (não para seus usuários) teste.clouds13integrator.com. Seus usuários sempre acessarão como teste.com.br de forma transparente e sempre aparecerá desta forma na URL. 1) Depois de adicionado o domínio suplementar, ou subdomínio, vá no painel NGasi, em ; 2) Clique em e selecione o domínio suplementar/subdomínio que aparecerá com o nome do usuário, assim: 3) Vamos dizer que você fez o deploy, de um aplicativo novo, chamado "Aplicativo.war" e vai mapeá-lo no novo domínio. 3.1) Digite o nome do "Aplicativo", no campo "Adicionar Caminho Mapa; por exemplo..." e 136 confirme no botão "Adicionar", como a imagem ilustra abaixo: 4) Após mapear, terá o domínio suplementar/subdomínio com o acesso ao servidor java e no aplicativo que deseja. IMPORTANTE: Na raiz do domínio/subdomínio - raiz é quando digitamos www.teste.com.br, por exemplo - podemos ter um ROOT apenas no Tomcat, ou seja, não é possível, como no nosso exemplo, abrir www.clouds13integrator.com um aplicativo diretamente e ww.teste.com.br, outro aplicativo. 137 Trabalhando com o Banco de Dados Na% Integrator,% % o% usuário% pode% trabalhar% com% dois% tipos% de% banco% de% dados% que% prestamos%suporte: 1.%MySQL 2.%PostgreSQL Cada% banco% de% dados% possui% sua% particularidade.% O% suporte% não% ensina% as% particularidades%do%%banco%de%dados%que%escolher%usar%de%forma%administrativa.%Apenas% orientamos% no% uso% pelos% painéis% em% termos% de% acesso,% assim% como% em% seu% aplicativo% online%e%erros%que%possuir,%desde%que%não%sejam%ocasionados%pela%falta%de%conhecimento% técnico%no%que%deseja%realizar,%como%por%exemplo,%criação%de%functions/procedures. IMPORTANTE: A Integrator é uma empresa que visa hospedar aplicativos profissionais. Qualquer pergunta que caracterize falta de conhecimento técnico o suporte será obrigado a responder apresentando o endereço Web da documentação do serviço que está querendo operar. 138 Criando Banco de Dados PostgreSQL no Painel Para%trabalhar%com%o%PostgreSQL,%da%forma%mais%simples,%vá%em%Bancos*de*Dados*» Banco*de*Dados*PostgreSQL. 1. Dentro do painel, você cria o banco de dados, dando seu nome no campo "Nome do Banco de Dados" e confirmando em "Criar Banco de Dados". Mais abaixo aparecerá o banco de dados, assim que criado, ao entrar neste mesmo painel. IMPORTANTE: O PostgreSQL não precisa criar usuário, pois ele usa o mesmo usuário do FTP. Para se conectar ao seu banco de dados PostgreSQL pelo seu aplicativo, após definir o banco de dados, use: • host: localhost • Usuário: mesmo do FTP • Senha: a mesma do usuário FTP • Banco de dados: Inclui o prefixo criado no painel de controle cPanel 139 Usuário PADRÃO do PostgreSQL no Painel Para%trabalhar%com%o%PostgreSQL,%não%é%preciso%criar%usuário,%como%no%MySQL%para% acesso%a%ele. Para se conectar ao seu banco de dados PostgreSQL pelo seu aplicativo, após definir o banco de dados, use: • • • • host: localhost Usuário: mesmo do FTP Senha: a mesma do usuário FTP Banco de dados: O nome completo, que inclui o prefixo, criado no painel de controle cPanel 140 Exportando no PostgreSQL do cPanel No cPanel, você exporta o banco de dados pelo phpPgAdmin usando os seguintes passos: 1) Vá em "Bancos de Dados", clique em "phpPgAdmin". 2) No phpPgAdmin, clique em "Exportar". 3) Em Exportar, selecione "Estrutura e dados", o Formato "SQL", marque "Download" e confirme no botão "Exportar". 141 142 Importando no PostgreSQL do cPanel Para Importar, no phpPgAdmin do cPanel, clique sobre o banco de dados. 1) Clique em "SQL". 2) Na parte inferior de SQL, selecione o arquivo que deseja importar e confirme no botão "Executar". 143 Importando no PostgreSQL Bancos Grandes Para Importar bancos de dados grandes, use o acesso SSH e comandos de importação do PostgreSQL via psql. Para importar via SSH, os passos: 1) Leve o arquivo por FTP para a conta do seu usuário. 2) Crie apenas o banco de dados no cPanel 2) No terminal SSH, execute após subir seu arquivo via FTP, o seu DUMP em SQL: psql -U USUARIO_FTP BANCO_CRIADO < ARQUIVO.SQL Onde: ◦ USUARIO_FTP - Seu usuário do cPanel ou FTP ◦ BANCO_CRIADO - Seu banco de dados criado no cPanel ◦ ARQUIVO.SQL - Seu arquivo de dump SQL gerado local e levado via FTP para sua conta 144 Criando Banco de Dados MySQL no Painel A forma mais simples de criar um banco de dados MySQL no cPanel é ensinado abaixo: 1. Crie o banco de dados MySQL indo em Banco de Dados, “Banco de dados MySQL”. 2. Em "Criar Novo Banco de Dados", coloque o nome em "Novo Banco de Dados" e confirme no botão "Criar Banco de Dados": 145 Criando o usuário ao Banco de Dados MySQL no Painel 1. Em Banco de Dados, “Banco de dados MySQL”. 2. Defina um usuário em "Adicionar Novo Usuário", confirmando depois no botão "Criar Usuário": 146 Definindo o usuário ao Banco de Dados MySQL no Painel 1) Em Banco de Dados, “Banco de dados MySQL”. 2) Com o Usuário criado, atribua ao banco de dados em "Adicionar Usuário ao Banco de Dados": 2.1) Defina seus privilégios e confirme no botão "Fazer Alterações". 147 3) Por fim, você deverá ver o nome do banco de dados e seu respectivo usuário. 148 Formas de acesso ao Banco de Dados Na%Integrator,% %o%usuário%pode%trabalhar%com%o%acesso%ao%banco%de%dados%das%seguintes% formas%após%criar%o%banco%de%dados%no%cPanel: No*MySQL* 1.%Pelo%cPanel%através%do%phpMyAdmin 2.%Pelo%SSH%através%de%comandos%diretamente%executados%no%banco%de%dados 3.%Remotamente%desde%que%liberado%acesso%via%cPanel No*PostgreSQL 1.%Pelo%cPanel%através%do%phpPgAdmin 2.%Pelo%SSH%através%de%comandos%diretamente%executados%no%banco%de%dados O%Item%2%de%cada%banco%de%dados%exige%conhecimento%de%SQL%e%também%o%conhecimento% técnico%do%terminal%de%cada%banco%de%dados.% IMPORTANTE:%Se%é%iniciante,%recomendamos%fortemente%o%MySQL%por%ser%mais%simples% e%seguir%as%normas%SQL%padrão. 149 Usando o phpMyAdmin para o MySQL 1.%Após%criar%o%banco%de%dados%no%MySQL,%vá%em%Banco*de*Dados*»*phpMyAdmin 2.%Ao%abrir%o%phpMyAdmin,%clique%no%seu%banco%de%dados: % No% phpMyAdmin% você% pode% importar% seu% SQL,% clicando% em% Importar,% selecionando% o% arquivo. 150 Usando o MySQL pelo Aplicativo Hospedado No%Java%ou%PHP,%use%sempre%as%seguintes%conJigurações: Host:%localhost Banco%de%dados,%Usuário%e%senha:%Criados%no%cPanel 151 Usando o phpPgAdmin para o PostgreSQL 1.%Após%criar%o%banco%de%dados%no%PostgreSQL,%vá%em%Banco*de*Dados*»*phpPgAdmin: 2.%Ao%abrir%a%janela%do%phpPgAdmin,%clique%no%banco%de%dados%para%que%possa%executar% suas%queries%SQL%ou%Importar%um%banco%de%dados: 3.%Para%importar%as%tabelas%e%dados,%exporte%em%formato%SQL,%depois%no%phpPgAdmin,% vá%em%SQL*» selecione*o*arquivo*local*» Execute*a*importação: 152 153 Usando o PostgreSQL pelo Aplicativo Hospedado No%Java,%use%sempre%as%seguintes%conJigurações: Host:%localhost Banco%de%dados:%Criado%no%cPanel Usuário*:%O%mesmo%do%usuário%cPanel Senha:%Senha%do%Usuário%cPanel No%PHP,%use%sempre%as%seguintes%conJigurações: Host:%127.0.0.1 Banco%de%dados,%usuário%e%senha:%Criado%no%cPanel * Use o mesmo Usuário do cPanel sempre que for criar tabelas no PostgreSQL. IMPORTANTE: No PHP não gere tabelas pelo aplicativo e jamais use o mesmo usuário e senha do cPanel. 154 Acesso Remoto ao Banco de Dados Na% Integrator,% % o% usuário% pode% trabalhar% com% o% acesso% acesso% remoto% padronizado% no% banco%de%dados%MySQL,%desde%que%liberados%antes%no%cPanel. 155 Liberando o acesso remoto ao MySQL Os%passos%para%liberação%de%acesso%remoto: 1. Vá em "Bancos de Dados » MySQL Remoto", no seu cPanel. 2. Digite somente o símbolo da percentagem, "%", sem aspas, em "Adicionar Host de Acesso » Host (% wildcard é permitido)". 3. Confirme no botão Adicionar Host . 156 Acessando remotamente o MySQL O host do seu programa local, executado em sua máquina, pode ser seu domínio, sem "http:// www." ou o IP que aparece no FTP do seu email de Configurações e Instruções de Uso. Resumindo: Host: seusite.com.br Porta: 3306 Banco de Dados, Usuário e Senha: Criados no cPanel 157 Erro comum: Host is blocked because of many connection errors Se estiver vendo este erro aparecendo para a conexão do seu aplicativo online, seja Java ou PHP, veja o tópico Formas de acesso ao Banco de Dados para corrigir sua conexão. Remotamente, se muitos erros de conexão ocorrerem em um período pequeno, haverá uma mensagem de erro ao tentar se conectar remotamente ao seu banco de dados no MySQL. A mensagem é similar a mostrada abaixo: Host ‘199.182.11.0’ is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' A mensagem acompanha um comando 'mysqladmin flush-hosts’. Infelizmente, somente um administrador geral pode realizar este comando. Planos abaixo do Java EE/PHP Plus devem solicitar o nosso desbloqueio administrativo. Para pedir ajuda com o comando administrativo, envie email para [email protected], informando o site e mostrando o referido problema no corpo da mensagem. IMPORTANTE:%O%comando%'mysqladmin flush-hosts' só é realizado por nossa equipe uma vez por um severo período de horas. Nós realizamos o comando com um aviso do período que poderemos realizar novamente. 158 Exceção no PostgreSQL Se% o% seu% plano% permitir% banco% de% dados% dedicado,% poderá% acessar% o% PostgreSQL% remotamente.%Veja%detalhes%de%acesso%no%email%de%assunto%“ConJigurações%de%Acesso%ao% Banco%de%Dados”%que%receber%caso%seja%seu%plano%com%tal%serviço. 159 Dúvidas Comuns Encontradas na Hospedagem O%erro%mais%comum%de%“OutOfMemoryError:%Java%heap%space”%é%falta%de%memória%no% servidor%Java%para%executar%o%aplicativo. Para%resolver: 1)%VeriJique%a%necessidade%real%de%seu%aplicativo%perante%o%plano%que%escolheu 2)%Se%houver%mais%de%um%aplicativo,%remova%todos,%deixe%apenas%1%e%vá%acrescendo%cada% aplicativo%até%que%o%erro%ocorra IMPORTANTE:*O%suporte%da%Integrator%não%resolverá%de%outra%forma,%que%não%seja% oferecendo%um%plano%com%mais%memória.% 160 Uso do HTTPS Uma%dúvida%comum%que%ocorre%na%Integrator%é%o%uso%do%HTTPS. Temos%duas%situações%de%uso%de%HTTPS: • Painéis%e%E\mail • Domínio 161 HTTPS em Painéis O%SSL%nos%painéis%e%no%e\mail%são%autoassinados,%ou%seja,%pertencem%ao%painel%de% controle%e%não%são%reconhecidos%pelo%browser. Para%saber%mais%veja%o%tópico%%“O%https%do%WHM/cPanel%ou%NGasi%“. 162 HTTPS em Domínio O%SSL%em%seu%domínio%depende%de%duas%situações: 1.%IP%dedicado%\%contratado%separadamente%com%valor%mensal%mínimo 2.%SSL%Homologado%\%emitido%por%uma%certiJicadora%reconhecida 163 128bits ou 256bits Ao usar SSL próprio, na barra de endereços do domínio, dependendo do navegador, podemos ver "https://" e o símbolo de uma cadeado é exibido logo ao lado, dando a informação de segurança na página. Certificado SSL 128 bits ou 256 bits? Ao olhar os detalhes de um SSL no navegador, você pode se deparar com 128 bits ou 256 bits. Isso não se refere a quantidade de bits do certificado que foi adquirido. Essa diferença é uma escolha feita pelo navegador que está usando, browser, para permitir a comunicação dos dados criptografados com o servidor. Resumindo: não está sendo informado o número de bits do certificado propriamente dito. O certificado digital SSL é gerado com uma chave de 2048 bits. Essa informação pode ser conferida nos detalhes do certificado. Por exemplo, no navegador Google Chrome, é possível identificar com um clique no cadeado » Conexão » Informações do certificado » Detalhes » Campos do certificado » Informações de Chave Pública » Tamanho da Chave. A informação de 128 bits ou 256 bits é designada pelo navegador no momento em que acessa o site, e sua conexão com um site é obtido em HTTPS por um alto nível, da seguinte forma: • O navegador conecta-se ao servidor e envia uma requisição HTTPS para o acesso ao site que informou. • O servidor responde enviando seu certificado ao cliente, ou seja, para o navegador que está usando, contendo sua chave pública. • O navegador verifica o certificado informado, reconhecido por ele, para saber se ele é válido e extrai a chave pública corretamente. 164 • O navegador então gera uma chave aleatória para ser usada na conexão com o servidor. Essa chave aleatória é criptografada usando a chave pública recebida anteriormente, e o resultado é enviado para o servidor novamente. • O servidor recebe a chave criptografada e a descriptografa usando sua chave privada esse modo de operação é chamado de "troca de chave" - key exchange. • Neste ponto, o navegador e servidor possuem uma chave compartilhada que só os dois conhecem, gerando a segurança devida pela criptografia. Isso permite criptografar o conteúdo do site em envio de dados que somente você que preenche conhece e o servidor que vai receber, saberá. • A chave aleatória criada pelo navegador pode ser gerada de formas diferentes, dependendo das bibliotecas de criptografia instaladas no computador do usuário e seu processo automatico ocorre no navegador de forma transparente a você. As duas possibilidades mais comuns são: ◦ Criptografia de 128 bits usando AES_128_GCM (com TLS 1.2) ◦ Criptografia de 256 bits usando AES_256_CBC (com TLS 1.1) As siglas GCM e CBC referem-se a modos de operações criptográficas, ou seja, são algoritmos usados para criptografar a chave aleatória gerada pelo navegador. O modo de operação GCM é considerado mais seguro do que o CBC, embora use menos bits informados, pois há uma versão mais recente do TLS - versão 1.2. 165 Erro no certificado SSL: Elementos não criptografados Se o seu site apresentar junto ao cadeado da imagem, uma exclamação no SSL, não significa que o SSL está mal configurado. O erro apresentado é porque certas partes de seu site não foram criptografados pelo SSL. Se pedir para ver os detalhes da Conexão, haverá um informativo do porque não foi possível criptografar tudo. Infelizmente, é uma situação que somente o desenvolvedor do site pode resolver. Este erro, caso não seja você o desenvolvedor, deverá ser apresentado a ele. A questão somente será resolvida se analisar o aplicativo que é envolvido no site, buscando endereços que não estão dentro do seu serviço ou com acesso de outros domínios, cujo o SSL não alcança. IMPORTANTE:*O suporte de hospedagem não tem como ajudar neste caso em hipótese alguma. 166 Erros Comuns Encontrados na Hospedagem Existem%vários%erros,%comuns,%encontrados%na%Hospedagem%da%Integrator.%Eles%são% divididos%em%duas%classes: 1.%PHP%\%Erros%de%servidor%Apache 2.%Java%\%Erros%de%servidores%Java 167 Erros Gerais Existem%dezenas%de%erros%em%uma%hospedagem.%Neste%tópico%listamos%os%mais%comuns: • • • • Permissão Bloqueio Aplicativo E\mail 168 Erro 500 O%erro%mais%comum%de%permissão%é%o%erro%500.%Este%erro%ocorre%porque: 1.%Possui%um%.htaccess%com%sintaxe%errada 2.%Mudou%a%permissão%do%diretório%public_html%fora%a%755 3.%Recriou%o%diretório%public_html%%(Mudou%a%permissão%do%Grupo%nobody) 3.%Criou%um%php.ini%personalizado%com%erros 4.%Arquivos%principais%como%index.php%com%permissão%diferente%da%644 169 Resolvendo o Erro 500 Para%resolver%o%Erro%500%alguns%passos: 1.%Renomear%o%.htaccess%com%o%FTP%para%.htaccess.old 2.%Recolocar%a%permissão%no%public_html%para%755 3.%Recolocar%a%permissão%em%qualquer%diretório%para%755 4.%Se%apagou%o%public_html,%informar%ao%[email protected]%sobre%o%incidente 3.%Renomear%o%php.ini%para%php.ini.old 4.%Recolocar%a%permissão%do%index.php,%como%de%outros%arquivos,%para%644 170 Erro 503 Este%erro%signiJica%que%seu%servidor%Java%está%parado.%%Entre%no%painel%Java%e%o%inicie. 171 Erro 503 com servidor Java iniciado A%possível%situação%é%que%alterou%o%arquivo%de%conJigurações%do%servidor%Java%alterando% sua%porta.%Isso%causou%falha. Para%resolver,%devolva%as%conJigurações%originais.%Caso%não%saiba,%terá%que,%infelizmente,% reinstalar%o%arquivo%de%conJigurações. Abaixo%os%arquivos%que,%se%alterar%portas,%terá%problemas: • • • Tomcat%\%server.xml JBoss%7%\%standalone.xml GlassFish%\%domain.xml IMPORTANTE:* * Caso% seja% a% primeira% vez% que% ocorre,% ou% seja,% assim% que% mapeou% o% serviço% e% o% iniciou,% este% erro% apareceu,% chame% o% [email protected]% para% investigar,%pois%pode%ter%ocorrido%algum%problema%na%conJiguração%do%servidor%Java%em% relação%ao%seu%domínio. 172 O Erro 404 O%erro%404%é%não%encontrado.%Cada%serviço%tem%uma%forma%de%resolver: • PHP%\%veriJique%se%está%acessando%corretamente.% • Java%\%veriJique%se%fez%o%mapeamento%no%seu%domínio%corretamente 173 Resolvendo o Erro 404 no PHP O%erro%404%no%PHP%pode%ter%como%causa%comum%a%conJiguração%que%fez%em%seu% aplicativo. Problemas%comuns%relatados%para%ajudar: • Mod_Rewrite%\%Mapeamento%no%.htaccess%incorreto%para%URL%Amigáveis% • Falta%de%arquivo%\%Falta%do%arquivo%index.php%ou%conJiguração%incorreta%de% mapeamento%do%index%personalizado%no%.htaccess IMPORTANTE:* * O% suporte% da% Integrator% não% resolve% problemas% de% aplicativo% e% nem% ensina% a% corrigir% .htaccess% com% mod_rewrite% personalizado.% Tais% situações% são% consideradas%de%desenvolvimento%ou%ensino%e%fogem%ao%quesito%hospedar%um%site. 174 Resolvendo o Erro 404 no Java O%erro%404%no%Java%pode%ter%como%causa%comum%a%conJiguração%que%fez%em%seu% aplicativo. Problemas%comuns%relatados%para%ajudar: • Mapeamento%no%NGasi%\%ConJira%o%nome%que%deu%no%seu%WAR%Jile%para%o%que%fez% de%mapeamento%no%NGasi. • Acesso%Incorreto%\%Iniciantes%costumam%executar%aplicativos%Java%por%programas% como%Eclipse,%sem%se%dar%conta%da%falta%de%um%index.%Casos%como%index.jsf%em%vez% de%um%index.jsp%reconhecido%pelo%servidor%Java%automaticamente,%causam%erro% 404%sem%que%o%usuário%perceba. A%forma%correta%de%resolver%é%baixando%os%logs%do%servidor%Java%pelo%FTP%e%analisando% sempre. IMPORTANTE:* * O% suporte% da% Integrator% não% resolve% problemas% de% aplicativo.% Tais% situações%são%consideradas%de%desenvolvimento%ou%ensino%e%fogem%ao%quesito%hospedar% um%site. 175 Erros de Memória o Servidor Java Existem%muitos%erros%em%um%servidor%java.%Neste%tópico%listamos%apenas%os%mais% comuns: • • • PermGen OutOfMemoryError:%Java%heap%space Proxy%Error 176 Resolvendo o erro PermGen O%erro%mais%comum%de%PermGen%precisa%da%ajuda%do%[email protected]%para% podermos%conJigurar%seu%servidor%Java%de%forma%a%adequar%seu%plano%na%memória% PermGen%fornecida. O%Tomcat%é%o%servidor%Java%mais%comum%neste%erro,%uma%vez%que%JBoss%e%GlassFish%já% estão%com%as%conJigurações%máximas%estabelecidas%pré\conJiguradas. 177 Resolvendo o erro Java heap space O%erro%mais%comum%de%“OutOfMemoryError:%Java%heap%space”%é%falta%de%memória%no% servidor%Java%para%executar%o%aplicativo. Para%resolver: 1)%VeriJique%a%necessidade%real%de%seu%aplicativo%perante%o%plano%que%escolheu 2)%Se%houver%mais%de%um%aplicativo,%remova%todos,%deixe%apenas%1%e%vá%acrescendo%cada% aplicativo%até%que%o%erro%ocorra IMPORTANTE:*O%suporte%da%Integrator%não%resolverá%de%outra%forma,%que%não%seja% oferecendo%um%plano%com%mais%memória.% 178 Proxy Error no Acesso ao Aplicativo Java Não se trata de uma mensagem que parte diretamente do servidor Java, mas que a causa é feita por ele. Ao navegar em seu aplicativo, digamos que se depare com o seguinte erro: Proxy&Error The%proxy%server%received%an%invalid%response%from%an%upstream%server. The%proxy%server%could%not%handle%the%request%GET+/. Reason:%Error*reading*from*remote*server Additionally,%a%502%Bad%Gateway%error%was%encountered%while%trying%to%use%an% ErrorDocument%to%handle%the%request. O erro de Proxy apresentado é dado pelo servidor Apache. Para entender como funciona a hospedagem, resumimos em três pontos: 1) Apache responde a todas as requisições de sites na porta 80 2) Cada servidor Java possui uma porta definida em suas configurações 3) O Apache faz o roteamento da 80 para a porta do servidor Java que opera pelo seu módulo chamado "mod_proxy" O Proxy Error ocorre quando o mod_proxy continua chamando o servidor Java, mas a resposta deste serviço não ocorre. O Apache não sabendo o que responder gera o erro. O que deve analisar: 1) Analisar os logs - Severos erros geram problemas na performance e no servidor Java 2) Tempo de resposta a uma requisição demasiadamente grande - O Apache é configurado para 5 minutos no máximo 3) Memória do servidor Java estourou - Erros de PermGen ou OutOfMemory podem ocorrer, assim como específicos do aplicativo Como resolver: 1) Modificar o aplicativo para ser mais responsivo 2) Na falta de memória, adicionar mais memória ao servidor Java contratando o serviço, caso opere em uma memória contratada padrão de um plano de hospedagem 3) Aumentar o tempo de resposta que o Apache exige, desde que esteja em uma hospedagem de máquina virtual dedicada 179 Erros Comuns de Operação no Banco de Dados Existem%alguns%erros%comuns%de%operação%com%o%banco%de%dados%MySQL%ou%PostgreSQL% que%vamos%listá\los%aqui. 1.%Erro%de%Permissão%no%MySQL%ou%PostgreSQL 2.%Banco%de%dados%existente%após%excluir%no%MySQL%ou%PostgreSQL 3.%Erro%de%Broken%Pipe%ou%Communications%link%failure 180 Erro de Permissão ou Privilégio no MySQL Existem dois tipos de Erros de Permissão no MySQL comuns na hospedagem: 1. Erro na criação de tabelas e outros objetos no banco de dados por um usuário 2. Erro na permissão de functions, views ou procederes por desconhecimento do usuário 181 Erro de Permissão ou Privilégio no Usuário Existem três possibilidades comuns de erro de permissão no MySQL. 1. No cPanel, vá em Bancos de Dados » Bancos de dados MySQL. Verifique se o banco de dados possui o USUÁRIO que criou. 1.1. Se aparecer vazio como da imagem acima, adicione mais abaixo o usuário ao banco de dados: 1.2. Dê a ele os privilégios de acesso ao banco de dados. 2. Outra possibilidade seria a sua chamada estar procurando o banco de dados com nome diferente do que existe a tabela. 3. A terceira e última possibilidade, seria sua query buscar por uma tabela escrita em MAIÚSCULAS, mas elas terem sido criadas em minúsculas no nome, ou vice-versa. 182 Erro de Permissão ou Privilégio em Functions, Views e Procedures Um erro comum no MySQL para usuários inexperientes é a permissão de Views, Functions e Procedures. O MySQL diferencia na criação o acesso dando a permissão adequada, cujo o usuário terá permissão de acesso. Todo objeto criado remotamente - View, Functions e Procedures - que não estiverem com o DEFINER informado, serão gerados com o usuário em condição de acesso remoto somente. Todo objeto criado localmente, pelo phpMyAdmin, por exemplo - View, Functions e Procedures - que não estiverem com o DEFINER informado, serão gerados com o usuário em condição de acesso local somente. O Exemplo mostrado abaixo é para entender como se faz a permissão para acesso local de determinado usuário - que deve ser considerado ao realizar o seu teste, colocando o seu do cPanel. 1. A Tabela de exemplo: create table teste (id int not null primary key auto_increment, data date); 2. A procedure de exemplo, onde o USUARIO é o seu usuário do cPanel: DELIMITER $$ CREATE DEFINER=‘USUARIO’@‘localhost' PROCEDURE `inserir`(data date) BEGIN INSERT INTO teste VALUES (NULL,data); END $$ DELIMITER ; 3. Testando a procedure na hospedagem, seria assim: call inserir('2012-12-12'); IMPORTANTE: Caso precise de mais instruções, recomendamos a documentação do MySQL. O suporte da Integrator Host não aceita pedidos de ajuda que envolvam ensino 183 técnico que deve ser obrigação do desenvolvedor conforme reza nosso contrato. 184 Resolvendo erro de Privilégio Remova onde o criou e recrie da forma correta, ou seja, se criou remotamente, remova remotamente e o recrie com o DEFINER como citamos em Erro de Permissão ou Privilégio em Functions, Views e Procedures . Se não entender bem do MySQL, e quer criar um objeto com permissão local, simplesmente remova o remoto e recrie no phpMyAdmin, que mesmo sem o DEFINER, ele criará localmente como permissão do usuário. IMPORTANTE: Caso precise de mais instruções, recomendamos a documentação do MySQL. O suporte da Integrator Host não aceita pedidos de ajuda que envolvam ensino técnico que deve ser obrigação do desenvolvedor conforme reza nosso contrato. 185 Erro de Permissão no PostgreSQL Quem opera criando tabelas através do aplicativo Java, usando JPA, Hibernate ou JDBC diretamente, deve: 1. Não criar usuário no cPanel e nem atribuir ele ao Banco de Dados 2. Usar o usuário do cPanel/FTP para se conectar ao Banco de Dados 186 Resolvendo o Erro de Permissão no PostgreSQL Se você criou tabelas, ou outros objetos, através do aplicativo Java, usando JPA, Hibernate ou JDBC diretamente, e não usou o usuário do cPanel/FTP, deve realizar os passos abaixo para resolver: 1. Faça um backup via SSH usando o mesmo owner que criou as tabelas, mas retirando-o do backup. O comando que deve ser realizado: pg_dump -i BANCO_DE_DADOS>ARQUIVO_BKP.sql -U USUARIO --no-owner Onde temos: BANCO_DE_DADOS - nome do seu banco de dados ARQUIVO_BKP.sql - nome do arquivo de backup do banco de dados completo USUARIO - o usuário que utilizou para gerar as tabelas/objetos pelo seu aplicativo 2. Suba o backup em um segundo banco de dados criado no cPanel usando o owner do cPanel. O comando que deve ser realizado: psql BANCO_DE_DADOS_NOVO<ARQUIVO_BKP.sql -U USUARIO_CPANEL USUARIO_CPANEL - use o usuário do cPanel neste caso 3. Confira tudo, veja se está ok com o owner e se consegue manipular pelo phpPgAdmin 4. Pare o serviço Java caso ele esteja conectando ao banco de dados que está com problemas 5. Remova o banco de dados com problema através do cPanel. 6. Recrie novamente o mesmo banco de dados removido pelo cPanel, 7. Suba via SSH o backup no banco de dados que foi removido e recriado psql BANCO_DE_DADOS<ARQUIVO_BKP.sql -U USUARIO_CPANEL 8. Mude a sua conexão de internet, se usar o Hibernate/JPA para criar objetos, usando o usuário do cPanel 9. Suba o aplicativo Java com a conexão alterada e refaça o deploy do seu aplicativo para obter a conexão correta da próxima vez que operar, iniciando o servidor Java novamente. 187 Banco de Dados existente após exclusão Excluir um banco de dados com conexão persistente, ativa, usual em aplicativos Java, causa este erro. O cPanel apresenta como excluído mas, no servidor de banco de dados, a operação não foi realizada. Como resolver: 1. No MySQL ou PostgreSQL, tente parar o servidor Java e verificar se, após isso, o banco foi excluído também no servidor de banco de dados. 2. Se o passo 1 não resolver, entre em contato com o [email protected] relatando: • Domínio que está seu serviço ou Domínio principal que o identifica na Integrator • O nome do Banco de Dados que não consegue ser excluído • Tipo do Banco de Dados - PostgreSQL ou MySQL 188 O Erro Broken Pipe ou Communications link failure Este erro, comum em banco de dados MySQL, ocorre por conta de um timeout padrão, no MySQL – e na Integrator, de 8 horas de conexão inativa. O problema é comum quando o desenvolvedor não resolve em seu Pool de Conexões essa característica, seja por desconhecimento ou por esquecimento. Para resolver, existem formas diferentes para cada framework que opera. Por exemplo, com o Hibernate, em um hibernate.cfg.xml, com o C3p0, temos o hibernate.c3p0.idle_test_period que resolve o broken pipe. No exemplo, ele checa a cada 100 segundos se a conexão está inválida: <property name="hibernate.connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </property> <property name="hibernate.c3p0.min_size">1</property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.timeout">30</property> <property name="hibernate.c3p0.idle_test_period">100</property> No Pool do Tomcat, é comum vermos o erro Communications link failure. Neste caso, por exemplo, temos o atributo validationQuery, além de outros testes que permitem a validação da conexão a cada X tempo, permitindo assim que o aplicativo possa analisar se a conexão está ainda ativa ou se o MySQL realizou o famoso timeout. <Resource auth="Container" name="jdbc/POOL" driverClassName="com.mysql.jdbc.Driver" maxActive="20" maxIdle="10" maxWait="-1" type="javax.sql.DataSource" url="jdbc:mysql://localhost/banco?autoReconnect=true" password="senha" username="usuario" removeAbandoned = true validationInterval = 34000 validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="60000" /> </Context> Abaixo uma rápida explicação técnica: 189 Validação da Conexão • testOnBorrow = true - valida antes de ser usado no pool. Se não validar, ele será retirado do pool, sendo pego outro. • validationInterval = 34000 - usado para evitar o excesso de validação , apenas executar a validação no máximo nesta frequência - tempo em milissegundos . Se uma conexão está prevista para a validação , mas já foi validado anteriormente neste intervalo, não será validado novamente . Quanto maior o valor, melhor o desempenho, mas você aumenta a chance de uma conexão antiga estar sendo requisitada. • validationQuery = SELECT 1 - consulta o MySQL usando esta simples query para validar conexões do pool antes de apresenta-las ao aplicativo. Vazamentos de Conexão Existem várias definições de configuração para ajudar a detectar vazamentos de conexões, ajudando a resolver possíveis leaks: • removeAbandoned = true – remove conexões abandonadas se excederem o removeAbandonedTimeout . A conexão é considerada abandonada e elegíveis para retirada do pool. Conexões em banco de dados, desta forma, podem ser recuperadas a partir de aplicações que não conseguem fechar uma conexão. • removeAbandonedTimeout = 54 - tempo limite em segundos antes que uma conexão seja considerada abandonada e elegível para ser removida. • validationQuery - Vide explicação anterior. IMPORTANTE: As questões informadas neste tópico não possuem suporte na hospedagem em analisar problemas relacionados, uma vez que são considerados de conhecimento técnico do desenvolvedor. 190 Servidor Java não quer parar ou reiniciar Entre%no%terminal%SSH%e%execute%o%comando%abaixo: ps*cu*TU*USUARIO_FTP*|*awk*'{*print*$2*"*"*$11*}'*|*grep*java Onde%USUARIO_FTP%é%o%usuário%do%FTP%que%está%executando%o%servidor%Java. Pegue%o%número%que%é%apresentado%do%servidor%Java%e%mate%o%processo%assim.% kill*T9*NUMERO Digite%o%número%do%PID%que%apareceu%no%comando%acima%e%pressione%ENTER. Depois,%vá%no%NGasi,%clique%em% >% diversos%erros,%conJirme%os%diálogos%que%o%servidor%iniciará. .%Aparecerão% IMPORTANTE: Se o servidor Java não funcionar ainda assim, relate o problema no [email protected]. 191 Fantastico De Luxe - Access denied for user Veja%o%tópico%“Problema%ao%instalar%um%aplicativo%no%Fantastico%De%Luxe%”%deste%manual. 192 Troca de Senha do Admin Do GlassFish Os passos abaixo são para o GlassFish 3.x, instalado em diretório default pelo NGasi. Antes de começar, é exigido um pequeno conhecimento em shell. É necessário acessa o SSH com seu usuário para executar os passos. Caso não saiba como operar, a recomendação é reinstalar o servidor GlassFish e reconfigurar seu aplicativo. 1) Deixe o GlassFish parado ~/appservers/glassfish-3x/bin/./asadmin.sh stop-domain domain1 2) Retire o antigo autenticador cujo a senha se perdeu: mv ~/.asadminpass ~/.asadminpass.bk 3) No SSH, faça um backup do seu atual domain1: ~/appservers/glassfish-3x/bin/./asadmin.sh backup-domain domain1 4) Verifique a porta do GlassFIsh admin, anotando o número que aparecer, entre aspas, com o comando abaixo: cat ~/appservers/glassfish-3x/domains/domain1/config/ domain.xml | grep 'network-listener port' | grep adminlistener | grep admin-thread-pool| awk -Fport= '{print $2}' 4.1) Digamos que o resultado foi: "8395" protocol="admin-listener" trans 4.2) O número é 8395 5) Crie um segundo domain com a porta encontrada: ~/appservers/glassfish-3x/bin/./asadmin.sh create-domain -adminport 8395 domain2 6) Atribua a senha para o admin após a pergunta no SSH. As perguntas começando ao admin (coloque admin) - Digite o nome de usuário admin [Pressione a tecla Enter para aceitar o default "admin" / sem senha]> admin - Digite a senha admin [Pressione a tecla Enter para aceitar o default de nenhuma senha]> - Digite a senha admin novamente> 7) Copie os arquivos de autenticação do domain2, que possui a nova senha, para o domain1, cujo perdeu: cp ~/appservers/glassfish-3x/domains/domain2/config/ 193 cacerts.jks \ ~/appservers/glassfish-3x/domains/domain2/config/admin-keyfile \ ~/appservers/glassfish-3x/domains/domain2/config/keyfile \ ~/appservers/glassfish-3x/domains/domain2/config/keystore.jks \ ~/appservers/glassfish-3x/domains/domain1/config/ 8) Apague o domain2 que não vai mais usar: ~/appservers/glassfish-3x/bin/./asadmin.sh delete-domain domain2 9) Inicie e entre no admin com a senha que havia dado no passo 6 e pronto, já está operando novamente no GlassFish Admin: ~/appservers/glassfish-3x/bin/./asadmin.sh start-domain domain1 IMPORTANTE:*O%suporte%da%Integrator%não%resolverá%estes%passos%para%o%usuário.%É%de% total%responsabilidade,%assim%que%alterada%a%senha,%guardar%em%local%seguro%para%não% esquecer%um%lembrete.% 194 Serviço Java não responde com erro de Timeout Existe um tipo de problema que para muitos desenvolvedores é incomum: Thread Leaks. A característica mais comum, de threads abertas ao máximo, sem ter como o serviço Java de abrir novas, é uma página em branco ou, após alguns minutos aparecer um erro no browser de tempo esgotado - Timeout. Alguns servidores como o Jetty pode se comportar simplesmente não servindo o conteúdo e sim indexando as páginas e arquivos dentro do diretório de aplicativos. Muitos%usuários%percebem%sempre%que%volta%a%funcionar%após%reiniciar%o%servidor%Java,% sem%entender%a%causa. Estes problemas não tem uma solução única e cada aplicativo apresenta em seus logs erros que formam a situação. Cabe ao desenvolvedor, ao se deparar com o problema, baixar os logs e analisar todos os erros, antes mesmo de reiniciar o serviço Java. IMPORTANTE:*O%suporte%da%Integrator%não%analisará%os%logs%para%os%usuários,%muito% menos%dará%dicas%para%solucionar%a%causa.%%Aplicativo%desenvolvido%por%empresa/pessoa% que%não%opera%mais%em%manutenção%do%mesmo,%deve%ser%ainda%assim%acionada%para% resolução%da%causa,%já%que%se%trata%de%uma%correção%para%um%problema%não%visto%no% desenvolvimento. 195 Erro do MySQL: Host is blocked because of many connection errors Veja detalhes sobre este erro em Erro comum: Host is blocked because of many connection errors . 196 Erros Comuns de E-mail Existem alguns erros comuns no envio de email que fornecemos as soluções mais práticas neste capítulo. É importante ressaltar que alguns erros são de natureza puramente do programa que está usando para submeter emails e nem sempre nosso suporte consegue alcançar a resposta certa para o problema de imediato. 197 Erro 501 Too many syntax or protocol errors Existem erros ao enviar emails usando o Outlook. Provavelmente, quando você copia e cola os endereços de e-mail no campo Para, ou os chama, estes incluem aspas ao seu redor que o servidor não sabe como lidar, por exemplo: '[email protected]' em vez de apenas [email protected]. Remova as aspas e tente enviar o email novamente. 198 Alguns emails não vão para a caixa de enviados no Outlook Tente os passos a seguir caso seu Outlook seja 2010 - pode funcionar em versões superiores ou 2007: 1. Botão direito do mouse sobre "Itens Enviados" 2. Propriedades 3. Marcar "mostrar número total de Itens" 4. Desmarcar “Gerar modos de exibição Microsoft Exchange” O endereço abaixo pode ser consultado para dúvidas e soluções sobre esta questão: http://support.microsoft.com/kb/184059/pt-br IMPORTANTE: Caso o endereço que a Microsoft fornece for alterado, nos informe no [email protected] para atualizarmos o manual. 199 Outlook não salva emails em itens enviados Se a caixa de seleção Salvar cópias das mensagens na pasta Itens Enviados não estiver marcada, a pasta Itens Enviados não manterá uma cópia de cada mensagem enviada. A caixa de seleção Salvar cópias das mensagens na pasta Itens Enviados é marcada por padrão. Para selecionar a configuração, siga este procedimento: 1. 2. 3. No menu Ferramentas, clique em Opções. Na guia Preferências, clique em Opções de Email. Em Manipulação de mensagens, marque a caixa de seleção Salvar cópias das mensagens na pasta Itens Enviados. IMPORTANTE: Há uma pasta Itens Enviados correspondente para cada pastaCaixa de Entrada. Se você usar mais de uma conta de email e quiser enviar uma mensagem de uma conta secundária, uma cópia da mesma também será enviada para a pasta Itens Enviados da conta padrão principal. 200 Erro de E-mail: Retry timeout exceeded copy O erro "Retry timeout exceeded" retornado pelo servidor de email, Exim, indica que o servidor tentou enviar o email ao destinatário, mas falhou. Depois de uma certa quantidade de tentativas falhas para entregar um determinado e-mail, o servidor envia a mensagem que irá adicionar o ID da mensagem para um banco de dados específico do serviço. As mensagens neste banco de dados não estão inclusas no próximo ciclo de tentativas em transmitir mensagens de e-mail. Depois de um período de tempo, as mensagens no banco de dados são re-enviadas, em uma nova rodada de tentativas de transmissão. Este processo continua até que se atinge um ponto de falha, onde o servidor não tentará enviar a mensagem. Após as tentativas de entregar a mensagem esgotadas, você poderá então ver a mensagem de devolução com um retorno de erro: Retry timeout exceeded. 201 Causas da falha: Retry timeout exceeded Vários motivos causam esta falha. Todos são referentes ao local para onde envia, sendo os principais: • • • • Caixa de email lotada - usuário não tem espaço adicional para receber sua mensagem Porta do SMTP bloqueada - a porta de comunicação SMTP não funciona Filtro antispam - seus emails são bloqueados pelo servidor para o qual envia Roteamento da rede com falhas (problemas de DNS) - erro de DNS do domínio para o qual envia Problemas de caixa lotada ou antispam, a empresa para o qual envia conseguirá resolver facilmente se conseguir se comunicar com eles a respeito do assunto. Porém, problemas com porta do SMTP ou falhas de DNS, podem demorar mais tempo, pois a empresa ao qual está submetendo emails pode estar passando por instabilidades ou mudanças de configurações no qual estão propagando ou precisam ser resolvidos pela equipe técnica deles. Para nossa ajuda, envie sempre o email de falha para [email protected] para que nossa equipe técnica especilizada seja escalada para análise e ajuda com o problema. 202 O SVN Para% usar% o% SVN% no% servidor,% será% necessário% mudar% de% tema.% Infelizmente,% o% tema% padrão%do%painel%de%controle%não%possui%suporte%direto%ao%assistente%do%SVN. IMPORTANTE:%O%SVN%usa%o%protocolo%“svn://”%e%tem%o%repositório%completamente% criado%dentro%do%usuário.% % 203 Criando seu Repositório SVN Inicialmente,%precisamos%mudar%o%tema%do%painel%para%ter%acesso%ao%ícone%do%SVN.%Veja% abaixo%os%passos: 1)%Para%mudar%de%tema,%vá%em%Preferências*» *RVSkin*Theme*Changer: 2)%Selecione%o%tema%rvneo%e%conJirme%no%botão%Change: Acessando o Painel SVN Assim% que% trocar% de% tema,% desça% a% rolagem% e% encontrará% em% Programa* »* Subversion* and*Trac*Manager%o%SVN: 204 Ao%entrar%no%painel%do%Subversion,%execute%estes%passos: 1)%Habilite%o%SVN%clicando%em%Activate*Now: 2)%Assim%que%ativar,%desça%a%rolagem%até%o%Jim%e%clique%em%Go*to*Management* Subversion*and*Trac*NOW: 3)%Para%conJigurar%uma%conta%%no%SVN,%crie%um%Grupo: 4)%Assim%que%criar%o%grupo,%mais%abaixo,%adicione%um%usuário: 205 5)% Adicionado% o% usuário% e% o% grupo,% vá% em% Subversion* Management% e% visualize% o% caminho%para%acesso%remoto: 6)% Ainda% em% Subversion* Management,% você% pode% gerir% os% privilégios% do% grupo,% clicando%em%Subversion*Privileges*Management: 6.1)%Em% %Add*Privileges,%%você%pode%adicionar%o%privilégio%ao%repositório: Se%desejar%remover%um%repositório,%clique%em% % % 206 . Testando o acesso remoto Antes% de% mais% nada,% só% teste% se% o% seu% domínio% estiver% apontando% para% o% servidor% da% Integrator. Depois% de% adicionado% seu% repositório,% usuário% e% senha,% teste% seu% acesso% usando% um% programa%como%o%Eclipse,%por%exemplo. 1)%No%Eclipse,%podemos%testar%indo%em%File*» *Import.%%Na%janela%Import,%selecione%SVN% » %Checkout*Projects*from*SVN%e%conJirme%no%botão%Next. 2)%Na%próxima%etapa%selecione%Create*a*new*repository*location. 207 3)% Na% etapa% seguinte,% em% URL,% coloque% o% endereço% apresentado% em% Subversion* Management.%Por%exemplo: 4)% Ao% solicitar% o% usuário% e% a% senha,% coloque% aquele% que% cadastrou% neste% repositório.% Prossiga%até%que%seja%concluído. IMPORTANTE:%A%Integrator%não%ensina%a%operar%o%SVN.%A%demonstração%ilustrada%neste% tutorial%é%apenas%um%teste%e%não%responderemos%sobre%problemas%de%sua%operação%local,% uma%vez%que%foge%a%hospedagem%e%entra%no%quesito%ensino.% 208 Realizando Dump do Repositório Para%realizar%um%backup/dump%do%repositório%SVN: 1)%Entre%no%SSH%com%seu%usuário%e%senha%do%cPanel. 2) Realize o dump com a linha de comando no SSH: svnadmin dump ~/rvsubversion/repository/ > ~/svn.dump O comando do passo 2) criará um arquivo chamado svn.dump dentro do usuário de sua conta. Se precisar baixar via FTP, ao logar o encontrará junto a arquivos e diretórios. Ele é gerado no mesmo "nível" de arquivos dos diretórios: public_html, mail e etc. IMPORTANTE:%A%Integrator%não%ensina%a%operar%o%SVN.%A%demonstração%neste%tutorial%é% apenas%um%exemplo%e%não%responderemos%sobre%problemas%de%sua%operação%local,%uma% vez%que%foge%a%hospedagem%e%entra%no%quesito%ensino.% 209 Recuperando o Dump do Repositório Para%realizar%a%recuperação%do%backup/dump%do%repositório%SVN: 1)%Suba%para%o%seu%usuário%o%dump%do%seu%SVN.%Para%exemplo,%subimos%o%nosso%backup% com%um%arquivo%chamado%de%"svn.dump". 2)%Entre%no%SSH%com%seu%usuário%e%senha%do%cPanel. 3) Realize a recuperação do dump com a linha de comando no SSH: svnadmin load ~/rvsubversion/repository/ < ~/svn.dump O comando do passo 3) irá buscar um arquivo chamado svn.dump dentro do usuário de sua conta. Lembre-se que ele deve ser levado via FTP, onde no exemplo ele é colocado no mesmo "nível" de arquivos dos diretórios: public_html, mail e etc. IMPORTANTE:%A%Integrator%não%ensina%a%operar%o%SVN.%A%demonstração%neste%tutorial%é% apenas%um%exemplo%e%não%responderemos%sobre%problemas%de%sua%operação%local,%uma% vez%que%foge%a%hospedagem%e%entra%no%quesito%ensino.% 210 Erro no repositório do SVN O%SVN%é%um%serviço%particular,%de%servidor%SVNServe%que%sobe%no%usuário%de%sua%conta.% Como% existem% alguns% erros% que% são% de% natureza% impossível% de% serem% solucionadas,% nossa%recomendação%é%de%backup%do%svn%caso%tenha%erro%e%recriação%do%repositório. IMPORTANTE:%A%Integrator%não%ensina%a%operar%o%SVN.%A%demonstração%neste%tutorial%é% apenas%um%exemplo%e%não%responderemos%sobre%problemas%de%sua%operação%local,%uma% vez%que%foge%a%hospedagem%e%entra%no%quesito%ensino.% 211 O GIT O%GIT%trabalha%via%SSH,%já%ativo,%por%padrão,%nos%servidores%da%Integrator.%O%que% apresentaremos%a%seguir%é%um%exemplo%de%como%usá\lo. Para%criar%um%%repositório%GIT,%de%dentro%da%sua%conta,%no%servidor,%em%seu%domínio,%% através%do%SSH,%faça%os%seguintes%passos: 1) Crie%o%diretório%do%repositório,%por%exemplo: a. mkdir%\p%repo/nome_projeto.git b. cd%repo/nome_projeto.git c. git%\\bare%init 2) Saia%do%SSH%que%está%logado%no%servidor. 3) Em%sua%máquina%local,%no%seu%computador,%crie%um%repositório%GIT,%escolhendo%o% projeto%que%deseja%trabalhar%com%esta%ferramenta%. Nota:%O%GIT%pode%trabalhar%com%o%Eclipse%IDE,%usando%o%plug\in%EGit: http://wiki.eclipse.org/EGit/User_Guide IMPORTANTE:%A%Integrator%não%ensina%a%operar%o%GIT.%A%demonstração%passada%neste% tutorial%é%apenas%um%exemplo%de%seu%uso.% % Para Desenvolvedores Este% tópico% foge% ao% padrão% de% um% serviço% de% suporte% de% hospedagem% pois% envolve% questões%técnicas%de%habilidade%e%conhecimento%do%desenvolvedor. As% informações% que% encontrar% não% possuem% nosso% suporte% para% análise% ou% veriJicação% de%erros,%seja%de%qual%natureza%for. O% responsável% pelo% conhecimento% de% adoção% das% informações% aqui% contidas,% junto% a% documentação%do%serviço%que%deseja%operar,%é%do%desenvolvedor. IMPORTANTE:% O% tópico% envolve% ensino,% mas% com% base% de% endereços% de% sites% de% terceiros%em%alguns%casos.%Não%nos%responsabilizamos%por%ensinar%desenvolvedores%que% operam%em%suas%máquinas%apenas%por%plugins%de%softwares%como%Eclipse%ou%NetBeans.% Se%a%sua%necessidade%for%de%aprendizado,%recomendamos%um%bom%fórum%ou%uma%escola% 212 adequada%de%ensino%de%desenvolvimento. Instalando o WebServices Axis2 no Tomcat 1)%Baixe%o%Axis2%em: http://axis.apache.org/axis2/java/core/download.cgi 2)%Pare%o%Tomcat 3)%Coloque%o%axis2.war%dentro%do%diretório%appservers/apache\tomcat\Xx/webapps. 4)%Inicie%o%Tomcat 5)%Acesse%o%axis2%pela%URL%do%seu%domínio,%algo%como: http://seusite.com.br/axis2 6)%Use%o%link%“Validate”%para%veriJicar%se%está%executando%corretamente. 7)%Veja%mais%instruções%de%uso%do%Axis2%no%endereço: http://axis.apache.org/axis2/java/core/docs/installationguide.html#servlet_container IMPORTANTE:*Caso%o%Tomcat%não%esteja%na%raiz%do%domínio,%faça%o%mapeamento%do% aplicativo%axis2%no%Ngasi. Vá no painel NGasi, em , clique em . Digite o nome do "axis2", no campo "Adicionar Caminho Mapa; por exemplo..." e confirme no botão "Adicionar". 213 Enviando E-mails Uma% dúvida% comum% de% desenvolvedores% na% Integrator% é% o% envio% de% emails.% Operamos% com% Java% e% PHP% oJicialmente,% logo,% os% exemplos% contidos% aqui% são% nestas% duas% linguagens. Envios%que%fujam%as%regras%básicas,%como%as%citadas%logo%abaixo,%não%possuem%garantia% alguma% de% seu% funcionamento.% Pedidos% de% suporte% desta% natureza,% com% alegações% de% funcionamento% anterior% diferindo% das% conJigurações% alertadas,% são% negados% como% resposta. Resumo%das%conJigurações%para%envio%de%email%online%em%aplicativos%Web%hospedados% na%Integrator: • • • • • Host:%localhost Porta:%25 Usuário%e%senha:%email%criado%e%sua%respectiva%senha%no%painel%de%controle SSL%e%TLS:%Não%deixe%nada%conJigurado%a%respeito%ou%coloque%No Requer%autenticação:%Sim IMPORTANTE:* É% fundamental% entender% que% nossos% exemplos% não% possuem% nosso% suporte% para% análise% de% erros% que% obtiver,% uma% vez% que% isso% caracteriza% ensino.% Eles% servem%como%base%para%o%desenvolvedor%que%já,%por%sua%obrigação%técnica,%deve%resolver% a%questão%alterando%seu%aplicativo%para%obter%o%envio%correto%no%seu%site/serviço. Enviando E-mail com Java Para%enviar%email%em%Java,%temos%um%exemplo%simples,%compactado%com%a%fonte%.java,%no% arquivo%.war%chamado%EnviaEmail.war. Baixe%o%exemplo%no%endereço%(arquivo%precisa%de%duas%descompactações,%pois%está% como%.zip%também): http://wiki.integrator.com.br/index.php?title=Enviando_E\mail_em_Java 214 Descompacte%o%.war%com%um%programa%de%Zip%ou%Rar%que%estiver%instalado%em%sua% máquina.%Na%descompactação,%abra%o%%arquivo%“WEB-INF/classes/br/com/integrator/ Envia Email.Java”%.% Nele,%temos%as%seguintes%linhas: … props%=%System.getProperties(); props.put("mail.smtp.host",%"localhost"); props.put("mail.smtp.port",%"25"); props.put("mail.smtp.auth",%"true"); session%=%Session.getInstance(props, new*Autenticar("seu_email_aqui","sua_senha_aqui") ); Coloque%seu%email%completo,%criado%no%cPanel%e%a%respectiva%senha%dada%a%ele,%na%linha% de%%“new%Autenticar”. Resumo%das%conJigurações%para%envio%de%email%online%informado%no%EnviaEmail.java: • Host:%localhost • Porta:%25 • Usuário%e%senha:%email%criado%e%sua%respectiva%senha%no%painel%de%controle • SSL%e%TLS:%Não%deixe%nada%conJigurado%a%respeito%ou%coloque%No • Requer%autenticação:%Sim Enviando E-mail com PHP O ideal para sua segurança é enviar emails autenticados, com uma boa biblioteca de PHP que permita isso de forma fácil. Para isso, temos o PHPMailer. Para%enviar%email%em%PHP,%temos%um%exemplo%simples,%compactado,%no%arquivo%.zip% chamado%phpmailer.zip. Baixe%o%exemplo%no%endereço: http://wiki.integrator.com.br/index.php?title=Enviando_E\mail_com_PHP Descompacte%o%.zip%com%um%programa%de%Zip%ou%Rar%que%estiver%instalado%em%sua% máquina.%Na%descompactação,%abra%o%%arquivo%“confirm.php”%.% 215 Nele,%temos%as%seguintes%linhas%que%devem%ser%alteradas%respectivamente%para%seu%site/ domínio,%seu%email%e%senha. $dominio = 'seudominio.com.br'; $mailfrom = "contato@$dominio"; $passwd = "SUA_SENHA_AQUI"; Para utilizar o exemplo: 1.%Crie%o%email%no%cPanel. 2. Se quiser baixar a última versão do PHPMailer, este endereço é o mais indicado: https://github.com/PHPMailer/PHPMailer Resumo%das%conJigurações%para%envio%de%email%online%com%PHPMailer%informado%no% exemplo: • Host:%localhost • Porta:%25 • Usuário%e%senha:%email%criado%e%sua%respectiva%senha%no%painel%de%controle • SSL%e%TLS:%Não%deixe%nada%conJigurado%a%respeito%ou%coloque%No • Requer%autenticação:%Sim 216 Alterando o Comportamento com as Diretrizes Apache O%Apache%permite%mudar%seu%comportamento%através%de%diretrizes%que%permitem%ser% adicionadas%em%arquivos%.htaccess. Essas%diretrizes%são%instruções%que%podem%ir%de%comportamentos%básicos%e%simples%de% compreender%até%mesmo%envolver%lógica%de%programação. A%documentação%para%aprender%sobre%as%diretrizes%do%.htaccess%Jica%em: http://httpd.apache.org/docs/2.2/pt\br/howto/htaccess.html IMPORTANTE:%O%suporte%da%Integrator%Host%não%analisa%seu%.htaccess%personalizado%em% casos%que%envolvam%o%comportamento%de%seu%site,%seja%pela%performance%ou%análise%de% URL%amigável.% 217 Desenvolvendo seu .htaccess O%.htaccess%(%arquivos%de%conJiguração%distribuída%\%distributed%conJiguration%Jiles)%é%um% arquivo%que%permite%realizar%mudanças%comportamentais%de%acesso%aos%arquivos% existentes%em%um%site%servido%pelo%servidor%Apache. O%.htaccess%é%complexo%e%possui%características%que%nas%conJigurações,%podem%exigir% conhecimentos%de%lógica%de%programação. Existem%alguns%motivos%para%não%usar%.htaccess: 1.%Ele%é%complexo%e%exige%lógica%em%certas%diretrizes 2.%Exige%conhecimento%em%regex%pelo%usuário%para%obter%muitas%vezes%o%comportamento% desejado 3.%Pode%inJluir%profundamente%na%performance%do%site Para%saber%mais: http://httpd.apache.org/docs/2.2/pt\br/howto/htaccess.html IMPORTANTE:%O%suporte%da%Integrator%Host%não%analisa%seu%.htaccess%personalizado%em% casos%que%envolvam%o%comportamento%de%seu%site,%seja%pela%performance%ou%análise%de% URL%amigável.% 218 URL Amigável ou Mod_Rewrite URL%amigável%ou,%URLs%Amigáveis,%são%a%forma%que%os%desenvolvedores%usam%para% rescrever%um%endereço%de%site%dinâmico,%geralmente%em%PHP,%da%forma%original%para% uma%mais%“amigável”%a%leitura,%tanto%para%o%endereço%no%navegador,%como%para%os% buscadores%como%o%Google. Por%exemplo,%digamos%que%seu%site%tenha%um%link%chamado%hospedagem,%que%é%dinâmico,% onde%seu%usuário%acessaria%ele%da%forma%abaixo: http://integrator.com.br/?p=2 Mas%os%usuários%podem%ter%diJiculdade%em%lembrar%o%endereço%todo%de%uma%vez,%ou%até% mesmo%memorizar%na%barra%de%endereço%qual%número%é%a%página%que%desejam%ver.%Com% o%intuito%de%facilitar,%você%modiJica%o%comportamento%%para%que%seja%visível%assim: http://integrator.com.br/hospedagem Internamente,%o%“?p=2”%permanece%existindo.%Mas%para%seu%usuário,%o%navegador/ browser%e%os%buscadores,%é%na%realidade%“hospedagem”. A%rescrita%foi%feita%pelo%servidor,%usando%recursos%de%diretrizes%existentes%no%Apache% através%do%.htaccess.%Digamos%que%seja%um%“truque”%que%envolve: 1.%Lógica%de%programação 2.%Conhecimento%de%regex. Exemplo: Um%site%contendo%o%seguinte%conteúdo: http://integrator.com.br/hospedagem.php?plano=1 E%deseja%deixar%ao%seu%usuário%visível: http://integrator.com.br/hospedagem/plano\php\basico Teria%um%.htaccess%assim: RewriteEngine%On RewriteBase%/ ErrorDocument%404%/404.php RewriteRule%^hospedagem\/plano\php\basico$%%/hospedagem.php?plano=1%[NC,L] Já%existem%casos%mais%complexos,%que%precisam%operar%em%Regex,%por%exemplo,%digamos% que%a%URL%seja: http://integrator.com.br/edit/host/1 Temos%que%usar%uma%expressão%regular%assim: ([a\z]+)\/([a\z]+)\/([0\9]+) O%arquivo%em%por%trás%desta%URL,%serial%algo%como: 219 http://integrator.com.br/sistema.php?act=$1&model=$2&id=$3 Onde%cada%$número%é%o%número%do%grupo%em%sequência%ao%que%foi%analisado%pela% expressão%regular. Para%entender%melhor%o%trecho%do%.htaccess: RewriteRule%^([a\z]+)\/([a\z]+)\/([0\9]+)$%%sistema.php?act=$1&model=$2&id=$3% [NC,L] IMPORTANTE:% Sem% experiência,% procure% estudar% para% entender% o% que% pretende% fazer% ou% ,% sempre% que% possível,% buscar% ajuda% de% proJissional% qualiJicado% experiente% para% instruí\lo%em%como%resolver%a%questão%do%seu%programa.%O%suporte%da%Integrator%por%ser% hospedagem,% em% momento% algum% será% responsável% por% tal% ajuda% de% desenvolvimento% comportamental% particular% e% nem% resolução% das% conseqüências% de% conJigurações% erradas%que%obtiver. 220 Procedimentos em seu Banco de Dados Tanto%o%MySQL,%como%o%PostgreSQL,%permitem%criar%programação%procedural%em% formato%de%funções%dentro%de%seus%bancos%de%dados. IMPORTANTE:% O% suporte% da% Integrator% Host% não% ensina,% não% analisa% e% nem% se% responsabiliza%pela%falta%de%conhecimento%na%criação%de%procedures,%functions%ou%views% em%seu%banco%de%dados,%muito%menos%na%qualidade%da%exportação%de%seu%banco%de%dados% local,%em%arquivo,%para%upload%no%servidor%online.% 221 Criando uma Stored Procedures no MySQL Para%exempliJicar,%temos%uma%pequena%tabela: create%table%teste%(id%int%not%null%primary%key%auto_increment,%data%date); Assim%que%criada%a%tabela,%temos%a%procedure: DELIMITER%$$ CREATE%PROCEDURE%`inserir`(data%date) %%%BEGIN %%%%%%%%INSERT%INTO%teste%VALUES%(NULL,data); %%%END%$$ DELIMITER%; Testando%a%procedure: call%inserir('2012\12\12'); IMPORTANTE:% % Criar% stored% procedures,% functions% ou% triggers% online% permitem% automaticamente% seus% usuários,% devidamente% adicionados% ao% banco% de% dados% pelo% cPanel,%acessar%online%somente.% 222 Criando Functions no MySQL Veja%na%documentação%oJicial%do%MySQL%pelo%endereço%abaixo%um%exemplo%que%funciona: http://dev.mysql.com/doc/refman/5.5/en/create\function.html Trecho%extraído%do%endereço%da%documentação: mysql> CREATE FUNCTION hello (s CHAR(20)) mysql> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT('Hello, ',s,'!'); Query OK, 0 rows affected (0.00 sec) mysql> SELECT hello('world'); IMPORTANTE:% % Criar% stored% procedures,% functions% ou% triggers% online% permitem% automaticamente% seus% usuários,% devidamente% adicionados% ao% banco% de% dados% pelo% cPanel,%acessar%online%somente.% 223 Criando Triggers no MySQL Veja%na%documentação%oJicial%do%MySQL%pelo%endereço%abaixo%um%exemplo%que%funciona: http://dev.mysql.com/doc/refman/5.5/en/trigger\syntax.html Trecho%extraído%do%endereço%da%documentação: mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2)); Query OK, 0 rows affected (0.03 sec) mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account -> FOR EACH ROW SET @sum = @sum + NEW.amount; Query OK, 0 rows affected (0.06 sec) IMPORTANTE:% % Criar% stored% procedures,% functions% ou% triggers% online% permitem% automaticamente% seus% usuários,% devidamente% adicionados% ao% banco% de% dados% pelo% cPanel,%acessar%online%somente.% 224 Privilégios em Procedimentos no MySQL Veja%a%documentação%oJicial%do%MySQL%em: http://dev.mysql.com/doc/refman/5.5/en/stored\programs\security.html IMPORTANTE:% % Criar% stored% procedures,% functions% ou% triggers% online% permitem% automaticamente% seus% usuários,% devidamente% adicionados% ao% banco% de% dados% pelo% cPanel,%acessar%online%somente.% 225 Uso Avançado do Painel e Serviços O%usuário%mais%experiente%pode%precisar%realizar%certas%operações%no%painel%cPanel,%ou% acessar%sua%conta,%de%algumas%formas%diferentes%dos%usuários%comuns.%Temos%neste% tópico%resumido: 1)%Criação%de%novas%contas%FTP 2)%Acesso%SSH%através%de%terminal 3)%Criação%de%Chaves%de%Acesso%SSH%% 4)%Personalização%dos%DNS 5)%Erros%em%PHP 6)%Compactando%conteúdo%com%GZip%pelo%painel%cPanel 7)%Crontab 226 Novas contas de FTP Para%criar%uma%nova%conta%de%usuário%FTP,%vá%em%Arquivos* » *Contas*FTP. No%formulário,%basta%preencher%o%usuário%do%FTP,%a%senha%e%o%local%onde%será%adicionado% o%acesso%a%este%usuário. Ao criar a conta de FTP, ela será listada abaixo. 227 Removendo contas de FTP Para%remover%a%conta%de%FTP%extra%criada,%mais%abaixo,%depois%de%criada,%existem%as% contas%existentes.%Clique%em%Excluir. Haverão%duas%opções%para%exclusão.%PreJira%Excluir*Conta,%removendo%assim,%somente%o% acesso%ao%usuário%do%FTP%que%existia%antes. IMPORTANTE: Não é possível excluir as contas padrão de FTP criadas ao ser liberado o acesso ao painel cPanel. 228 Cuidados ao excluir uma conta extra de FTP Caso%tenha%apontando%a%conta%extra%de%FTP%em%um%diretório%do%seu%servidor%Java,%por% exemplo,%tenha%muito%cuidado%ao%excluir.%O%botão%Excluir*Conta*e*Arquivos%removerá% tudo,% sem% exceções,% causando% transtornos% inclusive% para% reinstalar% o% servidor% pelo% painel%Java,%portanto%CUIDADO. IMPORTANTE: A recuperação de backup não é imediata. O seu pedido pode levar até 48 horas para ser atendido e, para emergências, um custo extra será cobrado para adiantar o tempo de recuperação. 229 Acesso SSH através do sistema operacional Se%o%seu%plano%permitir%acesso%SSH,%existe%a%possibilidade%de%manipular%arquivos%e%seu% banco%de%dados%particular%diretamente%por%linhas%de%comando. Antes%de%iniciar,%precisamos%esclarecer%dois%pontos%do%acesso%SSH: 1.% O% suporte% da% Integrator% não% ensina% a% operar% em% linhas% de% comando% para% manipular% arquivos,%o%que%exige%conhecimentos%de%Linux. 2.%No%caso%de%banco%de%dados,%o%suporte%da%Integrator%não%ensina%a%manipular%seu%banco% de% dados,% via% linha% de% comando,% o% que% exige% conhecimento% SQL,% além% da% interface% de% terminal%do%Banco%de%Dados%que%está%pretendendo%operar:%MySQL%ou%PostgreSQL. IMPORTANTE:%Não%tente%operar%via%linhas%de%comando%em%nenhuma%das%duas%situações% citadas% neste% tópico% se% houver% pouca% experiência% de% uso.% Problemas% em% mudança% de% permissões,%até%mesmo%exclusões%indevidas,%podem%lhe%custar%horas%para%resolução,%ou% até%mesmo%a%cobrança%de%recuperação%de%backup.% SSH 230 Acesso SSH através do Linux/Unix e Windows Temos% dois% tipos% padrão% de% Sistema% Operacional% em% formato% de% acesso:% Unix% e% Windows.%O%Linux%usa%o%padrão%Unix. 231 Linux/Mac OS X/FreeBSD/ Unix em Geral 1.%No%padrão%Unix,%abra%o%terminal%e%execute%o%seguinte%comando: ssh%USUARIO_FTP@SEUDOMINIO Exemplo: ssh%[email protected] Se% o% domínio% não% estiver% ainda% apontando% para% o% servidor% da% Integrator,% use% o% IP% da% máquina%informada%no%email%ConJigurações%e%Instruções%de%Uso: ssh%USUARIO_FTP@IP Exemplo%abaixo%com%um%IP%Jictício: ssh%[email protected] 232 Windows XP/Vista/7/8 No% Windows% não% existe% um% programa% padrão% do% sistema% operacional.% Neste% caso,% recomendamos%o%Putty.% Para usar o SSH, baixe o programa Putty no seguinte endereço: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. O Putty é um executável simples que, após baixado, basta dar um duplo clique sobre ele. Ao aparecer a janela de PuTTY Configuration: Clique em Session e preencha o formulário como mostrado na Imagem abaixo: 1. Host Name (or IP address): Digite seu domínio ou o IP do email de Configurações 2. Deixe marcada a opção SSH 3. Dê um nome em Saved Sessions 4. Confirme tudo no botão Open 5. Ao clicar em Open, a tela de Prompt aparecerá pedindo o usuário, que deve ser o mesmo do seu FTP. Pressione <ENTER> no teclado para confirmar após digitar. 6. A senha é oculta, ou seja, não aparecerá nem mesmo asteriscos (***). Ele pedirá a senha do seu usuário FTP. Digite-a e pressione <ENTER> no teclado. IMPORTANTE: Se você apenas opera no SO Windows, procure evitar ao máximo o terminal SSH se não tem experiência com Linux. Erros para serem corrigidos pelo nosso suporte, ao constatarmos a questão por falta de experiência do usuário, serão cobrados para 233 serem resolvidos. 234 Gerando chaves de acesso SSH no cPanel Para%gerar%chaves%SSH,%evitando%que%tenha%que%digitar%sua%senha%todas%as%vezes%que% precisar%logar,%siga%estes%passos: 1)%No%cPanel,%vá%em%Segurança*» *Acesso*SSH/Shell. 2)%Clique%no%botão%Gerenciar*Chaves*SSH.% 3)%Na%etapa%seguinte,%clique%em%Gerar*nova*chave: 4)%Crie%a%chave: 235 5)%Depois%de%criada,%clique%em%Gerenciar*Autorização%para%gerar%a%autorização%para%o% uso%da%chave%gerada. 6)%ConJirme%a%autorização%clicando%no%botão%Authorize. Veja%que%haverá%uma%conJirmação%que%foi%autorizada: * 7)%Baixe%as%chaves%em%sua%máquina: 236 237 Usando as chaves caso esteja usando o Linux/MacOS X Antes% de% começar,% saiba% que% está% sendo% mostrado% neste% tópico% não% tem% suporte% em% termos% de% uso% via% sistema% operacional.% Usar% um% sistema% operacional% de% usuário,% via% terminal,% não% é% de% responsabilidade% do% suporte% da% Integrator% e% nem% mesmo% deve% ser% cobrado%como%parte%do%mesmo.%% Você%estará%de%posse%de%duas%chaves/arquivos%para%utilizar%em%seu%sistema%operacional% Linux/Mac%OS%X: • chave • chave.pub Da%primeira%vez%será%solicitada%a%senha%da%key.%Depois,%não%ocorrerá%mais. Coloque\os%no%diretório%“~/.ssh”,%sem%aspas,%de%seu%usuário. IMPORTANTE:*Se%você%não%usar%os%nomes%de%chave%padrão,%que%no%caso%seria%id_rsa,%ou% deseja%armazenar%suas%chaves%em%um%caminho%diferente,%será%necessário%adicionar%o% caminho%em%/usr/bin/sshTadd*para%que%o%comando%ssh%saiba%onde%encontrar%sua% chave%(no%MacOs%X%é%“ssh\add%\K%~/.ssh/chave”,%sem%as%aspas).% 238 Usando as chaves caso esteja usando o Windows Para%usar%no%sistema%operacional%Windows,%faça%os%seguintes%passos: 1)%Vá%em%Visualizar/Download. 2)%Digite%a%senha%da%chave%que%criou%e%clique%em%Converter: 3)%Clique%em%Fazer*Download*da*Chave: 4)%No%Putty,%expanda%em%Category:%Connection>SSH>Auth.*%Clique%em%Browse%e% selecione%a%key%que%baixou.* 5)%ConJirme%clicando%no%botão*Open. 239 Personalizando os DNS do seu Serviço Antes% de% começar,% saiba% que% não% nos% responsabilizamos% por% suas% personalizações.% Corrigir%ou%apontar%nossos%DNS%conJigurados%corretamente%na%liberação%do%seu%serviço% poderá%ser%cobrado. Para%os%DNSs%comuns,%vá%em% %Domínios* *» Editor*de*Zona*DNS*Simples*ou%Editor*de* Zona*DNS*Avançado: Se%for%adicionar%um%registro%DNS,%vá%em%Editor*de*Zona*DNS*Avançado,%em%Adicionar* um* Registro% e% selecione% o% Tipo,% preenchendo% os% demais% campos.% ConJirme% em% Adicionar*Registro. Neste%local,%são%permitidos%os%tipos:%A,%CName%e%TXT. Para%editar%entradas%de%DNS%do%tipo%MX,%vá%em%Correios**» Entrada*MX: 240 241 Vários Domínios ou Subdomínios na Raiz de um GlassFish Saiba que terá de criar os domínios e subdomínios no mesmo painel de controle cPanel, como Domínio Suplementar. Em caso de domínios, eles devem ser criados obrigatoriamente como suplementares. Caso não saiba realizar a criação, nos informe que enviamos um tutorial. O domínio suplementar, uma vez criado no cPanel, deve ser mapeado no NGasi, como Raiz. No painel Java, clique em . Uma vez selecionado em "Web Server virtual hosts" o domínio suplementar/subdomínio, clique no botão . IMPORTANTE:*Usar%muitos%aplicativos%em%um%mesmo%servidor%GlassFish%exige% memória.%Não%nos%responsabilizamos%se%ocorrer%erros%de%memória%Java%Heap%Space. 242 Configurando no GlassFish 1) Entre no Admin do GlassFish. 2) Vá em "Configurações *» server-config *» Servidores Virtuais" e clique no botão "Novo...". 3) No "Novo Servidor Virtual", determine um "Id", que o identifique, e no campo "Hosts", coloque o site/domínio ou subdomínio, separado por vírgulas. Isso inclui o "www" no caso de domínios. Mais abaixo, selecione em "Listeners de Rede" os itens "http-listener-1" e "httplistener-2". Confirme no botão "OK". 3.1) O processo do passo #3 deve ser realizado quantos domínios/subdomínios quiser. 243 4) Uma vez criados os servidores virtuais, vá em "Aplicações" e implante um novo aplicativo. 4.1) Em "Raiz de Contexto", digite "/", sem aspas, que indica a raiz do documento. 4.2) Em "Servidores Virtuais", selecione o servidor virtual que definiu anteriormente, cujo responderá pelas requisições ao domínio/subdomínio. 244 Desativando erros do PHP Crie um arquivo php.ini, dentro do diretório onde estão os arquivos PHP com este conteúdo: display_errors = Off error_reporting = 0 Caso seja por causa da date(), timezone, exemplo para a região de São Paulo: date.timezone = "America/Sao_Paulo" IMPORTANTE: Desativar a exibição de um erro não o resolve. Nem toda mensagem de erro deve ser resolvida com a dica apresentada neste tópico. Cabe ao desenvolvedor/usuário compreender que aplicativos PHP antigos podem ter falhas por código ultrapassado que precisam ser substituído para ter o erro resolvido definitivamente. 245 Ativando o GZip para Conteúdo Web Antes de começar, saiba que esta forma de configuração não funciona para Java. 1) Ative o GZip no cPanel indo em "Software/Serviços *» Otimizar Site". 2) Marque a opção "Compactar todo o conteúdo" e confirme no botão "Atualizar Definições". 246 Criando Tarefas Automatizadas - Cron Antes de começar, saiba que não pode automatizar tarefas com serviços Java independentes, ou seja, em .JAR executando via SHELL fora do servidor Java. Se o fizer, sua conta poderá ser suspensa sem aviso prévio. 1) Entre no cPanel, vá em "Avançada *» Tarefas Cron". 2) Em "Adicionar Novo Trabalho Cron", selecione a forma como vai executar, em "Definições Comuns". 3) Em "Comando", defina o comando Linux, desde que tenha permissão para tal, assim como o path onde encontra-se seu aplicativo. O path físico sempre começa assim: /home/USUARIO_FTP Onde USUARIO_FTP é o seu usuário de FTP. Dentro dele, que é a área onde você visualiza ao entrar com o FTP, você coloca seu aplicativo para ser executado. IMPORTANTE: Jamais execute envio de e-mails em massa, pois é proibido praticas de Spam nos servidores da Integrator. Jamais execute aplicativos Java fora do servidor Java também. 247 248