项目级服务器数据迁移流程

发布时间 2023-05-24 15:43:10作者: 中亿丰数字科技

项目级服务器数据迁移流程

创建时间: 2022/09/24

更新时间: 2022/09/24

编辑: 徐俊杰

项目级服务器数据迁移流程

以下操作针对最终迁移目标为移动机房托管的硬件服务器,其它服务器进具备参考价值

```text

183.213.16.9

dtsite

qwer4321asdf

```

一、目录必要拷贝

注意:部分内容可能有遗漏和确认,请自行补充。

1. 拷贝数据库数据

```text

备份

pg_dump -h 127.0.0.1 -p {数据库端口}  -U odoo  |gzip > ./dbdata_{项目名称}.gz

上传到硬件服务器/home/dtsite/aliyun3/dbData/目录下

scp -P 22 ./dbdata_{项目名称}.gz dtsite@183.213.16.9:/home/dtsite/aliyun3/dbData/

```

2. 拷贝项目目录

```cmd

tar -czvf project_aliyun4.tar.gz /opt/project

上传到目标服务器

scp -P 22 ./project_aliyun4.tar.gz dtsite@183.213.16.9:/opt

```

3. 拷贝iothttp3并上传到目标服务器

```cmd

cd /opt

拷贝iothttp3

cp -r  iothttp3 iothttp3_aliyun4

删除不必要的文件

rm -rf ./iothttp4_aliyun3/venv  ./iothttp3_aliyun4/*.log

./iothttp3_aliyun4/test   ./iothttp3_aliyun4/__pycache__

打包

tar -czvf iothttp3_aliyun4.tar.gz iothttp3_aliyun4

上传到目标服务器

scp -P 22 ./iothttp3_aliyun4.tar.gz dtsite@183.213.16.9:/opt

```

4. 拷贝supervisor的配置文件

```

scp -P 22 /etc/supervisor/conf.d/iothttp3.conf dtsite@183.213.16.9:/home/dtsite/supervisorConfigBak/iothttp3_aliyun4.conf

```

5. 拷贝docker 镜像文件

docker save命令打包下面的这几个镜像,然后在目标服务器中使用docker load加载

```

47.104.8.212:8000/postgres          11

47.104.8.212:8000/dtsite            v6

47.104.8.212:8000/dtsite/frontend   v4

47.104.8.212:8000/postgres          10

```

二、项目部署

迁移备份的项目数据目录

例如: 迁移国家质量的项目数据到/opt/projects目录中

```cmd

cp -r /home/dtsite/aliyun3/optProjects/Dtcloud_guojiazl  /opt/projects

```

使用serverOM来自动部署项目

以下内容均为以已下面的硬件服务器为例,其它服务器仅提供参考。

1. 添加服务器参数

打开[serverOM](http://183.213.16.9:9005/zyf/python_iot-data-testing),在服务器配置文件server_info.ini中添加新服务器参数,`注意需要root用户`

![[Pasted image 20220921114918.png]]

示例:

```text

[硬件服务器]

ssh连接参数

sshparams = {'host': '183.213.16.xx', 'port': 22, 'user': 'root', 'password': 'xxx'}

服务器odoo的模块目录位置

appaddonspath = /opt/projects/source/dtsite_addons

服务器采集服务位置

iotserverpath="/opt/iothttp3"

项目模板目录位置

projecttemplatepath="/opt/projects/source/projectTemplate"

服务器最大创建项目数

maxProjectNumber=50

```

2. 先在创建数据库这里打断点

创建数据库后,需要先导入数据。否则数据库被odoo自动初始化

![[Pasted image 20220924111820.png]]

3. 执行创建项目脚本

- 修改启动参数,使用debug命令启动

![[Pasted image 20220924112256.png]]

- 第一个提示输入`no`

![[Pasted image 20220924112228.png]]

- 断点触发后,服务器控制台输入以下命令,把数据导入到数据库

查看项目数据库端口(以guojiazl项目为例)

![[Pasted image 20220924112535.png]]

导入数据

```cmd

gunzip -c /home/dtsite/dbData/dbdata_{项目简称}.gz |psql -h 127.0.0.1 -p {新的数据库端口} -U odoo odoo

```

4. 继续执行部署脚本

下面的提示直接输入done,直接完成即可,报错不用管。

![[Pasted image 20220924113037.png]]

7. 添加网关并修改配置参数

- 登录[服务器网关KONGA](http://183.213.16.9:9003/#!/services),参照project_info.ini中的项目参数,把端口添加进去(odoo、大屏、iot采集服务都要配置);

- 然后把下面的参数值修改成与[KONGA]()中配置的地址一致,用于后面的大屏代码更新

![[Pasted image 20220924120826.png]]

参数说明:

```text

odoo_site:odoo外网请求地址

frontend_site:大屏外网请求地址

iot_site:iothttp3外网请求地址

kongagateway_odoo:KONGA中设置的odoo网关路由

kongagateway_frontend:KONGA中设置的大屏网关路由

```

8. 更新大屏地址

测试odoo和大屏

测试odoo

- 登录[服务端浏览器](http://183.213.16.9:9010/),尝试通过**内网**(192.168.32.91)。`注意不要使用外网访问odoo,会访问不进去的。后续对odoo的操作,都使用【服务端浏览器】来操作`

odoo 相关问题解决方案

1. **访问odoo白屏**

**此问题一般是备份的项目目录没有拷贝到/opt/projects目录中导致的**。如果确认拷贝成功还是不行,请执行以下操作。

```text

方法一

修改配置文件

docker exec -it dtsite_{{项目简称}} bash

echo "ODOO_HTTP_SOCKET_TIMEOUT=30" >> /etc/odoo/odoo.conf

退出然后重启

ctrl+D

docker restart dtsite_{{项目简称}}

查看是否启动成功

docker logs -f dtsite_{{项目简称}}

,如果还是不行,使用方法二

数据库中执行以下命令

DELETE FROM ir_attachment WHERE url LIKE '/web/content/%';

重启数据库

docker restart db_{{项目简称}}

```

**2.  odoo无法访问,页面报错**

**此情况一般是由于容器中的必要python模块缺失**,使用`docker logs -f {容器名称}`查看报错内容来进行解决。下面列出了缺失模块的安装方法,其它问题请自行排查

```exec

进入容器

docker exec -it dtsite_{{项目简称}} bash

安装遗漏的python模块

pip3 install ws4py pdfkit python-dateutil

退出然后重启

ctrl+D

docker restart dtsite_{{项目简称}}

查看是否启动成功

docker logs -f dtsite_{{项目简称}}

```

测试大屏

通过本地浏览器尝试访问大屏。注意,如果大屏访问不了。执行serverOM中的更新大屏脚本就行了。

![[Pasted image 20220921174302.png]]

如果还是访问不了,浏览器按F12查看请求地址是否正确。

部署redis

- 提示: 部署时,使用的端口请遵守旧服务器的部署规范

```text

假设相同占用的起始端口为8020,那么各项目服务的端口如下

数据库:  8020

odoo:   8021

大屏:    8022

iot:    8023

redis:  8024

```

- redis直接通过docker部署就行了,速度快

```cmd

docker run --name redis_{{项目简称}} -p {{redis端口}}:6379 -d redis redis-server --requirepass zhsz

```

部署iothttp3

1. 首次配置安装依赖

略。。。

2. 修改服务器上的iothttp3项目配置

进入 iothttp3/conf/{{项目简称}}

```cmd

进入目录

cd /opt/iothttp3/conf/{项目简称}

修改conf.py

vim ./conf.py

修改lanuch

vim ./launch

```

-  config.py中需要修改的参数

![[Pasted image 20220924105345.png]]

- launch中修改启动端口

![[Pasted image 20220924105425.png]]

3. 检查supervisor配置

- iothttp3使用supervisor来监控,启动命令添加到/etc/supervisor/conf.d目录中。如果需要修改,参考旧服务器中配置文件。

- 修改后,重载载配置文件的命令为 `supervisorctl reload`

4. 启动iothttp3

- 打开[服务端浏览器](http://183.213.16.9:9010/)访问 http://183.213.16.9:9010/ ,启动对应的iothttp3

![[Pasted image 20220924105844.png]]

- 查看log日志。

点击 tail -f stdout查看日志确保有报错

![[Pasted image 20220924110433.png]]

配置konga网关

联系硬件厂商修改iot采集服务地址

作者:吴太强