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

= 使用 NetBeans IDE 在远程 Web 服务器上部署 PHP 应用程序
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 使用 NetBeans IDE 在远程 Web 服务器上部署 PHP 应用程序 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 使用 NetBeans IDE 在远程 Web 服务器上部署 PHP 应用程序

通常，PHP 应用程序实际上在远程服务器上运行。远程应用程序是通过版本控制系统或文件传输协议 (FTP) 来访问的。

WARNING: NetBeans 为 FTP/SFTP 提供的基本支持足以让开发者独自处理简单的项目。如果处理的是复杂项目或与多名开发者协同工作，则应使用版本控制系统。NetBeans IDE 支持多种版本控制系统。例如，请参见我们的 link:../ide/subversion.html[+Subversion+] 和 link:../ide/git.html[+Git+] 教程。如果必须在处理复杂项目时使用 FTP/SFTP，则可以考虑将 IDE 与功能全面的 FTP 客户端结合使用，并在 IDE 中将 PHP 项目作为本地 Web 站点来编辑。

*JDK 7 + Windows 7/Vista：*Windows 7 和 Windows Vista 防火墙会阻止某些由 JDK 7 启动的 FTP 操作。有关解决方法，请参见 link:http://forums.netbeans.org/post-115176.html#113923[+NetBeans 论坛+]。

要在远程服务器上部署 PHP 应用程序，您将需要向托管提供商注册一个帐户。您还可以在具有托管帐户的远程服务器上部署一个 MySQL 数据库。

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


*要学习本教程，您需要具备以下软件和资源。*

|===
|软件或资源 |要求的版本 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |PHP 下载包 

|PHP 引擎 |版本 5 

|远程服务器上的托管帐户和 
FTP 帐户 |例如，link:http://x10hosting.com/[+x10Hosting+] 
提供免费的 FTP 帐户托管。 

|PHP 调试器（可选） |link:http://www.xdebug.org[+XDebug 2.0 或更高版本+] 
|===


== 为远程托管的 PHP 项目设置运行配置

如果您在远程 Web 服务器上具有一个托管帐户和一个 FTP 帐户，可用于将您的源文件传输到远程服务器，则可以在本地创建和调试 PHP 项目，然后在远程服务器上对它进行部署。通过“运行配置”的概念，您可以在同一个 NetBeans PHP 项目中的这些工作流之间切换，方法是将 "Run Configuration"（运行配置）类型从 "Local Web Site"（本地 Web 站点）更改为 "Remote Web Site"（远程 Web 站点）。

要在远程 Web 服务器上运行 PHP 应用程序，您需要设置其中包含 FTP 连接配置文件的运行配置。

如果您已经有一个具有默认运行配置的项目，并希望添加新的远程运行配置，link:project-setup.html#managingProjectSetup[+则定制您的项目+]：

1. 在项目节点上单击鼠标右键，然后从弹出式菜单中选择 "Properties"（属性）。"Project Properties"（项目属性）面板打开。
2. 从 "Categories"（类别）列表中，选择 "Run Configuration"（运行配置）。"Run Configuration"（运行配置）面板打开。
3. 如以下部分所述，<<chooisngRunConfigurationType,选择运行配置类型>>并<<specifyFTPConnectionSettings,指定 (S)FTP 连接设置>>。

要在远程服务器上为 PHP 应用程序创建 NetBeans 项目，或者要创建将远程运行配置作为默认配置的新项目，请执行以下操作：

1. 启动 IDE，选择 "File"（文件）-> "New Project"（新建项目）。"New Project"（新建项目）面板打开。
2. 从 "Categories"（类别）中选择 "PHP"，然后选择 "PHP Application from Remote Server"（来自远程服务器的 PHP 应用程序）。然后，单击 "Next"（下一步）。"Name and Location"（名称和位置）面板打开。
3. 指定项目名称、应用程序源文件的位置和项目内部文件的位置（可选）。单击 "Next"（下一步）。"Run Configuration"（运行配置）面板打开。
4. 按照下一节所述，<<specifyFTPConnectionSettings,指定 FTP 连接设置>>。


=== 选择运行配置类型

在 "Run Configuration"（运行配置）面板的 "Run As"（运行方式）下拉列表中，选择 "Remote web Site (FTP, SFTP)"（远程 Web 站点 (FTP, SFTP)）。此时将显示用于设置配置的隐藏区域。

