云服务器部署数字花园

1 云服务器获取

阿里云买,现在有活动,99一年,或者免费试用三个月
好像学生认真有300块钱的优惠券

2 云服务器配置

云服务器一般会有ssh连接方式,连接上以后就可以用这篇文章的方法
记得要先去安全组里新建规则把连接端口放开

3 数字花园部署

把云服务器当本地机器来部署:本地部署数字花园

数字花园网站的本地部署方案

为什么要本地部署:因为netlify的免费部署方案是有限制的,我不想这么快把限制用完
另外我可以把网站部署到学校的服务器里,这样校内的我或者同学都可以访问

进一步思考一下,自己弄云服务器,自己搭建的方案
现在阿里云的服务器,学生认证后,可以免费使用一年,可以用来部署自己的网站,所以我也许过段时间会将数字花园部署到阿里云
但是自己部署的话,买云服务器、买域名、备案,又有得折腾了
...a few moment later...
不过现在开始正式将数字花园部署到阿里云了

数字花园网站本地手动部署方案

1. 获取网站源码

有两种方法:

  1. 通过 Obsidian 的 obsidian-publish 插件将笔记发布到本地(目前没有尝试这个方法)
  2. 通过 GitHub 部署(推荐):
    源码模板的获取:
    如果之前用netlify或者vercel部署过,github里面就已经有模板(记得断开netlify的自动部署连接哦)
    否则模板要去数字花园官方的github克隆到你的github:git clone https://github.com/oleeskild/digitalgarden
    通过 Obsidian 的 obsidian-publish 插件将笔记发布到GitHub,再将源码克隆到本地

git clone https://github.com/czc6666/digitalgarden.git

在笔记修改重新发布后,可以通过`git pull`命令更新本地源码
> 💡 我选择在 WSL 中克隆并操作,因此以下步骤基于 Linux 环境(Windows 操作方法会略有不同)

## 2. 环境准备

