IM開源項目OpenIM部署文檔-從準備工作到nginx配置

一吨拗、準備工作

運行環(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等坐榆;

群組支持:十萬群成員的超級大群

安卓基于自啟動-保活機制冗茸,確保消息實時觸達席镀;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夏漱,隨后出現(xiàn)的幾起案子豪诲,更是在濱河造成了極大的恐慌,老刑警劉巖麻蹋,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跛溉,死亡現(xiàn)場離奇詭異,居然都是意外死亡扮授,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門专肪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刹勃,“玉大人,你說我怎么就攤上這事嚎尤±笕剩” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵芽死,是天一觀的道長乏梁。 經(jīng)常有香客問我,道長关贵,這世上最難降的妖魔是什么遇骑? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮揖曾,結(jié)果婚禮上落萎,老公的妹妹穿的比我還像新娘。我一直安慰自己炭剪,他們只是感情好练链,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奴拦,像睡著了一般媒鼓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天绿鸣,我揣著相機與錄音疚沐,去河邊找鬼。 笑死枚驻,一個胖子當著我的面吹牛濒旦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播再登,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼尔邓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锉矢?” 一聲冷哼從身側(cè)響起梯嗽,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沽损,沒想到半個月后灯节,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡绵估,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年炎疆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片国裳。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡形入,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缝左,到底是詐尸還是另有隱情亿遂,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布渺杉,位于F島的核電站蛇数,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏是越。R本人自食惡果不足惜耳舅,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望英妓。 院中可真熱鬧挽放,春花似錦、人聲如沸蔓纠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腿倚。三九已至纯出,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暂筝。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工箩言, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焕襟。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓陨收,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸵赖。 傳聞我的和親對象是個殘疾皇子务漩,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容