\\n
图文教程
\\n\\n
\\n
\\n
\\n
\\n\\n\\n\\n注册完成后,你可以在 App Store 下载国区无法获取的应用(如部分代理软件等)。\\n","description":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/appleid/ import Collapse from \\"../../components/mdx/Collapse.astro\\"; import Info from \\"../../components/mdx/Info…","guid":"https://hub.xiaozhangya.xin/blog/appleid/","author":"RyuChan","authorUrl":null,"authorAvatar":null,"publishedAt":"2025-09-18T00:00:00.354Z","media":[{"url":"https://picbed.xiaozhangya.xin/blog/appleID/appleID01.png","type":"photo","width":666,"height":1025,"blurhash":"L4S$ovD%?b-;IVt7-;WC00oL?baz"},{"url":"https://picbed.xiaozhangya.xin/blog/appleID/appleID02.png","type":"photo","width":878,"height":484,"blurhash":"L2S?DWxVNMIUxvRiNL%1_3s*IV-o"},{"url":"https://picbed.xiaozhangya.xin/blog/appleID/appleID03.png","type":"photo","width":2388,"height":1668,"blurhash":"LNR3NK8{-:-._4%MV@V@EJNZRnRS"},{"url":"https://picbed.xiaozhangya.xin/blog/appleID/appleID04.png","type":"photo","width":2388,"height":1668,"blurhash":"LVOWsgMy00oe%MxaayWC4nR*%gkB"}],"categories":null,"attachments":null,"extra":null,"language":null,"summary":null},{"id":"178739205773250560","title":"🚀 Umami 官方CSV数据导入自建Umami后端MySQL/PostgreSQL数据库","url":"https://hub.xiaozhangya.xin/blog/umami/","content":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/umami/
import Info from \\"../../components/mdx/Info.astro\\";
import Warning from \\"../../components/mdx/Warning.astro\\";
import Success from \\"../../components/mdx/Success.astro\\";
import Collapse from \\"../../components/mdx/Collapse.astro\\"; \\nimport FriendCard from \\"@/components/mdx/FriendCard.astro\\";\\nimport LinkCard from \\"../../components/mdx/LinkCard.astro\\";
\\n🚀 Umami 官方CSV数据导入自建Umami后端MySQL/PostgreSQL数据库
\\n \\n需要将Umami云服务的CSV数据导入到自建MySQL或PostgreSQL数据库的完整解决方案。 \\n \\n## 介绍 \\n \\n说起Umami,相信很多朋友都在用它来做网站分析。界面简洁,功能也挺全面的,确实是个不错的选择。不过呢,如果你用的是Umami Cloud的免费版本,时间长了可能就会发现一些限制了——比如数据保留时间不够长,或者想分析更多域名但额度不够用。
\\n这时候,很多人就会考虑:要不自己搭一个Umami?但问题来了,之前在云端积累的那些数据怎么办?总不能就这么丢了吧?
\\n别担心,这篇教程就是来解决这个问题的。我会手把手教你怎么把Umami Cloud上的数据完整地迁移到自己搭建的Umami上,让你的数据分析不中断,还能享受自托管的各种好处。
如果您还没有自己的服务器或Umami实例,可以先查看我的博客文章《Umami + Neon + Vercel:免费搭建隐私友好的自己的Umami后端网站分析系统》,了解如何免费搭建自己的Umami服务。
\\n核心思路
\\n\\n- 官方数据导出\\n

