不如来搞一个Hugo博客

2023-02-03  |  #Hugo  | In 一些经验

vps上只有一个毛毛象,决定把博客也搞到vps上,顺便从hexo换到hugo。

Hugo

安装

为了方便更新blog,我选择在本地新建hugo site,之后再推到vps上就行了。如果使用GitHub不方便的话,也可以直接拷贝public文件夹到服务器哦。 所以首先本地安装一下hugo,这里跟着官方文档走就好啦。 不过如果想在服务器更新博客的话(…),与其用apt install,建议从release页直接下载需要的版本安装,比如我的系统是 Ubuntu 18.04 LTS x64,这里我选择hugo_extended_0.110.0_linux-amd64.deb下载:

$ wget https://github.com/gohugoio/hugo/releases/download/v0.110.0/hugo_extended_0.110.0_linux-amd64.deb

然后安装

$ sudo dpkg -i hugo_extended_0.110.0_linux-amd64.deb

hugo version查看一下当前版本。

安装好之后就可以新建博客啦。

选择使用服务器直接写博客的跳到后面的部署服务器部分。

新建博客

创建site,这里的mysite是新建的site名称,下面命令会直接在当前目录创建文件夹,所以记得先切换目录哈。

$ hugo new site mysite

下面的部分follow官方文档的quick start部分,主题什么的之后更改也可以。

$ cd mysite
$ git init
$ git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
$ echo "theme = 'ananke'" >> config.toml
$ hugo server

可以在成功看到hugo的页面就可以啦。

配置GitHub

复读一下我自己:如果使用GitHub不方便的话,也可以直接拷贝public文件夹到服务器哦,看下一步。

去GitHub新建一个仓库,在本地添加一下remote(所有命令在刚刚新建的site目录下运行)。因为我是ssh登陆GitHub所以这里用ssh的链接举例。建议使用ssh登录啦,方便安全!

$ git remote add origin [email protected]:username/mysite.git
$ git branch -M main

如果只想推public文件夹的话就在本地的site目录下加一个.gitignore文件过滤其他文件夹,这一步可以省略。 接下来本地build一下Hugo,然后推到GitHub的仓库里。

$ hugo
$ git add .
$ git commit -m "hugo"
$ git push -u origin main

ok!

部署服务器

现在来到服务器端。 先来创建一个新用户。这里的blog就是新建用户的用户名。详细信息看情况填写。

$ adduser --disabled-login blog

然后切换一下用户

$ su - blog

接下来可以:

  1. 把刚刚推到GitHub的文件拉下来。

    $ mkdir mysite
    $ cd mysite
    $ git init
    $ git remote add origin [email protected]:username/mysite.git
    $ git branch -M main
    $ git pull origin main
    
  2. 没有用GitHub的话直接拷贝public文件夹,命令是在本地运行而不是服务器哦。

    这里的root@server其中的server改成自己的服务器ip。

    $ scp -r ./public root@server:/home/blog/ 
    
  3. 之前选择在服务器更新博客的可以在这里运行新建博客的命令。

之后在服务器ls -lcheck一下文件,顺便使用pwd来确认一下路径,复制粘贴一下等下配置nginx用。

配置nginx

$ exit
$ cd /etc/nginx/sites-available/

新建配置文件,这里的blog是配置文件的名字,可以随意。

$ vim blog

下面贴出我的配置,其中的example.com要修改成自己的域名哦,我直接用的我毛象域名的二级域名,省钱(。)

还有/home/blog/mysite/public路径也要修改,是刚刚复制粘贴的路径哦。

proxy_cache_path /tmp/blog_nginx levels=1:2 keys_zone=blog:100m max_size=1g inactive=24h;
server {
     listen 80;
     listen [::]:80;
     server_name example.com;

     root /home/blog/mysite/public;
     index index.html index.xml;

     access_log /var/log/nginx/blog-access.log;
     error_log /var/log/nginx/blog-error.log;
     
     location / {
     }
	
}
server {    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    root /home/blog/mysite/public;
}

然后把配置文件同步到sites-enabled文件夹下:

$ ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog

没有ssl的话加一下,这里跟着毛象的教程走就可以。

$ certbot --nginx -d example.com

到这里nginx部分就配置完成了,check一下没有语法错误

$ nginx -t

没问题的话reload nginx:

$ systemctl reload nginx

结束!这样就可以成功访问啦。