├── 03. 项目准备 part2(介绍 vue-element-admin) └── 课件 │ ├── vue-admin-template-master.zip │ └── vue-element-admin-master.zip ├── 04. 项目准备 part3(搭建项目架子) ├── 课件 │ ├── 成品目录.jpg │ └── 隐藏资源管理器显示的文件.txt └── 课程代码 │ └── background-system.zip ├── 05. 项目准备 part4(服务器和接口) ├── 课件 │ └── 课堂笔记.md └── 课堂代码 │ └── mysite2.zip ├── 06. 登录界面制作 └── 课堂代码 │ └── background-system2.zip ├── 07. 登录功能制作 ├── 课件 │ └── 登录流程.md └── 课堂代码 │ └── background-system2.zip ├── 08. 鉴权功能制作 ├── 课件 │ └── 鉴权.md └── 课堂代码 │ └── background-system2.zip ├── 09. 首页标语 part1(页面渲染) └── 课堂代码 │ ├── background-system2.zip │ └── mysite-server2.zip ├── 10. 首页标语 part2(完成编辑和图片上传) └── 课堂代码 │ └── background-system2.zip ├── 11. 文章模块 part1(文章列表渲染、分页、删除文章) └── 课堂代码 │ └── background-system2.zip ├── 12. 文章模块 part2(文章分类) └── 课堂代码 │ └── background-system2.zip ├── 13. 文章模块 part3(添加和编辑文章) ├── 代码 │ └── background-system2.zip └── 课堂笔记 │ └── Markdown 编辑器.md ├── 14. 文章模块 part4(优化添加和编辑文章) └── 课堂代码 │ └── background-system2.zip ├── 15. 项目管理模块 ├── 课件 │ └── download.zip └── 课堂代码 │ └── background-system2.zip ├── 16. 评论管理和留言板模块 └── 课堂代码 │ └── background-system2.zip ├── 17. 关于我、设置和个人信息模块 └── 课堂代码 │ ├── background-system2.zip │ └── mysite-client2.zip └── 18. 项目部署到阿里云 ├── 数据的导入与备份.pdf └── 项目部署.md /03. 项目准备 part2(介绍 vue-element-admin)/课件/vue-admin-template-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/03. 项目准备 part2(介绍 vue-element-admin)/课件/vue-admin-template-master.zip -------------------------------------------------------------------------------- /03. 项目准备 part2(介绍 vue-element-admin)/课件/vue-element-admin-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/03. 项目准备 part2(介绍 vue-element-admin)/课件/vue-element-admin-master.zip -------------------------------------------------------------------------------- /04. 项目准备 part3(搭建项目架子)/课件/成品目录.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/04. 项目准备 part3(搭建项目架子)/课件/成品目录.jpg -------------------------------------------------------------------------------- /04. 项目准备 part3(搭建项目架子)/课件/隐藏资源管理器显示的文件.txt: -------------------------------------------------------------------------------- 1 | "**/.git": true, 2 | "**/.svn": true, 3 | "**/.hg": true, 4 | "**/CVS": true, 5 | "**/.DS_Store": true, 6 | // "**/node_modules": true, 7 | "**/shims-tsx.d.ts": true, 8 | "**/shims-vue.d.ts": true, 9 | "**/.browserslistrc": true, 10 | "**/.eslintrc.js": true, 11 | "**/.gitignore": true, 12 | "**/babel.config.js": true, 13 | "**/package-lock.json": true, 14 | "**/README.md": true, 15 | "**/tsconfig.json": true, 16 | "**/.env": true, 17 | "**/.env.development": true, 18 | "**/.env.preview": true, 19 | "**/.env.production": true, 20 | "**/.travis.yml": true, 21 | "**/.env.staging": true, 22 | "**/.eslintignore": true, 23 | "**/.editorconfig": true, 24 | "**/.github": true, 25 | "**/tests": true, 26 | "**/jsconfig.json": true, 27 | "**/jest.config.js": true, 28 | "**/.postcssrc.js": true, 29 | "**/d2-admin.babel": true, 30 | "**/dependencies-cdn.js": true, 31 | "**/README.zh.md": true, 32 | "**/LICENSE": true, 33 | "**/postcss.config.js": true, 34 | "**/README-zh.md": true, -------------------------------------------------------------------------------- /04. 项目准备 part3(搭建项目架子)/课程代码/background-system.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/04. 项目准备 part3(搭建项目架子)/课程代码/background-system.zip -------------------------------------------------------------------------------- /05. 项目准备 part4(服务器和接口)/课件/课堂笔记.md: -------------------------------------------------------------------------------- 1 | # 课堂笔记 2 | 3 | ## 服务器地址 4 | 5 | 6 | 7 | https://gitee.com/dev-edu/mysite-server 8 | 9 | 10 | 11 | ## 接口地址 12 | 13 | 14 | 15 | http://mock.duyiedu.com/ 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /05. 项目准备 part4(服务器和接口)/课堂代码/mysite2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/05. 项目准备 part4(服务器和接口)/课堂代码/mysite2.zip -------------------------------------------------------------------------------- /06. 登录界面制作/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/06. 登录界面制作/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /07. 登录功能制作/课件/登录流程.md: -------------------------------------------------------------------------------- 1 | # 登录流程 2 | 3 | 4 | 5 | ## 点击登录按钮后的流程 6 | 7 | 8 | 9 | ![image-20210720200959975](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-07-24-032929.png) 10 | 11 | 12 | 13 | ## 服务器返回数据后的流程 14 | 15 | 16 | 17 | ![image-20210720201448702](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-07-24-032947.png) 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /07. 登录功能制作/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/07. 登录功能制作/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /08. 鉴权功能制作/课件/鉴权.md: -------------------------------------------------------------------------------- 1 | # 鉴权 2 | 3 | 4 | 5 | ## vue-element-admin 中的鉴权流程 6 | 7 | 8 | 9 | image-20210720233150150 10 | 11 | 12 | 13 | ## 改造后的鉴权流程 14 | 15 | 16 | 17 | image-20210721101551824 18 | 19 | -------------------------------------------------------------------------------- /08. 鉴权功能制作/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/08. 鉴权功能制作/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /09. 首页标语 part1(页面渲染)/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/09. 首页标语 part1(页面渲染)/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /09. 首页标语 part1(页面渲染)/课堂代码/mysite-server2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/09. 首页标语 part1(页面渲染)/课堂代码/mysite-server2.zip -------------------------------------------------------------------------------- /10. 首页标语 part2(完成编辑和图片上传)/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/10. 首页标语 part2(完成编辑和图片上传)/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /11. 文章模块 part1(文章列表渲染、分页、删除文章)/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/11. 文章模块 part1(文章列表渲染、分页、删除文章)/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /12. 文章模块 part2(文章分类)/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/12. 文章模块 part2(文章分类)/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /13. 文章模块 part3(添加和编辑文章)/代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/13. 文章模块 part3(添加和编辑文章)/代码/background-system2.zip -------------------------------------------------------------------------------- /13. 文章模块 part3(添加和编辑文章)/课堂笔记/Markdown 编辑器.md: -------------------------------------------------------------------------------- 1 | ## Markdown 编辑器 2 | 3 | 4 | 5 | 我们使用的是 toast-ui 6 | 7 | 8 | 9 | toast-ui 的官网地址:https://ui.toast.com/ 10 | 11 | 12 | 13 | 该编辑器有 vue 版本:https://www.npmjs.com/package/@toast-ui/vue-editor 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /14. 文章模块 part4(优化添加和编辑文章)/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/14. 文章模块 part4(优化添加和编辑文章)/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /15. 项目管理模块/课件/download.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/15. 项目管理模块/课件/download.zip -------------------------------------------------------------------------------- /15. 项目管理模块/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/15. 项目管理模块/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /16. 评论管理和留言板模块/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/16. 评论管理和留言板模块/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /17. 关于我、设置和个人信息模块/课堂代码/background-system2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/17. 关于我、设置和个人信息模块/课堂代码/background-system2.zip -------------------------------------------------------------------------------- /17. 关于我、设置和个人信息模块/课堂代码/mysite-client2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/17. 关于我、设置和个人信息模块/课堂代码/mysite-client2.zip -------------------------------------------------------------------------------- /18. 项目部署到阿里云/数据的导入与备份.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DuYi-Edu/vue-component-lib/7c14e12c151780e2c62ead0b742e699550cf3e4f/18. 项目部署到阿里云/数据的导入与备份.pdf -------------------------------------------------------------------------------- /18. 项目部署到阿里云/项目部署.md: -------------------------------------------------------------------------------- 1 | # 项目部署 2 | 3 | 4 | 5 | ## 1. 项目部署介绍 6 | 7 | 8 | 9 | 当我们的项目开发完毕后,我们需要将项目打包、部署到服务器上,供用户来使用。 10 | 11 | 12 | 13 | 目前,常见的部署方式有两种: 14 | 15 | 16 | 17 | - 后端部署 18 | - 前后端分离部署 19 | 20 | 21 | 22 | ### 1-1 后端部署 23 | 24 | 25 | 26 | 这是最古老的部署方式,也是最常见的一种部署方式。 27 | 28 | 29 | 30 | 我们前端只需要将我们的项目打包好,交给后端开发人员即可。后端开发人员会把我们打包好的项目放到后端的静态资源目录里面。 31 | 32 | 33 | 34 | ![image-20210804210004590](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-04-130004.png) 35 | 36 | 37 | 38 | ### 1-2 前后端分离部署 39 | 40 | 41 | 42 | 随着前后端分离开发模式的流行,现在可以采用前后端分离部署的形式。后端部署后端服务器的代码,前端将打包好的资源,部署到前端的服务器上面,用户在做请求的时候,从前端服务器请求静态资源,然后从后端服务器获取数据。 43 | 44 | 45 | 46 | ![image-20210804210409646](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-04-130410.png) 47 | 48 | 49 | 50 | 目前前端部署静态资源时,大多采用 Node.js 或者 Nginx 来做静态资源部署,我们这里选择 Nginx。 51 | 52 | 53 | 54 | ## 2. 部署具体流程 55 | 56 | 57 | 58 | ### 2-1 阿里云购买服务器 59 | 60 | 61 | 62 | 首先,我们需要一台服务器,现在流行的云服务器极大的节约了我们部署成本,我们能够很轻松的快速拥有一台服务器。 63 | 64 | 65 | 66 | 阿里云:https://www.aliyun.com/ 67 | 68 | 69 | 70 | (1)注册账号 71 | 72 | (2)选择“云服务器 ECS”,点击查看详情 73 | 74 | 75 | 76 | ![image-20210804232354218](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-04-152354.png) 77 | 78 | 79 | 80 | (3)立即购买 81 | 82 | ![image-20210804232443158](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-04-152443.png) 83 | 84 | 85 | 86 | (4)选择“一键购买” 87 | 88 | ![image-20210804232530827](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-04-152531.png) 89 | 90 | 91 | 92 | 镜像选择 CentOS。 93 | 94 | 95 | 96 | 进入到 Linux 系统后,使用命令来进行操作,先介绍几个命令: 97 | 98 | 99 | 100 | ls:查看当前目录下的文件有哪些 101 | 102 | exit:退出系统 103 | 104 | clear:清屏 105 | 106 | touch:创建文件,例如 touch 文件名 107 | 108 | mkdir:创建目录,例如 mkdir 目录名称 109 | 110 | mv:移动目录或者文件,例如 mv 要移动的文件或者目录 要移动到哪儿 111 | 112 | rm -rf 要删除的目录或者文件名:删除目录或者文件 113 | 114 | 115 | 116 | 本地连接云服务器:ssh -p 22 root@xxx.xxx.xxx.xxx 117 | 118 | 119 | 120 | 具体的操作流程见视频。 121 | 122 | 123 | 124 | ### 2-2 安装 Node.js 125 | 126 | 127 | 128 | 安装 Node.js:https://help.aliyun.com/document_detail/50775.html 129 | 130 | 131 | 132 | ### 2-3 安装 MongoDB 133 | 134 | 135 | 136 | 安装依赖库: 137 | 138 | 139 | 140 | `yum -y install pcre*` 141 | 142 | `yum -y install openssl*` 143 | 144 | 145 | 146 | 安装 MongoDB: 147 | 148 | 149 | 150 | 下载:`curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.2.1.tgz` 151 | 152 | 解压:`tar zxvf mongodb-linux-x86_64-4.2.1.tgz` 153 | 154 | 移动:`mv mongodb-linux-x86_64-4.2.1/ /usr/local/mongodb` 155 | 156 | 创建数据文件夹、日志文件和mongo配置文件: 157 | 158 | ```js 159 | mkdir -p /usr/local/mongodb/data/db 160 | touch /usr/local/mongodb/mongod.log 161 | touch /usr/local/mongodb/mongodb.conf 162 | ``` 163 | 164 | 在配置文件中加入如下代码: 165 | 166 | ```js 167 | dbpath=/usr/local/mongodb/data/db 168 | logpath=/usr/local/mongodb/log/mongod.log 169 | logappend = true 170 | port = 27017 171 | fork = true 172 | auth = true 173 | ``` 174 | 175 | 176 | 177 | 切换到 mongodb 的 bin 下: 178 | 179 | ![image-20210805093056262](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-05-013057.png) 180 | 181 | 182 | 183 | 启动:`./mongod --dbpath /usr/local/mongodb/data/db` 184 | 185 | 186 | 187 | `mongod -dbpath=/usr/local/mongodb/data/db --bind_ip 0.0.0.0` 188 | 189 | 指定所有的 *ip* 都可以连接上,当然现在只是暂时的,后面项目部署上去后,肯定是要关闭的。 190 | 191 | 192 | 193 | 可能遇到的错误以及解决方案: 194 | 195 | 196 | 197 | Segmentation fault (core dumped): 198 | 199 | https://blog.csdn.net/weixin_44320761/article/details/107671990 200 | 201 | 202 | 203 | error while loading shared libraries: libssl.so.10,既libssl.so.10缺失库文件的解决办法: 204 | 205 | https://blog.csdn.net/xcyja/article/details/115357818 206 | 207 | 208 | 209 | ### 2-4 上传服务器代码以及数据库数据 210 | 211 | 212 | 213 | 导出数据库的数据,详细参见文档。 214 | 215 | 216 | 217 | 如果是 widnows 系统,参阅:https://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html 218 | 219 | 220 | 221 | 接下来,我们需要将打包好的数据库数据压缩包以及服务器代码压缩包(删除 node_modules)上传到云服务器。 222 | 223 | 224 | 225 | windows 系统:可以使用 finalshell(使用方法很简单,安装,连接服务器,将要上传的文件拖动到对应窗口即可) 226 | 227 | 228 | 229 | mac 系统:可以使用自带的 shell 工具。 230 | 231 | 232 | 233 | 打开 shell 工具,选择【新建远程连接】 234 | 235 | 236 | 237 | image-20210805143549450 238 | 239 | 240 | 241 | 选择【安全文件传输(sftp)】,下面要填写用户名和对应的服务器的 ip 地址 242 | 243 | image-20210805143631378 244 | 245 | 246 | 247 | 点击【连接】,如下: 248 | 249 | 250 | 251 | image-20210805143922456 252 | 253 | 254 | 255 | 使用命令:put 要上传的文件的地址 远程服务器的具体地址 256 | 257 | 例如:put /Users/Jie/Desktop/dbData.zip /usr/local 258 | 259 | 260 | 261 | 解压 zip 压缩包命令:unzip 压缩包名 262 | 263 | 例如:unzip dbData.zip 264 | 265 | 266 | 267 | 启动服务器:进入到服务器目录,安装依赖包,npm start 启动即可 268 | 269 | 270 | 271 | ### 2-5 安装 Nginx 静态资源服务器 272 | 273 | 274 | 275 | (1)下载依赖 276 | 277 | `yum -y install pcre*` 278 | 279 | `yum -y install openssl*` 280 | 281 | (2)下载 wget(类似于迅雷,用来下载文件的) 282 | 283 | `yum install wget` 284 | 285 | (3)下载 nginx 286 | 287 | `wget http://nginx.org/download/nginx-1.21.1.tar.gz` 288 | 289 | (4)解压 290 | 291 | `tar zxvf nginx-1.21.1.tar.gz` 292 | 293 | (5)进入到解压后的目录,编译 294 | 295 | `./configure` 296 | 297 | (6)安装 298 | 299 | `make install` 300 | 301 | 302 | 303 | 安装完毕后,会在同级目录生成一个 nginx 的目录,这个才是我们的服务器目录 304 | 305 | 306 | 307 | nginx 常用命令: 308 | 309 | 310 | 311 | - nginx:启动 312 | 313 | - nginx -v:查看版本 314 | 315 | - nginx -s stop:停止 316 | 317 | - nginx -s reload:重启 318 | 319 | 320 | 321 | ### 2-6 打包静态资源 322 | 323 | 324 | 325 | 打包前台代码: 326 | 327 | 328 | 329 | ```js 330 | npm run build 331 | ``` 332 | 333 | 334 | 335 | 打包后台代码: 336 | 337 | 338 | 339 | ```js 340 | npm run build:prod 341 | ``` 342 | 343 | 344 | 345 | 将打包好的前台代码放入 nginx 的 html 目录下,将打包好的后台代码放入到 nginx/html/admin 目录下 346 | 347 | 348 | 349 | 修改 nginx 的配置文件,该文件位于 conf 目录下的 nginx.conf,添加代理设置: 350 | 351 | 352 | 353 | ```js 354 | location / { 355 | root html; 356 | index index.html index.htm; 357 | try_files $uri $uri/ /index.html; 358 | } 359 | 360 | location /api { 361 | proxy_pass http://127.0.0.1:7001; 362 | } 363 | 364 | location /res { 365 | proxy_pass http://127.0.0.1:7001; 366 | } 367 | 368 | location /static { 369 | proxy_pass http://127.0.0.1:7001; 370 | } 371 | ``` 372 | 373 | 374 | 375 | ### 2-7 进程守护 376 | 377 | 378 | 379 | 在 Linux 中,可以输入: 380 | 381 | 382 | 383 | ```js 384 | nohup command & 385 | ``` 386 | 387 | 388 | 389 | 来把进程挂起,这样即使我们退出了远程连接,也能够继续保持进程。 390 | 391 | 392 | 393 | 使用示例: 394 | 395 | 396 | 397 | ```js 398 | nohup npm start & 399 | ``` 400 | 401 | 402 | 403 | 挂起进程之后,使用 *exit* 命令来退出远程连接。 404 | 405 | 406 | 407 | ### 2-8 域名映射 408 | 409 | 410 | 411 | 目前为止,我们的项目就已经部署成功了,但是用 IP 访问不是太友好,所以我们来进行域名的映射。 412 | 413 | 414 | 415 | 首先,我们需要购买一个域名。 416 | 417 | 418 | 419 | ![image-20210805160701936](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-05-080702.png) 420 | 421 | 422 | 423 | 购买完成后,点击【管理我的域名】 424 | 425 | ![image-20210805160958043](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-05-080958.png) 426 | 427 | 428 | 429 | 进去之后,找到要映射的域名,点击【解析】 430 | 431 | ![image-20210805161048749](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-05-081049.png) 432 | 433 | 434 | 435 | 进去之后,点击【添加记录】 436 | 437 | ![image-20210805161121894](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-05-081122.png) 438 | 439 | 440 | 441 | 填写的内容如下: 442 | 443 | 444 | 445 | 记录类型选择【A】,主机记录填写【www】,记录值填写【IP 地址】 446 | 447 | 448 | 449 | image-20210805161215113 450 | 451 | 452 | 453 | ### 2-9 数据库加密 454 | 455 | 456 | 457 | 为了权限接入可用,必须确保有一个用户是 *userAdmin* 或者 *userAdminAnyDatabase* 的角色在 *admin* 数据库里。 458 | 因此,我们首先创建用户 *root* 用户在 *admin* 数据库里,代码如下: 459 | 460 | 461 | 462 | ```js 463 | use admin # 切换 admin 数据库 464 | db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db: "admin"}]}) 465 | ``` 466 | 467 | 468 | 469 | 具体操作如下图: 470 | 471 | 472 | 473 | ![image-20210812093119060](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-12-013119.png) 474 | 475 | > 注:*db* 可以查看当前所使用的数据库 476 | 477 | 478 | 479 | ![image-20210812093151829](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-12-013151.png) 480 | 481 | 482 | 483 | 接下来在其他数据库上面创建用户,但是一定要注意先在 *admin* 数据库上面使用刚才的超级管理员登录,再进行其他数据库用户创建的创建。 484 | 485 | 对应代码如下: 486 | 487 | 488 | 489 | ```js 490 | use amdin 491 | db.auth("root","123456") 492 | ``` 493 | 494 | 495 | 496 | 在 *mongodb* 中 *admin* 数据库是一个特别的数据库,这个数据库的用户,可以访问 *mongodb* 中的所有数据库。 497 | 498 | 499 | 500 | 如果要为其他数据库设置用户,步骤也是一样的,首先切换到其他数据库,然后创建用户 501 | 502 | 503 | 504 | ```js 505 | use 数据库名 506 | db.createUser({user:"用户名",pwd:"密码",roles:[{role:"read",db: "数据库名"},{role:"readWrite",db:"数据库名"}]}) 507 | ``` 508 | 509 | 510 | 511 | ![image-20210812093225943](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-12-013226.png) 512 | 513 | 514 | 515 | 最后执行 516 | 517 | 518 | 519 | ```js 520 | db.auth("用户名","密码") 521 | ``` 522 | 523 | 524 | 525 | ![image-20210812093306323](https://xiejie-typora.oss-cn-chengdu.aliyuncs.com/2021-08-12-013307.png) 526 | 527 | 528 | 529 | 返回 *1*,说明登录成功。 530 | 531 | 532 | 533 | 至此,我们就在数据库上面添加了一个用户,并且设置了账号和密码。 534 | 535 | 536 | 537 | 修改 *mongodb* 的配置文件: 538 | 539 | 540 | 541 | ```js 542 | systemLog: 543 | destination: file #日志输出方式。file/syslog,如果是file,需指定path,默认是输出到标准输出流中 544 | path: /usr/local/mongodb/mongod.log #日志路径 545 | logAppend: true #启动时,日志追加在已有日志文件内还是备份旧日志后,创建新文件记录日志, 默认false 546 | 547 | net: 548 | port: 27017 #监听端口,默认27017 549 | bindIp: 0.0.0.0 #绑定监听的ip,设置为127.0.0.1时,只会监听本机 550 | maxIncomingConnections: 65536 #最大连接数,可接受的连接数还受限于操作系统配置的最大连接数 551 | wireObjectCheck: true #校验客户端的请求,防止错误的或无效BSON插入,多层文档嵌套的对象会有轻微性能影响,默认true 552 | 553 | processManagement: 554 | fork: true # 后台运行 555 | 556 | security: 557 | authorization: enabled # enabled/disabled #开启客户端认证 558 | 559 | storage: 560 | dbPath: /usr/local/mongodb/data/db # 数据库地址 561 | journal: 562 | enabled: true #启动journal,64位系统默认开启,32位默认关闭 563 | ``` 564 | 565 | 566 | 567 | 然后在启动 *mongodb* 的时候,指定读取配置文件: 568 | 569 | 570 | 571 | ```js 572 | ./mongod --config /usr/local/mongodb/mongodb.conf 573 | ``` 574 | 575 | 576 | 577 | > 查看进程的 PID: 578 | > 579 | > lsof -i:端口号 580 | > 581 | > 例如:lsof -i:27017 582 | > 583 | > 停止进程 584 | > 585 | > kill -9 PID 586 | > 587 | > 例如:kill -9 24311 588 | 589 | 590 | 591 | 远程数据库连接时,需要输入账号以及密码。 592 | 593 | 594 | 接下来就是在你的服务器端代码里面,使用 *mongoose* 的时候,连接的是有权限的数据库,所以需要修改连接字符串: 595 | 596 | 597 | 598 | ```js 599 | 连接字符串修改为:mongodb://username:password@ip:port/database?authSource=admin 600 | 601 | 例如:mongodb://testadmin:testadmin123@88.888.88.888:27017/testmongodb?authSource=admin 602 | # 参数说明 603 | # testadmin 用户名称 604 | # testadmin123 用户密码 605 | # 88.888.88.888 服务器地址 606 | # 27017 端口号码 607 | # testmongodb 连接的数据库 608 | # ?authSource=admin 权限来源 609 | # 至此,可以通过 mongoose 连接数据库 610 | ``` 611 | 612 | 613 | 614 | -*EOF*- 615 | 616 | --------------------------------------------------------------------------------