🌐 网站从零搭建全流程指南

从"想做一个网站"到"正式上线运营"的完整路径 · 2025-2026 最新实践

由 建站小灵 整理 · 基于全网优质教程汇总

1.需求规划2.域名注册3.服务器选购 4.DNS解析5.技术栈选型6.开发编码 7.服务器环境8.HTTPS配置9.部署上线 10.安全加固11.测试验证12.运营维护

1 需求规划:先想清楚"做什么"

在写第一行代码之前,先回答三个问题:

静态
博客 / 作品集
HTML+CSS+JS
GitHub Pages 免费
动态
企业官网 / SaaS
前端框架 + 后端 API
VPS 或云服务
电商
在线商城
Shopify / WooCommerce
或自建全栈
CMS
内容管理站
WordPress / Strapi
快速上线
如果只是展示型网站,直接用 WordPress / Wix 就能一天上线。如果学技术或做产品,走全栈自建路线——本指南就是给你的。

2 域名注册:给网站起个"门牌号"

域名选择 3 原则

注册流程(以阿里云为例,5 分钟搞定)

  1. 打开 wanwang.aliyun.com,搜索你想要的域名
  2. 选好可用的域名 → 点击"立即购买"
  3. 填写域名所有者信息(个人用身份证,企业用营业执照,必须真实)
  4. 支付费用(.com 一般 50-100 元/年)→ 拿到域名所有权
域名按年续费,到期前记得续,否则会被收回。建议开启自动续费。
注册平台特点.com 年费
阿里云(万网)国内最大,支持备案一条龙55-85 元
腾讯云与微信生态集成好55-80 元
GoDaddy国际知名,英文界面$12-18
Cloudflare按成本价,无加价$10 左右

3 服务器选购:给网站找个"家"

三种选择,对号入座

类型适合场景年费参考难度
虚拟主机个人博客、小型展示站200-500 元⭐ 低
云服务器 ECS/VPS企业站、电商、全栈应用500-2000 元⭐⭐⭐ 中
Serverless(Vercel/Netlify)静态站、Next.js 全栈免费额度起步⭐⭐ 中低

新手推荐配置(云服务器)

云平台入门价格特点
阿里云 ECS新人 ~300 元/年国内最大,备案方便
腾讯云 CVM新人 ~250 元/年学生优惠,微信集成
Vultr$6/月海外节点多,免备案
AWS Lightsail$3.5/月起全球节点,免费试用
国内服务器必须 ICP 备案(7-20 个工作日),备案前网站不能访问。香港/海外服务器免备案,但国内访问延迟稍高。

4 DNS 解析:让"门牌号"指向"家"

域名注册后需要通过 DNS 解析把域名指向服务器 IP。

A 记录解析步骤

  1. 登录域名控制台 → 找到你的域名 → 点击"解析"
  2. 添加两条 A 记录:
主机记录记录类型记录值TTL
@A你的服务器 IP(如 123.57.12.205)10 分钟
wwwA你的服务器 IP(如上)10 分钟
解析生效通常需要 10 分钟到 2 小时。用 ping 你的域名 验证,返回正确 IP 即生效。如果加了子域名(如 pay.sharpdealhub.com),同上步骤,主机记录填 "pay"。

5 技术栈选型:2025-2026 最新趋势

根据 2025 Stack Overflow 开发者调查和社区实践,以下是最主流的技术组合:

推荐组合速查表

场景前端后端数据库部署
个人博客 / 展示站Next.js / Astro / Hexo无需(静态)MarkdownVercel / GitHub Pages
企业官网 / SaaSNext.js (React)FastAPI / Node.jsPostgreSQLVPS + Docker
管理后台 / 内部工具Vue 3 / React (Vite)NestJS / FastAPIMySQLDocker Compose
电商平台Next.js / NuxtFastAPI / GoPostgreSQL + RedisK8s / 云服务
AI/数据产品React / Next.jsFastAPI(首选)PostgreSQL + 向量库GPU 云服务器

各层详细对比

