拆解3个国内优秀的个人网站,手把手教你搞定域名与服务器
域名买错了?服务器选高了?SSL证书又报错? 刚入行做个人站,最怕的就是在基础设施上踩坑。 这篇保姆级建站教程,直接给你最省心的方案。
项目背景与需求:为什么我要重做个人网站
去年年底,我帮一个刚毕业的朋友看他的博客。 他花了一千多块,找了个不太靠谱的代建站。 结果网站打开要10秒,手机上看直接乱码。 更坑的是,他想换个主题,客服说加钱500。 这种体验,在国内优秀的个人网站里,绝对排不上号。
我想做一个能自己掌控、速度快、还安全的个人站。 需求很简单:
- 博客+作品集展示,代码高亮必须好看。
- 全球访问速度要快,尤其是国内打开不能慢。
- 成本低,初期预算控制在500元以内。
- 安全性要高,防黑客,防垃圾评论。
很多人一上来就问用什么CMS。 WordPress?Joomla?Drupal? 对于个人站,除非你有极强的运维能力,否则别碰。 我直接选了静态生成器。 技术选型的核心逻辑:能用静态解决的,绝不用动态。
技术选型:避开90%新手的坑
这里要重点讲一下域名和服务器。 这是新手最容易“交学费”的地方。
域名:别贪便宜,但也别乱买
国内优秀的个人网站,域名通常都很短。 但你要知道,域名后缀决定备案难度和信任度。 *.com 是首选,但贵。 *.cn 需要实名,但国内访问稍快。 *.top, *.xyz 这种廉价后缀,别碰。 搜索引擎对廉价后缀有隐性降权,且容易进垃圾邮件列表。 建议:个人站直接买 .com,预算够就买短一点。 注册商选择:Cloudflare Registrar 或 Namecheap。 Cloudflare 的域名注册商不赚差价,只收成本价,且自带隐私保护。 这一点在 Cloudflare 文档 里有明确说明:注册商作为ICANN认证注册商,承诺零利润转售。
服务器/托管:静态站的终极方案
传统VPS(阿里云、腾讯云): 优点:可控性强。 缺点:贵,运维麻烦,备案流程长(1-3个月)。 对于个人博客,备案是最大门槛。 没备案,国内访问可能不稳定,甚至被墙。
我的选择:Cloudflare Pages + GitHub Actions。 为什么?
- 免费:流量、请求数、构建次数都够个人站用。
- 全球CDN:节点遍布全球,国内速度也尚可(虽不如备案VPS,但够快)。
- 自动HTTPS:SSL证书自动签发,不用折腾。
- 无需备案:因为域名解析到Cloudflare,CDN边缘节点在境外,国内访问走的是CDN回源逻辑,只要DNS解析正常,就能访问。
注意:这种方式在国内部分运营商下可能偶尔波动,但整体体验远超未备案的境外VPS。
前端框架:Hugo vs Astro
对比了 Hugo 和 Astro。 Hugo:Go语言编写,构建速度极快,模板语法(Go Template)难学。 Astro:基于Node.js,支持React/Vue/Svelte组件,构建速度也不错,DX(开发者体验)好。
最终选择:Astro。 原因:
- 我习惯JS生态。
- Astro的“零JS”默认策略,对SEO极其友好。
- 支持Islands架构,可以在纯静态页中局部使用交互组件。
核心实现:代码与配置细节
下面是我的项目结构核心代码。
重点看 astro.config.mjs 和构建流程。
1. Astro 配置
// astro.config.mjs
import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';// https://astro.build/config
export default defineConfig({site: 'https://your-domain.com', // 必须配置,用于生成绝对URLintegrations: [mdx(),sitemap({changefreq: 'weekly',priority: 0.7,lastmod: new Date(),}),],build: {inlineStylesheets: 'auto', // 内联关键CSS,提升LCP},
});
2. 自动化部署:GitHub Actions
这是实现“保姆级”运维的关键。 不用手动上传,代码推送到GitHub,自动构建部署到Cloudflare Pages。
# .github/workflows/deploy.yml
name: Deploy to Cloudflare Pageson:push:branches:- mainpull_request:branches:- mainjobs:build:name: Build and Deployruns-on: ubuntu-lateststeps:- name: Checkout Repouses: actions/checkout@v4- name: Setup Nodeuses: actions/setup-node@v4with:node-version: '20'cache: 'npm'- name: Install dependenciesrun: npm ci- name: Buildrun: npm run build- name: Deploy to Cloudflare Pagesuses: cloudflare/wrangler-action@v3with:apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}command: pages deploy dist --project-name=your-project-name
3. 性能优化:图片处理
个人站最大的性能杀手是图片。 Astro 内置了图片优化,但需要正确配置。
---
import { Image } from 'astro:assets';
import portrait from './assets/portrait.jpg';
---<!-- 使用 Astro 内置图片组件,自动压缩并生成 WebP -->
<Image src={portrait} alt="My Portrait" width={400} height={400} />
关键细节:
- 在
astro.config.mjs中开启image.service: 'sharp'(需要安装sharp依赖)。 - 所有图片使用
<Image>组件,不要直接用<img>。 - 添加
loading="lazy"属性,非首屏图片懒加载。
4. SEO 基础:Meta 标签与结构化数据
很多新手忽略这点,导致搜索引擎抓不到关键信息。
---
const { title, description, image, author } = Astro.props;
---<html lang="zh-CN"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><meta name="generator" content={Astro.generator} /><title>{title}</title><meta name="description" content={description} /><meta property="og:title" content={title} /><meta property="og:description" content={description} /><meta property="og:image" content={image} /><meta property="og:type" content="article" /><meta name="author" content={author} /><!-- 结构化数据,提升搜索引擎理解 --><script type="application/ld+json">{"@context": "https://schema.org","@type": "Person","name": "{author}","url": "https://your-domain.com"}</script></head><body><!-- 内容 --></body>
</html>
上线与优化:那些看不见的细节
代码写完,部署上去,不等于工作结束。 真正的优化,在于上线后的监控和细节调整。
1. DNS 解析与 Cloudflare 配置
这是很多新手的“生死线”。 步骤:
- 在 Cloudflare 添加你的域名。
- 修改域名的 Nameserver 指向 Cloudflare 提供的地址。
- 在 Cloudflare Dashboard 添加 DNS 记录:
- Type:
CNAME - Name:
@(或www) - Content:
your-project-name.pages.dev - Proxy status:
Proxied(橙色云朵)
- Type:
重点:必须开启橙色云朵(Proxied)。
如果不开启,流量直接回源到你的服务器(如果是VPS),或者无法享受CDN加速。
Cloudflare Pages 部署后,会给你一个 *.pages.dev 的子域名。
你通过 CNAME 指向它,Cloudflare 会自动为你签发 SSL 证书。
这个过程通常只需几分钟,无需手动上传证书。
2. 缓存策略
Cloudflare Pages 默认会缓存静态资源。 但 HTML 文件默认不缓存,这是为了更新即时性。 对于博客,这是合理的。 但对于图片、JS、CSS,必须设置强缓存。
在 public/ 目录下创建一个 _headers 文件(Astro 支持自定义 headers):
/*
Cache-Control: public, max-age=31536000, immutable
这样,浏览器会缓存静态资源一年。 用户第二次访问,几乎瞬间打开。
3. 安全头配置
在 _headers 中继续添加安全头:
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Frame-Options: DENY:防止点击劫持。X-Content-Type-Options: nosniff:防止MIME类型嗅探。Strict-Transport-Security:强制HTTPS,防止降级攻击。
这些配置,让个人站的安全级别接近企业级。 很多商业网站都没这么严谨。
4. 监控与分析
不要用 Google Analytics。 国内访问 GA 不稳定,且数据有延迟。 推荐:Umami 或 Plausible。
- Umami:开源,自托管,数据完全隐私。
- Plausible:SaaS,轻量,隐私友好。
我选择了 Umami,部署在 Cloudflare Workers 上。 代码极简,脚本只有几KB,对性能影响微乎其微。
经验总结:给转行新手的真心话
做完这个站,我最大的感受是: 个人网站的核心,不是技术多牛,而是“可控”与“轻量”。
别过度设计: 很多新手一上来就想做用户系统、数据库、复杂交互。 个人站的核心是“展示”和“沟通”。 能用邮件解决的,别做后台。 能用静态页解决的,别做动态。
域名与服务器是基础: 域名选错,后面全白搭。 服务器选错,运维能累死你。 Cloudflare Pages + Cloudflare Registrar 是目前个人站的最优解。 成本低,安全性高,全球速度快。 虽然国内偶尔有波动,但整体体验远超传统VPS。
SEO 是长期工程: 别指望发一篇文章就上首页。 静态站的优势在于速度快,搜索引擎喜欢。 但内容质量才是王道。 保持更新,做好内部链接,结构化数据,SEO 自然会来。
安全是底线: 即使只是个人博客,也可能被攻击。 开启 SSL,设置安全头,定期备份代码。 这些习惯,能帮你避开90%的安全问题。
最后,聊聊成本。
我这个站,一年的总成本:
- 域名:10美元(Cloudflare Registrar,成本价)
- 托管:0元(Cloudflare Pages 免费额度够用)
- 邮件:120元(Resend 或 Postmark,用于联系表单)
- 总计:约 200 元人民币/年。
对比那些花几千块买模板、上万块买VPS的“网站”, 这个成本,几乎可以忽略不计。 而且,你拥有 100% 的代码控制权。 想改什么,就改什么,不用看任何客服的脸色。
建站花了多少钱?留言说说真实价格 你是花了几千块买了个“套壳站”,还是像我一样,花几百块搞定了全流程? 欢迎在评论区晒出你的建站账单。 不管是踩坑还是省钱,大家都来看看。 你的经验,可能就是别人避坑的指南。