Docker
ubuntu20.04 安装docker、docker-compose
docker镜像相关命令
openim
本文档使用 MrDoc 发布
-
+
首页
openim
# IM源码安装部署 # 一、安装部署 ## 系统更新 Ubuntu20.04 **sudo apt update** **sudo apt upgrade** **sudo apt install git** ## 安装MongoDB ### 安装 **cd /home/xiger** # 导入MongoDB公钥: **wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -** # 创建MongoDB列表文件: **echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu $(lsb\_release -cs)/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list** # 更新本地包数据库: **sudo apt-get update** # 安装MongoDB包: **sudo apt-get install -y mongodb-org** # 启动MongoDB服务: **sudo systemctl start mongod** # 设置MongoDB在启动时自动运行: **sudo systemctl enable mongod** # 检查MongoDB服务状态: **sudo systemctl status mongod** ### 端口(暂不修改) **目前保留27017端口不做更改** # 打开配置文件 sudo vi /etc/mongod.conf # 找到 net 部分并修改 port,例如修改为37017 net: port: 37017 # 保存并退出编辑器 # 重启MongoDB服务 sudo systemctl restart mongod ### 用户名和密码 参考地址:[https://blog.csdn.net/line\_on\_database/article/details/114919266](https://blog.csdn.net/line_on_database/article/details/114919266) 连接到MongoDB shell。 **mongo** 切换到admin数据库。 **use openim\_v3;** 创建拥有所有权限的超级用户。 **db.createUser({** **user: 'openIM',** **pwd: 'openIM123' ,** **roles: [{ role: 'readWrite', db: 'openim\_v3' }]** **})** **db.auth("openIM", "openIM123")** **Exit** **sudo vi /etc/mongod.conf** 如果认证成功,db.auth()将返回true。 启用MongoDB的用户认证模式。你需要在MongoDB的配置文件/etc/mongod.conf中添加以下行: **security:** **authorization: enabled** 重启MongoDB服务以应用更改。 **sudo systemctl restart mongod** 现在,当你尝试连接到MongoDB时,你需要提供用户名和密码。 mongo -u yourUsername -p yourPassword --authenticationDatabase admin 请确保将yourUsername和yourPassword替换为你选择的用户名和密码,并将admin替换为你的超级用户所在的数据库。 **mongo -u openIM -p openIM123 openim\_v3** **最终配置** **端口:27017** **数据库名:openim\_v3** **用户名:openIM** **密码: openIM123** **启动方式:自启动** ## 安装Redis 1.更新包列表: 首先,更新本地的包列表以确保安装的是最新的软件包。 **sudo apt update** 2.使用 apt 安装 Redis 服务器 **sudo apt install redis-server** 1. 安装完成后,可以通过以下命令检查 Redis 服务的状态。 **sudo systemctl status redis.service** 1. Redis 的配置文件位于 /etc/redis/redis.conf。你可以编辑此文件来调整 Redis 的各种设置,比如绑定的 IP 地址、端口、持久化方式等。 **sudo vi /etc/redis/redis.conf** 这里只改密码 **requirepass openIM123 不做更改** 1. 启动和设置自启动 **sudo systemctl stop redis.service** **sudo systemctl start redis.service** **sudo systemctl enable redis.service** 1. 测试 Redis: 你可以使用 Redis 的命令行客户端 redis-cli 来测试 Redis 是否正常工作。 **redis-cli**  **最终配置** **端口:6379** **数据库名:无** **用户名:无** **密码: 无** **启动方式:自启动** ## JDK安装 更新包列表: **sudo apt update** 安装OpenJDK 11(如果系统中有多个版本的JDK,可以设置为默认版本): **sudo apt install openjdk-11-jdk** 验证安装是否成功: **java -version** 如果需要设置JDK 11为默认版本,可以使用以下命令: sudo update-alternatives --config java **最终配置** **一次性配置** ## 安装zookeeper **cd /home/xiger** **wget <https://downloads.apache.org/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz>** **tar -xzf apache-zookeeper-3.7.2-bin.tar.gz** **sudo mv ./apache-zookeeper-3.7.2-bin /opt/zookeeper-3.7.2** **cp /opt/zookeeper-3.7.2/conf/zoo\_sample.cfg /opt/zookeeper-3.7.2/conf/zoo.cfg** 然后编辑 zoo.cfg 文件,设置 tickTime, initLimit, syncLimit, dataDir 等参数。例如: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper **不做修改** **sudo mkdir -p /var/lib/zookeeper** **/opt/zookeeper-3.7.2/bin/zkServer.sh stop** **/opt/zookeeper-3.7.2/bin/zkServer.sh start** **/opt/zookeeper-3.7.2/bin/zkServer.sh status** **最终配置** **端口:2181** **数据库名:无** **用户名:无** **密码: 无** **启动方式:手动启动** ## 安装 ETCD **sudo apt install etcd** **systemctl enable etcd** **systemctl restart etcd** **最终配置** **端口:默认** **启动方式:自启动** ## 安装 KAFKA **wget [https://downloads.apache.org/kafka/3.7.0/kafka\_2.13-3.7.0.tgz](https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz)** **tar -xzf kafka\_2.13-3.7.0.tgz** **sudo mv ./kafka\_2.13-3.7.0 /opt/kafka** **sudo vi /opt/kafka/config/server.properties**  此处为启动和验证 服务启动 sudo /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties 另外一个客户端测试 sudo /opt/kafka/bin/kafka-topics.sh --create --topic my\_topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 以下是需要初始化的TOPIC **sudo /opt/kafka/bin/kafka-topics.sh --create --topic toMongo --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1** **sudo /opt/kafka/bin/kafka-topics.sh --create --topic toRedis --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1** **sudo /opt/kafka/bin/kafka-topics.sh --create --topic toPush --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1** 启动 **sudo nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties> /opt/kafka/kafka.log 2>&1 &** **最终配置** **端口:9092** **启动方式:手工启动 手工添加topic** ## 安装MINIO # 1. 使用curl下载MinIO二进制文件 **curl -O https://dl.min.io/server/minio/release/linux-amd64/minio** # 2. 添加执行权限 **chmod +x minio** **sudo chown -R xiger** **sudo chmod u\_rxw /home/xiger** # 3. 运行MinIO(您需要指定您的存储目录和访问密钥与秘密密钥) **默认用户名密码 minioadmin/minioadmin** **sudo nohup ./minio server /data --console-address ":9001" --address ":9000"> /home/xiger/minio.log 2>&1 &** **最终配置** **端口:9001 9000网页端链接** **账户密码:默认minioadmin/minioadmin** **启动方式:手工启动** **ndzjZ7dy6h5ZhTmvNuDT** **RNTkJrP1tPdWysazRlKLg8jjwI6QSk2vjAJqhldP** **备注:** **minio服务的accessKey和secreKey需要在web控制台生成;**  **在web控制台Buckets点击使用的Bucket,修改Access Policy为true**  **需要注意的是,minio服务端口默认为9000,与我们使用的web控制台端口是不一样的。本片中,选择下图中的S3 API port而非web控制台Console。**  ## 部署后台 ### 修改配置 #### OPEN-IM-SERVER **/home/xiger/open-im-server/config下所有相关配置**      #### CHAT **/home/xiger/chat/config下所有相关配置**     ### 安装GO 卸载旧版本 **sudo rm -rf /usr/local/go** 安装1.21.2 **cd /home/xiger** **wget <https://dl.google.com/go/go1.21.2.linux-amd64.tar.gz>** **sudo tar -xzf go1.21.2.linux-amd64.tar.gz** **/home/xiger/go/bin/go version** **/home/xiger/go/bin/go env -w GO111MODULE=on** **/home/xiger/go/bin/go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/** **sudo vi /etc/profile** export GOPATH=/home/xiger/go export PATH=$PATH:$GOBATH/bin **source /etc/profile** **go version** **go env -w GO111MODULE=on** **go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/** **cd /home/xiger** **git clone https://github.com/magefile/mage** **cd mage** **go run bootstrap.go** ### 启动后台 **cd /home/xiger** **git clone https://github.com/openimsdk/open-im-server && cd open-im-server** 下载 **mage** 启动 **mage start** 后台启动 收集日志 **mage start >> \_output/logs/openim.log 2>&1 &** 停止 **mage stop** 检测 **mage check** ### 聊天服务 **cd /home/xiger** **git clone https://github.com/openimsdk/chat&& cd chat**  下载 **mage** 启动 **mage start** 后台启动 收集日志 **mage start >> \_output/logs/openim.log 2>&1 &** 停止 **mage stop** 检测 **mage check** ## 部署前台 按以下docker操作获取源码 /home/xiger/html/admin /home/xiger/html/web ### 安装NGINX 在Ubuntu上安装NGINX可以通过以下步骤进行: 打开终端。 更新包索引: sudo apt update 安装NGINX: **sudo apt install nginx** 确认安装并检查NGINX版本: **nginx -v** 启动NGINX服务: **sudo systemctl start nginx** 使NGINX服务开机自启: **sudo systemctl enable nginx** 可以通过访问服务器的IP地址或域名来确认NGINX已经成功安装并运行。在浏览器中输入: http://YOUR\_SERVER\_IP 或 http://localhost 如果看到NGINX的欢迎页面,说明安装成功。 ### 配置NGINX **sudo vi /etc/nginx/nginx.conf** http { **server {** **listen 11001;** **server\_name 127.0.0.1;** **root /home/xiger/html/web;** default\_type application/wasm; **location / {** **index index.html index.htm;** **try\_files $uri $uri/ =404;** **}** **}** **server {** **listen 11002;** **server\_name 127.0.0.1;** **root /home/xiger/html/admin;** **location / {** **index index.html index.htm;** **try\_files $uri $uri/ =404;** **}** } } **sudo systemctl restart nginx** # 二、安装DOCKER ## 安装docker 查看系统发行版本 cat /proc/version 1、更新apt包 **sudo apt-get update** 2、安装必备的软件包以允许apt通过 HTTPS 使用存储库(repository): **sudo apt-get install ca-certificates curl gnupg lsb-release** 3、添加Docker官方版本库的GPG密钥: **sudo mkdir -p /etc/apt/keyrings** **curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 按以下注意点1,2操作** 4、使用以下命令设置存储库: **echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb\_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 按以下注意点3操作** 5、更新apt包索引,安装最新版本的Docker Engine、containerd 和 Docker Compose: **sudo apt-get update** **sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin** 6、验证docker **sudo docker version** 7、安装完成后,运行如下命令验证 Docker 服务是否在运行 **systemctl status docker** 8、如未运行,运行以下命令启动Docker服务 **sudo systemctl start docker** 9、设置Docker服务在每次开机时自动启动 **sudo systemctl enable docker** 10、测试安装一个image **sudo docker run hello-world** 11、查看所有的image **sudo docker images** **注意:如果第5步安装缓慢,可以切换阿里云镜像源安装Docker** **1、卸载可能存在的或者为安装成功的Docker版本** **sudo apt-get remove docker docker-engine docker-ce docker.io** **2、添加阿里云的GPG密钥** **curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -** **3、使用以下命令设置存储库** **sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb\_release -cs) stable"** **然后继续上面第5步** ## 安装docker-compose 下载 **sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose** 要安装其他版本的 Compose,请替换 v2.2.2 添加可执行权限 **sudo chmod +x /usr/local/bin/docker-compose** 创建软链: **sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose** 测试是否安装成功: **docker-compose version** ## 爬取前端  **docker-compose ps**  **docker inspect openim/openim-web-front:release-v3.5.1** # openim-web-front  **docker inspect openim/openim-admin-front:release-v1.7** #openim-admin-front  **docker cp openim-admin-front:/usr/share/nginx/html /home/xiger/admin** **docker cp openim-web-front:/usr/share/nginx/html /home/xiger/web** # **三、音视频livekit** ## 部署 https://blog.csdn.net/w981912536/article/details/136715809 cd /home/xiger 1.任意目录创建文件livekit,cd到livkit目录,然后在livekit目录下运行下面的命令。 2.安装服务 **curl -sSL https://get.livekit.io | bash** # livekit-server is installed to /usr/local/bin 3.先测试运行,8.218.***.**替换成你的ip,是云服务器就替换成公网IP,局域网就用局域网ip livekit-server --dev --node-ip=8.218.***.** --bind 0.0.0.0 **livekit-server --dev --node-ip=192.168.1.98 --bind 0.0.0.0** 结束运行按键盘:ctrl+c 4.带配置文件运行 可以直接根据配置文件运行 livekit-server --config ./livekit.yaml --node-ip=8.218.***.** --bind 0.0.0.0 **livekit-server --config ./livekit.yaml --node-ip=192.168.1.98 --bind 0.0.0.0**结束运行按键盘:ctrl+c 5.后台运行,在livekit目录创建run.sh文件,然后运行命令 **sh run.sh** YAML文件内容 **注意上下级关系 有些编辑器目录结构会错误** port: 7880 rtc: udp\_port: 7882 tcp\_port: 7881 use\_external\_ip: true enable\_loopback\_candidate: false keys: APIGPW3gnFTzqHH: 23ztfSqsfQ8hKkHzHTl3Z4bvaxro0snjk5jwbp5p6Q logging: json: false level: info 去CHAT工程下去修改  注意use\_external\_ip一定要设置true.这个是启用外部ip访问的。 然后就是keys:这个是创建token需要的, 前面的APIbxDWetqcjHaa是apikey, 后面的RlZfytYLmdMOgV2u6fSFAbMhrYQok9B4aVWq48eIE1aa是secret。 #!/bin/sh **nohup livekit-server --config ./livekit.yaml > log.log 2>&1 &** ## TOKEN <dependency> <groupId>io.livekit</groupId> <artifactId>livekit-server</artifactId> <version>0.5.9</version> </dependency> package com.example.demo1; import io.livekit.server.*; import java.util.ArrayList; import java.util.Date; import java.util.List; public class LiveKitTest { public static void main(String[] args) { System.out.println(createToken(100)); System.out.println(createToken(101)); System.out.println(createToken(102)); System.out.println(createToken(103)); // System.out.println(createToken(96)); // System.out.println(createToken(98)); } public static String createToken(int num) { // 用户ID int userID = 10000+num; // 用户名称 String name = "用户"+num; String roomName = "测试房间2"; String apiKey = "APIbxDWetqcjHaa"; String apiSecret = "RlZfytYLmdMOgV2u6fSFAbMhrYQok9B4aVWq48eIE1aa"; AccessToken token = new AccessToken(apiKey, apiSecret); token.setName(name); token.setIdentity(userID+""); token.setMetadata("metadata"); // 令牌的过期时间(可能) token.setExpiration(new Date(System.currentTimeMillis()+ 1000L *60*60*24*365)); // token所拥有的权限 List<String> list = new ArrayList<>(); // 摄像头 list.add("camera"); // 麦克风 list.add("microphone"); // list.add("screen\_share"); //屏幕共享 // list.add("screen\_share\_audio"); //屏幕共享音频 // 允许参与者发布相机,但不允许其他来源 CanPublishSources canPublishSources = new CanPublishSources(list); // 配置解释:https://docs.livekit.io/realtime/concepts/authentication/ // RoomJoin:加入房间许可 Room:房间名称 token.addGrants(new RoomJoin(true), new Room(roomName),canPublishSources); return token.toJwt(); } } ## 前端测试 eruda.js index.html livekit-client.umd.min.js LiveKitTest  # IM SERVER API ## 准备工作 系统内置管理账户imAdmin OpenIMServer 内置了一个APP 管理员,它的 userID 是imAdmin: 以secret方式获取token 参照接口。认证管理-以secret获取token # DOCKER部署 git clone <https://github.com/openimsdk/openim-docker> 配置修改 🔧 修改 .env 文件,配置外网 IP。如果使用域名,需配置 Nginx # 设置 MinIO 服务的外网访问地址(外网IP或域名) MINIO\_EXTERNAL\_ADDRESS="http://external\_ip:10005" # 设置 Grafana 服务的外网访问地址(外网IP或域名) GRAFANA\_URL="http://external\_ip:13000/" 其他配置请参考 .env 中的注释 服务启动 🚀 启动服务: docker compose up -d 停止服务: docker compose down 查看日志: docker logs -f openim-server docker logs -f openim-chat # 虚拟机问题 总是网卡消失 sudo dhclient ens37 sudo ifconfig ens37 sudo ufw disable 查看IP sudo docker inspect mongo 连接 mongo -u openIM -p openIM123 172.18.0.14:27017/openim\_v3 > show tables; > db.getCollection('group').find(); > db.friend.findOne() 发生错误:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory),logs目录下缺少pid文件。 解决方法:使用指定nginx.conf文件的方式重启nginx /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 再次使用./nginx -s reload等命令就正常了 # IDEA配置docker 开启Docker远程连接 idea整合docker,需要连接到docker,这就需要开启docker的远程连接了 执行命令 sudo vim /usr/lib/systemd/system/docker.service 在如下位置添加内容 -H unix://var/run/docker.sock -H tcp://0.0.0.0:2375 # 添加远程Api启动命令 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock  保存后,执行命令 systemctl daemon-reload systemctl restart docker 重启docker 输入命令下面命令查询端口是否开启成功 netstat -ntlp 1. WINDOWS部署docker和docker-compose 官网下载,直接安装。   <https://github.com/openimsdk/open-im-server-k8s-deploy> https://github.com/openimsdk/k8s-jenkins [【附件】openIM.zip](/media/attachment/2024/09/openIM.zip)
admin
2024年9月18日 13:05
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码