手工搭建Ghost博客(Ubuntu 20.04)
Ghost是基于Node.js的开源博客平台,可以为用户提供更加便捷的写作与发布平台,本文指导用户基于华为云弹性云服务器(以Ubuntu 20.04操作系统云服务器为例)部署Ghost博客。
创建新用户
由于Ghost官方不推荐使用root用户直接操作,因此需要重新创新的用户,并为其配置权限。
- 执行以下命令,创建新用户。本文以user为例。
回显信息如下:
Adding user `user' ... Adding new group `user' (1000) ... Adding new user `user' (1000) with group `user' ... Creating home directory `/home/user' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for user 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] Y
- 在New password:和Retype new password:提示信息中,请按照提示输入并确认用户密码,密码默认不显示,输入完成后按Enter。
- 在Enter the new value, or press ENTER for the default提示信息中,按Enter保持默认即可,您也可以根据实际情况填写用户相关信息。
- 在Is the information correct? [Y/n]提示信息中,输入Y确认信息,并按Enter,完成设置。
- 执行以下命令,将新创建的用户添加到组。
- 执行以下命令,切换到user用户。
安装Nginx
部署Ghost博客,需要安装Nginx作为HTTP服务器,本节以安装Nginx 1.18.0 版本为例。
- 执行以下命令,更新Linux操作系统和软件包。
sudo apt-get upgrade -y
- 执行以下命令,安装Nginx。
- 执行以下命令查看Nginx版本。
回显信息如下:
nginx version: nginx/1.18.0 (Ubuntu)
- 调整防火墙(可选)。
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'
- 验证Nginx是否正常工作。
在浏览器中通过域名或者IP地址进行访问Nginx,如果Nginx正常启动则会打开Welcome to nginx的欢迎页面。
使用浏览器访问 “http://云服务器IP地址”,显示如下页面,说明Nginx安装成功。
安装MySQL
MySQL是一种开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL结构化查询语言)来管理其数据。
- 执行以下命令,安装MySQL。
- 执行以下命令查看MySQL版本。
回显信息如下:
mysql Ver 8.0.37-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
- 执行以下命令,连接MySQL。
- 执行以下命令,创建Ghost使用的数据库。本文以ghost_data为例。
- 执行以下命令,设置root账户密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxx';
其中'xxxxx'为待设置的密码。
- 执行以下命令,重新加载MySQL的授权表,确保数据库权限的更改生效。
- 执行以下命令,退出MySQL。
安装Node.js
Ghost 安装与配置
Ghost v1.0.0 及以上版本已加入了Ghost-CLI,因此可以直接安装配置Ghost-CLI。
- 执行以下命令,安装Ghost-CLI。
- 创建一个文件夹,之前介绍过Nginx的重要文件结构 /var/www/ 就是将要创建文件夹的地方。
ghost在/root文件夹中安装Ghost将无法正常工作。
- 配置权限。
sudo chown user:user /var/www/ghost
sudo chmod 775 /var/www/ghost
user是1创建的用户。
- 进入刚才创建的文件夹。
- 执行以下命令,用Ghost-CLI安装Ghost。
ghost install
如果Ghost安装时提示node版本不匹配,可以在nodejs官方网站查询相应的版本重新安装。
- 配置Ghost。
如果上面在 /var/www/ghost/ 目录下运行ghost install成功的话,会要求配置相关参数:
- Enter your blog URL:输入已解析的域名,例如:http://example.com。
- Enter your MySQL hostname:输入数据库连接地址。本示例中MySQL数据库与Ghost部署在同一台实例中,直接按Enter保持默认即可。
- Enter your MySQL username:输入数据库用户名,输入root后按Enter。
- Enter your MySQL password :输入数据库密码,输入5中设置的数据库密码后按Enter。
- Enter your Ghost database name:输入Ghost使用的数据库名称。输入ghost_data后按Enter。
如果配置后需要修改可以通过以下命令去文件中进行配置:
vi config.production.json
打开之后就是生产环境配置内容了。参考配置见下图:
验证Ghost搭建完成
如果成功的安装Ghost之后,就可以通过域名访问到Ghost博客。