// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Criando uma Aplicação Orientada pelo Banco de Dados com o PHP
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Criando uma Aplicação Orientada pelo Banco de Dados com o PHP - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Criando uma Aplicação Orientada pelo Banco de Dados com o PHP

= Lição 9: Implantando a Aplicação em um Servidor Web Remoto
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Lição 9: Implantando a Aplicação em um Servidor Web Remoto - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Lição 9: Implantando a Aplicação em um Servidor Web Remoto



1. link:wish-list-tutorial-main-page.html[+Criando uma Aplicação Orientada pelo Banco de Dados com o PHP - Página Principal+]
2. 
Criando o Banco de Dados

1. link:wish-list-lesson1.html[+Criando um Banco de Dados MySQL+]
2. link:wish-list-oracle-lesson1.html[+Criando Tabelas do Banco de Dados Oracle+]
3. 
link:wish-list-lesson2.html[+Projetando a Aplicação. Lendo o Banco de Dados+]

4. link:wish-list-lesson3.html[+Criando um Novo Usuário de Aplicação+]
5. link:wish-list-lesson4.html[+Otimizando o Código+]
6. link:wish-list-lesson5.html[+Adicionando Segurança. Implementando o Log-in de Usuário da Aplicação+]
7. link:wish-list-lesson6.html[+Adicionando um Novo Desejo ao Banco de Dados+]
8. link:wish-list-lesson7.html[+Atualizando e Deletando Entradas no Banco de Dados+]
9. link:wish-list-lesson8.html[+Melhorando a Aparência da Aplicação Usando a Tecnologia CSS+]
10. 
*=>Implantando a Aplicação em um Servidor Web Remoto*


image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0"]

Normalmente, uma aplicação PHP de vida real é executada em um servidor remoto e é acessada por um Protocolo de Transferência de Arquivo (FTP - File Transfer Protocol). Para implantar a aplicação CRUD em um servidor remoto, você precisará registrar uma conta em um provedor de hospedagem, registrar uma conta de FTP e criar um banco de dados remoto.

Você pode usar a hospedagem que quiser. O documento atual descreve o procedimento de implantação na hospedagem gratuita X10HOSTING. Essa hospedagem inclui um MySQL, mas não ums ervidor de banco de dados Oracle.

Todos os nomes de usuário, senhas e endereços de e-mail são fictícios e utilizados somente como exemplos. A administração da hospedagem bloqueia uma conta, se o usuário não aparecer no fórum por mais de uma semana. Assim, você pode falhar em aplicar exatamente os mesmos nomes de usuário, senhas, endereços de e-mail e outras credenciais do tutorial.

Nesta lição, você aprenderá a fazer o seguinte:

* Alterar suas definições de conexão de banco de dados para usar o banco de dados remoto

O documento atual é uma parte do tutorial Criando uma Aplicação CRUD no NetBeans IDE para PHP.



== Código-fonte da Aplicação da Lição Anterior

Usuários MySQL: clique link:https://netbeans.org/files/documents/4/1934/lesson8.zip[+aqui+] para fazer o download do código-fonte que reflete o estado do projeto depois que a lição anterior for concluída.


== Registrando uma Conta de E-mail

Crie uma conta de e-mail, se ainda não tiver criado. Neste exemplo, o endereço de e-mail é phpuser65@googlemail.com.


== Registrando uma Conta de Hospedagem

Para criar uma conta de hospedagem na hospedagem gratuita link:http://x10hosting.com/[+X10HOSTING+], siga as etapas no assistente, digitando as seguintes definições. Você irá digitar informações similares em qualquer outro site de hospedagem.

|===
|Definição da Conta  |Valor 

|Endereço de E-mail |phpuser65@gmail.com 

|Nome do Domínio |link:http://x10hosting.com/[+x10Hosting.com+] 

|Subdomínio |phpuser 

|Nome de Usuário da Conta de Hospedagem (também para log-in em cPanel) |phpuser 

|Senha da Conta de Hospedagem (também para log-in em cPanel) |qwerty1234 

|Nome de Usuário do Fórum |phpuser 

|Senha do Fórum |qwerty 

|Nome da Conta FTP |uploader 

|Nome de Usuário do FTP |uploader@phpuser.x10hosting.com 

|Servidor FTP |ftp.phpuser.x10hosting.com 

|Nome do Host do Banco de Dados Remoto |phpuser 

|Banco de Dados Remoto |wishlist 

|Nome de Usuário do Banco de Dados Remoto |phpuser 

|Senha do Usuário do Banco de Dados Remoto |phpuserpw 
|===


== Registrando uma Conta FTP

Agora que tem uma conta de hospedagem, você precisará de uma conta FTP na qual irá transferir o código-fonte do PHP e outros arquivos relacionados para execução no servidor. Para x10Hosting, abra o cPanel e selecione Nova Conta FTP e siga o assistente.


== Criando um Banco de Dados Remoto

Como a aplicação CRUD usa um banco de dados, você também precisará implantar o banco de dados MySQL  ``wishlist``  no servidor remoto onde tem uma <<registerHostingAccount,conta de hospedagem>>.


== Configurando um Projeto PHP com Códigos-Fonte Existentes e Configuração de Execução de Web Site Remoto

1. <<previousLessonSourceCode,Faça download dosarquivos de código-fonte>> que correspondem ao estado da aplicação depois da conclusão da lição anterior. Extraia os arquivos.
2. Salve os arquivos de código-fonte na pasta  ``htdocs`` .
3. Crie um link:project-setup.html#importSources[+projeto PHP com códigos-fonte existentes+]:
* Especifique o local dos códigos-fonte dos quais fez download na pasta Source
* Escolha a configuração de execução link:project-setup.html#remiteWebSite[+Web Site Remoto+] e configure a conexão FTP
4. Conclua a criação do projeto.


== Atualizando a Classe WishDB

Até agora, você desenvolveu e executou a aplicação de Lista de Desejos no servidor Web local e usou um servidor de banco de dados MySQL ou Oracle local. Para que a aplicação funcione com o banco de dados MySQL remoto, você precisa atualizar as definições de conexão especificadas por meio das variáveis da classe  ``WishDB`` .

1. Abra o arquivo  ``db.php`` .
2. Altere as variáveis da classe  ``WishDB`` :

[source,java]
----

    var $user = "<the name of the remote database user>";        
    var $pass = "<the password of the remote database user>";
    var $dbName = "<the name of the remote database>";
    var $dbHost = "<the account username specified during the hosting account creation>";

----
Nesse exemplo, as variáveis serão atualizadas como se segue:

[source,java]
----

    var $user = "phpuser";        
    var $pass = "phpuserpw";
    var $dbName = "wishlist";
    var $dbHost = "phpuser";

----


== Próximas Etapas

link:wish-list-lesson8.html[+<< Lição anterior+]

link:wish-list-tutorial-main-page.html[+Voltar à página principal do Tutorial+]


link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%200:%20Using%20and%20CSS[+Enviar Feedback neste Tutorial+]


Para enviar comentários e sugestões, obter suporte e manter-se informado sobre os desenvolvimentos mais recentes das funcionalidades de desenvolvimento PHP do NetBeans IDE, link:../../../community/lists/top.html[+junte-se à lista de correspondência users@php.netbeans.org+].

link:../../trails/php.html[+Voltar à Trilha do Aprendizado PHP+]

