部署博客系统

hexo部署

主要根据教程https://hjxlog.com/posts/20191130a1.html

主要分为服务器端和local两部分。

准备

部署环境:

  • Server

    • CentOS 8 (Aliyun ECS)
      • 使用密钥认证
    • git
      1
      yum install git
  • Client/Local
    (针对Windows)

    • Node.js from Node.js
      • 可能需要额外配置好npm命令的引用
    • git from git-scm
      • windows需要使用Git Bash执行命令
    • 可选
      • ssh登录到Server的程序和FTP

        Client配置

        假定已经安装好Client的nodejs环境和git bash
  • 配置密钥

    • aliyun登录密钥(略)

    • 同步账户密钥(.ssh文件夹下的认证密钥)(略)

      可使用下列代码检验:(如使用git用户)

      1
      ssh -v git@$serverIP
  • 安装hexo-cli

    1
    npm install hexo-cli -g
  • 创建本地git库

    新建一个文件夹用于存储

    注意,文件路径不要包含#字符,

    1
    2
    mkdir $RepoDir
    cd $RepoDir

    使用hexo的初始化命令

    1
    hexo init

    所得文件夹中:

    • /scaffolds是模版文件夹,当你新建文章时,Hexo 会根据 /scaffold 来建立文件。

    • /source文件夹是存放用户资源的地方。包括md文件等

    • /themes是主题文件夹,Hexo 会根据主题来生成静态页面。

  • 常用命令

    • 使用hexo new post -p "[目录/文章名]"创建在指定目录下的markdown文章,会根据post的模板初始化
  • 本地调试

    • 使用hexo g生成静态网页,在/public 文件夹中;
    • 使用hexo s生成本地服务器,可通过浏览器访问。
  • 远程推送

    • 配置文件是_config.yml,实现远程推送需要修改deploy部分:
      1
      2
      3
      4
      5
      6
      #……
      deploy:
      type: git
      #repo改为repo: git@你的域名:[$hexoRepoName.git]
      repo: git@[$ServerIp or $ServerDomainName]:[$hexoRepoName.git]
      branch: master
      具体参数在Server中配置

      Server 部分

      假定已配置好git,登录密钥和用于登录和同步的账户(如git)。
  • 创建Git仓库、更改权限

    1
    2
    3
    4
    5
    mkdir $GitRepoDir
    cd $GitRepoDir
    git init --bare $hexoRepoName.git
    chown -R git:git $GitRepoDir
    chmod -R 755 $GitRepoDir
  • 创建实现自动部署的Git钩子

    1
    vim $hexoRepoName.git/hooks/post-receive

    使用Vim添加以下两行:

    1
    2
    #!/bin/bash
    git --work-tree=$WebDir --git-dir=[$hexoRepoName.git] checkout
  • 配置Nginx

    需要在相应目录($WebDir)下创建网站,并配置静态网站

配置图床chevereto

准备

安装和配置chevereto

  1. chevereto源码解压至网页服务器目录下;
  2. 修改Nginx配置
    1
    2
    3
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
  1. 访问网站,进行数据库配置等

挂载oss

  1. 在Server安装ossfs:可参考https://help.aliyun.com/product/31815.html
  • 主要命令:
    1
    2
    wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
    sudo yum localinstall $your_ossfs_package

过程中会自动配置fuse依赖等

  1. 完善依赖
    由于CentOS 8 缺失文件,会有报错:

    1
    ossfs: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory

    需要安装相应的依赖,可访问https://pkgs.org/download/libcrypto.so.10 了解详情,主要需要compat-openssl10-1.0.2o-3.el8.i686.rpm包。

    使用命令

    1
    2
    wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
    yum localinstall compat-openssl10-1.0.2o-3.el8.x86_64.rpm

    即可安装。

  2. 挂载配置
    可具体参考[ossfs阿里云帮助文档]

  • 配置账号访问信息
    主要涉及my-bucket:my-access-key-id:my-access-key-secret参数
    使用命令配置访问信息文件并进行权限设置(重要):

    1
    2
    echo $my-bucket:$my-access-key-id:$my-access-key-secret > /etc/passwd-ossfs
    chmod 640 /etc/passwd-ossfs
  • 挂载bucket到chevereto的/images目录,参考代码:(注意需要先清空/images目录

    1
    ossfs $bucket $my-mount-point(这里即chevereto的/images目录) -ourl=$my-oss-endpoint(需查看aliyun OSS详情)  -o allow_other
  • 备注:如需取消挂载,应使用

    1
    fusermount -u $[挂载到的目录]
  • 备注:如需开机自动挂载,减少维护成本,应配置开机启动服务
    创建文件/etc/init.d/ossfs,内容为

    1
    2
    3
    4
    #! /bin/bash
    # chkconfig: 2345 10 90
    # description: ossfs service
    ossfs $bucket $my-mount-point(这里即chevereto的/images目录) -ourl=$my-oss-endpoint(需查看aliyun OSS详情) -o allow_other

    并为其添加权限

    1
    chmod a+x /etc/init.d/ossfs

    开启启动服务

    1
    chkconfig ossfs on

完成了图床的准备,具体使用可参照chevereto的具体配置。