本文对 Azure App Service Web 应用功能开源技术常见问题 (FAQ) 进行了解答。
如果本文未解决 Azure 问题,请访问 MSDN 和 Stack Overflow 上的 Azure 论坛。 可将问题发布到这些论坛上,或发布到 Twitter 上的 @AzureSupport。 还可提交 Azure 支持请求。 若要提交支持请求,请在 Azure 支持页上,选择“获取支持”。
如何启用 PHP 日志记录以便对 PHP 问题进行故障排除?
若要启用 PHP 日志记录,请执行以下步骤:
登录到 Kudu 网站 (
https://*yourwebsitename*.scm.azurewebsites.net
)。在顶部菜单中,选择“调试控制台”>“CMD”。
选择“Site”文件夹。
选择“wwwroot”文件夹。
选择 + 图标,然后选择“新建文件”。
将文件名称设置为“.user.ini”。
选择“.user.ini”旁边的铅笔图标。
在文件中,添加以下代码:
log_errors=on
选择“保存” 。
选择“wp-config.php”旁边的铅笔图标。
将文本更改为以下代码:
//Enable WP_DEBUG modedefine('WP_DEBUG', true);//Enable debug logging to /wp-content/debug.logdefine('WP_DEBUG_LOG', true); //Suppress errors and warnings to screendefine('WP_DEBUG_DISPLAY', false);//Suppress PHP errors to screenini_set('display_errors', 0);
在 Azure 门户中的 Web 应用菜单中,重启 Web 应用。
有关详细信息,请参阅启用 WordPress 错误日志。
如何在应用服务中承载的应用中记录 Python 应用程序错误?
如果在启动应用程序时 Python 遇到错误,将只返回一个简单的错误页。 例如,
由于发生了内部服务器错误,无法显示该页。
若要捕获 Python 应用程序错误,请执行以下步骤:
在 Azure 门户中,在你的 Web 应用中选择“设置”。
在“设置”选项卡上,选择“应用程序设置”。
在“应用设置”下,输入以下键/值对:
- 键: WSGI_LOG
- 值: D:\home\site\wwwroot\logs.txt (输入所选文件名)
现在,应该会在 wwwroot 文件夹中的 logs.txt 文件中看到错误。
如何更改应用服务中承载的 Node.js 应用程序的版本?
若要更改 Node.js 应用程序的版本,可以使用以下选项之一:
在 Azure 门户中,使用“应用设置”。
在 Azure 门户中,转到自己的 Web 应用。
在“设置”边栏选项卡上,选择“应用程序设置”。
在“应用设置”中,可将 WEBSITE_NODE_DEFAULT_VERSION 包括为键,并将所需的 Node.js 版本作为值。
转到 Kudu 控制台 (
https://*yourwebsitename*.scm.azurewebsites.net
)。若要检查 Node.js 版本,请输入以下命令:
node -v
修改iisnode.yml文件。 更改iisnode.yml文件中的Node.js版本仅设置 iisnode 使用的运行时环境。 你的及其他 Kudu cmd 仍使用在 Azure 门户中的“应用设置”中设置的 Node.js 版本。
若要手动设置 iisnode.yml ,请在应用根文件夹中创建 iisnode.yml 文件。 在该文件中,包括以下行:
nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\5.9.1\node.exe"
在源代码管理部署期间使用package.json设置iisnode.yml文件。 Azure 源控件部署过程包含以下步骤:
将内容移动到 Azure web 应用。
如果 Web 应用根文件夹中没有一个 (deploy.cmd, .deployment 文件),则创建默认部署 脚本。
运行部署脚本,如果提到package.json文件引擎中的Node.js版本,它将在其中创建iisnode.yml文件>
"engines": {"node": "5.9.1","npm": "3.7.3"}
iisnode.yml文件具有以下代码行:
nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\5.9.1\node.exe"
我在应用服务中承载的 WordPress 应用中看到消息“建立数据库连接时出错”。 如何实现排查此错误?
如果在 Azure WordPress 应用中看到此错误,若要启用php_errors.log和debug.log,请完成“启用 WordPress”错误日志中详述的步骤。
启用日志后,请重现错误,然后检查日志以查看连接是否耗尽:
[09-Oct-2015 00:03:13 UTC] PHP Warning: mysqli_real_connect(): (HY000/1226): User 'abcdefghijk79' has exceeded the 'max_user_connections' resource (current value: 4) in D:\home\site\wwwroot\wp-includes\wp-db.php on line 1454
如果在debug.log或php_errors.log文件中看到此错误,应用将超过连接数。 如果是承载于 ClearDB 上,请验证服务计划中可用的连接数。
如何调试应用服务中承载的 Node.js 应用?
- 转到 Kudu 控制台 (
https://*yourwebsitename*.scm.azurewebsites.net/DebugConsole
)。 - 转到应用程序日志文件夹(D:\home\LogFiles\Application)。
- 在 logging_errors.txt 文件中,检查内容。
如何在应用服务 Web 应用或 API 应用中安装本机 Python 模块?
某些程序包可能不在 Azure 中使用 pip 安装。 包在 Python 包索引上可能不可用,或者编译器可能是必需的(编译器在运行 App 服务 中的 Web 应用的计算机上不可用)。 有关在应用服务 Web 应用和 API 应用中安装本机模块的信息,请参阅在应用服务生中安装 Python 模块。
如何使用 Git 和新版本的 Python 将 Django 应用部署到应用服务?
有关安装 Django 的信息,请参阅将 Django 应用部署到应用服务。
Tomcat 日志文件位于何处?
对于 Azure 市场和自定义部署:
- 文件夹位置: D:\home\site\wwwroot\bin\apache-tomcat-8.0.33\logs
- 感兴趣的文件:
- 卡塔利娜。<yyyy-mm-dd>.log
- host-manager。<yyyy-mm-dd>.log
- localhost。<yyyy-mm-dd>.log
- 经理。<yyyy-mm-dd>.log
- site_access_log。<yyyy-mm-dd>.log
对于门户“应用设置”部署:
- 文件夹位置: D:\home\LogFiles
- 感兴趣的文件:
- 卡塔利娜。<yyyy-mm-dd>.log
- host-manager。<yyyy-mm-dd>.log
- localhost。<yyyy-mm-dd>.log
- 经理。<yyyy-mm-dd>.log
- site_access_log。<yyyy-mm-dd>.log
如何解决 JDBC 驱动程序连接错误的问题?
可能会在 Tomcat 日志中看到以下消息:
Web 应用程序[ROOT] 注册了 JDBC 驱动程序 [com.mysql.jdbc.Driver],但在 Web 应用程序停止时未能注销它。 为了防止内存泄漏,JDBC 驱动程序已被强行注销
若要解决该错误,请执行以下步骤:
从 app/lib 文件夹中删除 sqljdbc*.jar 文件。
如果使用自定义 Tomcat 或 Azure 市场 Tomcat Web 服务器,请将此.jar文件复制到 Tomcat lib 文件夹。
如果要从 Azure 门户(选择 Java 1.8 Tomcat 服务器)启用 Java,请在与应用并行的文件夹复制 sqljdbc*.jar 文件。> 然后,将以下类路径设置添加到 web.config 文件:
<httpPlatform> <environmentVariables> <environmentVariablename ="JAVA_OPTS" value=" -Djava.net.preferIPv4Stack=true -Xms128M -classpath %CLASSPATH%;[Path to the sqljdbc*.jarfile]" /> </environmentVariables> </httpPlatform>
为什么当我尝试复制实时日志文件时看到错误?
如果尝试复制 Java 应用(例如 Tomcat)的实时日志文件,可能会看到此 FTP 错误:
从远程端复制文件时出错 [filename] 复制文件失败。
进程无法访问文件 ,因为它正在被另一个进程使用。
错误消息可能会有所不同,具体取决于 FTP 客户端。
所有 Java 应用都具有此锁定问题。 仅 Kudu 支持在应用运行时下载此文件。
停止应用可允许对这些文件的 FTP 访问。
另一解决方法是编写按计划运行并将这些文件复制到另一个目录的 WebJob。 对于示例项目,请参阅 CopyLogsJob 项目。
在哪里可以找到 Jetty 的日志文件?
对于市场和自定义部署,日志文件位于 D:\home\site\wwwroot\bin\jetty-distribution-9.1.2.v20140210\logs 文件夹中。 文件夹位置取决于使用的 Jetty 版本。 例如,以下提供的路径用于 Jetty 9.1.2。 查找 jetty_<YYYY_MM_DD>.stderrout.log。
对于门户应用设置部署,日志文件位于 D:\home\LogFiles 中。 查找 jetty_<YYYY_MM_DD>.stderrout.log。
是否可从 Azure web 应用发送电子邮件?
应用服务没有内置电子邮件功能。 有关从应用发送电子邮件的一些不错的替代方案,请参阅此 Stack Overflow 讨论。
为何我的 WordPress 站点会重定向到另一个 URL?
如果最近迁移到 Azure,则 WordPress 可能会重定向到旧的域 URL。 此问题是由 MySQL 数据库中的设置引起的。
WordPress Buddy+ 是一个 Azure 站点扩展,可以用于直接在数据库中更新重定向 URL。
或者,如果希望使用 SQL 查询或 PHPMyAdmin 手动更新重定向 URL,请参阅 WordPress:重定向到错误 URL。
如何更改 WordPress 登录密码?
如果忘记了 WordPress 登录密码,则可以使用 WordPress Buddy+ 更新它。
我无法登录 WordPress。 如何解决此问题?
如果你发现自己在最近安装某个插件之后被锁定在 WordPress 外部,则可能发生插件故障。 WordPress Buddy+ 是一个 Azure 站点扩展,可以帮助在 WordPress 中禁用插件。
如何迁移 WordPress 数据库?
有多个选项可用于迁移连接到 WordPress 网站的 MySQL 数据库:
- 开发人员:使用命令提示符或 PHPMyAdmin
如何帮助使 WordPress 更安全?
若要了解 WordPress 的安全最佳做法,请参阅 Azure 中的 WordPress 安全最佳做法。
我试图使用 PHPMyAdmin,我看到消息“访问被拒绝”。如何实现解决此问题?
如果 MySQL 应用内功能尚未在此应用服务实例中运行,可能会遇到此问题。 若要解决此问题,请尝试访问自己的网站。 这将启动所需的进程,包括 MySQL 应用内进程。 若要验证 MySQL 应用内是否正在运行,在进程资源管理器中,请确保 mysqld.exe 列在进程中。
确保 MySQL 应用内功能运行后,尝试使用 PHPMyAdmin。
在尝试使用 PHPMyadmin 导入或导出 MySQL 应用内数据库时,收到了 HTTP 403 错误。 如何解决此问题?
如果使用的是旧版 Chrome,则可能遇到已知 bug。 要解决此问题,请升级到较新版本的 Chrome。 此外,请尝试使用其他浏览器(如 Internet Explorer 或 Microsoft Edge),其中未出现问题。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。