腾讯云 开发者实验室

搭建 Firekylin 个人博客

腾讯云
入门
0 个任务
剩余 2 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

Firekylin 是一款基于 ThinkJS 开发的开源 NodeJS 博客系统,本实验将带你从零开始快速搭建自己的 Firekylin 个人博客,了解更多内容可参见 https://firekylin.org。

首次可免费使用云主机 45 分钟 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

CentOS 7.2 64 位

目录

# 搭建 Firekylin 个人网站 ## 准备域名 > <time>15min ~ 20min</time> ### 域名注册 如果您还没有域名,可以[在腾讯云上选购][buy_link],过程可以参考下面的视频。 * [视频 - 在腾讯云上购买域名][buy_domain_video] > <link for="buy_link" href="https://dnspod.qcloud.com/?fromSource=lab"></link> > <video for="buy_domain_video" platform="qq" vid="p05077pwelw" name="域名选购"></video> ### 域名解析 域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为: ``` ${runtime.vars.cvmIpAddress} ``` 在腾讯云购买的域名,可以[到控制台添加解析记录][https://console.qcloud.com/domain],过程可参考下面的视频: * [视频 - 如何在腾讯云上解析域名][video_resolve_domain] > <video for="video_resolve_domain" platform="qq" vid="t0507ps9kxo" name="域名解析"></video> 域名设置解析后需要过一段时间才会生效,通过 `ping` 命令检查域名是否生效 [:question][replace],如: > <bubble for="replace">注意替换下面命令中的 `www.yourdomain.com` 为您自己的注册的域名</bubble> ``` ping www.yourdomain.com ``` 如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。 ## 运行环境准备 > <time>10min ~ 20min</time> ### 安装 Node.js 使用 yum 命令安装 Node.js ``` curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - yum -y install nodejs ``` > <checker type="output-contains" command="node --help" hint="Node.js 环境安装"> > <keyword regex="node" /> > </checker> > <checker type="output-contains" command="npm --help" hint="npm 环境安装"> > <keyword regex="npm" /> > </checker> ### 使用 NPM 安装 PM2 通过 NPM 安装进程管理模块 PM2。它是 Node.js 的一个进程管理模块,之后我们会使用它来管理我们的个人网站进程。 ``` npm install pm2 -g ``` > <checker type="output-contains" command="pm2 --help" hint="pm2 命令不存在请确认 pm2 已安装成功"> > <keyword regex="pm2" /> > </checker> ### 安装 MySQL [使用 yum 安装 MySQL][yum-install-mysql]: > <bubble for="yum-install-mysql"> > 安装过程需要持续大概 15-20min 左右,请耐心等待。 > </bubble> ``` wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server -y ``` 启动 MySQL 服务: ``` service mysqld restart ``` 设置 MySQL 账户 [root 密码][mysql-password]: > <bubble for="mysql-password"> > 下面命令中的密码是教程为您自动生成的,为了方便实验的进行,不建议使用其它密码。如果设置其它密码,请把密码记住,在后续的步骤会使用到。 > </bubble> ``` /usr/bin/mysqladmin -u root password '${runtime.vars.allocatedPassword}4Firekylin' ``` > <checker type="output-contains" command="mysqld --version" hint="MySQL 未安装"> > <keyword regex="mysqld" /> > </checker> > <checker type="output-contains" command="mysql -u root --password='${runtime.vars.allocatedPassword}4Firekylin' -e &quot;select 'success' as ''&quot; 2>/dev/null" hint="使用生成的密码无法连接 MySQL,如果你已使用自己的密码完成了设置,请直接进入下一步。"> > <keyword regex="success" /> > </checker> ### 安装 Nginx 在 CentOS 上,可直接使用 [yum][aptget] 来安装 Nginx > <bubble for="aptget"> > 如果是 Debian/Ubuntu 则使用 apt-get 安装即可。 > </bubble> ``` yum install nginx -y ``` > <checker type="output-contains" command="nginx -v 2>&amp;1 >/dev/null" hint="Nginx 环境安装"> > <keyword regex="nginx" /> > </checker> ## 安装并配置 Firekylin > <time>5min ~ 10min</time> ### 安装 Firekylin 在服务器上下载安装包 ``` wget https://firekylin.org/release/latest.tar.gz ``` 解压安装包 ``` tar zvxf latest.tar.gz ``` 安装程序依赖 ``` cd firekylin npm install ``` 复制项目下的 `pm2_default.json` 文件生成新文件 `pm2.json` ``` cp pm2_default.json pm2.json ``` 修改 [pm2.json][pm2.json] 文件中的 cwd 配置值为项目的当前路径 `/root/firekylin`: ``` { "apps": [{ "name": "firekylin", "script": "www/production.js", "cwd": "/root/firekylin", "exec_mode": "fork", "max_memory_restart": "1G", "autorestart": true, "node_args": [], "args": [], "env": { } }] } ``` > <locate for="pm2.json" path="/root/firekylin/pm2.json" hint="修改 pm2.json 文件的 cwd 配置项的值为 /root/firekylin"></locate> > <checker type="output-contains" command="ls -la /root/firekylin" hint="请创建文件 pm2.json"> > <keyword regex="pm2.json" /> > </checker> > <checker type="output-contains" command="cat /root/firekylin/pm2.json" hint="pm2.json的配置项 cwd 设置不正确"> > <keyword regex="/root/firekylin" /> > </checker> 然后通过以下命令启动项目 ``` pm2 startOrReload pm2.json ``` Firekylin 已经启动成功,使用浏览器直接访问 http://${runtime.vars.cvmIpAddress}:8360/ 即可看到 Firekylin 的配置界面。 > <checker type="output-contains" command="pm2 list" hint="请启动项目"> > <keyword regex="firekylin" /> > </checker> ### 配置信息 通过访问 http://${runtime.vars.cvmIpAddress}:8360/ 配置信息,配置过程输入参数如截图所示,其中数据库信息中的`帐号`字段设置为 `root`,`密码`字段设置为 `${runtime.vars.allocatedPassword}4Firekylin`,`数据库名`字段设置为 `firekylin`,`主机`字段设置为 `127.0.0.1`,其他字段使用默认值;后台管理帐号中的`帐号`字段使用默认值 `admin`,`密码`字段设置为 `${runtime.vars.allocatedPassword}4Admin`: ![](https://mc.qcloudimg.com/static/img/2b6b8757d891a5c67581f64b0c75cc42/1.png) 配置完成后可以通过后台管理帐号设置的`帐号`和`密码`登录[博客管理后台][http://119.29.192.239:8360/admin/dashboard],其值分别为 `admin` 和 `${runtime.vars.allocatedPassword}4Admin`,截图如下所示: ![](https://mc.qcloudimg.com/static/img/d5b5b0b892c165eb6d80e8a699d22657/1.png) > <checker type="output-contains" command="ls -la /root/firekylin/app/common/config" hint="请访问网站进行配置"> > <keyword regex="db.js" /> > </checker> ### 配置 Nginx 下面我们就配置 Nginx 使用域名访问我们的网站了。 复制项目下的 nginx_default.conf 为 nginx.conf ``` cp nginx_default.conf nginx.conf ``` > <checker type="output-contains" command="ls -la /root/firekylin" hint="请创建文件 nginx.conf"> > <keyword regex="nginx.conf" /> > </checker> 修改 [nginx.conf][nginx.conf] 文件 ``` server { listen 80; server_name www.yourdomain.com; #将 www.yourdomain.com 替换为之前注册并解析的域名 root /root/firekylin; set $node_port 8360; index index.js index.html index.htm; location ^~ /.well-known/acme-challenge/ { alias /root/firekylin/ssl/challenges/; try_files $uri = 404; } location / { proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:$node_port$request_uri; proxy_redirect off; } location = /development.js { deny all; } location = /testing.js { deny all; } location = /production.js { deny all; } } ``` 将 nginx.conf 文件软链到 nginx 配置目录下 > <locate for="nginx.conf" path="/root/firekylin/nginx.conf" hint="修改 nginx.conf 文件配置信息"></locate> > <bubble for="nginx-conf-tip"> > server_name 的值为你的域名,root 为你的项目所在路径,$node_port 的值为 Firekylin 启动端口,默认为 8360。 > </bubble> ``` ln -s /root/firekylin/nginx.conf /etc/nginx/conf.d/firekylin.conf ``` > <checker type="output-contains" command="ls -la /etc/nginx/conf.d" hint="请创建 nginx 文件软链"> > <keyword regex="firekylin" /> > </checker> 重启 Nginx ``` service nginx restart ``` > <checker type="output-contains" command="ps -ef|grep -v grep" hint="nginx 未启动"> > <keyword regex="nginx" /> > </checker> ### 大功告成! 恭喜,您的 Firekylin 已经部署完成,尽情折腾吧: 博客访问地址:<http://&lt;您的域名&gt;> 博客后台地址:<http://&lt;您的域名&gt;/admin>