Ghost的生产环境部署心得

环境

  1. ubuntu

  2. nodejs

    由于ghost是不支持5以上的版本,所以请安装4的版本,以下是在ubuntu下的安装方法:

     $ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
     $ sudo apt-get install -y nodejs
    
  3. nginx+mysql

    我建议使用lnmp一键安装包,因为lnmp自动生成服务,并提供快速添加vhost的命令,对于为运维人员提供了很多方便。

    官网:http://lnmp.org/install.html

     $ screen -S lnmp
     $ wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
    

    注意:由于安装时间较长,建议用screen创建窗口进行安装,关于screen的介绍,可以看:《linux ssh 必备神器 screen 的使用方法》

安装 Ghost

  • 登录到 http://ghost.org,然后点击蓝色的 'Download Ghost Source Code' 按钮

  • 在下载页,点击下载最新的 zip 压缩文件然后将文件解压到你想运行 Ghost 的地方

  • 如果你以 guest 身份登陆的 linux 或者以 SSH 远程连接只有终端,那么:

    使用以下命令下载 Ghost 的最新版:

      $ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
    

    使用以下命令解压存档:

      $ unzip -uo ghost.zip -d ghost
    

    在你解压好之后,打开一个终端:

    切换到刚才解压的 Ghost 文件夹目录下

      $ cd /你的 Ghost 解压目录
    

    输入以下命令安装 Ghost :

      npm install --production
    

    注意是两个 -

    至此,ghost安装完成,可执行npm start开启并访问http://127.0.0.1进行首次访问

让 Ghost 一直运行

Linux 系统在启动的时候会运行初始化脚本。这些脚本通常存在于 /etc/init.d 。为了让 Ghost 一直运行下去甚至自动重启,你可以设置一个初始化脚本来完成这个任务。以下的例子工作在 Ubuntu ,并且在 Ubuntu 12.04 下测试通过。

  • 使用以下命令创建 /etc/init.d/ghost 文件:

      $ sudo curl https://raw.githubusercontent.com/TryGhost/Ghost-Config/master/init.d/ghost \
        -o /etc/init.d/ghost
    
  • 使用 nano /etc/init.d/ghost 命令打开文件并检查以下内容:

  • 将 GHOST_ROOT 变量的值更换为你的 Ghost 安装路径

  • 检查 DAEMON 变量的值是否和 which node 的输出值相同

  • 这个初始化脚本将在你的系统上以它自己的 Ghost 用户和用户组运行,使用以下命令来创建:

      $ sudo useradd -r ghost -U
    
  • 确保 Ghost 用户可以访问安装目录:

      $ sudo chown -R ghost:ghost /你的 Ghost 安装目录
    
  • 使用以下命令给这个初始化脚本加上可执行权限:

      $ sudo chmod 755 /etc/init.d/ghost
    
  • 现在你可以使用以下的命令来控制 Ghost :

      $ sudo service ghost start
      $ sudo service ghost stop
      $ sudo service ghost restart
      $ sudo service ghost status
    
  • 为了让 Ghost 能在系统启动时同时启动,我们必须要将刚刚创建的初始化脚本注册为为启动项。 执行以下两个命令:

      $ sudo update-rc.d ghost defaults
      $ sudo update-rc.d ghost enable
    
  • 为了保证你的用户可以更改 Ghost 目录里的文件和默认的 config.js ,需要将你加入 ghost 用户组中:

      $ sudo adduser 你的用户名 ghost
    

如果你现在重启你的服务器,Ghost 应该会自动运行。

绑定 Ghost 域名

$ lnmp vhost add

根据提示输入要绑定的域名,目标文件夹随便填,因为接下来我们要手动改

$ vi /usr/local/nginx/conf/vhost/你刚才填的域名.conf

用以下代码覆盖之

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

保存文件后,更新设置即可

$ lnmp reload

==注意:==若使用nvm来管理nodejs版本,请确保v4.x是system版本号,否则将遇到一个难缠的问题,sudo service ghost start没有提示失败,但ghost服务的状态却一直是未运行。如果真的如此,我的解决办法是彻底删除nvm和nodejs,再重新执行一次nodejs的安装,确保which node/usr/bin/node

参考:

http://www.ifmicro.com/install-nodejs-on-ubuntu/

http://docs.ghost.org/zh/installation/deploy/

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