问题描述

部署在App Service for Linux环境中的Web App。出现了字体文件缺失的问题,页面显示本来时中文的地方,区别变为方框占位。

问题分析

在应用中,通常涉及到显示问题的有两个方面,

一是乱码:”����Ҫ�¨²�ѧϰ������“ , ”由月è¦�å¥½å¥½å­¦ä¹ å¤å¤å�‘上“ ,”鐢辨湀瑕佸ソ濂藉涔犲ぉ澶╁悜涓?“ ”锟斤拷锟斤拷要锟“  , 这些内容表示的问题就是编码问题。

二是字体缺失:表现形式为用“□”方框来作为占位符。

对于第一个问题,我们可以通过应用配置来修改字符编码问题(可以参考文章:https://www.cnblogs.com/lulight/p/13531483.html)。而字体缺失,则可以通过下面的方式来验证。

第一步:通过App Service Kudu站点的SSH进入Linux,查看是否已经安装了TTF-DEJAVU文件 cd /usr/share/fonts/ttf-dejavu/

第二步:如果没有ttf-dejavu文件,就需要通过 apk --no-cache add ttf-dejavu 安装,然后使用cp命令把缺少的TTF文件复制到 /usr/share/fonts/ttf-dejavu/ 目录下

apk --no-cache add ttf-dejavu
cp /home/site/SIMHEI.TTF /usr/share/fonts/ttf-dejavu/SIMHEI.TTF ##PS: 比如SIMHEI.TTF文件已经保存在 home/site文件中

问题解决

在App Service for Linux中,可以通过启动脚本方式(Stratup Script)来初始化字体文件。详细步骤为:

1) 新建一个startup_script.sh 文件,内容为:

apk --no-cache add ttf-dejavu

cp /home/site/SIMHEI.TTF /usr/share/fonts/ttf-dejavu/SIMHEI.TTF

:需要把SIMHEI.TTF 文件上传到app service 的  home/site/目录中。

2)把文件放置在home/site目录下,如:/home/site/deployments/tools/startup_script.sh,可以通过FTP方式上传文件,或者直接包含在应用的项目文件中,路径可以自定义,只要在/Home/下就可以。

3)把第一步中脚本所在的路径,设置在启动路径中。重启站点即可解决问题。

修改完成后,正确的显示:

附录一:如果单独进入App Service SSH, 安装字体后,当实例发生重启,切换等都会导致之前的安装失效,所以如果要永久解决字体问题,还是需要在启动脚本中安装字体文件。

安装字体文件的脚本为:

