本文记录的是博客中系统的配置情况。使用的虚拟机是阿里云提供的 Ubuntu(16.04) 虚拟机,使用的数据库为 MongoDB(3.4.4)。
MongoDB 配置
博客使用 MongoDB 作为博客后台的数据库,MongoDB 的版本为 3.4.4。
首先下载 MongoDB:
1 | wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.4.4.tgz |
然后把 MongoDB 安装到 /root/mongodb
中:
1 | tar -zxvf mongodb-linux-x86_64-3.4.4.tgz |
配置环境变量
修改/etc/profile
和.zshrc
, 添加如下内容
1 | export MONGODB_HOME=/root/mongodb/mongodb-linux-x86_64-ubuntu1604-3.4.4 |
执行命令:
1 | vim /etc/profile |
然后可以通过 mongod -v
查看 MongoDB 的版本信息。
启动
创建数据库目录
MongoDB需要自建数据库文件夹.
1 | touch /var/log/mongodb.log |
添加配置文件
新建mongodb.conf配置文件, 通过这个配置文件进行启动.
1 | touch /root/mongodb/mongodb-linux-x86_64-ubuntu1604-3.4.4/mongo.conf |
配置文件参数说明:
1 | mongodb的参数说明: |
配置文件内容:
1 | dbpath=/data/db |
通过配置文件启动
1 | mkdir /data/db |
出现successfully表示启动成功了.
使用 mongo
命令可以通过命令行登录 MongoDB,如果想要关闭 Mongodb,需要先登录:
1 | use admin; |
创建用户
现在可以给 MongoDB 创建一个博客使用的用户,并且给该用户读写数据库的权限。
1 | // root用户 |
具体的权限有以下几点:
1 | Read:允许用户读取指定数据库 |
如果用户在登录的时候需要验证,则进入用户注册的数据库下,用 auth()
函数来进行用户验证:
1 | use admin; |
配置防火墙
将27017端口添加到防火墙中,80是指web服务器端口,22是指SSH远程管理端口,9615 是 PM2的API
1 | vi /etc/iptables.rules |
1 | # iptables-restore < /etc/iptables.rules #使防火墙规则生效 |
同时,要添加对 8000 端口的地址转换:
1 | sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000 |
顺便在 .zshrc
里面设置 startmongo
命令:
1 | alias startmongo="mongod -f /root/mongodb/mongodb-linux-x86_64-ubuntu1604-3.4.4/mongo.conf" |
MongoDB 数据迁移
注意,数据迁移的时候,不能迁移 auth
用户,所以用户权限需要重新创建。
MongoDB 的数据迁移主要分为两部分,第一部分是使用 mongoexport
导出数据,第二部分是使用 mongoimport
来导入数据。
也可以使用 mongodump
导出数据,使用 momgoresotre
导入数据。
mongoexport
和 mongodump
的区别: Mongodump可以backup整个数据库,而mongoexport要对每个collection进行操作,最主要的区别也是选择的标准是mongoexport输出的JSON比Mongodump的BSON可读性更高,进而可以直接对JSON文件进行操作然后还原数据(BSON转换JSON存在潜在兼容问题)。
在MongoDB Docs 可以搜索以上工具的使用方法以及需要提供的参数信息。
我在迁移的时候,使用的是 mongoexport
工具导出 blog
数据库下面所有的表,因为在之前给数据库设置了权限,所以在导出的时候,需要使用权限验证:
1 | mongodump -d blog -o /Users/yuchenzhang/Desktop/blog.dat --username zyc --password zyc |
然后把该文件夹传到云主机的 /data/db
下,使用 mongorestore
来恢复数据库中的数据,在目的主机上也需要对 blog
数据库进行用户权限验证:
1 | mongorestore -d blog /data/db/blog.dat/blog --username zyc --password zyc |
此时,目的主机上就有我们迁移过来的数据了。
Node 配置
在服务器上,使用 nvm 来安装和管理 Node.js 的版本。
首先运行 nvm 的安装脚本:
1 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash |
可以使用 nvm --version
查看安装的 nvm 版本。
然后使用 nvm
来安装指定版本的 Node.js,由于我的开发环境使用的是 7.3.0
版本,所以在服务器上也安装这个版本:
1 | nvm install 7.3.0 |
然后我们可以运行
1 | nvm ls // 查看安装的 node 的版本 |
PM2 配置
首先来看 PM2 是做什么的呢?
根据官网的介绍,PM2 是一个 Node.js 的生产环境下的进程管理程序,并且自带负载均衡,实现的功能有保证程序的永久运行,并且在程序停止的时候自动进行重载。
首先安装 PM2:
1 | npm install pm2 -g |
我们可以通过 PM2 来运行自己的 Node.js 程序:
1 | pm2 start app.js |
在运行了程序以后,PM2 会返回一个当前程序占用的资源和运行的情况:
1 | ┌──────┬──────┬────────┬───┬─────┬───────────┐ |
当然,除此以外,我们还可以使用 PM2 运行多个程序。
查看运行情况
运行 pm2 list
,可以查看现在所有的 PM2 运行的程序:
1 | pm2 list |
同样,运行 pm2 monit
,可以获得一个实时追踪的运行情况。
如果想查看其中一个应用的详细运行情况,可以使用 pm2 show <id|name>
1 | pm2 show app |
查看日志
可以使用 log
1 | pm2 log |
WEB 查看界面
运行:
1 | pm2 web |
后,可以通过 IP:9615
查看 PM2 中监控的应用运行情况。注意要设置 iptables
来添加对 9615 端口的允许规则。
此时使用 pm2 list
可以看见 PM2 新生成了一个应用 pm2-http-interface
,来提供 9615 端口的服务:
1 | pm2 list |
重启应用
1 | pm2 restart app |
终止应用:
1 | pm2 stop app |
域名解析
我们的博客选择使用 DNSPod 进行域名解析。首先要注册 DNSPod 的账号,
首先在 DNSPod 上创建需要解析的域名,详情请参考DNSPod | 学会使用DNSPod
其中有一些名词需要了解,比如什么是主机记录,记录类型等。具体的名词解释可以参考主机记录和记录值怎么填写
我的域名是在 GoDaddy 上买的,所以还需要在 GoDaddy 上设置 nameserver
为 DNSPod 的域名服务器:f1g1ns1.dnspod.net
和 f1g1ns2.dnspod.net
等待时间刷新即可。
参考
本文参考的文章有: