Azure 中Web 应用的开源技术常见问题解答

本文 (常见问题解答) 有关Azure 应用服务Web 应用功能的开源技术问题的常见问题解答。

如果本文未解决 Azure 问题,请访问 MSDN 和 Stack Overflow 上的 Azure 论坛。 你可以在这些论坛中发布你的问题,也可以在 Twitter 上发布到@AzureSupport。 还可以提交Azure 支持请求。 若要提交支持请求,请在“Azure 支持”页上,选择“获取支持”。

如何实现打开 PHP 日志记录来排查 PHP 问题?

若要启用 PHP 日志记录,请执行以下步骤:

  1. () https://*yourwebsitename*.scm.azurewebsites.net 登录到 Kudu 网站

  2. 在顶部菜单中,选择“ 调试控制台>CMD”。

  3. 选择“ 站点” 文件夹。

  4. 选择 wwwroot 文件夹。

  5. 选择 + 图标,然后选择“ 新建文件”。

  6. 将文件名设置为 .user.ini

  7. 选择 .user.ini旁边的铅笔图标。

  8. 在 文件中,添加以下代码: log_errors=on

  9. 选择“保存”。

  10. 选择 wp-config.php旁边的铅笔图标。

  11. 将文本更改为以下代码:

    //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);
    
  12. 在Azure 门户的 Web 应用菜单中,重启 Web 应用。

有关详细信息,请参阅 启用 WordPress 错误日志

如何实现记录托管在 App 服务 中的应用中的 Python 应用程序错误?

如果 Python 在启动应用程序时遇到错误,则只会返回一个简单的错误页。 例如,

由于发生了内部服务器错误,因此无法显示该页。

若要捕获 Python 应用程序错误,请执行以下步骤:

  1. 在Azure 门户的 Web 应用中,选择“设置”。

  2. “设置” 选项卡上,选择“ 应用程序设置”。

  3. “应用设置”下,输入以下键/值对:

    • 键: WSGI_LOG
    • 值: D:\home\site\wwwroot\logs.txt (输入所选的文件名)

现在,应在 wwwroot 文件夹中的 logs.txt 文件中看到错误。

如何实现更改 App 服务 中托管的 Node.js 应用程序的版本?

若要更改 Node.js 应用程序的版本,可以使用以下选项之一:

  • 在Azure 门户,使用“应用设置”。

    1. 在Azure 门户,转到 Web 应用。

    2. “设置” 边栏选项卡上,选择“ 应用程序设置”。

    3. “应用设置”中,可以包含WEBSITE_NODE_DEFAULT_VERSION作为键,并将所需的 Node.js 版本作为值。

    4. 转到 Kudu 控制台 (https://*yourwebsitename*.scm.azurewebsites.net) 。

    5. 若要检查 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 源代码管理部署过程涉及以下步骤:

    1. 将内容移动到 Azure Web 应用。

    2. 如果 Web 应用根文件夹中没有一个 (deploy.cmd . deployment 文件) ,则创建默认部署脚本。

    3. 运行部署脚本,如果在package.json文件引擎中提及 Node.js 版本,它将在其中创建iisnode.yml文件>"engines": {"node": "5.9.1","npm": "3.7.3"}

    4. iisnode.yml 文件具有以下代码行:

      nodeProcessCommandLine: "D:\Program Files (x86)\nodejs\5.9.1\node.exe"
      

在托管在 App 服务 中的 WordPress 应用中,我看到消息“建立数据库连接时出错”。 如何实现排查此错误?

如果在 Azure WordPress 应用中看到此错误,若要启用 php_errors.logdebug.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.logphp_errors.log 文件中看到此错误,则你的应用超出了连接数。 如果要托管在 ClearDB 上,请验证 服务计划中可用的连接数。

如何实现调试App 服务中托管的 Node.js 应用?

  1. 转到 Kudu 控制台 (https://*yourwebsitename*.scm.azurewebsites.net/DebugConsole) 。
  2. 转到应用程序日志文件夹 (D:\home\LogFiles\Application) 。
  3. logging_errors.txt 文件中,检查内容。

如何实现App 服务 Web 应用或 API 应用中安装本机 Python 模块?

某些包可能不会在 Azure 中使用 pip 进行安装。 包在 Python 包索引上可能不可用,或者可能需要编译器 (编译器在 App 服务) 中运行 Web 应用的计算机上不可用。 有关在 App 服务 Web 应用和 API 应用中安装本机模块的信息,请参阅在 App 服务 中安装 Python 模块

如何实现使用 Git 和 Python 的新版本将 Django 应用部署到App 服务?

有关安装 Django 的信息,请参阅将 Django 应用部署到App 服务

Tomcat 日志文件位于何处?

对于Azure 市场和自定义部署:

  • 文件夹位置: D:\home\site\wwwroot\bin\apache-tomcat-8.0.33\logs
  • 感兴趣的文件:
    • 卡塔利娜。<yyyy-mm-dd>.log
    • host-manager。<yyyy-mm-dd>.log
    • 本地 主机。<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
    • 本地 主机。<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 驱动程序已被强制注销

若要解决此错误,请执行以下步骤:

  1. app/lib 文件夹中删除 sqljdbc*.jar 文件。

  2. 如果使用自定义 Tomcat 或 Azure 市场 Tomcat Web 服务器,请将此.jar文件复制到 Tomcat lib 文件夹。

  3. 如果要从 Azure 门户 (选择 Java 1.8>Tomcat 服务器) 启用 Java,请将 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 错误:

传输文件 [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 应用发送电子邮件?

App 服务没有内置电子邮件功能。 有关从应用发送电子邮件的一些好方法,请参阅此 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 数据库:

如何实现帮助使 WordPress 更安全?

若要了解 WordPress 的安全最佳做法,请参阅 Azure 中 WordPress 安全性的最佳做法

我尝试使用 PHPMyAdmin,但看到消息“访问被拒绝”。如何实现解决此问题?

如果 MySQL 应用内功能尚未在此App 服务实例中运行,则可能会遇到此问题。 若要解决此问题,请尝试访问您的网站。 这会启动所需的进程,包括 MySQL 应用内进程。 若要验证 MySQL 应用内是否正在运行,请在“进程资源管理器”中,确保 进程中列出的mysqld.exe

确保 MySQL 应用内正在运行后,请尝试使用 PHPMyAdmin。

尝试使用 PHPMyadmin 导入或导出 MySQL 应用内数据库时,我收到 HTTP 403 错误。 如何实现解决此问题?

如果你使用的是旧版 Chrome,则可能遇到一个已知 bug。 若要解决此问题,请升级到较新版本的 Chrome。 此外,请尝试使用其他浏览器(如 Internet Explorer 或 Microsoft Edge),其中不会出现此问题。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。