前言
其实是重装了PC和云服务器,清理垃圾(linux用不来,xjb弄了好多莫名奇妙的东西),然后也就把东西重装一遍。
简述
主要就是三步: 1.在本地上装好Hexo 2.本地到云服务器用Git进行传递 3.云服务器用Nginx进行网站的部署
Step1 在本地上装好Hexo
(本Step的指令都是右键Git Bash Here,然后运行) (复制并输入指令时,请忽略之后的第一个空格,因为Git Bash已经有了)
1. 装好Git和Node.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 | 渲染:$ hexo g |
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 | server{ |
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 | ssl_certificate /root/.acme.sh/[your-domain]/[your-domain].cer; |
5. 重启Nginx
service nginx restart