一吨拗、準備工作
運行環(huán)境linux系統(tǒng)即可忍啤, Ubuntu 7.5.0-3ubuntu1~18.04最優(yōu)
圖片視頻文件存儲支持cos/MinIO
https/wss協(xié)議1. 需申請域名或者子域名(web im端登錄注冊及im 服務端使用)建議:web.xx.xx 2. 若使用MinIO作為對象存儲袖牙,建議:storage.xx.xx 3. 管理后臺子域名铡原,建議:admin.xx.xx 4. 部署nginx量九,并配置證書黍檩。
離線推送(app被殺死或未啟動時推送)國內(nèi)申請申請廠商通道以及個推,建議提前申請次绘;海外申請firebase瘪阁;
蘋果開發(fā)者賬號如需打包、上架邮偎,請自行申請賬號
手機驗證碼服務請自行申請阿里云管跺,建議提前申請
消息加密存儲需購買消息加密插件
組織架構(gòu)需購買組織架構(gòu)模塊
機器資源如果用戶量小于10萬,可用單機部署钢猛,8C 16G 5Mb 1T普通磁盤即可
logo1024 x 1024png
軟著如需上架國內(nèi)市場伙菜,提前準備軟著
管理后臺需購買
二、docker-compose一鍵部署
先準備
go/git/docker/docker-compose命迈,具體參考:https://doc.rentsoft.cn/#/component/docker
單機環(huán)境下的組件部署贩绕,可以通過docker-compose一鍵部署火的,先選擇某個大磁盤目錄,然后依次輸入如下命令:
gitclone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive;
進入項目后
1.修改.env
USER=root#不用修改PASSWORD=openIM123#建議修改復雜密碼 不能包括 @#之類特殊符號 且至少要8位ENDPOINT=http://127.0.0.1:10005#使用minio發(fā)圖片視頻文件需要填寫 外網(wǎng)ip:port或者用域名DATA_DIR=./#指定大磁盤目錄
2.初始化部署
chmod+x install_im_server.sh./install_im_server.sh
具體組件包括:
ETCD 2. MySQL 3. MongoDB 4. Redis 5. Kafka 6. Minio(注:如果使用三方云服務器存儲媒體文件可不搭建)
3.修改配置
如果已經(jīng)執(zhí)行過install_im_server.sh淑倾,則config/usualConfig.yaml根據(jù).env的配置已經(jīng)修改完成了馏鹤,且組件也安裝完畢,則根據(jù)需求修改如下字段
tokenpolicy:accessSecret:"open_im_server"#token生成相關 建議修改accessExpire:90#token過期時間(天) 默認即可messageverify:friendVerify:false#發(fā)送消息是否驗證好友關系 false表示不驗證好友關系push:getui:pushUrl:"https://restapi.getui.com/v2/$appId"masterSecret:""#需添加appKey:""#需添加enable:false#true啟動個推推送
可能存在的問題:如果非首次安裝娇哆,可能env密碼不能生效湃累,如果數(shù)據(jù)不重要,先docker-compose down ; rm components -rf再執(zhí)行以上步驟碍讨,需要注意的是app需要重新安裝治力。
4.重啟
docker-compose down; docker-compose up -d;
三、開源版Open-IM-Server 源碼編譯
安裝Go環(huán)境勃黍。確保Go版本至少為1.15宵统。
下載源碼到服務器
gitclonehttps://github.com/OpenIMSDK/Open-IM-Server.git --recursivecdcmd/Open-IM-SDK-Core
設置腳本權(quán)限
cd../../script/chmod +x*.sh
編譯源碼
./batch_build_all_service.sh
出現(xiàn)all services build success表示編譯成功
四、Open-IM-Server修改配置&啟動服務
修改配置
如果組件未自行安裝覆获,則先執(zhí)行(二)的1-3步驟马澈、如果要修改ip port等非常用信息,需要在config.yaml中修改弄息。
啟動服務
cdscript./start_all.sh
檢查服務
./check_all.sh
啟動服務
./start_all.sh
檢查服務
# 出現(xiàn)all services launch success表示服務啟動成功 ./check_all.sh
(二)和(四)操作完成后痊班,實際上完成了混合部署模式,即docker部署組件摹量,IM源碼部署涤伐。
五、nginx配置參考
用業(yè)務申請的
web.xx.xx/storage.xx.xx/admin.xx.xx分別替換open-im-ng-example.conf中web.rentsoft.cn?/storage.rentsoft.cn/admin.rentsoft.cn三個域名及對應的證書
upstreamim_msg_gateway{server127.0.0.1:10001;#IM消息服務器地址 根據(jù)部署情況可指定多臺}upstreamim_api{server127.0.0.1:10002;#IM群組用戶api服務器地址 根據(jù)部署情況可指定多臺}upstreamim_jssdk_gateway{server127.0.0.1:10003;#IM jssdk服務器地址 根據(jù)部署情況可指定多臺}upstreamim_demo{server127.0.0.1:10004;#IM demo登錄注冊服務器地址 根據(jù)部署情況可指定多臺}upstreamstorage {server127.0.0.1:10005;#MinIO服務器地址 暫時支持1臺}upstreamim_admin{server127.0.0.1:10006;#IM admin服務器地址 根據(jù)部署情況可指定多臺}upstreamim_grafana{server127.0.0.1:10007;#IM 統(tǒng)計服務器地址 docker-compose啟動所在機器}upstreamim_chat{server127.0.0.1:10008;#IM 商業(yè)版登錄注冊服務器地址 根據(jù)部署情況可指定多臺}upstreamim_complete_admin{server127.0.0.1:10009;#IM 商業(yè)版admin地址 根據(jù)部署情況可指定多臺}upstreamim_organization{server127.0.0.1:10010;#IM 商業(yè)版組織架構(gòu)服務器地址 根據(jù)部署情況可指定多臺}upstreamim_open_rtc{server127.0.0.1:7880;#rtc 音視頻通話 服務器地址 根據(jù)部署情況可指定多臺}server{listen443;server_nameweb.rentsoft.cn;#1 web im 端 域名sslon;ssl_certificate/etc/nginx/conf.d/ssl/web.rentsoft.cn.crt;#2 證書ssl_certificate_key/etc/nginx/conf.d/ssl/web.rentsoft.cn.key;#3 證書ssl_session_timeout5m;gzipon;gzip_min_length1k;gzip_buffers416k;gzip_comp_level2;gzip_typestext/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;gzip_varyoff;gzip_disable"MSIE [1-6]\.";error_page405=200$uri;default_typeapplication/wasm;location/{#web demoproxy_set_headerHost$host;proxy_set_headerX-Real-Ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_set_headerX-NginX-Proxytrue;root/data1/online/Pc-Web-Demo/build/;# web im靜態(tài)資源存放路徑indexindex.html;try_files$uri$uri/ /index.html;? ? ? ? }location/msg_gateway {#10001 wsproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_msg_gateway/;? ? ? ? }location ^~/api/{#10002 apiproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_api/;? ? ? ? ? ? ? }location/jssdk_gateway {#10003 jssdkproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_jssdk_gateway/;? ? ? ? ? ? ? }location ^~/demo/{# 10004 demoproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_demo/;? ? ? ? ? ? ? }location ^~/admin/{#10006 adminproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_admin/;? ? ? ? ? ? ? }location ^~/grafana/{#10007? prometheusproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_grafana/;? ? ? ? ? ? ? }location ^~/chat/{#10008 chat loginproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_chat/;? ? ? ? ? ? ? }location ^~/complete_admin/{#10009? adminproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_complete_admin/;? ? ? ? ? ? ? }location ^~/organization/{#10010 organizationproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_organization/;? ? ? ? ? ? ? }location ^~/open_rtc/{#7880 rtcproxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"Upgrade";proxy_set_headerX-real-ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://im_open_rtc/;? ? ? ? ? ? ? }}server{listen80;server_nameweb.rentsoft.cn ;#1 web im 端 域名rewrite ^(.*)$https://${server_name}$1permanent;}server{ssl_session_timeout5m;listen443;server_namestorage.rentsoft.cn;#1 MinIO存儲域名sslon;ssl_certificate/etc/nginx/conf.d/ssl/storage.rentsoft.cn.crt;#證書ssl_certificate_key/etc/nginx/conf.d/ssl/storage.rentsoft.cn.key;#證書gzipon;gzip_min_length1k;gzip_buffers416k;gzip_comp_level2;gzip_typestext/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_varyoff;gzip_disable"MSIE [1-6]\.";location/ {proxy_passhttp://storage;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerX-Forwarded-Proto$scheme;proxy_set_headerHost$http_host;proxy_http_version1.1;client_max_body_size8000M;? ? }}server{listen443;server_nameadmin.rentsoft.cn;#后臺管理域名sslon;ssl_certificate/etc/nginx/conf.d/ssl/admin.rentsoft.cn.crt;# 證書ssl_certificate_key/etc/nginx/conf.d/ssl/admin.rentsoft.cn.key;#證書ssl_session_timeout5m;gzipon;gzip_min_length1k;gzip_buffers416k;gzip_comp_level2;gzip_typestext/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_varyoff;gzip_disable"MSIE [1-6]\.";location/ {proxy_set_headerHost$host;proxy_set_headerX-Real-Ip$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_set_headerX-NginX-Proxytrue;root/data1/online/Open-IM-Admin/dist/;#管理后臺web靜態(tài)資源存放路徑indexindex.html;try_files$uri$uri/ /index.html;? ? ? ? }}server{listen80;server_nameadmin.rentsoft.cn;#管理后臺 域名rewrite ^(.*)$https://${server_name}$1permanent;}
六荆永、端口開放及訪問路由
IM
如果按照(七)做了nginx配置废亭,僅開放443和80端口即可。
IM端口說明訪問說明對應關系
TCP:10001IM ws消息在域名和路由之間增加msg_gatewaywss://test.xx.xx/msg_gateway->ws://ip:10001
TCP:10002IM api在域名和路由之間增加apihttps://test.xx.xx/api->http://ip:10002
TCP:10003ws端口 jssdk的專用在域名和路由之間增加jssdk_gatewaywss://test.xx.xx/jssdk_gateway->ws://ip:10003
TCP:10004demo注冊登錄在域名和路由之間增加demohttps://test.xx.xx/demo->http://ip:10004
TCP:10005minio存儲時
TCP:10006IM 后臺管理在域名和路由之間增加adminhttps://test.xx.xx/admin->http://ip:10006
TCP:10007數(shù)據(jù)統(tǒng)計
TCP:10008商業(yè)版業(yè)務在域名和路由之間增加chathttps://test.xx.xx/chat->http://ip:10008
TCP:10009商業(yè)版管理后臺在域名和路由之間增加complete_adminhttps://test.xx.xx/complete_admin->http://ip:10009
TCP:10010商業(yè)版組織架構(gòu)在域名和路由之間增加organizationhttps://test.xx.xx/organization->http://ip:10006
音視頻通話
RTC端口說明操作
TCP: 7881音視頻通話直接開通端口具钥,不走nginx反向代理
UDP: 7882音視頻通話直接開通端口豆村,不走nginx反向代理
關于OpenIM
OpenIM是由IM技術(shù)專家打造開源即時通訊組件,也是目前最受歡迎的開源IM項目之一骂删,開發(fā)者通過集成OpenIM組件掌动,并私有化部署服務端,可以將即時通訊宁玫、實時通訊能力快速集成到自身應用中粗恢,并確保業(yè)務數(shù)據(jù)的安全性和私密性。github社區(qū)活躍欧瘪,star近萬眷射,排名遙遙領先,開發(fā)者萬人,OpenM力爭開源IM項目No1妖碉,打造開源IM第一社區(qū)涌庭。OpenIM是也是目前非常受歡迎的開源IM項目,廣泛用于政企協(xié)同辦公場景欧宜。
github地址:
https://github.com/OpenIMSDK/Open-IM-Server
開發(fā)者中心:https://doc.rentsoft.cn/#/
平臺支持:Android iOS Uniapp Flutter Electron Web reactNative等幾乎所有平臺
web端基于wasm的sdk即將發(fā)布
pc支持信創(chuàng)環(huán)境:銀河麒麟 UOS等坐榆;
群組支持:十萬群成員的超級大群
安卓基于自啟動-保活機制冗茸,確保消息實時觸達席镀;