上一篇:(5)浅浅记录一个网站的诞生之旅:Python 安装
数据库方面,网站准备使用 MongoDB 作为主要数据库,可以方便地实现服务的拓容。进行 MongoDB 的安装需要注意:MongoDB 的5.x 及后续版本需要 CPU 支持 AVX 指令集,否则只能安装 4.x 或更低的版本。
# 查询 CPU 是否支持 AVX
[root@ffs ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 15
Model: 6
Model name: Common KVM processor
Stepping: 1
CPU MHz: 1999.999
BogoMIPS: 3999.99
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
L3 cache: 16384K
NUMA node0 CPU(s): 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology eagerfpu pni cx16 x2apic hypervisor lahf_lm rsb_ctxsw
# 在 Flags 这栏如果没有找到 avx 则说明此 CPU 不支持 AVX 指令集
我的服务器的 CPU 不支持 AVX,所以准备安装 4.x 中最新的版本。首先打开 MongoDB 官方下载页面选择需要的版本(Version),平台(Platform)选择“RedHat / CentOS 7.0 x64”,包(Package)选择“tgz”,注意别选成“Shell (tgz)”了,最后点击复制链接(Copy link)即可获取下载链接
下载并解压 MongoDB
# 下载 MongoDB 4.4.23
[root@ffs ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.23.tgz
# 解压文件
[root@ffs ~]# tar -zxvf mongodb-linux-x86_64-rhel70-4.4.23.tgz
下载的 MongoDB 是编译好的,可以直接使用
# 移动 MongoDB 的位置
[root@ffs ~]# mv ./mongodb-linux-x86_64-rhel70-4.4.23 /usr/local/mongodb
# 创建链接
[root@ffs ~]# ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
[root@ffs ~]# ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod
为 MongoDB准备运行环境
# 打开 MongoDB 目录
[root@ffs ~]# cd /usr/local/mongodb
# 创建数据目录和日志目录
[root@ffs mongodb]# mkdir data
[root@ffs mongodb]# mkdir logs
# 创建日志文件
[root@ffs mongodb]# touch ./logs/mongodb.log
接下来制作 MongoDB 的启动参数文件
# 首先创建并编辑启动参数文件
[root@ffs mongodb]# vi ./bin/mongodb.conf
在文件中写入如下内容并保存
# 数据文件存放目录
dbpath = /usr/local/mongodb/data
# 日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
logappend=true
# 端口
port = 27017
# 以守护程序的方式启用,即在后台运行
fork = true
# 认证模式
auth = false
# 远程连接
bind_ip = 0.0.0.0
接下来便可启动 MongoDB 了
# 使用启动参数文件启动 MongoDB
[root@ffs mongodb]# mongod -f /usr/local/mongodb/bin/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 5670
child process started successfully, parent exiting
启动后使用 mongo 可以连接数据库说明安装成功(连接后可使用 exit 退出)
[root@ffs mongodb]# mongo
MongoDB shell version v4.4.23
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a6997f23-b594-461c-a74a-7cc5c20b24f7") }
MongoDB server version: 4.4.23
---
The server generated these startup warnings when booting:
2023-07-19T18:02:50.278+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
2023-07-19T18:02:52.870+08:00: You are running this process as the root user, which is not recommended
2023-07-19T18:02:52.870+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
2023-07-19T18:02:52.870+08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
2023-07-19T18:02:52.870+08:00: Soft rlimits too low
2023-07-19T18:02:52.870+08:00: currentValue: 1024
2023-07-19T18:02:52.870+08:00: recommendedMinimum: 64000
---
> exit
bye
现在关闭 MongoDB,并创建编辑 MongoDB 的服务脚本
# 强制停止 MongoDB
[root@ffs ~]# pkill mongod
# 制作服务脚本文件
[root@ffs ~]# vi /usr/lib/systemd/system/mongod.service
在文件中添加以下内容:
[Unit]
Description = mongod
After = network.target
[Service]
Type = forking
ExecStart = /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
ExecReload = pkill mongod && /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
ExecStop = pkill mongod
PrivateTmp = true
[Install]
WantedBy = multi-user.target
调整权限并配置服务
# 设置脚本的权限
[root@ffs ~]# chmod 755 /usr/lib/systemd/system/mongod.service
# 重载并启动服务
[root@ffs ~]# systemctl daemon-reload
[root@ffs ~]# systemctl start mongod.service
# 设置开机自启
[root@ffs ~]# systemctl enable mongod.service
附上一些服务控制的常用命令:
systemctl start mongod.service # 启动服务
systemctl stop mongod.service # 停止服务
systemctl reload mongod.service # 重载服务 (推荐使用)
systemctl restart mongod.service # 重启服务
systemctl status mongod.service # 查看状态
systemctl enable mongod.service # 设置为开机启动
systemctl disable mongod.service # 取消开机启动
安装完 MongoDB 后再来安装相关的管理工具。先打开管理工具下载页面,版本(Version)选择“100.7.3”,平台(Platform)选择“RedHat / CentOS 7.0 x86_64”,包(Package)选择“tgz”,然后点击复制链接(Copy link)获取下载链接后,下载并解压工具
# 下载并解压文件
[root@ffs ~]# wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.7.3.tgz
[root@ffs ~]# tar -zxvf mongodb-database-tools-rhel70-x86_64-100.7.3.tgz
[root@ffs ~]# cd mongodb-database-tools-rhel70-x86_64-100.7.3
# 将管理工具移动到安装目录里
[root@ffs mongodb-database-tools-rhel70-x86_64-100.7.3]# mv ./bin/* /usr/local/mongodb/bin/
此外,为了提升数据库的安全性,我们需要启用安全认证
# 连接数据库
[root@ffs ~]# mongo
# 先创建一个超级用户
# 在 "admin" 数据库中,创建 "admin" 用户,"password" 替换为自己的密码,授予该用户“超级用户角色”
> use admin;
> db.createUser({user: 'admin', pwd: 'password', roles: [{role: 'root', db: 'admin'}]});
# 再创建一个管理用户
> use db1;
> db.createUser({user: "name", pwd: "password", roles: [{ role: "dbOwner", db: "db1" }]});
用户创建完成后,关闭数据库并打开安全认证
# 关闭数据库
> use admin;
> db.shutdownServer();
# 打开数据库启动参数文件
[root@ffs ~]# vi /usr/local/mongodb/bin/mongodb.conf
# 把 "auth = false" 改为 "auth = true" 并保存
# 再次启动数据库服务
[root@ffs ~]# systemctl start mongod.service
# 连接数据库
[root@ffs ~]# mongo
# 身份认证
> db.auth("admin","password")
# 输出 1 则代表认证成功