Jenkins-Hexo-码云构建自动化博客站点

🌞写在前面

在使用Hexo之前,一直用的WordPress,终于在断断续续使用了两个年之后忍不住了,不得不说WordPress拥有丰富的插件和庞大的群众基础,但是实在是用起来不方便,每次写东西都要登录,进入后台管理,添加文章,排版很累(也使用过Markdown插件,效果不太好),当然也尝试过用其他方式写,比如用word写,简单配置一下,推送到WordPress上面,但是这样就没办法用Markdown了。然后就是安装插件让本来就很重的页面加载工作雪上加霜。。硬生生的把我写博客的积极性打击没了。还有一点就是以前的WordPress是跑在阿里云的云虚拟机上,不如服务器更方便捣鼓,哈哈,而且不能配置HTTPS,很鸡肋🐶。然后就是WordPress是PHP写的,太深的定制化需要搞PHP。索性换成Hexo,方便订制,加上Jenkins(工作的时候稍微学了一下,基本使用还是没有问题的),如虎添翼(杀鸡用牛刀),现在只需要在本地用Markdown写好文章,然后git提交到远程仓库,就会自动部署,只需要愉快的写就可以了,美滋滋。东西有点多,搞得时候没有记录,现在回头写有点麻烦,有空慢慢填坑。

🌞准备工作

  1. 服务器购买
    1. 我选择的是阿里云的服务器,因为我以前的博客就是在阿里云上面的,当时想要做备案,所以才选的国内的云服务商,如果你不需要备案选用国外的服务商,也可以。阿里云服务器有几种付费方式选择:预付费按量付费抢占式资源。这几种付费方式的官方说明:,相比较之下,抢占式资源还是比较划算的,但是抢占式资源按量付费不支持备案,我的是因为以前备过案了,就不需要再备案了,如果你想要备案,那只能选包年包月的预付费了。这个问题我也是刚发现。。就拿我需要的配置来说,我选了一台2核2G的服务器,自带的40G的系统盘,跑个博客和一些小型的程序比如jenkins,足够用了,实在不行以后再升配置,这也是云服务商的优势之处。如果选用预付费方式,便宜的一种也需要78一个月。如果选用按量付费,0.29/小时,0.29*24*30 = 208.8,选用抢占式实例0.079*24*30 = 56.88,资源不是很紧俏,价格就不会变,在设定的可以承受的最高价之下就会自动扣钱,不会被释放。对于个人而言还是可以选择的。
  2. 域名购买
    1. 使用的域名是我几年前购买的,.top后缀的,当时就是因为便宜,好像刚开始引入这个后缀,一年几块钱,就一直用,用我的名字全拼,其实也有一个短域名fjh.im,实在name.com上面买的,但是.im域名是不能备案的也不能转入阿里云管理,就一直用作邮箱用,也可以解析跳转到现在的博客域名上面,但是只能解析一个地址,用来跳转主页。
  3. 域名备案:
    1.
  4. 域名解析:

🌞配置服务器

  1. 安全组配置

🌞配置七牛云静态存储

🌞配置Nginx

🌞配置全站HTTPS

  1. 站点服务器HTTPS
  2. 七牛云静态存储HTTPS

🌞CDN 加速

  1. CDN使用的是“又拍云”的CDN加速服务,之所以再选择一个云服务商,一是可以将平时的流量分摊到两家服务商,保证都不超过免费套餐用量😁,二是尝试一下不同的服务商怎么用,捣鼓一下。

🌞Hexo安装测试

🌞Jenkins安装

🌞Jenkins配置

  1. 注意事项:

    1. 脚本执行npm install,提示找不到npm命令,解决办法:

      1. 在jenkins的脚本开始添加:

        1
        2
        3
        #!/bin/sh -l
        export NODE_HOME=/usr/nodejs
        export PATH=$PATH:$NODE_HOME/bin
    2. jenkins脚本移动文件夹提示没有权限:解决办法

  2. 不同服务器之间传输数据:
    1. 有时候需要不同服务器在执行jenkins的build之后传输文件,需要配置scp文件传输
    2. 准备工作
      1. 安装scp命令工具:yum install openssh-clients,相互传输文件的两台机器都要安装
      2. jenkins里面安装插件:Publish over SSH
      3. 配置jenkins服务器和部署机器之间相互信任:
        1. 复制jenkins服务器用户目录下的.ssh/id_rsa.pub中的内容
        2. 将复制的内容添加到部署服务器的.ssh/authorized_keys文件中,一般情况下这个文件是空的,直接粘贴进去就行。
        3. 然后再使用jenkins构建的时候,仍然失败,提示权限不够,需要在第一次使用scp命令的时候需要自己先动手在shell终端中执行一次,然后使用scp随意复制一个文件过去,输入密码,之后再用jenkins复制文件就免输密码了。

🌞配置自启动项(systemctl)

  1. nginx配置自启动

    1. 进入/lib/systemd/system目录:[root@JH-demo sbin]# cd /lib/systemd/system/
    2. 创建nginx.service文件

      1
      vim nginx.service
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      [Unit]
      Description=nginx service
      After=network.target

      [Service]
      Type=forking
      ExecStart=/usr/local/nginx/sbin/nginx
      ExecReload=/usr/local/nginx/sbin/nginx -s reload
      ExecStop=/usr/local/nginx/sbin/nginx -s quit
      PrivateTmp=true

      [Install]
      WantedBy=multi-user.target
      • 说明:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        [Unit]:服务的说明
        Description:描述服务
        After:描述服务类别
        [Service]服务运行参数的设置
        Type=forking是后台运行的形式
        ExecStart为服务的具体运行命令
        ExecReload为重启命令
        ExecStop为停止命令
        PrivateTmp=True表示给服务分配独立的临时空间
        注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
        [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
    3. 加入开机自启动:# systemctl enable nginx

    4. 取消开机启动:# systemctl disable nginx

    5. systmectl的其他命令:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      # systemctl start nginx.service          启动nginx服务

      # systemctl stop nginx.service  停止服务

      # systemctl restart nginx.service  重新启动服务

      # systemctl list-units --type=service 查看所有已启动的服务

      # systemctl status nginx.service 查看服务当前状态

      # systemctl enable nginx.service 设置开机自启动

      # systemctl disable nginx.service 停止开机自启动
  2. jenkins配置自启动

🌞其他

  1. 配置快照策略
    1. 购买OSS存储资源包
    2. 制作快照
  2. 服务器迁移
    1. 磁盘快照制作自定义镜像
    2. 跨区域镜像复制使用

🌞愉快的写吧

推荐文章