1. 安装docker(ubuntu)

1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选)

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update

2.安装需要的包

sudo apt install apt-transport-https ca-certificates software-properties-common curl

3.添加 GPG 密钥,并添加 Docker-ce 软件源,这里还是以中国科技大学的 Docker-ce 源为例

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable"

4.添加成功后更新软件包缓存

sudo apt update

5.安装 Docker-ce

sudo apt install docker-ce

6.设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)

sudo systemctl enable docker
sudo systemctl start docker

7.docker镜像加速

阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://nirshqm9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

8.测试运行

sudo docker run hello-world

2、安装mysql

1.拉取镜像

sudo docker pull mysql:5.7

2.运行容器

sudo docker run -itd --restart=always --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxx mysql:5.7

3、安装mongodb(docker版)

1.拉取镜像

sudo docker pull mongo:4.4.16

2.运行容器

--auth:需要密码才能访问容器服务

docker run -itd --restart=always --name mongo -v /data/db:/data/db -p 27017:27017 mongo:4.4.16 --auth --wiredTigerCacheSizeGB 1.5

3.设置用户名密码

docker exec -it mongo mongo admin
# 创建一个名为 root,密码为 xxx 的用户。
>  db.createUser({ user:'root',pwd:'xxx',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('root', 'xxx')

4.安装MongoDB 客户端

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org-shell=4.4.16 mongodb-org-tools=4.4.16

安装MongoDB(原生版)

装了docker版这个就不用装了

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org=4.4.15 mongodb-org-server=4.4.15 mongodb-org-shell=4.4.15 mongodb-org-mongos=4.4.15 mongodb-org-tools=4.4.15

启动:

sudo systemctl start mongod

开机自启:

sudo systemctl enable mongod

配置文件:sudo vim /etc/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIpAll: true


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

4、安装redis

1.拉取镜像

sudo docker pull redis:6.0

2.运行容器

sudo docker run -itd --restart=always --name redis -p 6379:6379 redis:6.0

5、安装jdk

sudo apt-get install openjdk-8-jre-headless

6、安装本地端程序

1、新建目录:~/local ~/local/resources ~/local/resources/device_config

mkdir -p ~/local ~/local/resources ~/local/resources/device_config ~/local/resources/config

2、上传目录target/lib~/local目录下。

scp -P ${port} -r target/lib tewo@my.jmal.top:/home/tewo/local/

3、上传文件local.sh local-${version}.jar~/local目录下。

scp -P ${port} local.sh target/local-${version}-exec.jar tewo@my.jmal.top:/home/tewo/local

4、上传文件application.ymlapplication-dev.yml~/local/resources目录下。

scp -P src/main/resources/application.yml src/main/resources/application-dev.yml tewo@my.jmal.top:/home/tewo/local/resources

5、上传目录device_config~/local/resources目录下。

 scp -P ${port} -r src/main/resources/device_config/${regionId}/ tewo@my.jmal.top:/home/tewo/local/resources/device_config/

6、上传流程参数配置文件trigger_device_param.yml~/local/resources/config目录下。

scp -P ${port} src/main/resources/config/trigger_device_param.yml tewo@my.jmal.top:/home/tewo/local/resources/config/

定时清理日志文件

# 编辑crontab
crontab -e

# 定时清理日志
0 0 * * 0 > /home/tewo/local/local.log

7、安装本地端界面

https://blog.jmal.top/s/install-tewo-ubuntu

8、安装内网穿透程序

https://blog.jmal.top/s/install-npc-client

9、使本地端程序开机自启

sudo vim /lib/systemd/system/rc-local.service

在文件尾部中添加:

[Install]
WantedBy=multi-user.target
Alias=rc-local.service

随后创建rc.local文件

sudo vim /etc/rc.local

并添加以下内容: #不能添加阻塞进程 不然开机卡死

#!/bin/sh
# 启动本地端程序
nohup su tewo -c "/home/tewo/local/local.sh start" > /dev/null 2>&1 &
exit 0

给rc.local加上权限

sudo chmod +x /etc/rc.local

在 /etc/systemd/system 目录下创建软链接

sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/

10、同步基础数据到本地端

在平台端创建一个项目

复制平台端数据库里的project表和region表数据到本地端的数据库,并执行如下sql, (保证本地端数据库的project表和region表都只有一条数据)

-- 设置角色模块表
update role_module set project_id = {项目id} where project_id is not NUll;
-- 设置用户项目表
update user_project set project_id = {项目id} where user_name = 'admin';

修改application-prod.yml文件 里的projectId和regionId

11、部署配置界面

安装nginx

sudo apt update
sudo apt-get install nginx

nginx配置文件/etc/nginx/sites-enabled/default

server {
	listen 13333 default_server;
	listen [::]:13333 default_server;

	root /home/tewo/dist;

	index index.html index.htm index.nginx-debian.html;

        location /api/ {
                proxy_pass   http://localhost:10001/;
		proxy_set_header Host $http_host;
        }

            location /mq/ {
                    proxy_pass   http://localhost:10001/mq/;
                    #websocket额外配置开始
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_connect_timeout 60s;#l连接超时时间,不能设置太长会浪费连接资源
                    proxy_read_timeout 500s;#读超时时间
                    proxy_send_timeout 500s;#写超时时间
                    #websocket额外配置结束
	}
	auth_basic "tewo secured";
        auth_basic_user_file /etc/nginx/.htpasswd;
}