#! /usr/bin/bash
cd /home/site/wwwroot/
if [ -f fonts.tar.gz ]; then
echo '=============================================='
echo 'install fonts......'
echo '=============================================='
tar -zxf fonts.tar.gz
cp fonts/* /usr/share/fonts
cd /usr/share/fonts/
mkfontscale && mkfontdir && fc-cache
cd /home/site/wwwroot/
fi

参考资料

配置Java应用(第六步):https://docs.azure.cn/zh-cn/app-service/configure-language-java?pivots=platform-linux#finalize-configuration-1

What are the expected values for the Startup File section when I configure the runtime stackhttps://docs.microsoft.com/en-us/troubleshoot/azure/general/faqs-app-service-linux#what-are-the-expected-values-for-the-startup-file-section-when-i-configure-the-runtime-stack-

【Azure 应用服务】App Service for Linux环境中,如何解决字体文件缺失的情况的更多相关文章

  1. 【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法

    问题描述 在PHP项目部署在App Service后,上传文件如果大于1MB就会遇见 413 Request Entity Too Large 的问题. 问题解决 目前这个问题,首先需要分析应用所在的 ...

  2. 【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?

    问题描述 当创建一个App Service 后,运行时环境和版本选择Windows 和 Python 3.6. 登录Kudu 站点查看,默认的文件有 web.config, hostingstart- ...

  3. 【事件中心 Azure Event Hub】在Linux环境中(Ubuntu)安装Logstash的简易步骤及配置连接到Event Hub

    在文章([事件中心 Azure Event Hub]使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnected ...

  4. 【Azure 应用服务】App Service For Linux 部署PHP Laravel 项目,如何修改首页路径为 wwwroot\public\index.php

    问题描述 参考官方文档部署 PHP Laravel 项目到App Service for Linux环境中,但是访问应用时候遇见了500 Server Error 错误. 从部署的日志中,可以明确看出 ...

  5. 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤

    问题描述 实现部署NodeJS Express应用在App Service Linux环境中,并且使用Microsoft Authentication  Library(MSAL)来实现登录Azure ...

  6. 【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)

    问题描述 使用 python websockets 模块作为Socket的服务端,发布到App Service for Linux环境后,发现Docker Container无法启动.错误消息为: 2 ...

  7. 【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))

    问题情形 当应用在Azure 应用服务App Service中运行时,有时候出现CPU,Memory很高,但是没有明显的5XX错误和异常日志,有时就是有异常但是也不能明确的指出具体的代码错误.当面临这 ...

  8. 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志

    问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...

  9. 【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https

    问题描述 在上篇博文"[Azure 应用服务]App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)"中,实现了通过 HT ...

  10. 【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题

    问题描述 App Service for Linux 资源创建完成后,通过FTP方式把 .jar包(logdemo.jar)包上传到 /site/wwwroot/ 文件夹后,在App Service的 ...

随机推荐

  1. adb基础指令

    1.查看连接的设备 adb.exe  devices/adb devices device表示连接成功,offline表示设备未连接或未响应 2.进入命令模式,指定哪台设备 adb  -s  序列号  ...

  2. Typora 1.6.7永久激活

    介绍Typora介绍 具体看上面的我就不多介绍了 接下来我们开始教程 需要的文件 Typora安装包 破解补丁包 安装包下载 破解补丁下载 接下来我们全部下载后获得一个安装包一个补丁 安装包直接安装就 ...

  3. Asp.Net MVC中点击按钮导出Excel

    一.Excel导出帮助类,要安装包NPOI 1 using NPOI.HSSF.UserModel; 2 using NPOI.SS.UserModel; 3 using System; 4 usin ...

  4. MySQL拓展知识

    一:视图 1:创建视图 1 --格式:CREATE VIEW 视图名称 AS SQL语句 2 CREATE VIEW v1 AS 3 SELET nid, 4 name 5 FROM 6 A 7 WH ...

  5. Typecho文章采集发布插件-免费下载

    分享一款可以自动采集网页文章,并发布到typecho博客网站的typecho采集发布插件,支持简数采集器,火车头数据采集器,八爪鱼文章采集器,后羿采集器等. Typecho采集发布插件使用方法如下: ...

  6. 【Linux】虚拟机太卡咋办?用云服务器Xshell配置Vmware虚拟机【技能篇】

    [Linux]用云服务器Xshell配置Vmware虚拟机[技能篇] 强烈建议本篇收藏后再食用~ 文章目录 Xshell下载 配置Vmware 尾声 平时我们使用虚拟机,可能最烦人的问题就是卡顿了.今 ...

  7. docker安装oracle数据

    docker安装oracle数据库 1️⃣ 通过docker拉取并启动oracle11g(此版本目前主流),docker换源及安装mysql看Springboot创建项目及测试 - $YX$ - 博客 ...

  8. h5st 4.3版本代码研究

    背景介绍 最近比较悠闲,于是没事研究了一下某东的h5st代码,2024年新鲜出炉的前端加密代码: 最大的惊喜并不是算法的复杂,在逆向破解代码的过程中,对js加密混淆有了新的认识: 于是心血来潮,回到这 ...

  9. 开源免费绘制小工具drawio推荐

    最近给客户做架构评估写报告时,需要画一些架构示例简图,需求很简单,没到非要用付费软件的程度. 同事推荐一款开源免费的绘制软件drawio,实际体验不错,可以满足我的使用需求. drawio官方网站: ...

  10. 手把手带你上手swagger3

    配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox& ...