网站首页 > 精选教程 正文
之前个人博客一直挂在 github pages 或者 coding pages 下面,之前在百度云上买了一台云服务器,闲着也是闲着,就将个人博客转到这上面来吧。
本文从一个纯净的 ubuntu 系统开始,到最后的上线,主要涉及以下内容
- 云服务器上 git 环境的搭建
- 云服务器上 nginx 的设置
- 云服务器上 https 证书的设置
- 本地 hexo 提交到云服务器
- 云服务器 git 钩子设置
- 设置图片防盗链
一步一步来,我买的是 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
生成证书,会有几个步骤
- 输入邮箱,随意填
- 是否同意许可,Y
- 是否分享你的电子邮件 N
- 选择哪个域名需要添加证书,这里输入列出的编号
- 是否将 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
猜你喜欢
- 2024-10-23 这款Spring Boot + Vue开源博客系统实战项目太赞了!
- 2024-10-23 不会写文档,叫什么高级程序员 不会写文书怎么办
- 2024-10-23 重构于 Vite:我如何做 SSG、静态资源发布以及自动化部署
- 2024-10-23 运维必备 - 防御 dos 攻击利器fail2ban
- 2024-10-23 前端系列——博客搭建以及http事务
- 2024-10-23 Docsify无需编译快速在线浏览项目文档,支持搜搜热更新
- 2024-10-23 前端Nodejs需要了解的学习内容 前端node重要吗
- 2024-10-23 博客引擎 hugo intro 入门介绍+安装笔记
- 2024-10-23 一年时间,3万行Go代码,我写了一个博客程序
- 2024-10-23 GET 新技能!自己的网站突然就不香了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)