### 2.1 安装基础环境
```bash
# 更新包列表
sudo apt update

# 安装 Node.js 和 npm
sudo apt install nodejs npm

2.2 安装 Node.js

# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc

# 安装并使用 LTS 版本的 Node.js
nvm install --lts
nvm use --lts

3. 项目部署

3.1 安装项目依赖

# 切换到源码目录
cd digitalgarden/

# 清理旧的依赖
rm -rf node_modules package-lock.json

# 安装新的依赖
npm install

npm install 卡住不动怎么办npm install 卡住不动?这里有7个解决方法助你一臂之力_npm install没反应-CSDN博客

3.2 构建项目

npm run build

3.3 启动http服务器

# 安装 http-server
npm install -g http-server

# 启动本地服务器
http-server dist

用这个命令:http-server dist,开启的http服务器会在命令行关闭后关闭,用下面3.4里说的pm2开服务器可以实现服务器的后台运行

4. 本地预览

在浏览器中访问 127.0.0.1 即可查看网站。

5. 在笔记更新后:更新本地源码

在笔记修改重新发布后,可以通过git pull命令更新本地源码

git pull

更新源码后需要重新构建项目和启动http服务器

npm run build
http-server dist

程序自动化实现

原理:连接ssh服务器,执行命令自动化部署

功能:

  • 运行后询问输入ssh连接的ip,如直接回车,默认ip是127.0.0.1

  • 询问输入端口号,直接回车默认22

  • 询问我输入用户名,如直接回车,默认用户名是czc

  • 然后询问我输入密码

  • 接着询问我是否第一次提交(第一次需要git clone,第二次及以后只需要git pull你说是吧)

    • 所以这里询问我是否是第一次提交,输入1就用git clone方法,默认是git pull 方法
  • 然后就开始自动部署了

实现的代码:(注意服务器的网络环境能否正常下包和访问github

原本这里是代码,但是代码有问题,删掉了

注意:
代码执行到这部分后

执行命令:
                    cd ~/digitalgarden
                    rm -rf node_modules package-lock.json
                    npm install

会卡住一段时间
因为npm install需要较长时间
建议npm换源,会快很多

把下面的3.4插入本地部署数字花园,就构成云服务器源码的部署方案
所以笔记到这,默认已经部署好基本的http服务器并能在8080端口访问

3.4 设置本地反向代理(Nginx、pm2)

http服务器默认启动后使用8080端口
但是这样要访问服务器只能通过 ip:8080 才能访问,如果只输入ip或者域名,默认是访问80端口,但是80端口啥都没有,所以,,要设置个代理,把ip或者域名的80端口的访问转到 127.0.0.1:8080 去

当然,如果怕麻烦也可以不做这步,这只是锦上添花

3.4.1 安装必要软件

# 更新系统包
sudo apt update

# 安装 nginx
sudo apt install nginx

# 安装 pm2 (如果还没安装)
npm install -g pm2

启动网站服务

# 进入项目目录
cd ~/digitalgarden

# 使用 pm2 启动服务(8080端口)
pm2 start http-server -- dist -p 8080 --name "digitalgarden"

# 检查服务是否正常运行
pm2 status

# 设置开机自启
pm2 startup
pm2 save

配置 Nginx

创建 Nginx 配置文件:

sudo vim /etc/nginx/sites-available/digitalgarden

关于vim编辑器的使用:vim编辑器

添加以下配置:

server {
    listen 80;
    server_name czchd.us.kg;  # 替换成你的域名

    access_log /var/log/nginx/digitalgarden.access.log;
    error_log /var/log/nginx/digitalgarden.error.log;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        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;
    }
}

启用配置:

# 创建符号链接
sudo ln -s /etc/nginx/sites-available/digitalgarden /etc/nginx/sites-enabled/

# 删除默认配置(可选)
sudo rm /etc/nginx/sites-enabled/default

# 测试配置是否正确
sudo nginx -t

# 如果测试通过,重启 nginx
sudo systemctl restart nginx

检查服务状态

# 检查 nginx 状态
sudo systemctl status nginx

# 检查 pm2 状态
pm2 status

# 查看 nginx 错误日志
sudo tail -f /var/log/nginx/error.log

# 查看应用日志
pm2 logs digitalgarden

常用维护命令

# Nginx 相关命令
sudo systemctl start nginx    # 启动 nginx
sudo systemctl stop nginx     # 停止 nginx
sudo systemctl restart nginx  # 重启 nginx
sudo systemctl reload nginx   # 重新加载配置

# PM2 相关命令
pm2 restart digitalgarden     # 重启应用
pm2 stop digitalgarden       # 停止应用
pm2 delete digitalgarden     # 删除应用
pm2 logs digitalgarden       # 查看日志

可选(我没选):配置SSL(HTTPS)

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

# 获取证书并自动配置 nginx
sudo certbot --nginx -d czchd.us.kg

4 知识库更新后的数字花园更新流程

# 查看当前运行的服务
pm2 list

# 停止服务
# 方式一:通过名称停止
pm2 stop digitalgarden    # 如果你之前用这个名称启动了服务
# 方式二:通过 id 停止
pm2 stop 0    # 0 是服务的 id 号
# 方式三:停止所有服务
pm2 stop all

# 更新代码并重启服务
# 1. 停止服务
pm2 stop digitalgarden
# 2. git 更新
cd ~/digitalgarden
git pull
# 3. 重新构建(如果需要)
npm run build
# 4. 重启服务
pm2 restart digitalgarden
# 或者重新启动服务
pm2 start http-server -- dist -p 8080 --name "digitalgarden"

查看日志(确认服务正常)
pm2 logs digitalgarden

如果想完全删除服务(不仅是停止),可以使用:
pm2 delete digitalgarden

5 域名申请

阿里云买域名
选择喜欢的域名,购买,如果没有模板实名认证过,不能支付
创建模板实名认证,等几分钟通过后
支付后就拥有这个域名了,可以配置DNS解析

注意,购买到域名后还要去实名备案,备案后通过域名访问网站才能正常打开,否则会是被拦截的警告

6 配置DNS解析

阿里云控制台添加权威域名解析,将你的域名和云服务器的公网ip填进去