JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

ubuntu18.04部署hexo博客 ubuntu20.04安装教程

wys521 2024-10-23 15:54:02 精选教程 22 ℃ 0 评论


之前个人博客一直挂在 github pages 或者 coding pages 下面,之前在百度云上买了一台云服务器,闲着也是闲着,就将个人博客转到这上面来吧。

本文从一个纯净的 ubuntu 系统开始,到最后的上线,主要涉及以下内容

  1. 云服务器上 git 环境的搭建
  2. 云服务器上 nginx 的设置
  3. 云服务器上 https 证书的设置
  4. 本地 hexo 提交到云服务器
  5. 云服务器 git 钩子设置
  6. 设置图片防盗链

一步一步来,我买的是 ubuntu 18.04 x64

一、云服务器上 git 环境的搭建

1.1 安装 git

# apt-get update
# apt-get install git

1.2 初始化 git 仓库

root@instance-tgmmsl5q:~# mkdir myblog
root@instance-tgmmsl5q:~# chown -R $USER:$USER myblog/
root@instance-tgmmsl5q:~# chmod -R 755 myblog/
root@instance-tgmmsl5q:~# cd myblog/
root@instance-tgmmsl5q:~/myblog# git init --bare hexo_blog.git
Initialized empty Git repository in /root/myblog/hexo_blog.git/

这时我们就创建了一个空的 git 仓库

二、设置 nginx 环境

2.1 安装 nginx

# apt-get update
# apt-get install nginx

2.2 设置 nginx 环境

我们将 hexo 的 index 目录设置为 /var/www/myblog

root@instance-tgmmsl5q:~/myblog# cd /var/www/
root@instance-tgmmsl5q:/var/www# mkdir myblog
root@instance-tgmmsl5q:/var/www# chown -R $USER:$USER myblog/
root@instance-tgmmsl5q:/var/www# chmod -R 755 myblog/

2.3 绑定域名

需要将 www.yangyanxing.com 的域名指向/var/www/myblog

在/etc/nginx/sites-available创建 yangyanxing.com 文件,写入

server {
        listen 80;
        listen [::]:80;

        server_name www.yangyanxing.com;

        root /var/www/myblog;
        index index.html;

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

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        access_log off;
        expires 1d;
    }
    location ~ \.(js|css) {
       access_log off;
       expires 1d;
    }
}

然后创建一个链接文件 ln -s /etc/nginx/sites-available/yangyanxing.com /etc/nginx/sites-enabled/

重启 nignx sytemctl restart nginx , 在/var/www/myblog 目录下写一个 index.html 文件,然后再访问一下 www.yangyanxing.com 查看 nginx 域名设置是否生效,如果是你设置的 index.html 则说明生效了.

三、云服务器上 https 证书的设置

添加 certbot 源

add-apt-repository ppa:certbot/certbot

安装 certbot

apt-get update && apt-get install python-certbot-nginx -y

生成证书,会有几个步骤

  1. 输入邮箱,随意填
  2. 是否同意许可,Y
  3. 是否分享你的电子邮件 N
  4. 选择哪个域名需要添加证书,这里输入列出的编号
  5. 是否将 http 强制跳转到 https,我选是 2

执行完脚本以后,我们再浏览器中刷新一下,之前的 http 就自动跳转到了 https 则说明设置 https 成功。

Let's Encrypt 签发的 SSL 证书有效期只有 90 天,所以在过期之前,需要自动更新 SSL 证书。最新版 certbot 会自动添加更新脚本到 /etc/cron.d 里,此脚本每隔 12 小时运行一次,并将续订任何在 30 天内到期的证书。输入以下命令检测自动续签是否工作:

certbot renew --dry-run

命令运行后如果没有报错,即说明自动续签可以正常工作。

四、本地 hexo 提交到云服务器

在第一步中初始化 git 仓库以后,服务器上的地址为/root/myblog/hexo_blog.git

我们是可以得到 git 的地址为你的服务器用户名@云服务器的IP地址:/root/myblog/hexo_blog.git

先本地 clone 一下这个项目,前提是需要将本机的公钥文件 id_rsa.pub 复制到云服务器中的 authorized_keys 文件里。

设置本地 hexo 的_config.yml 文件

deploy:
-  type: git
   repo: `你的服务器用户名@云服务器的IP地址:/root/myblog/hexo_blog.git`
   branch: master

然后就可以使用hexo d 来提交部署,如果没有报错,则继续往下走。

五、云服务器 git 钩子设置

云服务器上的 git 的钩子设置是为了将提交上来的文件,将其拷贝到第二步中 nginx 设置的域名目录

创建 /root/myblog/hexo_blog.git/hooks/post-receive

设置为

#!/bin/bash
git --work-tree=/var/www/myblog --git-dir=/root/myblog/hexo_blog.git checkout -f

保存退出,并添加执行权限,之后再 hexo d 提交一下,看看是否可以正常自动部署了!

六、设置图片防盗链

其实经过上面几步的操作以后,基本上已经完成了 hexo 向云服务器自动部署了,但是可以再做一些优化,比如图片防盗链.

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        access_log off;
        expires 1d;
        valid_referers none server_names *.yangyanxing.com;
        if ($invalid_referer){
            rewrite ^/ http://ww1.sinaimg.cn/large/795ab47fly1g4a6llk7wjj20c808174s.jpg;
        }
    }

valid_referers 这行的作用是配置可以识别 refer,即可以正常获取资源文件的请求,「在这里配置加入白名单的请求 refer 域名」。 参数说明:

  • 「none」 代表请求的 refer 为空,也就是直接访问,比如在浏览器中直接访问图片 www.yangyanxing.com/test1.png,直接访问时,refer 会为空。
  • 「blocked」 refer 来源不为空,但是里面的值被代理或者防火墙删除了
  • 「server_names」 refer 来源包含当前的 server_names 即 location 的父节点 server 节点的 server_name 的值。
  • 「字符串」 定义服务器名称,比如 *.test1.com,配置后,来源是从 test1.com 就会被认为是合法的请求。
  • 「正则表达式」 匹配合法请求来源, 如 ~\.test2\.

当请求的 refer 是合法的,即可以被后面任一参数所匹配, $invalid_referer 的值为 0, 若不匹配则值为 1, 进入 if 的代码中。我这里的设置是,如果是不合法的请求,就统一返回一张图片,也可以直接返回 403。

参考文章

[1]

在 Ubuntu18.04 服务器上部署 Hexo 博客: https://www.xuhuiblog.cn/Hexo/%E5%9C%A8Ubuntu18-04%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E9%83%A8%E7%BD%B2Hexo%E5%8D%9A%E5%AE%A2/

[2]

图片防盗链: https://www.cnblogs.com/vcmq/p/9484385.html

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表