离梦之殇 如梦之境

认清自我,扩展边界.
To See Outer. To See Inner.

重新安装Hexo,并部署到云服务器

前言

其实是重装了PC和云服务器,清理垃圾(linux用不来,xjb弄了好多莫名奇妙的东西),然后也就把东西重装一遍。

简述

主要就是三步: 1.在本地上装好Hexo 2.本地到云服务器用Git进行传递 3.云服务器用Nginx进行网站的部署

Step1 在本地上装好Hexo

(本Step的指令都是右键Git Bash Here,然后运行) (复制并输入指令时,请忽略之后的第一个空格,因为Git Bash已经有了)

1. 装好GitNode.js

懂的都懂

2. 安装Hexo的库。

$ npm install -g hexo-cli

3. 生成hexo的工作文件夹。

$ hexo init [文件夹路径]

(如省略,则默认在右键开启Git Bash的文件夹生成)

4. 进入工作文件夹。

$ cd [文件夹路径]

(第3步如果省略的话,那么当前已经是在工作文件夹了)

5. 安装git部署库

$ npm install hexo-deployer-git --save

6. 为了用密钥登陆,要生成公钥和密钥。

$ ssh-keygen -t rsa

常用的指令

1
2
3
渲染:$ hexo g
本地服务器:$ hexo s
远程部署(git):$ hexo d

Step2 用Git进行部署

首先要登录到云服务器的root。

1. 安装Git

apt-get install git

2. Git用户

  • 1.创建git用户 adduser git
  • 2.修改git权限
    • 修改sudoers的文件权限,使其可以修改 chmod 740 /etc/sudoers

    • 进入sudoers文件 vim /etc/sudoers 先按i,进入输入状态。 最后加上一行git ALL=(ALL) 。 按Esc退出输出状态。 再输入“:wq” ,退出并保存。

    • 修改sudoers的文件权限,使其不可以修改 chmod 440 /etc/sudoers

3. 公钥

  • 1.进入git用户 su git
  • 2.进入git根目录文件夹 cd ~
  • 3.创建公钥文件夹 mkdir .ssh
  • 4.创建公钥文件 vim ./.ssh/authorized_keys
    • 将之前在本地电脑生成的公钥内容(id_rsa.pub)复制到这个文件
    • id_rsa.pub 一般会在C:\[Your Name]\.ssh 里,或者可以直接搜索这个文件

4. git仓库

  • 1.创建hexo.git文件夹 mkdir hexo.git
  • 2.进入hexo.git文件夹 cd hexo.git
  • 3.建立git仓库 git init --bare

5. Hexo静态网址仓库

  • 1.切换回root用户(指令中的root可以去掉,因为是默认) su root

  • 2.创建hexo静态网址文件夹 mkdir /var/www/hexo

  • 3.给予git用户相关权限 chown git:git -R /var/www/hexo

  • 4.切换回git用户 su git

  • 5.git hooks

    • 创建hooks文件 vim /home/git/hexo.git/hooks/post-receive

    • 添加内容

      1
      2
      3
      4
      5
      6
      7
      8
      #!/bin/bash
      GIT_REPO=/home/git/hexo.git
      TMP_GIT_CLONE=/tmp/hexo
      PUBLIC_WWW=/var/www/hexo
      rm -rf \${TMP_GIT_CLONE}
      git clone \$GIT_REPO \$TMP_GIT_CLONE
      rm -rf \${PUBLIC_WWW}/*
      cp -rf \${TMP_GIT_CLONE}/* \${PUBLIC_WWW}
    • 为hooks文件添加运行权限 chmod +x /home/git/hexo.git/hooks/post-receive

6.另外

部署Hexo需要在本地电脑运行,见Step1结尾

Step3 Nginx部署静态网站

1. 安装Nginx

apt-get install nginx

2. 网站配置文件

vim /etc/nginx/sites-enabled/default

文件中有一些示例,要先用#注释或删除,然后在添加内容

1
2
3
4
5
6
7
8
9
10
11
12
13
server{
listen 80;
listen [::]:80;

server_name yourDomain;

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

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

3. 重启Nginx

service nginx restart

4. 完毕

可以用域名或者服务器ip地址访问了。 但是如果被和我一样,因为没有备份然后被运营商拦截了,可以考虑下面Step4,加密之后就不会被拦截了

(附加)Step4.添加CA证书进行加密

参考并使用Neilpang/acme.sh,下面简易介绍。

0. 为了方便,和避免出问题,切换到root

su root

1. 安装acme.sh

curl https://get.acme.sh | sh

2. 添加简写链接

alias acme.sh=/root/.acme.sh/acme.sh

3. 域名和服务器所有权证明

  • 1.生成TXT验证字段 如果有多个域名,可以在第一个域名后面再加上"-d [your-other-domain]",注意空格隔开。 acme.sh --issue -d [your-domain] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
  • 2.添加TXT记录(输出已经讲的很清楚了) 在域名的DNS解析管理里给_acme-challenge.[your-domain]添加TXT记录。 内容来自输出,字段已经高亮显示。
  • 3.生成CA证书 acme.sh --renew -d [your-domain] --yes-I-know-dns-manual-mode-enough-go-ahead-please 证书会在/root/.acme.sh/[your-domain]/[your-domain].cer

4. 配置CA证书到Nginx(修改网站配置文件)

  • 将 listen 的"80"改成"443 ssl"
  • 然后在下面添加
1
2
ssl_certificate	/root/.acme.sh/[your-domain]/[your-domain].cer;
ssl_certificate_key /root/.acme.sh/[your-domain]/[your-domain].key;

5. 重启Nginx

service nginx restart

Proudly powered by Hexo and Theme by Hacker
© 2022 Rainbow Yang