弹性云服务器 ECS弹性云服务器 ECS

计算
弹性云服务器 ECS
云耀云服务器 HECS
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机 CPH
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
内容分发网络 CDN
存储容灾服务 SDRS
弹性文件服务 SFS
云服务器备份 CSBS
云硬盘备份 VBS
数据快递服务 DES
专属企业存储服务
智能边缘
智能边缘云 IEC
EI 企业智能
EI安视服务
AI开发平台ModelArts
数据湖治理中心 DGC
数据仓库服务 GaussDB(DWS)
企业级AI应用开发专业套件 ModelArts Pro
数据湖探索 DLI
华为HiLens
云搜索服务 CSS
数据接入服务 DIS
表格存储服务 CloudTable
数据湖工厂 DLF
图引擎服务 GES
推荐系统 RES
文字识别 OCR
内容审核 Moderation
图像识别 Image
图像搜索 ImageSearch
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
数据可视化 DLV
视频接入服务 VIS
自然语言处理 NLP
语音交互服务 SIS
知识图谱 KG
医疗智能体 EIHealth
可信智能计算服务 TICS
园区智能体 CampusGo
实时流计算服务 CS
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
IoT物联网
全球SIM联接 GSL
设备发放 IoTDP
IoT开发者服务
IoT边缘 IoTEdge
IoT数据分析
路网数字化服务 DRIS
开发与运维
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
软件开发平台 DevCloud
开源镜像站 Mirrors
视频
媒体处理 MPC
视频点播 VOD
视频直播 Live
实时音视频 SparkRTC
管理与部署
统一身份认证服务 IAM
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云审计服务 CTS
云日志服务 LTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
专属云
专属计算集群 DCC
专属分布式存储服务 DSS
域名与网站
域名注册服务 Domains
云速建站 CloudSite
企业协同
华为云WeLink
会议
ISDP
解决方案
全栈专属服务
高性能计算 HPC
SAP
游戏云
混合云灾备
快视频
华为工业云平台 IMC
价格
价格原则
成本优化最佳实践
昇腾
昇腾MindX SDK (20.3)
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
容器交付流水线 ContainerOps
应用服务网格 ASM
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
容器批量计算 BCE
云原生服务中心 OSC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
文档数据库服务 DDS
分布式数据库中间件 DDM
数据复制服务 DRS
数据管理服务 DAS
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
云数据库 GaussDB (for openGauss)
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
应用中间件
应用管理与运维平台 ServiceStage
分布式缓存服务 DCS
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
消息通知服务 SMN
微服务引擎 CSE
云性能测试服务 CPTS
区块链服务 BCS
API网关 APIG
应用魔方 AppCube
分布式消息服务RocketMQ版
多云高可用服务 MAS
可信跨链数据链接服务 TCDAS
企业应用
云桌面 Workspace
云解析服务 DNS
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
ROMA API
鸿源云道
华为乾坤
安全与合规
Web应用防火墙 WAF
漏洞扫描服务 VSS
企业主机安全 HSS
容器安全服务 CGS
数据加密服务 DEW
数据库安全服务 DBSS
态势感知 SA
云堡垒机 CBH
SSL证书管理 SCM
云证书管理服务 CCM
管理检测与响应 MDR
数据安全中心 DSC
威胁检测服务 MTD
DDoS防护 ADS
云防火墙 CFW
应用信任中心 ATC
安全技术与应用
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
智能协作
IdeaHub
企业网络
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
废弃-华为乾坤安全云服务
云通信
语音通话 VoiceCall
消息&短信 MSGSMS
隐私保护通话 PrivateNumber
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
云生态
云市场
鲲鹏
昇腾
合作伙伴中心
华为云培训中心
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
网站备案
支持计划
专业服务
合作伙伴支持计划
文档首页> 弹性云服务器 ECS> 最佳实践> 手工搭建Ghost博客(Ubuntu 16.04)
更新时间:2021/03/18 GMT+08:00
分享

手工搭建Ghost博客(Ubuntu 16.04)

Ghost 是基于Node.js的开源博客平台,可以为用户提供更加便捷的写作与发布平台,本文指导用户基于华为云弹性云服务器(以Ubuntu 16.04操作系统云服务器为例)部署Ghost博客。

