如何在服务器上搭建自己的 Hexo 博客

本文稍长,旨在教会你怎么在自己的服务器上挂上自己的博客,并且在本地只需要写完md,然后即可迅速推送自己的文章。

1
首先我们把操作分成客户端的操作和服务器上的操作。

客户端操作如下(即你本地的电脑上):

我们需要用git来部署我们生成的代码服务器上,所以,让我们先愉快地去下载一个git本体和tortoise git,这两个能让我们将hexo生成的网站直接部署到服务器上。

下载完毕后,将git的目录加入到系统path中,方便使用git命令,然后tortoisegit的安装过程中需要注意各个选项的选择,在这里就不展开了。

那么,让我们找到git bash,在哪?在git的安装目录下。双击运行/在CMD中输入git bash。而后

输入以下代码:

1
ls -al ~/.ssh  //如果这里报错,就证明你并没有生成过.ssh文件,请进入下一步,否则直接跳到第三步

在git bash中直接输入

1
ssh-keygen -t rsa -C "your_email@example.com"

而后它应该会显示,你是否想装到特定的目录.ssh中,如下所示:

1
2
3
ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home_path/.ssh/id_rsa):

生成完毕以后。这个原材料先放在一边等着。

好了,现在让我们把这个备用一下,准备另外的原材料:本地的nodejs环境搭建

请看完这个以后再返回到这个页面。


接下来你编写md文件,用特定的一定的模板即可快速获得你所需要的页面。

你想部署了?桥 豆 麻 袋,你得先配置服务器。


现在让我们开始进行服务器的操作。如下

让我们先进入我们的服务器,根据个人系统的不同输入下列代码:

1
2
3
yum update

yum install screen git wget net-tools //Centos

当前使用的脚本并不支持ubuntu

1
apt-get install screen git wget net-tools    //ubuntu&debian

然后如果你想使用LNMP的话,请自行到LNMP.sh官网安装一键脚本,建议不要安装数据库,因为就算不用,也占着太多内存。

所以,我们现在开始真正的简单的nginx 的安装方法。

(以下脚本并非是本人所写@我是王掌柜

1
2
wget http://redbook.qiniudn.com/nginx.sh   //获取单一的nginx安装脚本
sh nginx.sh

在调整好A记录指向到服务器以后,

1
vi /usr/local/nginx/conf/nginx.conf  //配置文件所在地

利用?命令找到以下数据

1
server_name wasai.org geek.wasai.org;

然后修改成你指定的域名,例如icrawler.tech

另外一个广告:

这是我分享爬虫相关知识的网站:小爬虫icrawler.tech

然后

1
service nginx restart

这时候打开你的浏览器,输入你的域名。你应该会看到nginx 403。

恭喜你最重要的一步完成了。

因为你的网站文件夹也就是/home/wwwroot/default中并不存在文件。

这时候你已经可以通过用filezilla或者xftp上传文件了。

但是我们怎么能够如此低效率呢,难道我们不想在本地一键部署然后直接发送到网页上面去吗?

// 其实这里有个分支,就是通过atom这种自带ftp插件的软件,在本地写好md文件,直接发送到服务器上边进行编译。这的确是个好方法,但是不够酷诶。


那好,Action

接下来开始进行git hook挂勾到服务器的超级方案,然后进行一键部署。

首先要解决免密登陆,在你的服务器上输入以下指令

1
2
3
sudo adduser git
chmod 740 /etc/sudoers
vi /etc/sudoers

找到以下内容

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

在下边添加一行

1
git ALL=(ALL) ALL   //注意,是存在空格的

然后保存退出,并且将权限改回去

1
chmod 400 /etc/sudoers

随后设置Git用户的密码

1
2
#需要root权限
sudo passwd git

切换到git用户,创建~/.ssh文件夹和~/.ssh/authorized_keys文件

如下:

1
2
3
su git
mkdir ~/.ssh
vi ~/.ssh/authorized_keys

所以,让我们直接跳回到客户端(你的电脑中)去到你的.ssh文件夹中找到刚刚生成的id_RSA.pub文件,用记事本打开,然后将里面的东西复制下来。粘贴进服务器上的authorized_keys去。所以再次强烈推荐以下xshell,方便。

修改完毕后,修改权限。

1
2
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh

然后在你本地的git bash上输入下述代码尝试登陆:

1
ssh -v git@你的ip地址

如果是非22端口则

1
ssh -p 端口号 git@你的ip地址

至此,Git用户添加完成,也就意味着你的git可以无密码登陆这个服务器了。

当然为了保险,最后切换回root用户,赋予整个git文件以git用户的权限

1
chown git:git -R ~/git/  //注意,这里如果你也用~省略,会报错

更改你的nginx的配置

建议更改成以下的样子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
server{

---省略---

location /nginx_status {

stub_status on;

access_log off;

}



location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf)$

{

access_log off;

expires 30d;

}



location ~ .*\.(js|css|txt|xml)?$

{
access_log off;
expires 12h;
}

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

access_log /home/wwwlogs/access.log access;

}

include vhost/*.conf;

}

再次用service nginx restart来重启你的nginx服务,当然也可以先用nginx -t来检测一下当前的nginx的配置有没有写对。

然后切换到git用户,并且新建一个裸仓库在你的目录中:

1
2
3
su git
cd ~
git init --bare blog.git

这时候我们需要用到post-receive这个钩子,所以,当git有收发作用的时候就会自动调用这个钩子,并且会自动把文件发到post-receive中。

1
2
3
4
5
vi ~/blog.git/hooks/post-receive
#!/bin/sh
#注意!!!这里的~/blog.git只是省略,请填入完整的路径,如果你是跟着我一起设置下来的。
#这里应当为/home/git/blog.git
git --work-tree=/home/wwwroot/default --git-dir=~/blog.git checkout -f

保存后,要赋予这个文件可执行权限

1
chmod +x post-receive

然后最重要的是赋予这整个文件夹git的权限!!


而后我们开始在本地new一个hexo博客

在git bash 中输入

1
sudo npm install -g hexo-cli

然后初始化hexo程序

1
2
cd ~/Documents/code
hexo init blog

转移到blog文件里面,并且安装hexo部署工具和hexo server

1
2
3
cd blog
npm install hexo-deployer-git --save
npm install hero-server

打开blog文件夹中的_config.yml, 找到 deploy(就在最下边)

然后配置如下,这里有个点,如果你的vps不是22端口默认的,请如我配置否则则用原始配置就行了。

1
2
3
4
5
deploy:
type: git
repo: ssh://git@IP地址:端口/home/git/blog.git //非22端口的解决办法
branch: master
message:

原始:

1
2
3
4
5
deploy:
type: git
repo: git@65.49.223.114:/home/git/blog.git
branch: master
message:

然后注意,在部署之前,你的服务器和blog文件夹里面。都不要有.deploy_git或者.deploy等相关部署文件夹,否则必定推送失败。

接下来输入以下命令,新建并且推送你的博客到服务器上:

1
2
3
hexo clean
hexo new "hello world!"
hexo generate --deploy

然后稍等片刻。你就可以在你的服务器上看到你的网站了。

以后部署新的博客之前,可以先hexo new “文章题目”,然后用编辑器编写md文件夹。其实推荐使用一键脚本一键推送,其实就是很简单的bat方法。在此就不详说了。

本文作者: Bon
本文地址https://bonxg.com/p/3.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

# Bon
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×