vps携手hexo的博客搭建之旅

栏目: 服务器 · Nginx · 发布时间: 7年前

内容简介:由于自己搞了个vps,也搭建了vpn,日常科学上网与看看视频还是没什么压力的。想着也不能白白浪费每个月500G的流量,于是想起自己现在的hexo博客。目前还没有自己的私有域名与服务器,用的还是传统的github.io通用域名。作为it界的一员,既然有条件能变得更好就不应该不去做。于是花一天时间折腾出来的自己的专属博客系统。下面我会将自己搭建过程中遇到的问题与步骤罗列出来,希望能够帮助有同样需求的你。首先我的搭建是基于以下条件之上的

由于自己搞了个vps,也搭建了vpn,日常科学上网与看看视频还是没什么压力的。想着也不能白白浪费每个月500G的流量,于是想起自己现在的hexo博客。目前还没有自己的私有域名与服务器,用的还是传统的github.io通用域名。作为it界的一员,既然有条件能变得更好就不应该不去做。于是花一天时间折腾出来的自己的专属博客系统。

下面我会将自己搭建过程中遇到的问题与步骤罗列出来,希望能够帮助有同样需求的你。

前提条件

首先我的搭建是基于以下条件之上的

  1. 本地hexo博客已完成(github.io可以访问)
  2. 有自己的vps
  3. 服务器系统Centos 6 x86_64
  4. 有自己的域名
  5. 域名已进行解析

这里就不介绍hexo博客本地构建,想了解的推荐阅读Hexo的安装与配置

我们将要解决的主要问题是:

  1. SSH连接服务器
  2. 下载git与创建git服务器
  3. 下载nginx与配置nginx环境
  4. 本地hexo与服务器关联

SSH连接服务器

SSH非常强大,在我日常工作中时刻相遇。相信你也是,可能你不曾注意到它而已。日常从服务器拉取与上传代码都是通过SSH进行通信的。虽然将生成的id_rsa.pub公钥交给服务器后就再没怎么接触过它,但并不能否认它的存在。

由于SSH可以帮助我们给服务器构建一个安全与稳定的通信,所以我这里也使用SSH来连接服务器。

在连接服务器之前,你需知道自己服务器的IP地址,相信都能够拿到。

# 以root用户连接服务器
# 将12.12.12.12换成自己服务器IP
# 如果你已经有自己的域名且已经进行了解析,则可以直接使用域名代替
ssh root@12.12.12.12

相信这一步大部分人都会报下面一段错

ssh: connect to host 12.12.12.12 port 22: Connection refused

这是由于你的ssh默认连接端口22与你的服务器端口不一致导致的。该问题有两种解决方法,其一是改变ssh的默认端口;其二是指定连接端口。第一中不推荐,因为我都坚持能不动默认的的就不出修改默认的。所以我们使用第二中方法,在上面的连接命令行后再加上端口

ssh root@12.12.12.12 -p 端口

接下来剩下的就是输入密码了,这样我们就连接上服务器了,现在可以在自己的电脑上远程操作服务器了。

插曲

如果你客户端上没有ssh公钥,可以根据Hexo的安装与配置来进行配置。

找到公钥,公钥位置:~/.ssh/id_rsa.pub,后续会用到。

git服务器

连接上服务之后,首先查看是否安装了git,没有的使用yum进行按照即可

yum install git

裸库

在开始搭建git服务器之前,我们需要将现有的仓库导出为裸仓库。意思就是一个不包含当前工作目录的仓库。主要是使用git的–bare。在操作之前我们先回到客户端,再执行如下命令:

git clone --bare my_project blog.git

my_project如果为远程仓库就使用远程仓库的ssh链接, blog.git可以随便命名但必须以.git结尾。

现在我们已经有了仓库的裸库了,接下来需要将客户端的裸库copy到服务器上,本质也是通过ssh进行通信。

假设你的服务器上已经有/opt/git/目录,可以通过如下命令copy到服务器

scp -r blog.git user@Ip:/opt/git

user为连接用户,例如root。如果又遇到端口问题,替换成下面的命令

scp -P 端口 -r blog.git user@IP:/opt/git

注意大写P

如果通过ssh连接的用户对blog.git拥有可读权限,那么他就可以通过如下命令克隆你的仓库

git clone user@IP:/opt/git/blog.git

当然如拥有可写权限,他也可以进行推送。 所以如果后续你发现操作不了仓库时,很大可能是该用户没有读或写权限

为了防止这一点,我们接下来创建git用户

git用户与认证

回到服务器,对用户进行认证。用户认证使用authorized_keys进行,首先,创建一个操作系统用户git,并为它建立.ssh目录。

sudo adduser git
su git
cd
mkdir .ssh && chomd 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

为了防止权限问题,终极解决方法,可以将git添加到sudo用户组

# 切换到root用户
su root
sudo vi /etc/sudoers

打开文件,使用:/root进行搜索,在root下添加git用户

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
git     ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

回到认证,我们为系统用户git的authorized_keys文件添加操作用户的ssh公钥,就是上面我们客户端生成的公钥。假设你已经将id_rsa.pub保存到临时文件/tmp/id_rsa.pub中。执行如下命令,将公钥加入到authorized_keys文件的末尾

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

