IM開源項(xiàng)目OpenIM部署文檔-從準(zhǔn)備工作到nginx配置

一、準(zhǔn)備工作

運(yùn)行環(huán)境linux系統(tǒng)即可, Ubuntu 7.5.0-3ubuntu1~18.04最優(yōu)

圖片視頻文件存儲(chǔ)支持cos/MinIO

https/wss協(xié)議1. 需申請(qǐng)域名或者子域名(web im端登錄注冊及im 服務(wù)端使用)建議:web.xx.xx 2. 若使用MinIO作為對(duì)象存儲(chǔ),建議:storage.xx.xx 3. 管理后臺(tái)子域名,建議:admin.xx.xx 4. 部署nginx,并配置證書。

離線推送(app被殺死或未啟動(dòng)時(shí)推送)國內(nèi)申請(qǐng)申請(qǐng)廠商通道以及個(gè)推,建議提前申請(qǐng);海外申請(qǐng)firebase;

蘋果開發(fā)者賬號(hào)如需打包、上架,請(qǐng)自行申請(qǐng)賬號(hào)

手機(jī)驗(yàn)證碼服務(wù)請(qǐng)自行申請(qǐng)阿里云,建議提前申請(qǐng)

消息加密存儲(chǔ)需購買消息加密插件

組織架構(gòu)需購買組織架構(gòu)模塊

機(jī)器資源如果用戶量小于10萬,可用單機(jī)部署,8C 16G 5Mb 1T普通磁盤即可

logo1024 x 1024png

軟著如需上架國內(nèi)市場,提前準(zhǔn)備軟著

管理后臺(tái)需購買

二、docker-compose一鍵部署

先準(zhǔn)備

go/git/docker/docker-compose,具體參考:https://doc.rentsoft.cn/#/component/docker

單機(jī)環(huán)境下的組件部署,可以通過docker-compose一鍵部署,先選擇某個(gè)大磁盤目錄,然后依次輸入如下命令:

gitclone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive;

進(jìn)入項(xiàng)目后

1.修改.env

USER=root#不用修改PASSWORD=openIM123#建議修改復(fù)雜密碼 不能包括 @#之類特殊符號(hào) 且至少要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(注:如果使用三方云服務(wù)器存儲(chǔ)媒體文件可不搭建)

3.修改配置

如果已經(jīng)執(zhí)行過install_im_server.sh,則config/usualConfig.yaml根據(jù).env的配置已經(jīng)修改完成了,且組件也安裝完畢,則根據(jù)需求修改如下字段

tokenpolicy:accessSecret:"open_im_server"#token生成相關(guān) 建議修改accessExpire:90#token過期時(shí)間(天) 默認(rèn)即可messageverify:friendVerify:false#發(fā)送消息是否驗(yàn)證好友關(guān)系 false表示不驗(yàn)證好友關(guān)系push:getui:pushUrl:"https://restapi.getui.com/v2/$appId"masterSecret:""#需添加appKey:""#需添加enable:false#true啟動(dòng)個(gè)推推送

可能存在的問題:如果非首次安裝,可能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。

下載源碼到服務(wù)器

gitclonehttps://github.com/OpenIMSDK/Open-IM-Server.git --recursivecdcmd/Open-IM-SDK-Core

設(shè)置腳本權(quán)限

cd../../script/chmod +x*.sh

編譯源碼

./batch_build_all_service.sh

出現(xiàn)all services build success表示編譯成功

四、Open-IM-Server修改配置&啟動(dòng)服務(wù)

修改配置

如果組件未自行安裝,則先執(zhí)行(二)的1-3步驟、如果要修改ip port等非常用信息,需要在config.yaml中修改。

啟動(dòng)服務(wù)

cdscript./start_all.sh

檢查服務(wù)

./check_all.sh

啟動(dòng)服務(wù)

./start_all.sh

檢查服務(wù)

# 出現(xiàn)all services launch success表示服務(wù)啟動(dòng)成功 ./check_all.sh

(二)和(四)操作完成后,實(shí)際上完成了混合部署模式,即docker部署組件,IM源碼部署。

五、nginx配置參考

用業(yè)務(wù)申請(qǐng)的

web.xx.xx/storage.xx.xx/admin.xx.xx分別替換open-im-ng-example.conf中web.rentsoft.cn?/storage.rentsoft.cn/admin.rentsoft.cn三個(gè)域名及對(duì)應(yīng)的證書

upstreamim_msg_gateway{server127.0.0.1:10001;#IM消息服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_api{server127.0.0.1:10002;#IM群組用戶api服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_jssdk_gateway{server127.0.0.1:10003;#IM jssdk服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_demo{server127.0.0.1:10004;#IM demo登錄注冊服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamstorage {server127.0.0.1:10005;#MinIO服務(wù)器地址 暫時(shí)支持1臺(tái)}upstreamim_admin{server127.0.0.1:10006;#IM admin服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_grafana{server127.0.0.1:10007;#IM 統(tǒng)計(jì)服務(wù)器地址 docker-compose啟動(dòng)所在機(jī)器}upstreamim_chat{server127.0.0.1:10008;#IM 商業(yè)版登錄注冊服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_complete_admin{server127.0.0.1:10009;#IM 商業(yè)版admin地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_organization{server127.0.0.1:10010;#IM 商業(yè)版組織架構(gòu)服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}upstreamim_open_rtc{server127.0.0.1:7880;#rtc 音視頻通話 服務(wù)器地址 根據(jù)部署情況可指定多臺(tái)}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存儲(chǔ)域名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;#后臺(tái)管理域名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/;#管理后臺(tái)web靜態(tài)資源存放路徑indexindex.html;try_files$uri$uri/ /index.html;? ? ? ? }}server{listen80;server_nameadmin.rentsoft.cn;#管理后臺(tái) 域名rewrite ^(.*)$https://${server_name}$1permanent;}

六、端口開放及訪問路由

IM

如果按照(七)做了nginx配置,僅開放443和80端口即可。

IM端口說明訪問說明對(duì)應(yīng)關(guān)系

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存儲(chǔ)時(shí)

TCP:10006IM 后臺(tái)管理在域名和路由之間增加adminhttps://test.xx.xx/admin->http://ip:10006

TCP:10007數(shù)據(jù)統(tǒng)計(jì)

TCP:10008商業(yè)版業(yè)務(wù)在域名和路由之間增加chathttps://test.xx.xx/chat->http://ip:10008

TCP:10009商業(yè)版管理后臺(tái)在域名和路由之間增加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反向代理

關(guān)于OpenIM

OpenIM是由IM技術(shù)專家打造開源即時(shí)通訊組件,也是目前最受歡迎的開源IM項(xiàng)目之一,開發(fā)者通過集成OpenIM組件,并私有化部署服務(wù)端,可以將即時(shí)通訊、實(shí)時(shí)通訊能力快速集成到自身應(yīng)用中,并確保業(yè)務(wù)數(shù)據(jù)的安全性和私密性。github社區(qū)活躍,star近萬,排名遙遙領(lǐng)先,開發(fā)者萬人,OpenM力爭開源IM項(xiàng)目No1,打造開源IM第一社區(qū)。OpenIM是也是目前非常受歡迎的開源IM項(xiàng)目,廣泛用于政企協(xié)同辦公場景。

github地址:

https://github.com/OpenIMSDK/Open-IM-Server

開發(fā)者中心:https://doc.rentsoft.cn/#/

平臺(tái)支持:Android iOS Uniapp Flutter Electron Web reactNative等幾乎所有平臺(tái)

web端基于wasm的sdk即將發(fā)布

pc支持信創(chuàng)環(huán)境:銀河麒麟 UOS等;

群組支持:十萬群成員的超級(jí)大群

安卓基于自啟動(dòng)-?;顧C(jī)制,確保消息實(shí)時(shí)觸達(dá);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容