(0)腾讯云部署egg项目——服务器准备

这是一篇记录文章,记录一些坑点

  • centos7.6
  • mongodb4.2

一、winscp连接服务器异常:Disconnected:No supported authentication methods available

参考自 laviniatu

服务器上的SSH配置 PasswordAuthentication 出现了问题,关闭或者注释后,重启服务器即可。

二、linux服务器安装nodejs

参考自一爿简书

三、linux服务器安装cnpm

参考自mnixu

四、centos6/7安装mongodb

参考自mongodb官方文档

这里我使用了压缩包安装,因为没有使用 yum package manager 安装,所以没有办法详细说说两者的安装难易程度,初学者无论何种安装方式都会觉得坑多的。好了,下面进入正题(为了保障顺利安装,以下均需要 sudo 管理员权限)。

1. 下载 MongoDB .tgz tarball

  • 这里我以4.2版本mongodb作为示例
  • centos系统下载 RHEL 开头的系统,centos几就选 RHEL 几即可。(查询centos系统版本命令行内键入: cat /etc/redhat-release
  • 如果服务器下载的慢了,可以先下载到本地,再使用winScp软件推送到服务器上
  • 截图如下:压缩包
  • 命令行:
    $ wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4.2.1-1.el7.x86_64.rpm
    
    通常是直接下载到了 root目录下

2. 解压缩

  • $ tar -zxvf mongodb-linux-*-4.2.1.tgz 如果下载下来没动地方,应该解压缩到了 root/mongodb-linux-*-4.2.1 文件夹下

3. 迁移

因为这个文件夹名太长了,也不利于后面的配置,所以我们给他改个名:
$ mv mongodb-linux-*-4.2.1 mongodb

4. 添加环境变量

  • 既可以直接使用 mv 迁移也可以使用 ln 创建索引,这里我使用的是:
    $ ln -s /path/to/the/mongodb-directory/bin/* /usr/local/bin/

5. 创建日志和数据库文件目录

  • $ mkdir -p /var/lib/mongo 创建数据库文件目录
  • $ mkdir -p /var/log/mongodb 创建日志文件目录

6. 赋权限(首次创建)

  • $ chown root /var/lib/mongo # Or substitute another user
  • $ chown root /var/log/mongodb # Or substitute another user

7. 运行

  • $ mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
    • –dbpath /var/lib/mongo 指定数据库文件
    • –logpath /var/log/mongodb/mongod.log 指定日志文件
    • –fork 以后台程序方式执行
  • 成功截图:成功

8. 关闭

  • 先查询使用 27017 端口的程序 PID$ netstat -tunlp查询结果可以看到PID为 17491
  • 接下来使用 $ kill [PID],也即$ kill 17491,就可以了

9. 问题与解决

- 出现了问题不要怕,百度一下,还有个方法实在没辙的时候使用清空 **/var/lib/mongo** 和 **/var/log/mongodb** 两个目录再从第6步开始来一遍。
- 关闭 `SELinux` 会省很多事,但是是否关闭还需要你具体去了解一下 `SELinux` 再做判断,我是个人小项目建着玩,所以连带防火墙也一并关闭了。

10. 优化

  • 启动,每次启动后面挂那么些参数是不是很烦,这个时候就可以去添加config文件,我看好多文档上来先创建一个config文件,百思不得其解,后来自己研究了一番确实创建config方便,但是那些博客一上来就创建config文件的写法对初学者非常不友好,这里我们循序渐进,来一起创建一下config文件。

  • 文件路径,如果你的mongodb已经启动了,就是 /etc/mongod.conf 这个文件

  • 下面展示一下我的mongod.conf
    ```bash
    # 日志目录
    systemLog:
    destination: file #这里必须设置为 file,下面的path才能起作用
    path: /var/log/mongodb/mongod.log

      storage:
       dbPath: /var/lib/mongo
      
      # 监听所有IP
      net:
       bindIp: 0.0.0.0
      
      # 后台进程
      processManagement:
       fork: true
       
      security:
       authorization: enabled # 为了远程连接数据库,必须开启这个功能
       ```
    
  • 上面使用了 yaml格式配置文件,学习这个配置文件格式可以看一看阮一峰大神的博客,这里就不过多讲述,就讲两个重点吧:注意大小写;使用空格缩进代表次级,多少个空格无所谓,不要使用tab。

    • yaml格式config说明
    • 优化之后我们的启动方式就简单多了:
      • $ mongod --config /etc/mongod.conf
      • $ mongod -f /etc/mongod.conf (-f是–config的缩写)

五、 远程连接mongodb

1. 防火墙开放27017端口

$ iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

  • 我使用的腾讯云需要配置安全组策略以开启这个端口安全组入站规则

2. 关闭SELinux

  • 先看一下是否开启了,我的云服务器就没开启这一项,如果你的服务器开启了,就去百度一下如何关闭吧,不想关闭就老老实实去啃官方文档设置一下mongodb。

3. mongodb设置管理员,为了远程连接的时候使用用户名和密码登录

$ mongo # 不要管中间报的错

> db #显示当前数据库,默认为test
	test

> use admin # 转换为admin数据库,这个是mongodb默认创建的数据库,用户存储数据库管理员数据
	switched to db admin

# 如你所见,admin是数据库管理员名,admin888是密码,后面的role和db不需要修改,到此管理员账号就创建好了
# userAdminAnyDatabase:超级用户角色
# admin是一个管理用户的用户,它可以用来创建新用户,并为新创建的用户赋予对应角色
> db.createUser({ user: "admin", pwd: "admin888", roles: [{ role: "root", db: "admin" }] }) 
	Successfully added user:......

> db.auth("admin", "admin888") # 验证一下,返回 1 就代表创建成功了
	1

> ctrl + c # 退出mongo模式(可不退出,继续看下面的 4. 创建数据库用户)

4. 创建数据库用户

摘录自官方文档(使用谷歌翻译)mongodb内置用户角色

这里创建 admin 相当于管理数据库的用户,因为其是创建在 admin 默认数据库中的用户,要让这个用户具有某个数据库的管理权限,需要进行授权角色;或者新创建一个用户用于管理指定数据库,然后授权给他,这里我为了方便演示,直接使用了admin,不过我不太建议这样做。

> use test # 切换到test分支,在test分支创建一个新用户,并对这个用户赋角色readWrite
	switched to db admin
	
> db.createUser({
  user : 'testAdmin',
  pwd : '000000',
  roles : ['readWrite']
})

# 查看用户
> show users
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值