如果要使用 "PHP Application from Remote Server"（来自远程服务器的 PHP 应用程序）向导创建新项目，则不需要从 "Run As"（运行方式）下拉列表中进行选择。该向导会自动转至 "Remote Connection"（远程连接）面板。此面板中只包含 "Project URL"（项目 URL）、"Remote Connections"（远程连接）和 "Upload Directory"（上载目录）字段。

image::images/ftp-run-config-blank.png[]


=== 指定 (S)FTP 连接设置

要创建 FTP 连接，请执行以下操作：

1. 单击 "FTP Connection"（FTP 连接）下拉列表旁边的 "Manage"（管理）。此时将显示 "Manage Remote Connections"（管理远程连接）对话框。
2. 单击 "ADD"（添加）。"Create New Connection"（创建新连接）对话框打开。（如果定义的是第一个连接，可能会自动打开该对话框。）
3. 在 "Connection Name"（连接名称）字段中，输入新连接的名称。在此示例中，连接名称是  ``x10hosting`` 。从 "Type"（类型）下拉列表中，选择 "FTP" 或 "SFTP"。单击 "OK"（确定）。此时将显示 "Manage Remote Connections"（管理远程连接）对话框，并在 "Connection Name"（连接名称）显示字段中包含新连接的名称。
4. 在 "Host Name"（主机名）字段中，输入在 FTP 帐户创建确认消息中包含的 FTP 服务器名称。在本示例中，FTP 服务器是  ``nbuser.x10.mx`` 。
5. 在 "Port"（端口）字段中，指定 21。
6. 在 "User Name"（用户名）字段中，输入在 FTP 帐户创建确认消息中包含的 FTP 用户名。在本示例中，FTP 用户名是  ``nbuser`` 。
7. 填写 "Password"（口令）字段。在此示例中，口令是  ``qwerty1234`` 。
8. 在 "Initial Directory"（初始目录）字段中，输入 FTP 服务器上的帐户目录名称。在此示例中，不指定任何帐户目录，而是在该字段中输入一个正斜杠。 

image::images/manageremoteconnections.png[]



. 单击 "OK"（确定）。返回到 "Run Configuration"（运行配置）面板。


. 在 "Upload Directory"（上载目录）字段中，输入初始目录中将上载源文件的子文件夹名称。该字段下的提示显示 FTP 主机 URL。


. 要完成对新项目的设置，请单击 "Finish"（完成）。


== 将源文件上载到远程服务器

为项目选择远程连接后，请选择是在运行时、保存时还是手动上载源文件。

*运行时：*在运行项目时将源文件上载到服务器。
*保存时：*将每项更改（创建、编辑、重命名、删除）立即传播到远程服务器。如果该操作用时超过 1 秒，则将显示一个进度栏。
*手动：*从不自动上载文件。您必须使用此部分介绍的 IDE 的手动上载功能。

image::images/ftp-run-config.png[]

要将项目文件手动上载到 FTP 服务器，请右键单击项目的 "Source Files"（源文件）节点，然后选择 "Upload"（上载）。请注意，您还可以在同一个菜单中从 FTP 服务器下载文件。

image::images/beta-source-upload.png[]

当开始上载文件时，打开一个包含源文件树视图的对话框。在此对话框中，可以选择是否要上载每个文件。有关详细信息，请参见 link:http://blogs.oracle.com/netbeansphp/entry/new_download_upload_dialog[+NetBeans PHP 博客条目+]中的 "File Upload"（文件上载）对话框。

image::images/file-upload-dialog.png[]

当上载文件时，上载的结果会出现在 "Output"（输出）标签中。

image::images/upload-output.png[]


[[remote-synchronization]]
== 远程同步

对于必须通过 (S)FTP 在多个没有正确版本控制的开发者环境中工作的开发者，NetBeans IDE 提供了远程同步。通过远程同步，可以将项目文件的本地副本与 (S)FTP 服务器上的副本进行比较。可以将本地副本上载到该服务器，也可以将该服务器的副本下载到本地计算机。在您开始处理本地副本后，如果服务器上的副本进行了更新，则 NetBeans IDE 将向您发出文件冲突警告。当存在文件冲突时，使用 NetBeans IDE 能够逐行比较本地版本与服务器上的版本，并决定要接受的版本。

*警告：*远程同步从来不会完全可靠，因为 FTP 服务器上的时间戳不是完全可靠的。版本控制是更安全的解决方案。

