美文网首页
手把手教你在小内存VPS上安装Ghost博客系统

手把手教你在小内存VPS上安装Ghost博客系统

作者: sladeliu | 来源:发表于2017-10-13 13:05 被阅读0次

    在DigitalOcean花5美刀/月,买了个512M内存的VPS,想要安个Ghost来写写博客。DigitalOcean也有预安装Ghost的VPS卖,竟然需要买10美刀的那个Plan,太不环保,只好自己折腾安装。安装中也是遇到各种问题,同时我也发现好多人都跟我一样遇到这些问题。自己踩过的坑,记录一下,也好给后来人铺路。

    我选择的是Ubuntu 16.04的镜像,其他操作系统如CentOS的安装过程相差不多。Ghost版本是目前最新的0.11.9。最近Ghost团队可能会发布1.0版本,请注意这个教程到时候可能会不适用(就在我写这篇博客的时候,我发现官网出现了1.0beta的文档)。

    增加一个普通用户

    这部分需要有root权限

    这个步骤我不确定是不是必须的,但是我在使用root用户运行Ghost时,报了cannot run in wd的错。后来参考了这个:Npm install failed with “cannot run in wd”,里面提到了npm用户权限的问题(文档在这)。

    所以,我觉得有必要增加一个普通用户:

    adduser myusername #增加一个叫myusername的用户
    

    这时这个用户还只是个普通用户,不能通过sudo执行一些需要root权限的命令,感觉很不好用啊。那我们就把这个用户加到sudoers

    首先编辑/etc/sudoers

    nano /etc/sudoers
    

    打开后找到如下内容:

    root    ALL=(ALL)       ALL
    

    仿照这一行,将myusername用户添加进去:

    root    ALL=(ALL)       ALL
    myusername    ALL=(ALL)       ALL
    

    Ctrl+o保存,然后Ctrl+x退出。

    设置swap交换分区

    如果你的内存够用,可以跳过这一步。

    添加完新用户后,安装过程中遇到的第一个问题就是内存不够。由于内存只有512M,在安装node依赖包的时候报了ENOMEM的错。后来我观察了一下,其实整个Ghost的安装过程中,需要的峰值内存在530M左右。就差了这么一点,就是安装不成功。所以需要设置一个swap分区。由于DigitalOcean已经分好区了,我们选择使用文件建立swap。

    先切换到刚才的那个myusername用户并进入其home目录:

    su myusername
    cd ~
    

    创建一个1G的文件,其中1024000表示1024M,你可以选择想创建的大小:

    dd if=/dev/zero of=$HOME/swap  bs=1k count=1024000
    

    $HOME/swap是在你的home目录创建的swap文件的路径,你可以选择你喜欢的路径,但要注意用户权限。

    把刚才那个文件用做交换分区,并使其生效:

    mkswap $HOME/swap
    swapon $HOME/swap
    

    使用free命令查看内存,确认一下是否已经启用了swap:

    free
    

    在我的VPS上可以看到已经生效了:

                  total        used        free      shared  buff/cache   available
    Mem:         500064      142084       35292        4108      322688      324108
    Swap:       1023996       16084     1007912
    

    准备node.js环境

    我使用了nvm来管理node环境,首先安装nvm:

    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
    

    安装完毕后,如果执行nvm命令时报错:nvm: command not found,执行:

    source ~/.bashrc
    

    使刚才的安装生效。

    接下来安装Node.js。Ghost推荐使用Node.js v4 LTS,但是Node.js v6 LTS也可以使用,具体的版本支持可以看这里

    由于V4马上就要退役,我选择使用V6版本。执行以下命令就能安装最新的V6 LTS:

    nvm install --lts
    

    安装Ghost

    安装好node.js环境之后就可以安装Ghost了。从官网或github上下载0.11.9“稳定版”。

    mkdir ghost
    cd ghost
    wget https://github.com/TryGhost/Ghost/releases/download/0.11.9/Ghost-0.11.9.zip
    unzip Ghost-0.11.9.zip
    

    如果没有unzip命令,请先自行安装。

    安装依赖环境:

    npm install --production
    

    一段时间之后就可以安装好了。测试一下是否安装成功:
    先启动Ghost

    npm start --production
    

    在VPS的另一个终端里使用curl访问:

    curl http://localhost:2368
    

    如果有html输出,表明已经正确安装了。

    配置Ghost

    安装好Ghost后,还有一些地方需要配置。官方推荐需要配置的有两个地方:URL和Email。如果你只是一个个人博客的话,其实Email也可以不用配置。我就只配置了URL:
    找到ghost目录下的config.js并打开,修改production段的url属性为你的域名就可以了:

    ...
    config = {
        // ### Production
        // When running Ghost in the wild, use the production environment.
        // Configure your URL and mail settings here
        production: {
            url: 'http://2kb.co',
            mail: {},
    ...
    

    更详细的配置,可以去看官方文档
    Email的配置,可以参考这里

    安装pm2

    上面使用npm start --production启动的方法必须一直开着终端窗口,我们需要让Ghost在后台一直运行。我选择使用pm2作为node的进程管理工具,其他工具(如Forever、Supervisor)可以参考官方文档

    首先安装pm2:

    npm install pm2 -g
    

    然后启动Ghost:

    NODE_ENV=production pm2 start index.js --name "Ghost"
    

    其中--name "Ghost"中的Ghost可以换成你喜欢的名字。

    查看Ghost的状态:

    pm2 show Ghost
    

    可以看到我的Ghost运行了两天,目前在线,还没有被重启过。

     Describing process with id 0 - name Ghost
    ┌───────────────────┬──────────────────────────────────────────────┐
    │ status            │ online                                       │
    │ name              │ Ghost                                        │
    │ restarts          │ 0                                            │
    │ uptime            │ 2D                                           │
    ...
    

    安装nginx

    Ghost自带HTTP服务器,通过配置是可以直接运行在80端口的。但是我们不这么做,我们要在Ghost前运行nginx来反向代理它。这样做有很多好处,其中一个就是你可以在一台VPS上部署很多Ghost,也可以部署其他的网站程序。

    安装nginx:

    sudo apt-get install nginx
    

    如果你从源码安装,可以参考其他博文。使用apt-get方式安装,虽然可能不是最新稳定版,但是会自动为你生成适用于nginx的服务,执行启动、停止、重启等操作会方便很多。

    配置nginx

    安装好nginx后要对其进行一些配置,我要做这些配置:

    1. 在nginx配置文件目录下,建立一个存放虚拟主机配置文件的目录vhost;
    2. 在vhost目录里,创建适用于指定域名的配置文件;
    3. 使nginx启动时自动加载vhost目录里的所有.conf文件。

    我的nginx配置文件在/usr/local/nginx/conf/目录,据我了解,不同的发行版可能会安装在不同的目录,请先确认你的配置文件目录。

    第1步的目的是方便虚拟主机配置文件的统一管理,以后把新增加的域名的配置文件都放到这个目录里:

    sudo mkdir /usr/local/nginx/conf/vhost
    

    第2步,创建Ghost的配置文件(名字可以随便起,我都是按域名命名,以.conf为后缀):

    sudo touch /usr/local/nginx/conf/vhost/2kb.co.conf
    

    文件内容为(注意把2kb.co改为你的域名):

    server {
     listen 80;
     server_name 2kb.co;
    
     location / {
         proxy_set_header   X-Real-IP $remote_addr;
         proxy_set_header   Host      $http_host;
         proxy_pass         http://127.0.0.1:2368;
     }
    }
    

    第3步,修改nginx的主配置文件。
    打开/usr/local/nginx/conf/nginx.conf,在最后一个}之前加入这样一行:

    include vhost/*.conf;
    

    重启nginx,使刚才的修改生效:

    sudo service nginx restart
    

    你也可以参考官方文档,和我的步骤不太一样。

    开始使用

    通过以上步骤,你就可以开始使用Ghost写作了,现在打开浏览器,输入你的博客地址就能看到Ghost的界面了。

    然后通过http://你的博客域名/ghost注册一个用户,开始写作吧!

    我的博客是运行在DigitalOcean的最小Plan上的,每月5美元,很便宜。我选择了荷兰的机房,一般ping值在160ms左右,速度非常不错,值得推荐。

    如果是国内VPS,推荐使用阿里云

    相关文章

      网友评论

          本文标题:手把手教你在小内存VPS上安装Ghost博客系统

          本文链接:https://www.haomeiwen.com/subject/ljdzyxtx.html