安装gcc和g++

  1. 执行以下命令,安装常用的开发编译工具包。

    sudo apt-get install build-essential

  2. 执行如下命令,安装gcc。

    apt-get install gcc

  3. 执行以下命令查看gcc版本。

    gcc --version

    回显信息:

    root@ecs-c47c:~# gcc --version
    gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
    Copyright (C) 2015 Free Software Foundation, Inc.
  4. 执行以下命令安装g++。

    sudo apt-get install g++

  5. 执行以下命令查看g++版本。

    g++ --version

    回显信息:

    root@ecs-c47c:~# g++ --version
    g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
    Copyright (C) 2015 Free Software Foundation, Inc.

安装Node.js

  1. 执行以下命令,安装Node.js

    sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

    sudo apt-get install -y nodejs

  2. 安装完成后,执行以下命令查看Node.js版本和npm版本。

    node -v

    npm -v

    回显信息:

    root@ecs-c47c:~# node -v
    v9.11.2
    root@ecs-c47c:~# npm -v
    5.6.0

安装Nginx

部署Ghost博客,需要安装Nginx作为HTTP服务器,本节以安装Nginx 1.10.0 版本为例。

  1. 输入以下命令安装Nginx。

    sudo apt-get update

    sudo apt-get install nginx

  2. 调整防火墙(可选)。

    UFW(Uncomplicated Firewall)是一个iptables的接口,可以简化配置防火墙的过程。Ubuntu默认安装了UFW,执行以下命令查看防火墙的状态。

    sudo ufw status

    如果你没有也不想开启防火墙,则可以直接跳过此步骤,如果你想要开启防火墙可以通过以下命令实现。

    sudo ufw enable

    之后再次检查防火墙状态验证是否成功开启防火墙。

    在测试Nginx之前,需要重新配置我们的防火墙软件以允许访问Nginx。执行以下命令,将Nginx自动 注册在UFW。

    sudo ufw app list

    回显信息:

    Available applications:
      Nginx Full
      Nginx HTTP
      Nginx HTTPS
      ...
    • Nginx Full:此配置文件打开端口 80(正常,未加密的Web流量)和端口443(TLS / SSL加密流量)
    • Nginx HTTP:此配置文件仅打开端口 80(正常,未加密的Web流量)
    • Nginx HTTPS:此配置文件仅打开端口 443(TLS / SSL加密流量)

    执行以下命令确保防火墙允许HTTP和HTTPS连接。

    sudo ufw allow 'Nginx Full'

  3. 验证Nginx是否正常工作。

    在浏览器中通过域名或者IP地址进行访问Nginx,如果Nginx正常启动则会打开Welcome to nginx的欢迎页面。

    使用浏览器访问 “http://云服务器IP地址”,显示如下页面,说明Nginx安装成功。

  4. 配置Nginx。
    1. 新建配置文件。

      vim /etc/nginx/sites-available/ghost.conf

    2. 把以下配置内容粘贴进你的配置文件中。
      server {
          listen 80;
          server_name 119.3.xx.xxx.com; #这里写你的域名或者ip地址
          location / {
              proxy_set_header   X-Real-IP $remote_addr;
              proxy_set_header   Host      $http_host;
              proxy_pass         http://127.0.0.1:2368;
          }
      }

      以上配置文件已经把反向代理写好了, 唯一需要修改的地方是: 把server_name改成你自己的顶级域名.

    1. 把配置文件软链接到sites-enabled中。

      sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf

    1. 重启Nginx。

      sudo service nginx restart

创建新用户

由于Ghost官方不推荐使用root用户直接操作,因此我们需要重新创新的用户,并为其配置权限。

  1. 执行以下命令,创建新用户。

    adduser <user>

    回显信息如下:

    Enter new UNIX password: 
    Retype new UNIX password: 
    passwd: password updated successfully
  2. 执行以下命令,将新创建的用户添加到组。

    usermod -aG sudo <user>

    回显信息如下:

    Changing the user information for sxm
    Enter the new value, or press ENTER for the default
    Full Name []: 
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
    Is the information correct? [Y/n] 
  3. 执行以下命令,切换到<user>用户。

    su - <user>