层级技术优势注意
前端Next.js (React)全栈能力、SSR/SSG、SEO 友好、生态最大学习曲线中,Vercel 锁定风险
Vue 3 + Nuxt学习曲线平缓,文档一流,适合国内人才池比 React 小
React + Vite纯 SPA,速度快,适合后台管理无 SSR,SEO 差
后端FastAPI (Python)异步高性能,自动 Swagger 文档,AI 生态异步编程有门槛
Node.js (Express/NestJS)前后端统一语言,生态丰富回调地狱(Express);NestJS 较复杂
Go (Gin/Fiber)极致性能,低资源,云原生开发速度慢,Web 生态不如 Node
数据库PostgreSQL功能最全,支持 JSON、全文搜索配置稍复杂
MySQL简单易用,国内默认选择高级功能不如 PG
Redis缓存/会话/消息队列内存成本高
我们的推荐:如果你学的是 JS/TS,选 Next.js + Prisma + PostgreSQL。学的是 Python,选 React/Vue + FastAPI + PostgreSQL。两者都是 2026 年最稳妥的选择,人才池深、社区活跃、文档齐全。

6 开发编码:从设计到代码

6.1 UI/UX 设计

6.2 前端开发

# Next.js 项目初始化
npx create-next-app@latest my-website --typescript --tailwind
cd my-website
npm run dev

# Vue 3 项目初始化
npm create vue@latest my-website
cd my-website
npm install
npm run dev

6.3 后端开发

# FastAPI 项目初始化
pip install fastapi uvicorn sqlalchemy
# main.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def root():
    return {"message": "Hello World"}

# 启动
uvicorn main:app --reload
# API 文档自动生成在 http://localhost:8000/docs

6.4 版本控制(必须)

git init
git add .
git commit -m "feat: initial project setup"
git remote add origin https://github.com/你的用户名/项目名.git
git push -u origin main
建议使用分支策略:main 分支放稳定版,dev 分支日常开发,feature/xxx 开发新功能。配合 GitHub Actions 可以实现推送即自动部署。

7 服务器环境搭建:让服务器跑起来

7.1 首次 SSH 登录

# 本地连接服务器(替换为你的 IP)
ssh root@你的服务器IP

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install curl wget git unzip vim -y

7.2 安装 Docker(推荐)

# 一键安装 Docker
curl -fsSL https://get.docker.com | sh

# 安装 Docker Compose
sudo apt install docker-compose-plugin -y

# 把当前用户加入 docker 组(不用每次 sudo)
sudo usermod -aG docker $USER

# 验证
docker --version
docker compose version

7.3 方案 A:宝塔面板(新手友好)

# 一键安装宝塔面板(Ubuntu)
wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sudo bash install.sh

# 安装完成后会显示:
# 面板地址: http://你的IP:8888/xxxxxx
# 用户名: xxxxxx
# 密码: xxxxxx

# 登录面板 → 一键安装 LNMP(Nginx + MySQL + PHP)

7.4 方案 B:纯命令行 Docker 部署(进阶推荐)

创建 docker-compose.yml

version: '3.8'
services:
  backend:
    build: ./backend
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
    depends_on:
      - db

  frontend:
    build: ./frontend
    ports:
      - "3000:3000"

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    depends_on:
      - backend
      - frontend

volumes:
  pgdata:

8 HTTPS 证书 & Nginx 配置