设置完之后,返回客户端,执行如下命令,测试是否可以连接上服务器

ssh -v git@IP -p 端口

通过git服务器、用户认证与操作权限,我们就可以实现对仓库的人员添加与仓库分支等的操作权限限制。该功能就也市面上的代码托管平台类似。感兴趣的可以去研究。

现在我们已经完成一大半了,剩下的就是服务器指向域名与代码上传服务器。

Nginx配置

nginx相信或多或少都有一点接触吧,主要是服务端与前端。最近学习了前端,所以自己对nginx也不是那么陌生。我们公司前端主要是用nginx来进行本地代理,方便本地测试。

话不多说,现在进行nginx配置

安装

如果你使用下面命令就安装成功,那么你是幸运的

yum install nginx

如果一切顺利,请跳过安装这部分,如果提示没有找到nginx,请接下看。

由于我是使用Centos 6,nginx位于第三方的yum源中,而nginx不在Centos 6官方yum中,解决方法安装epel(Extra Packages for Enterprise Linux)

yum install epel-release

然后再查看是否在源列表中,这非常重要,因为它可能不在源列表中。

yum repolist

vps携手hexo的博客搭建之旅

只有显示了epel,接下来你执行nginx的安装命令才不会失败。

yum install nginx

如果不存在,你执行上述命令nginx还是找不到。如果没有意思到这一点,就是无头绪为什么一直报nginx找不到。如果不在,我们接着走。

打开文件epel.repo,将其中的enable=0改为enable=1

vi /etc/yum.repos.d/epel.repo

vps携手hexo的博客搭建之旅

然后执行下面命令查看epel是否存在

yum repolist 2>&1 | grep epel
epel          Extra Packages for Enterprise Linux 6 - x86_64              12,517

如果展示了epel,代表已经存在。这时你再执行安装nginx的命令就可以成功了。

安装完之后,我们再将其启动

service nginx start
# 设置开机启动
chkconfig nginx on

进行到这里,你可以将服务器的ip复制到浏览器,如果你看到nginx的welcome界面,说明nginx已经安装成功。

配置

接下来我们要配置nginx,让其指向我们的blog地址。打开nginx的配置文件

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

安装如下说明替换自己的信息

#
# The default server
#
 
server {
    listen       80;
    # listen       [::]:80 default_server;
    server_name  rousetime.com; # 替换成自己的域名
    root         /usr/share/nginx/html/blog; # 博客所在目录
 
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
 
    location / {
        root /usr/share/nginx/html/blog; # 博客所在目录
        index index.html index.htm;
    }
 
    error_page 404 /404.html;
        location = /40x.html {
        root /usr/share/nginx/html/blog; # 博客所在目录
    }
 
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        root /usr/share/nginx/html/blog; # 博客所在目录
    }
 
}

/usr/share/nginx/html/blog是我服务器上存放博客的目录,你可以改成自己的目录。这样nginx就配置完成。

本地与服务器同步

现在就剩最后一步了,将本地hexo文件上传到服务器,同时每次通过git更新代码后都会同步到服务器。

之前我们已经建立了git服务器与git裸库,为了之后的上传代码关联操作,我们借助git的服务钩子post-receive。它可以在仓库收到push代码后,进行一些相关操作,例如通知与更新等。

我们在blog.git/hooks中新建post-receive文件 (这里我已将blog.git转移到git用户下/home/git)

su git
vi ~/blog.git/hooks/post-receive

向其中添加如下代码,指明git的工作树路径与仓库路径

#! /bin/sh
git --work-tree=/usr/share/nginx/html/blog --git-dir=/home/git/blog.git checkout -f

保存后退出,再给其赋予可执行权限

chmod +x ~/blog.git/hooks/post-receive

hexo代码同步

返回客户端,打开hexo的_config.xml文件,找到deploy,在之前的设置后面再添加我们的服务器仓库地址

deploy:
- type: git
  repository: xxx # 之前的github仓库地址
  branch: master
- type: git
  # repository: git@rousetime.com:/~/blog.git # 默认端口生效使用
  # repository: ssh://git@rousetime.com:端口/~/blog.git # 默认端口不生效使用,设置端口
  branch: master

现在可以将hexo相关配置中的github.io域名都换成你自己的

最后我们再提交一遍hexo代码

hexo clean
hexo g
heox d

操作完之后,你会发现git将代码push到之前的github仓库与我们的搭建的服务器仓库。

部署完毕,我们就可以在浏览器中输入域名进行访问。例如:这是我的blog地址欢迎访问。

这就是我折腾了一天搭建的过程,希望对你有所帮助。如有任何问题可以随时@我。


以上所述就是小编给大家介绍的《vps携手hexo的博客搭建之旅》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Vim, Second Edition

Practical Vim, Second Edition

Drew Neil / The Pragmatic Bookshelf / 2015-10-31 / USD 29.00

Vim is a fast and efficient text editor that will make you a faster and more efficient developer. It’s available on almost every OS, and if you master the techniques in this book, you’ll never need an......一起来看看 《Practical Vim, Second Edition》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器