// 
//     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.
//

= 使用 PHP 创建数据库驱动的应用程序
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 使用 PHP 创建数据库驱动的应用程序 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 使用 PHP 创建数据库驱动的应用程序

= 第 9 课：将应用程序部署到远程 Web 服务器
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 第 9 课：将应用程序部署到远程 Web 服务器 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 第 9 课：将应用程序部署到远程 Web 服务器



1. link:wish-list-tutorial-main-page.html[+使用 PHP 创建数据库驱动的应用程序 - 主页+]
2. 
创建数据库

1. link:wish-list-lesson1.html[+创建 MySQL 数据库+]
2. link:wish-list-oracle-lesson1.html[+创建 Oracle 数据库表+]
3. 
link:wish-list-lesson2.html[+设计应用程序。从数据库读取数据+]

4. link:wish-list-lesson3.html[+创建新的应用程序用户+]
5. link:wish-list-lesson4.html[+优化代码+]
6. link:wish-list-lesson5.html[+添加安全功能。实现应用程序用户登录+]
7. link:wish-list-lesson6.html[+在数据库中添加新的愿望+]
8. link:wish-list-lesson7.html[+更新和删除数据库中的条目+]
9. link:wish-list-lesson8.html[+使用 CSS 技术改进应用程序的外观+]
10. 
*=>将应用程序部署到远程 Web 服务器*


image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0"]

通常，PHP 应用程序实际上在远程服务器上运行，并通过文件传输协议 (FTP) 进行访问。要在远程服务器上部署 CRUD 应用程序，您将需要向托管提供商注册一个普通帐户、注册一个 FTP 帐户并创建一个远程数据库。

您可以使用您喜欢的任何托管。当前文档介绍 X10HOSTING 免费托管中的部署过程。此托管包括 MySQL，但不包括 Oracle 数据库服务器。

所有的用户名、口令和电子邮件地址都是虚构的，仅用作示例。如果用户未登录论坛的时间超过了一个星期，则托管管理会阻止该用户的帐户。因此您可能无法再使用与本教程中完全相同的用户名、口令、电子邮件地址和其他凭证。

在本课程中，您将了解如何执行以下操作：

* 更改数据库连接设置以使用远程数据库

当前文档是“在适用于 PHP 的 NetBeans IDE 中创建 CRUD 应用程序”教程的一部分。



== 来自上一课的应用程序源代码

MySQL 用户：单击link:https://netbeans.org/files/documents/4/1934/lesson8.zip[+此处+]以下载源代码，该代码反映了在完成上一课之后的项目状态。


== 注册电子邮件帐户

如果之前尚未创建电子邮件帐户，则创建一个。在此示例中，电子邮件地址为 phpuser65@googlemail.com。


== 注册托管帐户

要在 link:http://x10hosting.com/[+X10HOSTING+] 免费托管中创建托管帐户，请执行向导中的步骤，同时输入以下设置。您将在任何其他托管站点中输入类似信息。

|===
|帐户设置  |值 

|电子邮件地址 |phpuser65@gmail.com 

|域名 |link:http://x10hosting.com/[+x10Hosting.com+] 

|子域 |phpuser 

|托管帐户用户名（也用于登录到 cPanel） |phpuser 

|托管帐户口令（也用于登录到 cPanel） |qwerty1234 

|论坛用户名 |phpuser 

|论坛口令 |qwerty 

|FTP 帐户名称 |uploader 

|FTP 用户名 |uploader@phpuser.x10hosting.com 

|FTP 服务器 |ftp.phpuser.x10hosting.com 

|远程数据库主机名 |phpuser 

|远程数据库 |wishlist 

|远程数据库用户名 |phpuser 

|远程数据库用户口令 |phpuserpw 
|===


== 注册 FTP 帐户

现在，您已有一个托管帐户，还需要一个 FTP 帐户，用来传输 PHP 源代码和其他相关文件，以便于在服务器上执行。对于 x10Hosting，打开 cPanel 并选择 "New FTP Account"，然后按向导的指示操作。


== 创建远程数据库

由于 CRUD 应用程序使用数据库，因此，您还将需要在具有<<registerHostingAccount,托管帐户>>的远程服务器上部署  ``wishlist``  MySQL 数据库。


== 使用现有源代码和远程 Web 站点运行配置设置 PHP 项目

1. <<previousLessonSourceCode,下载源文件>>，这些文件与完成上一课后的应用程序状态相对应。解压缩文件。
2. 在  ``htdocs``  文件夹中保存源文件。
3. 创建link:project-setup.html#importSources[+基于现有源代码的 PHP 项目+]：
* 指定下载的源代码在“源”文件夹中的位置
* 选择link:project-setup.html#remiteWebSite[+远程 Web 站点+]运行配置并配置 FTP 连接
4. 完成项目创建。


== 更新 WishDB 类

到目前为止，您已在本地 Web 服务器上开发并运行“愿望列表”应用程序，并使用了本地的 MySQL 或 Oracle 数据库服务器。为使应用程序使用远程 MySQL 数据库，您需要更新通过  ``WishDB``  类的变量指定的连接设置。

1. 打开文件  ``db.php`` 。
2. 更改  ``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>";

----
在此示例中，变量将进行如下更新：

[source,java]
----

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

----


== 后续步骤

link:wish-list-lesson8.html[+<< 上一课+]

link:wish-list-tutorial-main-page.html[+返回到教程主页+]


link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%200:%20Using%20and%20CSS[+发送有关此教程的反馈意见+]


要发送意见和建议、获得支持以及随时了解 NetBeans IDE PHP 开发功能的最新开发情况，请link:../../../community/lists/top.html[+加入 users@php.netbeans.org 邮件列表+]。

link:../../trails/php.html[+返回至 PHP 学习资源+]

