Skip to content

Repository files navigation

我的网站(yangxizhe.com)

杨曦哲的个人站点源码仓库:基于 Next.js 16 + TypeScript + Tailwind CSS。

你需要准备的内容(你来写)

所有展示文案集中在 src/content/site-profile.ts,改完保存即可在本地 npm run dev 预览。

建议按下面清单写(可中英文任选,保持一致即可):

区块 写什么
eyebrow 顶部小字:域名、一句 tagline
headlineLead / headlineAccent 名字 + 一句话定位(例如「全栈 / 设计 + 前端」)
intro 1~3 句:你是谁、在做什么、访客能在这里看到什么
tags 3~8 个技能或关键词
primaryLinks GitHub、邮箱(mailto:)、作品集、简历 PDF 等
experience 时间倒序:每段写 periodroleorg、若干 bullets(动词开头 + 技术 + 结果)

站点标题与描述(浏览器标签、SEO)在 src/app/layout.tsxmetadata 里,可与主页文案保持一致。

本地开发

npm install
npm run dev

浏览器打开 http://localhost:3000

生产构建

npm run build
npm run start

项目启用了 output: "standalone",适合部署到 VPS。

AI 夸夸/吐槽墙

首页底部的互动墙需要配置 OpenAI 兼容 API(见 .env.example):

变量 说明
AI_API_KEY 必填(智谱开放平台 API Key)
AI_BASE_URL 默认 https://open.bigmodel.cn/api/paas/v4
AI_MODEL 默认 GLM-4-Flash-250414(免费)
AI_WALL_DATA_PATH 可选;卡片 JSON 路径,默认 data/ai-wall.json

生产环境请保证该路径可写(PM2 用户对 data/ 有写权限)。

上墙流程:访客提交 → AI 审原话 → 通过后写入原话;AI 回复仅作附注(失败不影响上墙)。违规返回 422,不上墙。

推送到 GitHub(首次)

在 GitHub 新建空仓库(不要勾选添加 README),然后在你电脑上的项目目录执行(把 URL 换成你的):

git remote add origin https://github.com/<你的用户名>/<仓库名>.git
git branch -M main
git add .
git commit -m "Initial personal site"
git push -u origin main

香港服务器部署(Ubuntu 22.04/24.04)

以下在 VPS 的 SSH 终端里执行。会安装 Node、Nginx、PM2、Certbot;请把 GIT_REPO_URL 换成你的仓库 HTTPS 或 SSH 地址。

安全说明curl | sudo bash 会执行 NodeSource 的安装脚本;若你介意,可改用 nvm 自行装 Node,再跳过前两行中的 NodeSource 部分。

export GIT_REPO_URL="https://github.com/yxz6811/my-website.git"

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg nginx git
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g pm2

sudo mkdir -p /var/www
sudo rm -rf /var/www/yangxizhe.com
sudo git clone "$GIT_REPO_URL" /var/www/yangxizhe.com
cd /var/www/yangxizhe.com
sudo chown -R "$USER:$USER" /var/www/yangxizhe.com
npm install
npm run build

pm2 delete yangxizhe-site 2>/dev/null || true
pm2 start npm --name yangxizhe-site -- start
pm2 save
pm2 startup systemd -u "$USER" --hp "$HOME"

sudo tee /etc/nginx/sites-available/yangxizhe.com >/dev/null <<'NGINX'
server {
    listen 80;
    server_name yangxizhe.com www.yangxizhe.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}
NGINX

sudo ln -sf /etc/nginx/sites-available/yangxizhe.com /etc/nginx/sites-enabled/yangxizhe.com
sudo nginx -t && sudo systemctl reload nginx

sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yangxizhe.com -d www.yangxizhe.com

按提示同意条款并填写邮箱(用于证书到期提醒)。若域名尚未解析到本机,请先完成 Dynadot DNS 再执行 Certbot。

防火墙(若启用了 ufw)

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

以后更新网站

在 VPS 上:

cd /var/www/yangxizhe.com
git pull
npm install
npm run build
pm2 restart yangxizhe-site

GitHub Actions 自动部署(推荐)

如果你希望每次推送 main 自动发布到 yangxizhe.com,可以使用仓库内置工作流:

  • 工作流文件:.github/workflows/deploy-vps.yml
  • 触发条件:push 到 main(也支持手动触发)

你需要在 GitHub 仓库 Settings -> Secrets and variables -> Actions 添加以下 Secrets:

  • VPS_HOST:服务器 IP(例如 193.134.211.194
  • VPS_USER:服务器登录用户(例如 ubuntu
  • VPS_PORT:SSH 端口(通常 22
  • VPS_SSH_KEY:用于登录服务器的私钥全文

工作流执行命令:

cd /var/www/yangxizhe.com
git pull --ff-only origin main
npm ci
npm run build
pm2 restart yangxizhe-site

Dynadot DNS 配置

在 Dynadot 的 DNS 管理里添加:

  • A 记录:@ -> 193.134.211.194
  • CNAME 记录:www -> yangxizhe.com

如果你用了 Cloudflare 管理 DNS,则在 Cloudflare 里添加同样记录即可。

常用运维命令

pm2 status
pm2 logs yangxizhe-site
pm2 restart yangxizhe-site

About

My official website

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages