如何在Fedora 25上部署Ghost

・8 分钟阅读

要求

  • Fedora 25服务器实例,最小内存为1GB,
  • 你可能需要打开端口2368 semanage port -a -t http_port_t -p tcp 2368

let's Encrypt

开始此步骤之前,请确保你已经为你的域设置了DNS记录。

我们将使用let'sEncrypt CA和EFF的Certbot客户端来获取Ghost博客的TLS证书,不要忘记用你的域名替换example.com的所有实例。

  1. 更新系统:

    
    dnf check-update || dnf upgrade -y
    
    
  2. 安装需要的工具:

    
    dnf install @development-tools -y
    
    
  3. 安装Certbot a,k。a让我们加密客户端

    
    dnf install certbot -y
    
    
  4. 检查Certbot版本:

    
    certbot --version
    # certbot 0.12.0
    
    
  5. 使用standalone的模式获取证书:

    
    certbot certonly --standalone --domains example.com,www.example.com --email john.doe@example.com --agree-tos --rsa-key-size 2048
    
    

经过上述步骤后,你的证书和私钥会在/etc/letsencrypt/live/example.com目录中。

安装NodeJS

Ghost当前支持node版本 0.12 .x,4.2 +和6.9 + 仅限仅限。

我们将安装受支持的v6 Boron LTS版本,这是本文写作时的。

  1. 下载并安装最新版本的node.js :

    
    dnf install nodejs -y
    
    
  2. 检查node和NPM版本:

    
    node -v && npm -v
    # v6.10.2
    # 3.10.10
    
    

安装Nginx

  1. 下载并安装Nginx :

    
    dnf install nginx -y
    
    
  2. 检查Nginx版本:

    
    nginx -v
    # nginx version: nginx/1.10.2
    
    
  3. 启动并启用Nginx服务:

    
    systemctl start nginx.service && systemctl enable nginx.service
    
    
  4. 将Nginx配置为反向代理:

    
    vi /etc/nginx/conf.d/ghost.conf
    
    
  5. /etc/nginx/conf.d/ghost.conf中粘贴以下内容:

    
    server {
    
     listen 80;
     listen [::]:80;
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
    
     server_name example.com www.example.com;
    
     ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
     location / {
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Host $http_host;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_pass http://127.0.0.1:2368;
     }
    
    }
    
    
  6. 检查Nginx语法:

     
    nginx -t
    
     
  7. 重新加载Nginx配置:

    
    systemctl reload nginx.service
    
    

安装Ghost

如果要在同一VPS上托管多个Ghost博客,每个Ghost实例必须在单独的端口上运行。

  1. 创建webroot目录:

     
    mkdir -p/var/www/
    
     
  2. 创建一个新的ghost用户:

    
    useradd -c"Ghost Application" ghost 
    
    
  3. 下载Ghost :

    
    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.8/Ghost-0.11.8.zip -o ghost.zip
    
    
  4. 解压Ghost:

    
    unzip -uo ghost.zip -d /var/www/ghost
    rm -f ghost.zip
    
    
  5. 导航到webroot :

     
    cd/var/www/ghost
    
     
  6. 更改webroot目录的所有权:

    
    chown -R ghost:ghost .
    
    
  7. 切换到新的ghost用户:

     
    su -ghost
    
     
  8. 导航到webroot :

     
    cd/var/www/ghost
    
     
  9. 安装Ghost :

    
    npm install --production
    
    
  10. 通过在config.js文件中更改production对象的urlmail属性来配置Ghost :

    
    cp config.example.js config.js
    vi config.js
    
    
    var path = require('path'),
     config;
    
    config = {
     // ### Production
     // When running Ghost in the wild, use the production environment.
     // Configure your URL and mail settings here
     production: {
     url: 'https://example.com',
     mail: {
     options: {
     service: '',
     auth: {
     user: '',
     pass: ''
     }
     }
     },
     . . .
     . . .
     },
    }
    . . .
    . . . 
    
    

    注:你还应该配置mail ,有关如何执行此操作,请参阅Ghost官方文档。

  11. 启动Ghost :

    
    npm start --production
    
    

    Ghost将立即运行,博客前端和管理界面都是通过HTTPS HTTP/2 进行保护,你可以打开你的浏览器,并且在https://example.com访问网站,不要忘记用你的域名替换example.com

  12. CTRL +C关闭Ghost进程,然后从Ghost用户退出到root用户:

     
    exit
    
     

安装PM2

如果你关闭与VPS的终端会话,你的博客也会关闭。这不好,要避免这个问题,我们将使用PM2流程管理器。 它将保持我们的博客24/7全天候运行。

  1. 安装PM2进程管理器的最新稳定版本:

    
    npm install -g pm2@latest
    
    
  2. 检查PM2版本:

     
    pm2 -v
    # 2.4.6
    
     
  3. 再次切换到ghost用户:

     
    su -ghost
    
     
  4. NODE_ENV环境变量设置为生产:

    
    echo"export NODE_ENV=production" >> ~/.bashrc && source ~/.bashrc
    
    
  5. 使用PM2启动(守护进程)Ghost应用程序:

    
    pm2 start /var/www/ghost/index.js --name"Ghost Blog"
    
    
  6. 导航到https://example.com/ghost/,并且创建Ghost管理员用户,请尽快执行这个操作。

结束语

就是这样我们现在有了一个功能完备的幽灵博客。

Yanyan profile image