8.1 Nginx 基础配置

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name example.com www.example.com;

    # 前端静态文件
    location / {
        root /var/www/html;
        try_files $uri $uri/ /index.html;
    }

    # API 反向代理
    location /api/ {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

8.2 Let's Encrypt 免费 SSL 证书

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y

# 申请证书(自动配置 Nginx)
sudo certbot --nginx -d example.com -d www.example.com

# 测试自动续期
sudo certbot renew --dry-run
# Certbot 会自动添加 systemd timer,每 90 天续期

8.3 SSL 强化配置

# 在 server block 中追加
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384";

# 强制 HTTPS 跳转
if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

# HSTS(强制浏览器只用 HTTPS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# 安全头
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";

# 隐藏 Nginx 版本号
server_tokens off;

9 部署上线

9.1 代码上传到服务器

# 方法1:Git 拉取(推荐)
cd /var/www
git clone https://github.com/你的用户名/项目名.git myapp
cd myapp

# 方法2:scp 上传
scp -r ./dist/* root@你的IP:/var/www/html/

# 方法3:rsync 增量同步
rsync -avz --delete ./dist/ root@你的IP:/var/www/html/

9.2 Docker 一键部署

# 在服务器项目目录下
docker compose up -d --build

# 查看运行状态
docker compose ps

# 查看日志
docker compose logs -f

# 重启服务
docker compose restart

9.3 传统部署(无 Docker)

# 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs

# 前端构建
cd frontend && npm install && npm run build

# 后端启动(用 PM2 守护进程)
npm install -g pm2
cd backend && pm2 start app.py --interpreter python3
pm2 save && pm2 startup  # 开机自启

9.4 自动化 CI/CD(GitHub Actions 示例)

# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to Server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/myapp
            git pull
            docker compose up -d --build

10 安全加固:上线前的护甲

10.1 SSH 安全

# 编辑 /etc/ssh/sshd_config
PermitRootLogin no           # 禁用 root 登录
PasswordAuthentication no    # 禁用密码登录,只用密钥
PubkeyAuthentication yes     # 启用公钥认证
Port 2222                    # 改掉默认 22 端口(可选)

# 重启 SSH
sudo systemctl restart sshd

10.2 防火墙(UFW)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 80/tcp        # HTTP
sudo ufw allow 443/tcp       # HTTPS
sudo ufw limit 22/tcp        # SSH 限速(防暴力破解)
sudo ufw enable

10.3 Fail2Ban(防暴力破解)

sudo apt install fail2ban -y

# 创建 /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
bantime = 3600

[nginx-http-auth]
enabled = true
maxretry = 3
bantime = 7200

sudo systemctl enable fail2ban --now

10.4 数据库安全

-- 创建专用用户,限制权限
CREATE USER 'app_user'@'localhost' IDENTIFIED BY '强密码';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'localhost';

-- 禁用远程 root 登录
-- 编辑 /etc/mysql/my.cnf,添加:
-- bind-address = 127.0.0.1

10.5 云平台安全组

在阿里云/腾讯云控制台配置安全组,仅开放必要端口

方向协议端口来源说明
入方向TCP800.0.0.0/0HTTP
入方向TCP4430.0.0.0/0HTTPS
入方向TCP22你的 IPSSH(限制来源IP)

11 测试与验证

上线前检查清单

curl -I https://你的域名 验证 HTTPS 返回码。用 SSL Labs 检测 SSL 得分,目标 A+。

12 运营维护:上线才是开始

日常维护清单

频率任务
每天检查服务器是否正常运行(docker compose ps
每周查看日志有无异常(docker compose logs --tail=100
每月数据库备份、系统更新(apt update && apt upgrade
每季度SSL 证书续期验证、安全审计、性能优化

性能优化要点

SEO 基础


💰 成本估算(新手建站)

项目最低方案推荐方案
域名.com 域名 50 元/年.com + .cn 双后缀 100 元/年
服务器GitHub Pages 免费阿里云 ECS 2核4G ~500 元/年
SSL 证书Let's Encrypt 免费Let's Encrypt 免费
CDNCloudflare 免费版Cloudflare Pro $20/月
年费总计约 50 元约 600 元

* 动态网站需要服务器起步 ~500 元/年。静态网站(博客/作品集)用 Vercel/Netlify/GitHub Pages 完全免费。

📚 推荐学习资源

资源链接说明
MDN Web Docsdeveloper.mozilla.org最权威的前端文档
freeCodeCampfreecodecamp.org免费全栈课程 + 项目练习
Next.js 官方教程nextjs.org/learn从零到部署的交互式教程
FastAPI 官方文档fastapi.tiangolo.com最好的 Python Web 框架文档
Docker 官方教程docs.docker.com/get-started容器化入门到实践
Nginx 入门指南nginx.org反向代理 / 负载均衡基础
DigitalOcean 教程digitalocean.com最好的 VPS 运维教程合集