(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软件推送到服务器上
  • 截图如下:(0)腾讯云部署egg项目——服务器准备_第1张图片
  • 命令行:
    $ 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

  • 我使用的腾讯云需要配置安全组策略以开启这个端口(0)腾讯云部署egg项目——服务器准备_第2张图片(0)腾讯云部署egg项目——服务器准备_第3张图片

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

你可能感兴趣的:(#,JavaScript,egg)