\\n- 读取CSV → 清洗数据 → 分表插入
\\n- MySQL使用
INSERT IGNORE
,PostgreSQL使用ON CONFLICT DO NOTHING
\\n- 批量处理提升性能
\\n
\\n \\n⚠️ **安全提醒**:请替换配置中的数据库连接信息为您自己的,不要在代码中硬编码敏感信息。 \\n\\n\\n关键配置
\\nMySQL版本
\\nimport pymysql\\nMYSQL_CONFIG = {\\n \'host\': \'your-mysql-host.com\',\\n \'port\': 3306,\\n \'database\': \'umami\',\\n \'user\': \'your_username\',\\n \'password\': \'your_password\'\\n}\\n
\\nPostgreSQL版本(Neon数据库)\\n\\n
\\n
\\n
\\n
\\nimport psycopg2\\nPOSTGRES_CONFIG = {\\n \'host\': \'your-project-pooler.region.aws.neon.tech\',\\n \'port\': 5432,\\n \'database\': \'your_database\',\\n \'user\': \'your_username\',\\n \'password\': \'your_password\',\\n \'sslmode\': \'require\'\\n}\\n# 或者直接使用连接字符串\\nPOSTGRES_URL = \'postgresql://username:password@host:port/database?sslmode=require&channel_binding=require\'\\n
\\n连接字符串解析:
\\n\\n\\n\\n组件 | \\n示例值 | \\n说明 | \\n
\\n\\n\\n协议类型 | \\npostgresql:// | \\nPostgreSQL数据库协议标识 | \\n
\\n\\n用户名 | \\nusername | \\n数据库用户名 | \\n
\\n\\n密码 | \\npassword | \\n数据库密码 | \\n
\\n\\n分隔符 | \\n@ | \\n认证信息与服务器地址的分隔符 | \\n
\\n\\n主机地址 | \\nhost.pooler.region.aws.neon.tech | \\n数据库服务器地址(Neon格式) | \\n
\\n\\n端口 | \\n5432 | \\n数据库连接端口 | \\n
\\n\\n数据库名 | \\ndatabase | \\n目标数据库名称 | \\n
\\n\\nSSL模式 | \\nsslmode=require | \\nSSL连接必须加密 | \\n
\\n\\n通道绑定 | \\nchannel_binding=require | \\n通道绑定安全验证 | \\n
\\n
\\n数据库差异对比
\\n\\n\\n\\n特性 | \\nMySQL | \\nPostgreSQL | \\n
\\n\\n\\n去重语法 | \\nINSERT IGNORE | \\nON CONFLICT DO NOTHING | \\n
\\n\\n字段引用 | \\n`field` | \\n\\"field\\" | \\n
\\n\\n连接库 | \\npymysql | \\npsycopg2 | \\n
\\n\\nUUID类型 | \\nVARCHAR(36) | \\nUUID | \\n
\\n\\n时间戳 | \\nDATETIME | \\nTIMESTAMP | \\n
\\n
\\n📥 完整代码生成
\\n\\n由于代码较长,完整版本已通过上方网页自行生成 ,包含以下功能:
\\n\\n- ✅ 支持MySQL和PostgreSQL双数据库
\\n- ✅ 自动数据清洗和验证
\\n- ✅ 批量插入和去重处理
\\n- ✅ 完善的错误处理机制
\\n- ✅ 实时进度显示和统计
\\n
\\n主要模块:
\\n\\n- 数据库连接管理
\\n- CSV数据读取和清洗
\\n- 批量数据插入
\\n- 结果验证和统计\\n🚀 使用说明
\\n
\\n\\n- 安装依赖包
\\n
\\npip install pandas numpy pymysql psycopg2-binary\\n
\\n\\n- 修改配置
\\n
\\n根据您的实际数据库信息修改配置参数:
\\n\\n- 数据库连接信息
\\n- CSV文件路径
\\n- 目标website_id
\\n
\\n\\n- 选择数据库类型
\\n
\\n脚本会提示您选择MySQL或PostgreSQL,然后自动处理数据导入。
\\n⚠️ 使用前须知 \\n安全提醒:
\\n\\n- 请替换配置中的数据库连接信息为您自己的
\\n- 不要在代码中硬编码敏感信息
\\n- 建议使用环境变量存储数据库密码
\\n- 运行前请备份您的数据库
\\n
\\n注意事项:
\\n\\n- 确保目标数据库有足够的存储空间
\\n- 建议在测试环境先验证导入流程
\\n- 大数据量导入可能需要较长时间
\\n
\\n🤝 特别感谢
\\n在数据导入后端的实现过程中,得到了以下朋友的大力帮助:
\\n📚 参考资料
\\n本文参考了以下资源:
\\n\\n \\n感谢开源社区的分享精神,让技术知识得以传播和改进。如果这篇文章对您有帮助,也欢迎分享给更多需要的朋友。 \\n \\n \\n
","description":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/umami/ import Info from \\"../../components/mdx/Info.astro\\";\\nimport Warning from \\"../../components/mdx/Warning.astro\\";\\nim…","guid":"https://hub.xiaozhangya.xin/blog/umami/","author":"小张の小站","authorUrl":null,"authorAvatar":null,"publishedAt":"2025-08-14T00:00:00.154Z","media":[{"url":"https://img.xiaozhangya.xin/file/umami/FCkmzRDT.png","type":"photo","width":2240,"height":1217,"blurhash":"L2S~x5014nRkIARjxat7?vbHIUof"},{"url":"https://img.xiaozhangya.xin/file/umami/EI8EPOlC.png","type":"photo","width":2240,"height":1217,"blurhash":"L3S?ANM{9tRP0K%MDi%MJQ%M9FkC"},{"url":"https://img.xiaozhangya.xin/file/umami/AE8tP3Vz.png","type":"photo","width":2240,"height":1217,"blurhash":"L3S$ln.800Q-4nXSIU?HI.xuIAyD"},{"url":"https://img.xiaozhangya.xin/file/umami/1wohUTiF.png","type":"photo","width":1123,"height":865,"blurhash":"L5S$lnIAyXS#?^kWMdVs%NRjRit7"}],"categories":null,"attachments":null,"extra":{},"language":null,"summary":null},{"id":"176546029658886144","title":"🚀 Umami + Neon + Vercel:免费搭建隐私友好的自己的Umami后端网站分析系统","url":"https://hub.xiaozhangya.xin/blog/umamicourse/","content":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/umamicourse/
import Info from \\"../../components/mdx/Info.astro\\"; \\nimport Warning from \\"../../components/mdx/Warning.astro\\"; \\nimport Success from \\"../../components/mdx/Success.astro\\"; \\nimport Collapse from \\"../../components/mdx/Collapse.astro\\"; \\nimport LinkCard from \\"../../components/mdx/LinkCard.astro\\"; \\nimport Kbd from \\"../../components/mdx/Kbd.astro\\";
\\n📝 一、前提条件
\\n前提准备:
\\n\\n- ✅ 一个 GitHub 账号(用于 fork & 部署)
\\n- ✅ 一个 Vercel 账号(免费可用)
\\n- ✅ 一个 Neon 账号(免费 PostgreSQL 数据库)
\\n- ✅ 基础 Node.js / Git 操作知识(非强制)
\\n
\\n🗄️ 二、什么是 Neon?
\\n
\\n \\nNeon 是一个现代化的 PostgreSQL 数据库服务,提供无服务器架构、自动扩缩容和分支功能,非常适合现代 Web 应用。 \\n \\n\\n🧩 三、什么是 Umami?
\\n
\\nUmami是一个轻量级、隐私优先的网站分析工具:
\\n\\n- 🔍 实时访问分析
\\n- 🌐 支持多个网站
\\n- 📊 自定义事件追踪
\\n- 💰 免费部署
\\n- 🍪 不依赖 cookie
\\n
\\n
\\n🛠️ 四、在 Neon 上部署 PostgreSQL 数据库
\\n \\n\\n\\n\\n打开 https://neon.tech/ 并注册登录
\\n \\n创建新项目,选择合适的区域
\\n \\n获取数据库连接信息
\\n \\n
\\n
\\n
\\n \\n\\n \\nNeon 提供免费的 PostgreSQL 数据库,非常适合小型项目使用! \\n \\n\\n
\\n🚀 五、在 Vercel 上部署 Umami
\\n1. Fork 仓库
\\n前往 umami 仓库,点击 Fork。
\\n2. 在 Vercel 导入仓库
\\n\\n登录 Vercel,点击 New Project → Import Git Repository
\\n \\n选择你 Fork 的 umami
仓库
\\n \\n设置环境变量(Environment Variables):
\\n \\n
\\nHASH_SALT=任意字符串(用于密码加盐,建议随机生成) \\nDATABASE_TYPE=postgresql \\nDATABASE_URL=postgresql://<user>:<password>@<host>:<port>/umami\\n
\\n\\n⚠ 将 <user>
<password>
<host>
<port>
替换为 Neon 提供的连接信息
\\n
\\n\\n- 点击 Deploy 部署。
\\n
\\n
\\n✅ 六、访问 Umami 后台
\\n\\n
\\n📦 七、在网站中嵌入统计代码
\\n在你的网站 <head>
或 </body>
前插入以下代码:
\\n<script defer\\n src=\\"https://umami-yourproject.vercel.app/script.js\\"\\n data-website-id=\\"你的网站ID\\"\\n></script>\\n
\\n\\ndata-website-id
:在 Umami 后台“添加网站”时会生成一个 UUID \\n- 支持多个站点,每个站点生成独立的 ID
\\n
\\n
\\n📊 八、功能预览
\\n
\\nUmami 提供丰富的分析功能:
\\n\\n- 📈 实时访问统计
\\n- 📄 页面访问量、跳出率、平均停留时间
\\n- 🌍 访客来源、设备、浏览器、操作系统
\\n- 🎯 自定义事件追踪(如点击按钮、提交表单)
\\n
\\n
\\n📚 九、参考资料
\\n","description":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/umamicourse/ import Info from \\"../../components/mdx/Info.astro\\"; import Warning from \\"../../components/mdx/Warning…","guid":"https://hub.xiaozhangya.xin/blog/umamicourse/","author":"小张の小站","authorUrl":null,"authorAvatar":null,"publishedAt":"2025-08-08T00:00:00.103Z","media":[{"url":"https://img.xiaozhangya.xin/file/umami/O916LFpF.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/umami/tn4ZR3KH.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/umami/3rNFz35P.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/umami/Q5HQ620E.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/umami/d0scu1Tz.png","type":"photo","width":0,"height":0,"blurhash":""}],"categories":null,"attachments":null,"extra":{},"language":null,"summary":null},{"id":"175103840695626752","title":"WordPress动态网站托管在InfinityFree平台","url":"https://hub.xiaozhangya.xin/blog/infinityfree/","content":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/infinityfree/
import Info from \\"../../components/mdx/Info.astro\\";
import Warning from \\"../../components/mdx/Warning.astro\\";
import Success from \\"../../components/mdx/Success.astro\\";
import Collapse from \\"../../components/mdx/Collapse.astro\\";
import LinkCard from \\"../../components/mdx/LinkCard.astro\\";
\\n1、前期准备
\\n在开始部署之前,您需要准备以下资源:
\\n\\n- EdgeOne CDN账号(可选,用于网站加速。如使用InfinityFree提供的免费域名,国内访问速度较慢)
\\n- InfinityFree账号(免费主机服务商)
\\n- 域名(可选,也可使用InfinityFree平台提供的免费域名)
\\n
\\n \\n使用免费域名虽然成本为零,但在国内访问速度和稳定性方面可能存在限制。建议有条件的用户购买独立域名以获得更好的用户体验。 \\n \\n \\n2、平台介绍
\\nInfinityFree平台介绍
\\n
\\nInfinityFree 是一个知名的免费虚拟主机服务商,提供以下特性:
\\n\\n- 约 5 GB 磁盘空间 和 大额度流量(受每日访问次数和资源使用限制)
\\n- 支持 PHP 8.x 和 MySQL 数据库
\\n- 免费 SSL 证书(支持 Let\'s Encrypt)
\\n- 自带 VistaPanel 控制面板(类似 cPanel)
\\n- 支持绑定 自定义域名 和创建子域名
\\n
\\nEdgeOne介绍
\\n
\\nEdgeOne是腾讯云的边缘计算平台,主要优势:
\\n\\n- 针对中国大陆网络环境优化
\\n- 智能路由和加速
\\n- DDoS防护和安全防护
\\n- 支持动态和静态内容加速
\\n
\\n3、EdgeOne账号注册
\\n \\n \\n\\n- 访问 EdgeOne官网
\\n- 点击\\"立即注册\\"按钮
\\n- 填写手机号码并获取验证码
\\n- 设置登录密码
\\n- 完成实名认证(企业或个人)
\\n- 激活账号并登录控制台
\\n
\\n \\n \\n
\\n \\nEdgeOne目前不提供免费额度,但最近有活动可以获取免费套餐。访问 [**_活动网址_**](https://edgeone.ai/get-free-plan?from=marketing_banner) 进行测速分享可以获得两个免费套餐。 \\n \\n \\n4、InfinityFree账号注册
\\n \\n \\n\\n- 访问 InfinityFree官网
\\n- 点击\\"Create Account\\"
\\n- 填写邮箱地址和密码
\\n- 验证邮箱(检查垃圾邮件文件夹)
\\n- 登录客户端面板
\\n- 创建新的主机账户
\\n
\\n \\n \\n
\\n \\n注册成功后,您将获得一个免费的子域名,格式通常为:yourusername.infinityfreeapp.com \\n \\n \\n5、InfinityFree详细安装WordPress教程
\\n \\n \\n步骤1:创建主机账户
\\n
\\n步骤2:选择计划
\\n
\\n步骤3:选择域名
\\n
\\n步骤4:打开管理界面
\\n
\\n步骤5:访问控制面板
\\n
\\n步骤6:安装WordPress
\\n
\\n步骤7:配置WordPress
\\n
\\n \\n \\n验证安装结果
\\n安装完成后,使用平台提供的域名访问您的网站:
\\n
\\n要访问后台管理界面,在域名后添加 /wp-admin
,使用管理员账户登录:
\\n
\\n \\n如果您已经在其他地方部署过WordPress,可以将主题文件和数据库文件迁移过来。 \\n \\n \\n6、配置EdgeOne CDN加速
\\n \\nEdgeOne不提供免费使用,但最近有活动可以获取免费套餐。访问 [**_活动网址_**](https://edgeone.ai/get-free-plan?from=marketing_banner) 进行测速分享可以获得两个免费套餐。 \\n \\n \\n6.1 添加站点
\\n \\n需要使用自己购买的一级域名,否则无法添加站点。目前免费域名无法添加,EdgeOne需要验证域名归属权。 \\n \\n \\n\\n- 登录EdgeOne控制台
\\n- 点击\\"添加站点\\"
\\n- 输入您的域名
\\n- 选择获得的免费套餐
\\n- 完成站点添加
\\n
\\n6.2 域名配置流程
\\n \\n \\n步骤1:添加域名
\\n
\\n步骤2:DNS配置
\\n
\\n步骤3:HTTPS配置
\\n
\\n \\n \\n6.3 WordPress站点地址配置
\\n在WordPress后台管理界面,将站点地址和WordPress地址改为您的自定义域名:
\\n
\\n6.4 加速效果对比
\\n配置EdgeOne CDN前后的访问速度对比:
\\n配置前(直接访问):
\\n配置后(CDN加速):
\\n \\n配置完成后,您的WordPress网站将通过EdgeOne CDN进行全球加速,显著提升访问速度和用户体验! \\n \\n \\n总结
\\n通过本教程,您已经成功完成:
\\n\\n- ✅ 注册EdgeOne和InfinityFree账号
\\n- ✅ 在免费主机上部署WordPress
\\n- ✅ 配置CDN加速服务
\\n- ✅ 优化网站性能和安全性
\\n
\\n \\n建议定期备份网站数据,监控网站性能,并根据实际需求调整CDN配置以获得最佳效果。 \\n","description":"This rendering was automatically generated by Ryuchan Feed and may have formatting issues. For the best experience, please visit: https://hub.xiaozhangya.xin/blog/infinityfree/ import Info from \\"../../components/mdx/Info.astro\\";\\nimport Warning from \\"../../components/mdx/Warning…","guid":"https://hub.xiaozhangya.xin/blog/infinityfree/","author":"小张の小站","authorUrl":null,"authorAvatar":null,"publishedAt":"2025-08-04T00:00:00.414Z","media":[{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/b2q9Z77p.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/QnvMuom3.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/vT5Snazk.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/XsUPX34t.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/gWkIC4td.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/TrSQeUGj.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/qFI4aaLK.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/5UttNXlO.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/uVRMXHNZ.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/dYhYYAgn.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/5ErnBN4N.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/qT1cF4jZ.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/sUUArBRX.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/2xvvbStO.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/WKv1wMt6.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/dnYWuL12.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/dP4BnVHe.png","type":"photo","width":0,"height":0,"blurhash":""},{"url":"https://img.xiaozhangya.xin/file/InfinityCourse/7FG1LSUl.png","type":"photo","width":0,"height":0,"blurhash":""}],"categories":null,"attachments":null,"extra":{},"language":null,"summary":null}],"readCount":9,"subscriptionCount":2,"analytics":{"feedId":"172229198194932736","updatesPerWeek":0,"subscriptionCount":2,"independentSubscriptionCount":2,"latestEntryPublishedAt":null,"view":0}}')