<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>时区 on heyaohua's Blog</title><link>https://blog.heyaohua.com/tags/%E6%97%B6%E5%8C%BA/</link><description>Recent content in 时区 on heyaohua's Blog</description><image><title>heyaohua's Blog</title><url>https://blog.heyaohua.com/og-image.png</url><link>https://blog.heyaohua.com/og-image.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 08 Sep 2025 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.heyaohua.com/tags/%E6%97%B6%E5%8C%BA/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker Hue 时区修改完整指南</title><link>https://blog.heyaohua.com/posts/2025/09/docker-hue-timezone/</link><pubDate>Mon, 08 Sep 2025 10:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2025/09/docker-hue-timezone/</guid><description>使用Docker启动Hue后，发现时区不正确，显示UTC时间而不是中国标准时间(CST)。具体表现为： - HDFS文件时间显示为UTC时间（如06:00-06:01） - 实际文件创建时间为中国时间（如14:00-14:01） - Hue日志时间格式混乱</description><content:encoded><![CDATA[<h2 id="问题描述">问题描述</h2>
<p>使用Docker启动Hue后，发现时区不正确，显示UTC时间而不是中国标准时间(CST)。具体表现为：</p>
<ul>
<li>HDFS文件时间显示为UTC时间（如06:00-06:01）</li>
<li>实际文件创建时间为中国时间（如14:00-14:01）</li>
<li>Hue日志时间格式混乱</li>
</ul>
<h2 id="解决方案概述">解决方案概述</h2>
<p>需要从多个层面修改时区设置：</p>
<ol>
<li>容器系统时区设置</li>
<li>Hue配置文件时区设置</li>
<li>Django时区设置</li>
<li>文件浏览器模块时区处理</li>
</ol>
<h2 id="详细修改步骤">详细修改步骤</h2>
<h3 id="1-检查当前容器状态">1. 检查当前容器状态</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 查看运行中的Hue容器</span>
</span></span><span style="display:flex;"><span>docker ps -a | grep hue
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查容器时区</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> &lt;container_name&gt; date
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查Hue日志时间格式</span>
</span></span><span style="display:flex;"><span>docker logs &lt;container_name&gt; --tail <span style="color:#bd93f9">10</span>
</span></span></code></pre></div><h3 id="2-备份原始配置">2. 备份原始配置</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 备份Hue配置文件</span>
</span></span><span style="display:flex;"><span>cp /data/server/hue-server/config/hue.ini /data/server/hue-server/config/hue.ini.backup.<span style="color:#ff79c6">$(</span>date +%Y%m%d_%H%M%S<span style="color:#ff79c6">)</span>
</span></span><span style="display:flex;"><span>cp /data/server/hue-server/config/z-hue-overrides.ini /data/server/hue-server/config/z-hue-overrides.ini.backup.<span style="color:#ff79c6">$(</span>date +%Y%m%d_%H%M%S<span style="color:#ff79c6">)</span>
</span></span></code></pre></div><h3 id="3-修改hue配置文件中的时区设置">3. 修改Hue配置文件中的时区设置</h3>
<h4 id="31-修改主配置文件">3.1 修改主配置文件</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 修改 hue.ini 中的时区设置
</span></span><span style="display:flex;"><span>sed -i &#39;s/time_zone=America\/Los_Angeles/time_zone=Asia\/Shanghai/g&#39; /data/server/hue-server/config/hue.ini
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 添加Django时区设置
</span></span><span style="display:flex;"><span>sed -i &#39;/time_zone=Asia\/Shanghai/a use_tz=true&#39; /data/server/hue-server/config/hue.ini
</span></span></code></pre></div><h4 id="32-修改覆盖配置文件">3.2 修改覆盖配置文件</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 修改 z-hue-overrides.ini 中的时区设置
</span></span><span style="display:flex;"><span>sed -i &#39;s/time_zone=America\/Los_Angeles/time_zone=Asia\/Shanghai/g&#39; /data/server/hue-server/config/z-hue-overrides.ini
</span></span></code></pre></div><h3 id="4-重新创建容器包含时区和dns设置">4. 重新创建容器（包含时区和DNS设置）</h3>
<h4 id="41-停止并删除旧容器">4.1 停止并删除旧容器</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker stop &lt;old_container_name&gt;
</span></span><span style="display:flex;"><span>docker rm &lt;old_container_name&gt;
</span></span></code></pre></div><h4 id="42-创建新容器">4.2 创建新容器</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker run -d --name hue_new <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -p 8888:8888 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -e <span style="color:#8be9fd;font-style:italic">TZ</span><span style="color:#ff79c6">=</span>Asia/Shanghai <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v /etc/localtime:/etc/localtime:ro <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v /data/server/hue-server/config:/usr/share/hue/desktop/conf <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  --dns<span style="color:#ff79c6">=</span>100.100.2.136 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  --dns<span style="color:#ff79c6">=</span>8.8.8.8 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  gethue/hue:latest
</span></span></code></pre></div><h3 id="5-修改文件浏览器模块时区处理">5. 修改文件浏览器模块时区处理</h3>
<h4 id="51-备份原始文件">5.1 备份原始文件</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new cp /usr/share/hue/apps/filebrowser/src/filebrowser/views.py /usr/share/hue/apps/filebrowser/src/filebrowser/views.py.backup
</span></span></code></pre></div><h4 id="52-修改时区处理代码">5.2 修改时区处理代码</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 添加Django时区导入</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new sed -i <span style="color:#f1fa8c">&#34;s/from datetime import datetime/from datetime import datetime, timezone, timedelta\nfrom django.utils import timezone as django_timezone/g&#34;</span> /usr/share/hue/apps/filebrowser/src/filebrowser/views.py
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 修改时间格式化代码</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new sed -i <span style="color:#f1fa8c">&#34;s/datetime.fromtimestamp(stats.mtime).strftime(&#39;%B %d, %Y %I:%M %p&#39;)/django_timezone.make_aware(datetime.fromtimestamp(stats.mtime)).strftime(&#39;%B %d, %Y %I:%M %p&#39;)/g&#34;</span> /usr/share/hue/apps/filebrowser/src/filebrowser/views.py
</span></span></code></pre></div><h4 id="53-清除python缓存">5.3 清除Python缓存</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new find /usr/share/hue -name <span style="color:#f1fa8c">&#34;*.pyc&#34;</span> -path <span style="color:#f1fa8c">&#34;*/filebrowser/*&#34;</span> -delete
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new find /usr/share/hue -name <span style="color:#f1fa8c">&#34;__pycache__&#34;</span> -path <span style="color:#f1fa8c">&#34;*/filebrowser/*&#34;</span> -exec rm -rf <span style="color:#ff79c6">{}</span> <span style="color:#f1fa8c">\;</span> 2&gt;/dev/null <span style="color:#ff79c6">||</span> <span style="color:#8be9fd;font-style:italic">true</span>
</span></span></code></pre></div><h3 id="6-重启容器应用修改">6. 重启容器应用修改</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker restart hue_new
</span></span></code></pre></div><h3 id="7-验证修改结果">7. 验证修改结果</h3>
<h4 id="71-检查系统时区">7.1 检查系统时区</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 检查容器系统时间</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new date
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查时区环境变量</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new env | grep TZ
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查时区文件</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> hue_new cat /etc/timezone
</span></span></code></pre></div><h4 id="72-检查hue应用时区">7.2 检查Hue应用时区</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#6272a4"># 查看Hue日志，确认时间格式</span>
</span></span><span style="display:flex;"><span>docker logs hue_new <span style="color:#ff79c6">--</span>tail <span style="color:#bd93f9">10</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 检查Django时区设置</span>
</span></span><span style="display:flex;"><span>docker exec hue_new <span style="color:#ff79c6">/</span>usr<span style="color:#ff79c6">/</span>share<span style="color:#ff79c6">/</span>hue<span style="color:#ff79c6">/</span>build<span style="color:#ff79c6">/</span>env<span style="color:#ff79c6">/</span><span style="color:#8be9fd;font-style:italic">bin</span><span style="color:#ff79c6">/</span>python3 <span style="color:#ff79c6">-</span>c <span style="color:#f1fa8c">&#34;import os; os.environ.setdefault(&#39;DJANGO_SETTINGS_MODULE&#39;, &#39;desktop.settings&#39;); import django; django.setup(); from django.utils import timezone; print(&#39;Django timezone:&#39;, timezone.get_current_timezone())&#34;</span>
</span></span></code></pre></div><h4 id="73-检查文件浏览器时间显示">7.3 检查文件浏览器时间显示</h4>
<p>访问Hue文件浏览器，查看HDFS文件的时间显示是否正确。</p>
<h2 id="关键配置说明">关键配置说明</h2>
<h3 id="1-环境变量设置">1. 环境变量设置</h3>
<ul>
<li><code>TZ=Asia/Shanghai</code>: 设置容器系统时区</li>
<li><code>-v /etc/localtime:/etc/localtime:ro</code>: 挂载主机时区文件</li>
<li><code>-v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro</code>: 挂载时区信息文件</li>
</ul>
<h3 id="2-dns设置">2. DNS设置</h3>
<ul>
<li><code>--dns=100.100.2.136</code>: 内网DNS服务器</li>
<li><code>--dns=8.8.8.8</code>: 公共DNS服务器</li>
</ul>
<h3 id="3-配置文件修改">3. 配置文件修改</h3>
<ul>
<li><code>hue.ini</code>: 主配置文件中的 <code>time_zone=Asia/Shanghai</code> 和 <code>use_tz=true</code></li>
<li><code>z-hue-overrides.ini</code>: 覆盖配置文件中的 <code>time_zone=Asia/Shanghai</code></li>
</ul>
<h3 id="4-代码修改">4. 代码修改</h3>
<ul>
<li>文件：<code>/usr/share/hue/apps/filebrowser/src/filebrowser/views.py</code></li>
<li>修改：使用Django的时区设置处理文件时间显示</li>
</ul>
<h2 id="完整的一键脚本">完整的一键脚本</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#ff79c6">#!/bin/bash
</span></span></span><span style="display:flex;"><span><span style="color:#6272a4"># Hue时区修改完整脚本</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">CONTAINER_NAME</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;hue_new&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">CONFIG_PATH</span><span style="color:#ff79c6">=</span><span style="color:#f1fa8c">&#34;/data/server/hue-server/config&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;开始修改Hue时区设置...&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 1. 备份配置</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;备份原始配置...&#34;</span>
</span></span><span style="display:flex;"><span>cp <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/hue.ini <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/hue.ini.backup.<span style="color:#ff79c6">$(</span>date +%Y%m%d_%H%M%S<span style="color:#ff79c6">)</span>
</span></span><span style="display:flex;"><span>cp <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/z-hue-overrides.ini <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/z-hue-overrides.ini.backup.<span style="color:#ff79c6">$(</span>date +%Y%m%d_%H%M%S<span style="color:#ff79c6">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 2. 修改配置文件</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;修改时区配置...&#34;</span>
</span></span><span style="display:flex;"><span>sed -i <span style="color:#f1fa8c">&#39;s/time_zone=America\/Los_Angeles/time_zone=Asia\/Shanghai/g&#39;</span> <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/hue.ini
</span></span><span style="display:flex;"><span>sed -i <span style="color:#f1fa8c">&#39;s/time_zone=America\/Los_Angeles/time_zone=Asia\/Shanghai/g&#39;</span> <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/z-hue-overrides.ini
</span></span><span style="display:flex;"><span>sed -i <span style="color:#f1fa8c">&#39;/time_zone=Asia\/Shanghai/a use_tz=true&#39;</span> <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>/hue.ini
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 3. 停止旧容器</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;停止旧容器...&#34;</span>
</span></span><span style="display:flex;"><span>docker stop <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> 2&gt;/dev/null <span style="color:#ff79c6">||</span> <span style="color:#8be9fd;font-style:italic">true</span>
</span></span><span style="display:flex;"><span>docker rm <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> 2&gt;/dev/null <span style="color:#ff79c6">||</span> <span style="color:#8be9fd;font-style:italic">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 4. 创建新容器</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;创建新容器...&#34;</span>
</span></span><span style="display:flex;"><span>docker run -d --name <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -p 8888:8888 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -e <span style="color:#8be9fd;font-style:italic">TZ</span><span style="color:#ff79c6">=</span>Asia/Shanghai <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v /etc/localtime:/etc/localtime:ro <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  -v <span style="color:#8be9fd;font-style:italic">$CONFIG_PATH</span>:/usr/share/hue/desktop/conf <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  --dns<span style="color:#ff79c6">=</span>100.100.2.136 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  --dns<span style="color:#ff79c6">=</span>8.8.8.8 <span style="color:#f1fa8c">\
</span></span></span><span style="display:flex;"><span>  gethue/hue:latest
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 5. 等待启动</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;等待容器启动...&#34;</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#bd93f9">20</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 6. 修改文件浏览器代码</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;修改文件浏览器时区处理...&#34;</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> cp /usr/share/hue/apps/filebrowser/src/filebrowser/views.py /usr/share/hue/apps/filebrowser/src/filebrowser/views.py.backup
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> sed -i <span style="color:#f1fa8c">&#34;s/from datetime import datetime/from datetime import datetime, timezone, timedelta\nfrom django.utils import timezone as django_timezone/g&#34;</span> /usr/share/hue/apps/filebrowser/src/filebrowser/views.py
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> sed -i <span style="color:#f1fa8c">&#34;s/datetime.fromtimestamp(stats.mtime).strftime(&#39;%B %d, %Y %I:%M %p&#39;)/django_timezone.make_aware(datetime.fromtimestamp(stats.mtime)).strftime(&#39;%B %d, %Y %I:%M %p&#39;)/g&#34;</span> /usr/share/hue/apps/filebrowser/src/filebrowser/views.py
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 7. 清除缓存</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;清除Python缓存...&#34;</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> find /usr/share/hue -name <span style="color:#f1fa8c">&#34;*.pyc&#34;</span> -path <span style="color:#f1fa8c">&#34;*/filebrowser/*&#34;</span> -delete
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> find /usr/share/hue -name <span style="color:#f1fa8c">&#34;__pycache__&#34;</span> -path <span style="color:#f1fa8c">&#34;*/filebrowser/*&#34;</span> -exec rm -rf <span style="color:#ff79c6">{}</span> <span style="color:#f1fa8c">\;</span> 2&gt;/dev/null <span style="color:#ff79c6">||</span> <span style="color:#8be9fd;font-style:italic">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 8. 重启容器</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;重启容器应用修改...&#34;</span>
</span></span><span style="display:flex;"><span>docker restart <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 9. 等待重启</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;等待容器重启...&#34;</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#bd93f9">25</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 10. 验证结果</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;验证时区设置...&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;系统时间:&#34;</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> date
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;Hue日志时间格式:&#34;</span>
</span></span><span style="display:flex;"><span>docker logs <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> --tail <span style="color:#bd93f9">3</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;Django时区设置:&#34;</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> <span style="color:#8be9fd;font-style:italic">$CONTAINER_NAME</span> /usr/share/hue/build/env/bin/python3 -c <span style="color:#f1fa8c">&#34;import os; os.environ.setdefault(&#39;DJANGO_SETTINGS_MODULE&#39;, &#39;desktop.settings&#39;); import django; django.setup(); from django.utils import timezone; print(&#39;Django timezone:&#39;, timezone.get_current_timezone())&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;时区修改完成！&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#34;请访问 http://localhost:8888 查看文件浏览器中的时间显示是否正确。&#34;</span>
</span></span></code></pre></div><h2 id="常见问题排查">常见问题排查</h2>
<h3 id="1-dns解析问题">1. DNS解析问题</h3>
<p>如果出现 <code>Name or service not known</code> 错误：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 检查DNS配置</span>
</span></span><span style="display:flex;"><span>docker inspect &lt;container_name&gt; | grep -A <span style="color:#bd93f9">5</span> -B <span style="color:#bd93f9">5</span> -i dns
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 确保容器有正确的DNS设置</span>
</span></span><span style="display:flex;"><span>--dns<span style="color:#ff79c6">=</span>100.100.2.136 --dns<span style="color:#ff79c6">=</span>8.8.8.8
</span></span></code></pre></div><h3 id="2-时区仍然不正确">2. 时区仍然不正确</h3>
<p>检查所有配置文件中的时区设置：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>grep -r -i &#34;time_zone\|timezone&#34; /data/server/hue-server/config/ | grep -v &#34;.backup&#34;
</span></span></code></pre></div><h3 id="3-文件浏览器时间显示不正确">3. 文件浏览器时间显示不正确</h3>
<p>检查代码修改是否正确：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> &lt;container_name&gt; grep -n -A <span style="color:#bd93f9">2</span> -B <span style="color:#bd93f9">2</span> <span style="color:#f1fa8c">&#34;mtime.*datetime&#34;</span> /usr/share/hue/apps/filebrowser/src/filebrowser/views.py
</span></span></code></pre></div><h3 id="4-容器无法启动">4. 容器无法启动</h3>
<p>检查挂载路径是否正确：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span># 确保配置文件路径存在
</span></span><span style="display:flex;"><span>ls -la /data/server/hue-server/config/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 检查挂载权限
</span></span><span style="display:flex;"><span>ls -la /data/server/hue-server/config/hue.ini
</span></span></code></pre></div><h2 id="验证成功标志">验证成功标志</h2>
<ul>
<li>容器系统时间显示：<code>Mon Sep  8 15:08:02 Asia 2025</code></li>
<li>Hue日志时间格式：<code>[08/Sep/2025 15:08:02 +0800]</code></li>
<li>环境变量：<code>TZ=Asia/Shanghai</code></li>
<li>Django时区：<code>Asia/Shanghai</code></li>
<li>HDFS文件时间显示：正确的中国时间（如14:00-14:01）</li>
<li>HDFS连接正常，无DNS解析错误</li>
</ul>
<h2 id="注意事项">注意事项</h2>
<ol>
<li><strong>备份重要</strong>: 修改前务必备份原始配置文件和代码文件</li>
<li><strong>DNS设置</strong>: 确保容器有正确的DNS配置，否则无法连接HDFS</li>
<li><strong>配置文件</strong>: 需要修改两个配置文件：<code>hue.ini</code> 和 <code>z-hue-overrides.ini</code></li>
<li><strong>代码修改</strong>: 需要修改文件浏览器模块的时区处理代码</li>
<li><strong>重启生效</strong>: 修改配置和代码后需要重启容器才能生效</li>
<li><strong>权限检查</strong>: 确保挂载的配置文件有正确的读写权限</li>
<li><strong>缓存清理</strong>: 修改Python代码后需要清除缓存</li>
</ol>
<h2 id="回滚方法">回滚方法</h2>
<p>如果修改后出现问题，可以按以下步骤回滚：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 1. 恢复配置文件</span>
</span></span><span style="display:flex;"><span>cp /data/server/hue-server/config/hue.ini.backup.* /data/server/hue-server/config/hue.ini
</span></span><span style="display:flex;"><span>cp /data/server/hue-server/config/z-hue-overrides.ini.backup.* /data/server/hue-server/config/z-hue-overrides.ini
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 2. 恢复代码文件</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> &lt;container_name&gt; cp /usr/share/hue/apps/filebrowser/src/filebrowser/views.py.backup /usr/share/hue/apps/filebrowser/src/filebrowser/views.py
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4"># 3. 重启容器</span>
</span></span><span style="display:flex;"><span>docker restart &lt;container_name&gt;
</span></span></code></pre></div>]]></content:encoded></item></channel></rss>