域名解析刚生效的那半小时我盯着浏览器里那个转圈的加载图标心里其实挺没底的——明明 ping 得通SSH 也连得上可网页就是打不开。后来才发现是云服务器安全组里 80 端口压根没放行。这件事让我意识到从申请域名到网页能被访问中间隔着的不是一步而是一串容易被忽略的细节。这篇内容就是把我自己从零搭个人主页的完整过程拆开来讲包括域名怎么选、服务器怎么配、Web 服务怎么装、页面怎么传、访问不通怎么查。适合刚买完域名和服务器、准备动手但还没理清头绪的朋友也适合之前搭过但总在某个环节卡住的人。我会把每一步的意图和踩过的坑都写清楚你照着做基本能一次跑通。1. 动手之前先把这几件事想明白很多人一拿到域名就急着去解析结果页面传上去发现访问不了回头排查半天其实问题出在最开始的选择上。这一节先把几个前置决策讲透后面操作会顺很多。1.1 域名和服务器到底谁先谁后严格来说没有强制顺序但我建议先买服务器、再买域名。原因很实际服务器开通后有个初始化过程你需要时间装环境、配安全组而域名注册完还有实名认证的等待期国内注册商通常要等审核通过才能解析。先开服务器等环境配得差不多了域名也刚好可用时间上是并行的。另一个考虑是服务器地域和域名备案的关系。如果你用的是国内地域的服务器域名需要完成备案才能通过 80/443 端口对外提供网页服务如果选的是境外地域则不需要备案但访问速度受物理距离影响。这个选择直接决定了你后面要不要花时间走备案流程建议在买之前就想清楚用途——纯个人学习练手、访问量不大境外地域省事面向国内访客正式使用老老实实走备案。1.2 服务器配置怎么估才不浪费也不卡个人主页这种场景配置需求其实很低。我用一台 1 核 2G 内存、系统盘 40G 的入门机型跑静态页面加一个轻量 Web 服务CPU 长期占用不到 5%内存用掉 300M 左右。下面这张表是我实测几种配置的体感对比配置适用场景实测体感1核1G纯静态页、极低访问量能跑但装完环境后剩余内存紧张编译类操作容易卡1核2G静态页 轻量动态接口日常够用是我推荐的起步配置2核4G带数据库、有一定并发从容适合后续想扩展功能的系统镜像我选的是主流的 Linux 发行版比如 Ubuntu 22.04 或 CentOS 系的稳定版本不要选带图形界面的镜像——图形界面会白白吃掉几百兆内存对命令行操作也没有帮助。选最小化安装的纯命令行版本就行。1.3 安全组和防火墙最容易漏掉的第一道门这是新手翻车率最高的地方。云服务器厂商在控制台里有一层安全组有的叫防火墙策略它独立于服务器操作系统内部的防火墙。你就算在系统里把服务起好了安全组没放行对应端口外面照样访问不进来。需要放行的端口至少包括22 端口SSH 远程登录用不开你连服务器都进不去80 端口HTTP 网页访问443 端口HTTPS 加密访问后面配证书要用提示安全组的规则是默认拒绝、按需放行。添加规则时来源建议先设成0.0.0.0/0允许所有来源等调试通了再按需收紧。别一上来就设成只允许自己 IP否则换个网络环境就访问不了排查时容易误判。我当初就是只开了 22 端口网页传上去死活打不开折腾了快一小时才想起来看安全组。这个坑值得单独拎出来说因为它不报错、不提示纯粹是静默拦截。2. 域名解析把名字指向那台机器域名买回来只是个名字得通过解析告诉全网这个名字对应哪个 IP。这一步做对了后面访问才有基础。2.1 解析记录类型的选择逻辑进域名管理后台的解析设置核心是加一条A 记录。A 记录的作用就是把域名映射到一个 IPv4 地址。填写时几个字段的含义主机记录填表示主域名本身如example.com填www表示www.example.com填*表示泛解析所有子域名都指向同一 IP记录类型选A记录值填你服务器的公网 IPTTL生存时间默认 600 秒即可调试阶段可以设短一点比如 60 秒方便改完快速生效我一般会加两条一条指向服务器 IP一条www也指向同一 IP。这样用户输不输www都能到。2.2 解析生效的验证方法解析不是瞬间全网生效的取决于 TTL 和各层级 DNS 缓存。验证方法很简单在本地终端执行# 查询域名解析到的 IP nslookup 你的域名 # 或者用 dig信息更详细 dig 你的域名 short如果返回的 IP 和你服务器公网 IP 一致说明解析已经生效。注意本地生效不代表全网生效有时候你本地查到了换个网络环境还没同步。调试阶段耐心等几分钟到半小时是正常的。提示如果你改了解析但本地一直查到旧 IP可能是本地 DNS 缓存。可以尝试刷新系统 DNS 缓存或者直接用手机流量换一个网络出口验证排除本地缓存干扰。2.3 一个常被忽略的细节主机名和 hosts有些朋友在服务器上测试时喜欢改/etc/hosts把域名硬绑到本地测完忘了删结果后面排查时被误导。我的习惯是服务器上不做 hosts 绑定所有验证都走真实解析这样测出来的结果和外部访客看到的一致。如果确实需要本地测试测完立刻注释掉那行。3. 服务器环境搭建从裸机到能跑网页服务器连上之后是台空机器得装 Web 服务软件。这一步的选择和操作直接决定后面顺不顺。3.1 Web 服务软件怎么选个人主页场景常见选择是 Nginx 和 Apache。我选Nginx理由有三静态文件处理效率高、配置语法简洁、内存占用低。对一台 1核2G 的机器来说Nginx 跑静态页几乎不占什么资源。安装命令以 Ubuntu 系为例# 更新软件包索引 sudo apt update # 安装 Nginx sudo apt install nginx -y # 启动并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 查看运行状态 sudo systemctl status nginx看到active (running)就说明起来了。这时候在浏览器里直接输服务器公网 IP应该能看到 Nginx 的默认欢迎页。这一步很关键——先用 IP 访问通证明 Web 服务和 80 端口都没问题再去折腾域名能把问题范围缩小。3.2 网站根目录的结构规划Nginx 默认的网站根目录在/var/www/html不同发行版可能略有差异可以用nginx -V或看配置文件确认。我习惯给每个站点单独建目录方便以后扩展# 创建站点目录 sudo mkdir -p /var/www/mysite # 设置目录归属避免权限问题 sudo chown -R $USER:$USER /var/www/mysite把网页文件放进这个目录然后在 Nginx 配置里把root指过来。权限这块要留意Nginx 工作进程通常以www-data用户运行如果目录权限设得太严比如只有 root 可读会出现 403 Forbidden。我一般把目录权限设成 755文件设成 644够用且安全。3.3 站点配置文件的写法与启用Nginx 的站点配置一般放在/etc/nginx/sites-available/下然后在sites-enabled/里建软链接启用。新建一个配置文件server { listen 80; server_name 你的域名 www.你的域名; root /var/www/mysite; index index.html index.htm; location / { try_files $uri $uri/ 404; } }几个字段的意图说明listen 80监听 HTTP 端口server_name匹配域名来访请求的 Host 头对上了才用这个配置root指定文件根目录try_files是找不到文件时返回 404避免路径穿越问题。启用配置并重载# 建软链接启用站点 sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/ # 测试配置语法是否正确 sudo nginx -t # 语法通过后重载 sudo systemctl reload nginxnginx -t这步千万别省配置写错直接 reload 可能导致服务起不来。先测再重载是保命的习惯。4. 网页文件上传与访问验证环境配好了接下来把页面传上去然后验证能不能访问。4.1 上传方式的取舍传文件到服务器有几种常见方式各有适用场景方式优点缺点适用场景scp 命令系统自带、简单每次手动敲少量文件、临时传SFTP 客户端图形化、直观需装软件文件多、频繁改Git 拉取版本管理、可回滚需配仓库有代码管理习惯我平时改单个文件用scp整站部署用 Git。scp的用法# 把本地 index.html 传到服务器站点目录 scp ./index.html 用户名服务器IP:/var/www/mysite/传完记得检查文件归属如果传上去是 root 所有Nginx 读不到会 403用chown改一下。4.2 一个最小可用的个人主页不用一上来就搞复杂先放一个能显示内容的index.html验证链路通不通!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title我的个人主页/title /head body h1页面部署成功/h1 p如果你看到这行字说明域名解析、Web 服务、文件权限都通了。/p /body /html这个页面没有任何依赖能显示出来就证明整条链路是通的。等验证通过再往里加样式、脚本、图片。4.3 访问验证的完整链路验证要按顺序来从内到外逐层排除服务器本地验证curl http://localhost看有没有返回页面内容验证 Nginx 本身正常IP 访问验证浏览器输公网 IP验证安全组 80 端口放行域名访问验证浏览器输域名验证解析和server_name配置任何一层不通问题就锁定在这一层不用瞎猜。我见过有人域名访问不了直接去重装 Nginx其实问题在解析没生效白折腾。5. 访问不通时的排查链路这部分是我踩坑最多的地方把完整的排查思路写出来你遇到问题可以照着走一遍。5.1 从现象反推问题层级访问不通的表现有好几种不同表现指向不同原因浏览器提示无法访问此网站/连接超时多半是安全组没放行端口或者服务没起来提示 403 Forbidden服务通了但文件权限或目录索引有问题提示 404 Not Found服务通了但请求的文件路径不对提示域名解析失败解析没生效或记录填错先看现象再定位层级比盲目重启服务高效得多。5.2 逐层排查的具体命令我习惯从服务器内部往外查# 1. 看 Nginx 是否在跑 sudo systemctl status nginx # 2. 看 80 端口是否在监听 sudo ss -tlnp | grep :80 # 3. 本地请求测试 curl -I http://localhost # 4. 看 Nginx 错误日志 sudo tail -f /var/log/nginx/error.log如果本地curl通、外网 IP 不通问题基本锁定在安全组。如果本地都不通看 Nginx 状态和错误日志。错误日志里通常会直接写明原因比如Permission denied就是权限问题No such file就是路径问题。5.3 几个我真实踩过的坑坑一安全组只开了 22 端口。前面提过网页传上去打不开查了半天是 80 没放行。教训是配环境前先把 80、443 一起放行。坑二配置文件软链接建错目录。有次把软链接建到了sites-available里面等于没启用nginx -t也不报错但配置就是不生效。正确做法是链接到sites-enabled。坑三SELinux 拦截。某些发行版默认开启 SELinux即使文件权限是 755Nginx 也读不到。排查时看错误日志有Permission denied但权限明明没问题就要怀疑 SELinux。临时验证可以setenforce 0但生产环境应该配置正确的 SELinux 策略而不是直接关掉。坑四域名解析生效了但访问的是旧页面。这是浏览器缓存强制刷新CtrlF5或者开无痕窗口验证即可。5.4 排查时的一个思维习惯我总结的经验是每次只改一个变量改完立刻验证。有人一次改配置、改权限、改解析然后访问通了也不知道到底是哪一步起的作用万一没通更不知道是哪个改动引入的问题。慢就是快尤其在排查阶段。6. 让主页更完整HTTPS 与后续扩展链路跑通之后可以往上加东西了。这部分不是必须但做了体验会好很多。6.1 免费证书配置 HTTPS现在浏览器对 HTTP 站点会标不安全配个 HTTPS 是基本操作。用免费的证书签发工具如 Certbot可以自动化完成# 安装 Certbot 及 Nginx 插件 sudo apt install certbot python3-certbot-nginx -y # 自动签发并配置证书 sudo certbot --nginx -d 你的域名 -d www.你的域名工具会自动改 Nginx 配置、加 443 监听、配好证书路径还会设置自动续期。配完记得在安全组放行 443 端口。验证时可以访问https://你的域名看地址栏有没有锁标志。提示证书有有效期通常 90 天Certbot 会自动续期但建议偶尔检查一下续期是否正常避免某天突然过期导致访问告警。可以用sudo certbot renew --dry-run做一次模拟续期测试。6.2 静态主页之外还能放什么链路通了之后这台服务器能做的事不少放一个静态博客生成器产出的站点、跑一个轻量的笔记应用、挂一个个人作品集页面。扩展时注意两点一是新增服务要对应放行端口二是多个站点可以用 Nginx 的server_name区分一个 IP 上跑多个域名完全没问题。6.3 日常维护的几个小习惯定期看日志/var/log/nginx/access.log能看出访问来源和异常请求error.log能提前发现隐患备份配置和页面改配置前先cp一份改坏了能快速回滚记录每次改动我在一个文本文件里记下每次改了什么、为什么改出问题时回溯特别有用这套流程我从第一次搭到现在前后帮朋友复现过好几次基本都能在半小时内从零跑到能访问。真正花时间的从来不是操作本身而是那些不报错、只静默拦截的细节——安全组、权限、解析缓存。把这些提前想到剩下的就是按顺序执行。
阅读完成 · 觉得有帮助?