cyilin / 博客迁移记录二

Created Sun, 23 Nov 2025 02:45:03 +0800 Modified Sun, 14 Dec 2025 23:57:20 +0800

前言

最近终于是从工作中解放出一段时间来收拾一下博客了。回头一看上一篇章博客,发现自己对博客发布步骤几乎等于没写,想来应该是当时为了赶时间而一笔带过。于是今天就将这一篇文章写完,也算是凑齐了步骤。

将博客运转在服务器上

在上一篇文章《博客迁移记录》中已经很明确的说明了,hugo本质上就是一个静态页面生成器,因此我们需要寻找类似github page或者自建nginx这种静态页面托管平台。

github page

github page是github的一项免费服务,可以直接对仓库进行静态页面部署,步骤也不算复杂。

建立仓库

前往Git安装一个git工具,并到GitHub上注册一个账号。

点击右上角的+符号,点击New repository来新建一个仓库,仓库名称是填写<用户名>.github.io,例如:我的github名称叫cyilin36,那么我就需要填写cyilin36.github.io。如果填写了其他的仓库名称,那么后续博客的地址会变成<用户名>.github.io/仓库名称,因此主要博客请务必按照求填写。

Choose visibility项请务必选择public,不然是没办法部署page的。

确认后会看到网页出现类似这样的命令后,就可以回到电脑资源管理器继续后续操作。此时github网页不要关闭,后续需要复制这些命令。

上传文件

回到hugo项目的主目录(blog文件夹)下,打开hugo.toml文件,将其中的baseURL写入自己的博客地址:baseURL = https://<用户名>.github.io,然后在资源管理器地址栏输入cmd打开终端,输入指令hugo重新生一份正在要部署的静态网页文件。

输入cd public来到public文件夹 ,再将刚刚github网页上的命令一条一条的粘贴到终端中,一条一个回车确认。第二条git add README.md需要改成git add .,其余的全部照抄即可。

上传完成后,回到github刷新仓库,就可以发现已经变成一般项目的样子了。点击setting→pages,在Branch选择主分支main,然后点击save进行保存并部署。

等待一会,刷新该页面,如果出现类似这种卡片便证明成功。可以点击继续确认一下。

更新网页

后续更新博客也需要对静态网站文件进行推送更新。

git add .
git commit -m "更新了一篇博客"
git push -u origin main

nginx

如果是想部署在自己的服务器上,那最方便的便是自建一个nginx。我们只需要安装、上传资源并写好配置就可以了。

安装nginx

为了方便迁移,我选择了docker安装nginx,并写成了docker-compose.yml

mkdir nginx && cd nginx
nano docker-compose.yml

写入以下内容并保存。

services:
  nginx:
    image: nginx:stable-perl
    container_name: hugo-nginx
    ports:
      - "80:80"  # 将主机的 80 端口映射到容器的 80 端口
    volumes:
      # 将你的 public 文件夹映射到容器的 Nginx 网站根目录
      - ./public:/usr/share/nginx/html
      - ./nginx.conf:/etc/nginx/nginx.conf:ro  # 映射自定义配置文件
    restart: always

配置nginx

还是跟github page部署的流程一样,首先需要编辑hugo.tomlbaseURL参数,写成自己的域名。

然后到blog文件夹下,将public文件夹上传到nginx目录(docker-compose.yml所在目录)下。回到本地电脑的资源管理器地址栏输入cmd,再输入以下命令。

scp -r public <服务器用户名>@<服务器ip>:<docker-compose.yml文件所在路径>

输入该用户的密码即可上传。

回到服务器操作,来到nginx目录下,写nginx的配置文件nano nginx.conf

user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush      on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

    # Hugo 网站配置
    server {
        listen 80;
        server_name <你的域名>;

        root /usr/share/nginx/html;
        index index.html;

        location / {
            try_files $uri $uri/ =404;
        }
    }
}

随后启动docker便是大功告成.

docker compose up -d

更新网页

更新网页需要删除务器nginx/public下的所有文件,并将本地电脑的public文件还再度上传即可。