关于Ubuntu上部署GHOST的那点事(对之前花了2天部署的一个总结和反思)

n和nvm

  • 官方的一些解释:

    • n 是一个需要全局安装的 npm package。
      npm install -g n
      这意味着,我们在使用 n 管理 node 版本前,首先需要一个 node 环境。我们或者用 Homebrew 来安装一个 node,或者从官网下载 pkg 来安装,总之我们得先自己装一个 node —— n 本身是没法给你装的。

    • nvm不同于 n,nvm 不是一个 npm package,而是一个独立软件包。这意味着我们需要单独使用它的安装逻辑:
      curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

  • 简单的讲:

    • n依赖于node,而nvm不依赖node
    • n use 4.2.0之后改变的是你系统环境下的node的版本,也就是将系统环境的node改变成4.2.0版,而nvm use 4.2.0 则是只在当前shell环境中使用4.2.0版node,系统环境下的node版本不变

所以说对于之前在Ubuntu下部署GHOST的时候我踩的一个坑,GHOST 进程保护 用 forever npm install -g forever 然后 cd到你的 GHOST目录下 forever start index.js由于 GHOST所依赖的node 环境 有限,仅支持~0.10.0 || ~0.12.0 || ~4.2.0版本,因此运行GHOST的npm start或者forever start index.js的时候必须确定你当前的node环境是否是在支持版本内,

注意

npm start的时候由于因为要GHOST一直运行就必须一直开着shell窗口,所以 此时 使用nvm use 4.2.0的时候没问题,但是若你使用的是用 ssh 登录的远程服务器,那么你就一定要注意了,不能使用 nvm! 不能使用 nvm! 不能使用 nvm 因为shell一关闭就都作废了,而且即使在当时 你使用nvm切换到了4.2.0 之后执行 forever 对GHOST进行进程保护,当你退出shell之后进程依然会关闭,因为你系统的node不是4.2.0!所以特此强调,使用forever的时候一定要确定是系统的node版本是在GHOST的支持范围内,而非当前shell的node的版本~

GHOST生成环境和开发环境

为了让 forever 从 Ghost 安装目录运行,请先cd到你GHOST的目录然后输入 NODE_ENV=production forever start index.js 一定要注意production 没了这个GHOST默认就会运行开发版,这样就会导致你访问你的GHOST博客的时候,执行登录等操作会提示 Access Denied from url:xxx.com, Please use the url configured in config.js