/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}
1. 内容整体设计与思路拆解
1.1 先说清楚:个人网站配置到底在配什么
我接触个人网站配置这个事也有好些年了,最早是为了放自己的简历和作品集,后来慢慢折腾成技术博客、摄影展示站、甚至帮朋友搭了小型电商页。很多刚入门的朋友以为“个人网站配置”就是把一个安装包传上去,点几下下一步就完事,实际上真正搭建一个能稳定访问、不报错、能自己控制的个人网站,你至少要把四层东西配通:域名解析、服务器运行环境、建站程序、HTTPS证书。这四层只要有一层配置错了,网站要么打不开,要么打开了全是样式错乱,要么过几天莫名其妙被浏览器拦截。
而这篇内容里,我不打算讲那种“面板一键部署”的路子,因为我自己踩过坑:面板虽然上手快,但隔三差五出兼容性问题,而且你完全不知道它在你服务器里做了什么操作。我更推荐用命令行手动配置,哪怕慢一点,但你清楚每一步在干什么,出问题时才有排查方向。毕竟是个人网站,掌控感比速度重要。
1.2 技术选型:每一种选择背后都有代价
个人网站的技术栈看起来五花八门,其实核心决定只有几个:
- 域名从哪买?国内服务商还是海外服务商?这决定了ICP备案要不要做。
- 服务器用哪家?虚拟主机还是云服务器?配置多少?
- 网站程序选WordPress还是Typecho、Hexo这种静态博客?
- 数据库用MySQL还是SQLite?
- 要不要加CDN、Redis、云存储这些附加组件?
我给你分享我最终选定的方案,以及为什么这么选。
域名方面,因为我的网站读者主要在国内,我用的是阿里云购买的.com域名,按规矩做了ICP备案。如果你用海外服务商的域名并且服务器也放在海外,可以跳过备案,但国内访问速度会不稳定。我的原则是:面向国内访客就用国内服务商+备案,面向全球访客或者只是自己测试用,就选海外服务器,简单省事。
服务器层面,我用的是阿里云的轻量应用服务器,2核4G内存,带宽5M,跑一个个人博客绰绰有余。你要是纯新手,我建议最低1核2G起步,不要买那种128M内存的虚拟主机,真的跑不动WordPress。操作系统选Ubuntu 22.04 LTS,因为它社区资源多、遇到问题容易搜到答案,而且官方维护周期长。
网站程序我最后选了WordPress,原因很朴素:生态最丰富。无论是主题、插件还是问题解决方案,你几乎都能找到现成的。Typecho更轻量,但插件和主题少,适合爱折腾且不怕折腾的人。如果你写技术博客且不介意用Markdown文件管理内容,Hexo或Hugo这种静态站生成器也不错,但它们没有后台管理界面,更新文章需要本地编译后再推送,我个人觉得不够直觉。
1.3 为什么不用一键面板:我的实际体会
很多帖子推荐宝塔面板,我也装了试过。刚开始确实爽,可视化操作、一键装环境、在线改文件,感觉特别省心。但用了几个月后我发现几个问题:一是面板本身会占用一定系统资源,在低配服务器上尤其明显;二是面板为了兼容不同环境,预装了很多你用不到的组件,增加了被攻击的面;三是一旦面板程序自身出现Bug,你又不太会修,整个网站就跟着瘫了。
后来我干脆重装系统,全部手动配置,反而觉得世界清静了。手动配置的关键就在于“你知道自己在做什么”,Nginx配置文件里每一行是干什么的,MySQL用户权限是什么意思,SSL证书续期脚本什么时候跑,这些都清清楚楚,出问题了你不会慌。这篇博文里的所有配置都是走这个路线的,你在看的时候也可以按自己的服务器情况调整。
2. 核心细节解析与实操要点
2.1 服务器初始化:不要跳过这些基础动作
我第一次配置服务器时,因为图快,很多初始化步骤直接跳过了,结果后面吃了大亏。这里把必做的动作列出来,每一步都不要省。
更新系统软件源是第一步。Ubuntu刚装好时,软件源是最原始的版本,直接安装Nginx很有可能装到旧版本。执行:
sudo apt update && sudo apt upgrade -y
这一步会把系统里的所有软件包更新到当前软件源的最新状态,同时把一些安全补丁打上。尤其是新出的安全漏洞补丁,很多时候就靠这次更新来带上。
接着创建一个普通用户,别直接用root跑网站。root权限太大,一旦网站程序被利用,攻击者可能直接控制整台服务器。创建用户的时候顺手加入sudo组:
sudo adduser yourname
sudo usermod -aG sudo yourname
然后修改SSH配置。为了安全,我建议改掉默认的22端口,同时禁止root直接登录。修改 /etc/ssh/sshd_config 文件,找到 #Port 22 这一行改成自定义端口号,比如 Port 22522 ,找到 PermitRootLogin yes 改成 PermitRootLogin no ,改完重启SSH服务:
sudo systemctl restart sshd
这里提醒一下:改SSH端口前先确保防火墙放行了新端口,不然你会把自己锁在服务器外面。用Ubuntu自带的UFW防火墙的话,先放行新端口再重启SSH服务,顺序一定不能反。
2.2 Web环境安装:Nginx、PHP、数据库的版本搭配
个人网站配置里最容易出错的就是环境版本不兼容。我推荐的组合是Nginx 1.18以上 + PHP 8.1以上 + MySQL 8.0,这个组合很成熟,WordPress最新版完全兼容。 </






