Linux服务器上迁移项目路径,修改nginx配置,迁移及备份MongoDB数据库流程。超详细!

缘由:客户服务器项目路径不是很合理,导致Jenkins自动部署时还需要添加路径后再更新部署,所以需要把项目路径统一和规范化。

  • 迁移项目路径,保证路径合规,同时做好备份和迁移。迁移后先安装好依赖。
  • 项目路径改了,nginx.conf root参数也要做相应的修改,更改为admin,ui等打包后的新的dist路径。同时将以前的启动端口修为7001,进一步规范化。
  • 项目MongoDB数据库名称也不是很合规,因此也需要将MongoDB相应进行备份/删除等操作。

一、先迁移项目路径并进行备份(由于需要规范化的文件夹已经存在。所以先将已有文件夹进行迁移备份)

1. 创建备份文件夹

mkdir backup

2. 迁移已存在的文件夹/文件内容

[root@xxx~]# mv codebot /usr/local/code

将路径 ~ 下的文件夹(目录) codebot 移动到/usr/local/中并命名为重命名为code,所以/usr/local/code文件夹(目录)可以不存在

[root@xxx ~]# mv codebot/* /usr/local/code

将路径 ~ 下的文件夹(目录) codebot 下的所有内容移动到/usr/local/code目录中,由于是直接移动code文件夹(目录)的内容,所以/usr/local/code文件夹(目录)必须需要存在

3. 创建规范化文件夹

mkdir codebot

4. 将现有项目目录下的所有文件内容和文件夹(目录)拷贝到新建的规范化文件夹

需要注意需求是将项目目录下的所有文件内容和文件夹(目录)都复制到新建的规范化文件夹,而不是将一个文件夹复制到另外一个文件夹中的业务场景;
这里需要使用到-R参数,表示递归处理,将项目目录下的所有文件与子目录一并递归处理;
这里我使用的星号来表示文件夹中的所有文件内容和文件夹(目录),等待一会就复制成功了;
在复制时,Linux会将星号作为所有文件内容和文件夹(目录),有时候会报以下错误:cp: cannot stat `/xxx/xxx/*': No such file or directory,这里我没有遇到,不再赘述;
号方式复制错误时也可以使用点(.)代表所有文件和文件夹进行递归复制。

[root@xxx ~]# cp -R /etc/codebot/* /home/codebot/

*号方式将路径/etc/codebot下的所有文件内容和文件夹(目录)复制到/home/codebot/路径中

[root@xxx ~]# cp -R /etc/codebot/. /home/codebot/

.号方式将路径/etc/codebot下的所有文件内容和文件夹(目录)复制到/home/codebot/路径中

二、备份目前项目MongoDB数据库及已存在的规范化数据库

1. 进入服务器mongo数据库

mongo

2. 使用find命令查找服务器mongodb所在路径,这一步最主要是方便把备份的MongoDB数据库放置在这一路径下,方便后续查找

find / -name mongodb

从 / 根目录下查找文件夹名为 mongodb 的文件夹
当然后面跟上文件后缀即为查找文件,例如:find / -name nginx.conf 从 / 根目录下查找文件名为 nginx.conf 的文件

3. 使用mongodump命令进行数据库备份(默认没有数据库密码,直接备份,备份最后一层路径建议为日期时间+数据库名,此操作不用进入mongo命令行直接在终端行执行即可)

mongodump -h  127.0.0.1 --port  27017 -d xxxdatabase -o /xxx/xxx/20xx-x-xxdatabase

没有数据库密码备份:mongodump -h 数据库所在的ip(本地即为127.0.0.1) --port 端口号(默认为27017)-d 数据库名称 -o 导出路径
有数据库密码备份:mongodump -h 数据库所在的ip(本地即为127.0.0.1) --port 端口号(默认为27017) -u 用户名 -p 密码 -d 数据库名称 -o 导出路径
备份好的数据库为bson和json格式的文件,存储路径即为:/xxx/xxx/20xx-x-xxdatabase/xxxdatabase

4. 删除与标准化数据库重名的数据库,确保此前已经用mongodump进行了数据库备份

show dbs

先查看所有数据库

use xxxdatabase

切换到删除数据库 xxxdatabase

db.dropDatabase()

执行删除数据库命令

show dbs

再查看所有数据库,xxxdatabase已经被删除成功

5. 恢复备份数据库

mongorestore -d xxxtestdatabase /xxx/xxx/20xx-x-xxdatabase/xxxdatabase

mongorestore -d 想要导入的数据库名称 导出路径/数据库名(记住后面要加之前所备份的数据库的名字)

三、对服务器项目进行停止,保证数据库不会在迁移过程中被添加新数据

1. 切换为root用户

sudo su 

2. 停止项目

npm run stop

四、修改项目后端 package.json scripts参数的start参数的port为7001,进一步规范化

"scripts": {
    "start": "egg-scripts start --port=7001 --daemon --workers=1 --title=egg-xxx-server",

五、修改nginx.conf配置

1. 使用whereis 命令查找nginx.conf所在路径

whereis nginx

查找文件夹(目录)名/文件为nginx的所在路径,我这里查到是在/etc/ngin/下,项目的nginx.conf则在/etc/ngin/conf.d下

2. vim修改nginx.conf server的root参数,修改路径为迁移后的项目dist路径

server {
        listen       443;
        server_name  xxx.xxxx;
        root         /www/BUBG/codebotui/dist;
      ...省略

简单写一下server的参数,listen:监听端口;
server_name:监听地址,即为部署的域名;
root:服务器项目前端VUE工程打包好的dist绝对路径;
我这里项目是npm run build/npm run build:prod进行编译打包的,具体命令按照vue工程里package.json文件中scripts参数里的编译打包命令进行编译dist。

3. vim修改nginx.conf server的location 参数的proxy_pass的启动端口,统一修改7001,进行进一步规范化

 location /api/ {
            proxy_pass http://127.0.0.1:7001;
            proxy_connect_timeout 300;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
        }
#
        location /adi/ {
            proxy_pass http://127.0.0.1:7001;
            proxy_connect_timeout 300;
        ...省略

nginx.conf的参数和学习网上有很多教程和解释,这里不做过多赘述

4. 修改nginx后进行ngin.conf配置检查

nginx -t

这条命令也可以查看配置文件 nginx.conf 的路径

5. 检查ngin.conf配置正确后进行nginx重启

nginx -s reload

六、对服务器项目进行启动

1. 切换为root用户

sudo su 

2. 启动项目

npm run start

Computer science and software engineering have always been my passion

posted @ 2021-01-20 15:26  游弋在冷风中  阅读(1444)  评论(0)    收藏  举报