使用Hugo+Nginx应该是搭建网站最快的方法之一了。Hugo帮助我们将markdown文件装换成HTML静态文件,然后Nginx作为Web服务器将静态HTML文件发布到互联网上。

对比Wordpress,安装时,不用PHP和MySQL,只需要hugo和Nginx,以及用certbot配置https;迁移时,不用数据备份,只需要同步git仓库。

如果只是用于内容分享,类似博客一样的网站,Hugo+Nginx的方式,无疑是一个不错的选择。

Hugo

安装

大多Linux发行版本,都支持用命令行安装Hugo。这里只列出了Ubuntu和Arch Linux,跟多查看:

Debian and Ubuntu

1
sudo apt-get install hugo

Arch Linux

1
sudo pacman -S hugo

创建新站点

安装好Hugo, 使用hugo new site命令快速创建一个新站点。

1
hugo new site mywebsite

git仓库

此时,我们就可以初始化git仓库,管理站点更新版本。我们可以用github或gitee作中心仓库。

1
2
3
4
5
6
cd mywebsite
git init
git add .
git commit -m 'init'
git remote add origin git@gitee.com:xxx/mywebsite.git
git push -u origin master

theme主题

有很多现成的主题可以用于美化我们的网站: https://themes.gohugo.io/。我们只要将主题相关代码放到themes目录下即可。

这里我们用submodule将主题以子项目的形式添加到当前站点项目中。

1
git submodule add https://github.com/olOwOlo/hugo-theme-even themes/even

需要注意的是,如果包含子项目(submodule),克隆(clone)时需要参数--recursive

1
git clone --recursive git@gitee.com:xxx/mywebsite.git

1
2
git submodule init
git submodule update

添加好主题,需要相应的修改配置文件config.toml。主题大多提供配置文件的模板,可以直接在模板配置文件基础进行修改。

1
cp themes/even/exampleSite/config.toml ./

创建第一个marddown文件

通过下面的命令,Hugo帮助我们在content目录下创建了一个markdown文件。

1
hugo new post/first.md

预览修改

在站点目录下执行下面的命令,在本地允许服务器,通过网址http://localhost:1313实时查看修改后的markdown文件所生成的静态HTML网页。

1
hugo server

生成静态网页

只要在站点目录下执行hugo(不带任何参数)即可。静态页面会生成在目录public下。

1
hugo

Nginx

安装

以Ubuntu为例,我们可以通过命令行工具apt安装。

1
sudo apt install nginx

配置网站服务

修改nginx配置文件/etc/nginx/nginx.conf, 将下面代码相应修改后,放入http{...}区块中。如何配置Nginx,更多请查看:https://nginx.org/en/docs/beginners_guide.html

需要注意的是,需要将nginx网站服务的root地址,指向Hugo站点的public目录,即,生成静态HTML文件的目录。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
server {
    listen    80;
    server_name    www.mywebsite.cn;
    return 301 $scheme://mywebsite.cn$request_uri;  
}

server {    
    listen  80;
    server_name mywebsite.cn;
    access_log  /home/xxx/space/doc/mywebsite.cn/log/access.log.gz combined gzip; 
    error_log /home/xxx/space/doc/mywebsite.cn/log/error.log;   
    client_max_body_size 20M;   
    location / {       
        index   index.html;                
        root    /home/xxx/space/doc/mywebsite.cn/public;    
    }                                                                                
    location ~ /\.ht {                                                         
        deny all;                                                               
    }                                                                          
}                                                                                 

Let’s encrypt - https - certbot

我们可以用工具cerbot为网址安装免费的安全证书。

安装snap

snap是夸Linux不同发行版本包安装管理工具。

1
sudo apt install snap

更新snap

1
sudo snap install core; sudo snap refresh core

安装cerbot

1
2
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

安装证书

1
sudo certbot --nginx

更多查看: https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx

域名访问

最后,如果一起正常,我们就可以通过域名访问我们的网站。

Thank you