安装MySql

MySQL是一种开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL结构化查询语言)来管理其数据。

  1. 安装MySql。
    • 执行以下命令更新软件包。

      sudo apt-get update

    • 执行以下命令安装mysql-server 软件包。(安装过程中会要求配置MySql的root用户密码)

      sudo apt-get install mysql-server

  2. 配置MySQL。

    执行以下命令,并按照回显提示信息进行操作,加固MySQL。

    mysql_secure_installation

    Securing the MySQL server deployment.
    
    Enter password for user root:    #输入上一步骤中获取的安装MySQL时自动设置的root用户密码
    The existing password for the user account root has expired. Please set a new password.
    
    New password:  #设置新的root用户密码
    
    Re-enter new password:   #再次输入密码
    The 'validate_password' plugin is installed on the server.
    The subsequent steps will run with the existing configuration of the plugin.
    Using existing password for root.
    
    Estimated strength of the password: 100
    Change the password for root ? ((Press y|Y for Yes, any other key for No) : N   #是否更改root用户密码,输入N
    
     ... skipping.
    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL without having to have
    a user account created for them. This is intended only for
    testing, and to make the installation go a bit smoother.
    You should remove them before moving into a production
    environment.
    
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y   #是否删除匿名用户,输入Y
    Success.
    
    Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.
    
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y   #禁止root远程登录,输入Y
    Success.
    
    By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
    
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y   #是否删除test库和对它的访问权限,输入Y
     - Dropping test database...
    Success.
    
     - Removing privileges on test database...
    Success.
    
    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y   #是否重新加载授权表,输入Y
    Success.
    
    All done!
  3. 测试MySql。

    输入以下命令来查看MySql的状态:

    systemctl status mysql.service

    结果正常会提示:

    ● mysql.service - MySQL Community Server
       Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
       Active: active (running) since Mon 2019-01-07 10:57:27 CST; 2min 42s ago
     Main PID: 26065 (mysqld)
       CGroup: /system.slice/mysql.service
               └─26065 /usr/sbin/mysqld
  4. 为了避免数据库存放的中文是乱码,执行以下命令设置Mysql的编码。

    sudo vi /etc/my.cnf

    复制粘贴以下内容:

    [client]
    default-character-set=utf8  
    [mysql]
    default-character-set=utf8  
    [mysqld]
    character-set-server=utf8  
    collation-server=utf8_general_ci 

    保存退出,执行以下命令重启Mysql生效:

    sudo /usr/sbin/service mysql restart

  5. 建立Ghost数据库。

    以 root 身份登录MySql然后创建一个名为ghost的数据库并验证创建结果:

    mysql -u root -p;

    mysql> create database ghost;

    mysql> show databases;

    mysql> exit

Ghost 安装与配置

Ghost v1.0.0 及以上版本已加入了Ghost-CLI,因此可以直接安装配置Ghost-CLI。

  1. 安装Ghost-CLI。

    sudo npm i -g ghost-cli

  2. 创建一个文件夹,之前介绍过Nginx的重要文件结构 /var/www/ 就是我们将要创建文件夹的地方。

    sudo mkdir -p /var/www/ghost

    ghost在/root文件夹中安装Ghost 将无法正常工作。

  3. 配置权限。

    sudo chown [user]:[user] /var/www/ghost

    [user] 是我们在安装阶段创建的用户。

  4. 进入我们刚才创建的文件夹。

    cd /var/www/ghost/

  5. 执行以下命令,用Ghost-CLI 安装Ghost。ghost install

    如果Ghost安装时提示node版本不匹配,可以在nodejs官方网站查询响应的版本重新安装。

    https://nodejs.org/en/download/

  6. 配置Ghost。

    如果上面在 /var/www/ghost/ 目录下运行ghost install成功的话,会要求配置一些东西:

    您可以根据需要进行简单的配置。如果配置后需要修改可以通过以下命令去文件中进行配置:

    vi config.production.json

    打开之后就是我们的生产环境配置内容了。参考配置见下图:

验证Ghost搭建完成

如果成功的安装Ghost之后,就可以通过域名访问到Ghost博客。

分享:

    相关文档

    相关产品