本文对 Azure App Service Web 应用功能开源技术常见问题 (FAQ) 进行了解答。
如果本文未解决 Azure 问题,请访问 Microsoft Q&A 和 Stack Overflow 上的 Azure 论坛。 可以在这些论坛上发布问题。 还可提交 Azure 支持请求。 若要提交支持请求,请在 Azure 支持页上提交。
若要启用 PHP 日志记录:
- 登录到 Kudu 网站 (
https://*yourwebsitename*.scm.chinacloudsites.cn
)。 - 在顶部菜单中,选择“调试控制台”>“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 应用。
如果 Python 在启动应用程序时出现错误,则只会返回一个简单的错误页面(例如“由于发生内部服务器错误,无法显示该页。”)。
捕获 Python 应用程序错误:
- 在 Azure 门户中,在你的 Web 应用中选择“设置”。
- 在“设置”选项卡上,选择“应用程序设置”。
- 在“应用设置”下,输入以下键/值对:
- 键:WSGI_LOG
- 值:D:\home\site\wwwroot\logs.txt(输入所选文件名)
你现在应在 wwwroot 文件夹中的 logs.txt 文件中看到错误。
若要更改 Node.js 应用程序的版本,可以使用以下选项之一:
在 Azure 门户中,使用“应用设置”。
- 在 Azure 门户中,转到自己的 Web 应用。
- 在“设置”边栏选项卡上,选择“应用程序设置”。
- 在“应用设置”中,可将 WEBSITE_NODE_DEFAULT_VERSION 包括为键,并将所需的 Node.js 版本作为值。
- 转到 Kudu 控制台 (
https://*yourwebsitename*.scm.chinacloudsites.cn
)。 - 若要检查 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 文件 > 引擎
"engines": {"node": "5.9.1","npm": "3.7.3"}
中的 Node.js 版本,请运行在其中创建 iisnode.yml 文件的部署脚本 - 该 iisnode.yml 文件具有以下代码行:
nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\5.9.1\node.exe"
启用日志后,重现错误,然后检查日志以了解是否耗尽连接:
[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 上,请验证服务计划中可用的连接数。
- 转到 Kudu 控制台 (
https://*yourwebsitename*.scm.chinacloudsites.cn/DebugConsole
)。 - 转到应用程序日志文件夹 (D:\home\LogFiles\Application)。
- 在 logging_errors.txt 文件中,检查内容。
对于 Azure 市场和自定义部署:
- 文件夹位置:D:\home\site\wwwroot\bin\apache-tomcat-8.0.33\logs
- 感兴趣的文件:
- catalina.yyyy-mm-dd.log
- host-manager.yyyy-mm-dd.log
- localhost.yyyy-mm-dd.log
- manager.yyyy-mm-dd.log
- site_access_log.yyyy-mm-dd.log
对于门户“应用设置”部署:
- 文件夹位置:D:\home\LogFiles
- 感兴趣的文件:
- catalina.yyyy-mm-dd.log
- host-manager.yyyy-mm-dd.log
- localhost.yyyy-mm-dd.log
- manager.yyyy-mm-dd.log
- site_access_log.yyyy-mm-dd.log
可能会在 Tomcat 日志中看到以下消息:
The web application[ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak,the JDBC Driver has been forcibly unregistered
若要解决该错误:
从 app/lib 文件夹中删除 sqljdbc*.jar 文件。
如果使用自定义 Tomcat 或 Azure 市场 Tomcat Web 服务器,请将此 .jar 文件复制到 Tomcat lib 文件夹中。
如果从 Azure 门户启用 Java(选择“Java 1.8”>“Tomcat 服务器”),请在并行于应用的文件夹中复制 sqljdbc.* jar 文件。 然后,将以下 classpath 设置添加到 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 错误:
Error transferring file [filename] Copying files from remote side failed.
The process cannot access the file because it is being used by another process.
错误消息可能会有所不同,具体取决于 FTP 客户端。
所有 Java 应用都具有此锁定问题。 仅 Kudu 支持在应用运行时下载此文件。
停止应用可允许对这些文件的 FTP 访问。
另一解决方法是编写按计划运行并将这些文件复制到另一个目录的 WebJob。 对于示例项目,请参阅 CopyLogsJob 项目。
对于市场和自定义部署,日志文件位于 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
应用服务没有内置电子邮件功能。 有关从应用发送电子邮件的一些不错的替代方案,请参阅此 Stack Overflow 讨论。
如果 MySQL 应用内功能尚未在此应用服务实例中运行,可能会遇到此问题。 若要解决此问题,请尝试访问自己的网站。 这将启动所需的进程,包括 MySQL 应用内进程。 若要验证 MySQL 应用内功能正在运行,确保进程资源管理器 的进程中列出了 mysqld.exe。
确保 MySQL 应用内功能运行后,尝试使用 PHPMyAdmin。
如果使用的是较旧版本的 Chrome,则可能遇到一个已知的 bug。 要解决此问题,请升级到较新版本的 Chrome。 另请尝试使用不会出现该问题的不同浏览器,如 Internet Explorer 或 Microsoft Edge。