原先是直接把静态网页放在Github Pages上,实现版本管理,一键部署网站,方便的很。奈何在国内访问实在不友好,访问自己的个人网站居然还要科学上网。正好有个云主机一直放着没用(其实最开始是通过wordpress将网站内容放在云主机上管理的,但是它的更新文章方式实在不能忍,就弃了)。既然有了hugo生成静态网页,借助Nginx将这些网页资源放在云主机上生成网站就很简单了。

准备工作:

  • 云主机
  • 域名
  • hugo生成静态网页

上面这些准备就绪,开工!

安装nginx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# update yum package 
yum update
# install nginx
yum install nginx
# start
systemctl start nginx
# enable nginx to start on boot
systemctl enable nginx
# verify status 
systemctl status nginx

将静态网页上传到云主机上

如果是hugo生成的,就是将public目录放上去。并将此路径下的权限改为nginx用户,即nginx配置文件中的user。

1
chown -R nginx:nginx /www

编辑nginx配置文件

找到nginx的配置文件,一般在/etc/nginx下面。主要是要修改server块。同时检查下user变量设置的是否是上一步的用户。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
vi /etc/nginx/nginx.conf
# 按实际情况修改server块
server {
    listen 80;
    server_name your_domain.com www.your_domain.com; # 替换成您的域名

    root /path/to/remote/directory; # 指向您上传博客文件的目录
    index index.html; # 确保指定正确的首页文件名

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

验证配置文件语法:

1
2
3
> nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx服务器

1
systemctl restart nginx

域名配置

在购买域名的地方添加一条A记录,指向云主机公网IP。

Ending

幸运的话,就可以愉快的用域名访问网站了。如果无法访问,需要搜索下可能的问题(比如防火墙有没有拦截这个接口,nginx端口有监听吗等等),然后挨个检查下。如果之前有用github pages 绑定过这个域名,在取消绑定后,最好要清空下浏览器缓存,不然可能绑定关系还在,导致访问失败。

2024.02.18更新

买新的服务器

去年买的阿里云实例要过期了,续费一年要700+。听过国外的服务器便宜,准备整个

VPS(virtual private server) - 国外VPS便宜(最好找支持国内付款方式的)

VPS和云服务器不是一个东西

这次就试试大家推荐的RackNerd(https://my.racknerd.com),美国的服务器。步骤也极其丝滑,选择配置,注册个人账号(因为之前还没有这个网站的账号),支付宝付款,完事就把服务器登录信息发到邮箱里了。

一些网站:

此外,由于换了个服务器,所以需要将原来的内容迁移到新服务器上。遇到了一些新问题,记录如下:

配置完域名后,发现ping带有www头的域名成功,但是没有www头的失败

原因是域名解析只配置了www的,还需要配置@

浏览器访问网站失败,防火墙策略检查

将http和https的防火墙打开,发现可以进来访问了。因为访问的报错换成403权限问题了

访问权限403问题

表示您的 Nginx 服务器收到了请求,但拒绝了该请求的访问。这通常是因为服务器配置的权限限制或访问控制导致的。

目录的权限755和属主没问题,于是查看是否是SELinux设置的问题:

  • sestatus 显示是 enabled , 那就先 setenforce 0 关闭试下
  • 此时浏览器访问主页已经可以了,可以看出就是SELinux配置的问题

但是需要注意:完全禁用 SELinux(将其设置为 disabled)可能会降低系统的安全性。通常情况下,我们建议保持 SELinux 启用,并根据需要调整其安全策略,以提高系统的安全性。

但是。。调整安装策略略复杂,先略过吧,后面了解了再修改

访问url中带中文的会访问失败,纯英文没问题

这可能是因为 Web 服务器(比如 Nginx 或 Apache)默认情况下不支持中文字符的 URL。您可以尝试在 Nginx 配置中使用 charset 指令来指定字符集,以确保中文字符的正确显示

设置了发现没用。才发现是之前因为对应文章名词是中文,压根就没有传到服务器中(会报错)。解决方法:修改ftp软件的encoding为utf8

2025.07.25 更新

ok,又绕回来了。好久没管这个网站了,最近想捡起来,然后发现之前那台vps不能用了,于是花了60+去阿里云买了个轻量服务器水水。

今晚去给域名备案下,等审核中。

这次还是打算用hugo渲染,然后放到服务器上。但忘光光了,所以需要重新捡…

hugo准备

参考 https://hugo.opendocs.io/

  1. 安装hugo 采用homebrew方式,验证安装是否成功hugo version
  2. 安装git 之前安装过了,验证是否安装命令git --version
  3. 按照指引和ai,开始准备
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 建了一个单独的目录用来做web
% cd hugo-web 
% hugo new site my-hugo-site
% ls
my-hugo-site
% cd my-hugo-site 
% git init
% ls
archetypes content hugo.toml layouts themes
assets data i18n static
% cd themes 
% git clone https://github.com/athul/archie.git # 下载一个主题 


# 之前是用软链接的方式把文章链接到content目录下,但是不知为何一直解析不出来
ln -s "xxx/workspace" content
# 那就只能改用渲染时,显式指定路径的方式把
hugo server --contentDir="xxx/workspace"

# 发现还是有七七八八的问题,于是还是老实把文章放到/content/posts底下吧,然后运行hugo
  1. 服务器准备 过程就不赘述了,跟着以前的步骤和AI尝试
  2. 备案信息放到网站页面foot