前言:

阿里巴巴真的太好了,让学生能免费领取一台云ECS服务器,感谢,所以我就将原本部署到GitHub的博客部署到了这台服务器,因为部署到GitHub上实在是太慢了。总结一下这次部署的过程以及域名等问题,因为我也是第一次,所以开始没有少跌坑,希望我总结这篇的博客可以帮助和我一样的新人。

最后希望疫情早日被消灭!!!

武汉加油,中国加油!

一、服务器使用

云服务器管理控制器中的实例便是我们的服务器了
记录本地Hexo博客部署到服务器上_nginx
要做的第一步便是修改SSH连接的密码,在这里便可以修改SSH连接的密码
记录本地Hexo博客部署到服务器上_docker_02
注意下面这个是修改VNC的密码,不是修改SSH密码,一开始就是卡在这里了。。。。记录本地Hexo博客部署到服务器上_git_03

修改成功后,便可以用一些连接SSH的工具进行连接,可以去百度下这里就不多赘述

当连接好之后,比如你想要在服务器中搭建一个wordpress博客,那么新手的话推荐下载宝塔面板,很方便可以一键下载apache,MySQL等,当然也可以自己手动下载,具体的流程也很简单,网上教程也有很多,只需按照人家的操作走就可以了,这里只说一下安全组的问题

比如你MySQL需要3306端口,就必须在安全组中开发这个3306端口
记录本地Hexo博客部署到服务器上_centos_04
授权对象设置为0.0.0.0/0就可以了,具体原因可以去看下大师傅们的博客
记录本地Hexo博客部署到服务器上_服务器_05
了解了这些之后,就开始部署博客!

二、部署博客

环境部署

本地:

win10操作系统
Hexo博客已搭建好(之前是部署在GitHub上的,并非是刚开始搭建)

服务器:

一台云ECS服务器
操作系统: Ubuntu  18.04 64

服务器配置

首先安装gitnginx,Git 用于版本管理和部署,Nginx 用于静态博客托管。

apt-get update
apt-get install git-core nginx
0x01: 创建私有 Git 仓库

/var/repo/ 下,创建一个名为 hexo_static 的裸仓库,然后需要修改用户对目录的权限

sudo mkdir /var/repo/
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/

然后,执行下面的命令:

cd /var/repo/
git init --bare hexo_static.git
0x02:配置 Nginx 托管文件目录

创建 /var/www/hexo 目录,用于 Nginx 托管

sudo mkdir -p /var/www/hexo

#修改目录的所有权和权限
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

#修改 Nginx 的 default 设置
sudo vim /etc/nginx/sites-available/default
...
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/hexo; # 需要修改的部分
    index index.html index.htm;
...
将其中的 root 指令指向 /var/www/hexo 目录

记录本地Hexo博客部署到服务器上_git_06
修改完成之后,重启 Nginx 服务,使改动生效

sudo service nginx restart
0x03:创建 Git 钩子

在服务器上的裸仓库 hexo_static 创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo

#在自动生成的 `hooks` 目录下创建一个新的钩子文件
vim /var/repo/hexo_static.git/hooks/post-receive

#在此文件中添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

#保存退出文件后,需要让该文件变为可执行文件。
chmod +x /var/repo/hexo_static.git/hooks/post-receive

如果以上都配置好后,服务器端的配置基本就结束了,下面就开始配置本地的Hexo

本地Hexo配置

0x01:修改URL

之所以配置本地Hexo是为了自动部署到服务器端的 hexo_static 裸仓库中,_config.yml 为 Hexo 的主配置文件。首先需要修改的便是博客的 URL 地址
记录本地Hexo博客部署到服务器上_服务器_07

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'

url: http://server-ip # 没有绑定域名时填写服务器的实际 IP 地址。
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
0x02: Git 部署

编辑 _config.yml 文件,修改Deployment 部分

deploy:
    type: git
    repo: root@云服务器的IP地址:/var/repo/hexo_static
    branch: master

记录本地Hexo博客部署到服务器上_centos_08
如果到这一步了,那基本就结束了

hexo g && hexo d

但是还是会遇到一些问题,如:在部署时会遇到(这里借用别人的图)
记录本地Hexo博客部署到服务器上_git_09
就类似这种问题,解决方法网上也有,只不过让人看的很晕,还好查到了一位大神的博客,出现这个问题的原因在于,第一次使用SSH连接时,会生成一个认证,储存在客户端的known_hosts中,解决方法就是:

ssh-keygen -R 服务器端的ip地址

这样就可以将报错提示的那行给删掉了,从而可以进行正常的连接

hexo g && hexo d

如果出现这样显示,那就是已经部署好了
记录本地Hexo博客部署到服务器上_git_10

这篇文章大多数操作都是模仿这位大师傅,如果哪里叙述的不是很详细可以参考这位师傅的
在 Ubuntu 14.04 服务器上部署 Hexo 博客


—————————————————更新一下————————————-——————


三、部署到docker中

虽然都是静态内容已经很安全了,但为了方便管理还是把博客放到docker里面,这里记录一下如何放的。

先搜索一下含有nginx服务的centos7镜像并拉取

docker search centos7-nginx
docker pull centos7-nginx

记录本地Hexo博客部署到服务器上_git_11
映射好端口并建好容器数据卷,方便数据在主机和docker容器的传输

docker run -d -p 8888:80  -v /var/www/hexo:/var/www/hexo  7f9e697422eb

接下来进入docker容器中,修改一下nginx的配置

vi /etc/nginx/conf.d/default.conf 

记录本地Hexo博客部署到服务器上_服务器_12
修改好之后就可以退出docker容器了,接下来在主机中进行操作

/var/repo/ 下,创建一个名为 hexo_static 的裸仓库,然后需要修改用户对目录的权限

sudo mkdir /var/repo/
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/

然后,执行下面的命令:

cd /var/repo/
git init --bare hexo_static.git

修改/var/www/hexo目录的所有权和权限

sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

在服务器上的裸仓库 hexo_static 创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo

#在自动生成的 `hooks` 目录下创建一个新的钩子文件
vim /var/repo/hexo_static.git/hooks/post-receive

#在此文件中添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

#保存退出文件后,需要让该文件变为可执行文件。
chmod +x /var/repo/hexo_static.git/hooks/post-receive

如果以上都配置好后,配置一下本地的Hexo就可以了

URL要加上映射的端口
记录本地Hexo博客部署到服务器上_git_13
上传的时候不要映射端口,直接上传到本机服务器上,由数据容器卷共享过去
记录本地Hexo博客部署到服务器上_docker_14
这样就可以了
记录本地Hexo博客部署到服务器上_nginx_15