*注：*当您对整个项目执行远程同步时，远程同步工作起来会更可靠。可以对单个文件执行远程同步，但这样会有更高的风险。

*要执行远程同步，请执行以下操作：*

1. 在 "Projects"（项目）窗口中（Ctrl-1 组合键），展开要同步的 PHP 项目的节点。右键单击 "Source Files"（源文件）节点。此时将显示包括 "Synchronize"（同步）选项的上下文菜单。

image::images/sync-ctxmenuitem.png[]



. 选择 "Synchronize"（同步）。IDE 将从远程服务器检索文件名和路径并打开 "Remote Synchronization"（远程同步）对话框。

"Remote Synchronization"（远程同步）对话框将显示项目文件表。文件的远程版本位于左侧，本地版本位于右侧。中间列中有图标，用于显示 IDE 将在同步时执行的操作。"Warning"（警告）图标位于最左侧。表底部显示操作和问题的概要。表下方显示所有错误的详细说明。表上方是复选框集合，用于过滤对话框显示哪些问题和操作。有关此对话框的详细信息，请单击 "Help"（帮助）。

image::images/main-dialog.png[]



. 在表中选择多个项。表底部的概要现在只包含这些项。

image::images/multiple-items.png[]



. 右键单击所选项。此时将显示可能操作的上下文菜单。

image::images/context-menu.png[]



. 如果某一项具有 "Resolve Conflicts"（解决冲突）错误图标，则选择该项。表底部将显示错误说明。

image::images/error-item.png[]



. 选择出错的项。从按钮行或从上下文菜单选择 "Diff..."（比较...）image:images/diff-icon.png[]。此时将打开 "Diff"（比较）对话框。在此对话框中，向下滚动到文件的远程版本和本地版本之间的每个差异。在图形视图中，您可以应用或拒绝应用远程更改到本地文件。如果您要手动编辑文件，请切换到 "Textual"（文本）标签。完成比较操作后，单击 "OK"（确定）。您将返回到 "Remote Synchronization"（远程同步）对话框。对该文件的操作更改为 "Upload"（上载），并且该文件将用星号标记，因为您更改了它。

image::images/diff.png[]



. 如果您没有冲突，请单击 "Synchronize"（同步）。如果选择了 "Show Summary Before Start"（开始之前显示概要），则将显示 "Synchronize"（同步）概要，以便您可以在执行同步之前再一次检查操作。如果您批准操作，请单击 "OK"（确定）。

image::images/sync-summary.png[]

IDE 执行同步。您可以在 IDE 打开的窗口中观察同步的进度。

image::images/sync-progress.png[]


== 运行 PHP 应用程序


要在远程服务器上运行 PHP 应用程序，请执行以下操作：

1. 在 "Properties"（属性）面板上，确保从 <<chooisngRunConfigurationType,"Run As"（运行方式）下拉列表>>中选择 "Remote Web Site"（远程 Web 站点）。
2. 检查 "Run Configuration"（运行配置）设置。
3. 如果此项目设置为主项目，请单击工具栏上的 image:images/run-main-project-button.png[]。
4. 如果此项目未设置为主项目，请将光标放置在此项目节点上，并从弹出式菜单中选择 "Run"（运行）。


[[remote-mysql-database]]
== 使用远程 MySQL 数据库

通过远程托管服务（如 x10Hosting.com），您通常可以在其服务器上设置 MySQL 数据库。通过远程托管服务提供的工具，您可以创建数据库、管理用户，以及复制、读取、更新或删除 (CRUD) 数据。

例如，如果您使用的是 x10Hosting.com，则可以通过以下方式创建 MySQL 数据库：登录到x10Hosting cPanel，然后打开 "MySQL Databases"（MySQL 数据库）面板。您还可以在 "MySQL Databases"（MySQL 数据库）面板中创建用户，将用户指定到数据库，以及向用户授予权限。然后，可以使用 "phpMyAdmin" 面板中的 CRUD 工具。

使用远程数据库 CRUD 工具的另一种方法是通过 NetBeans IDE 的 CRUD 功能来使用本地数据库。然后，您可以将本地数据库复制或转储到远程数据库。在 x10Hosting.com 上，您可以使用其 "phpMyAdmin" 面板来上载本地数据库。

link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Remote%20Hosting%20and%20FTP[+发送有关此教程的反馈意见+]


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

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

