目录
一、部署方式一:直接安装
Linux系统中的IM服务安装
MongoDB的安装
Redis的安装
安装JDK1.8+
部署Spring-boot-imapiAPI接口服务
Tigase-Server的安装与配置
部署shiku-push推送服务
部署Upload文件上传服务
配置FastDFS分布式存储系统
安装Nginx并配置文件访问
Windows系统中的IM服务安装
MongoDB的安装
Redis的安装
安装JDK1.8+
部署Spring-boot-imapiAPI接口服务
Tigase-Server的安装与配置
部署Upload文件上传服务
配置Nginx文件访问
二、部署方式二:使用Docker进行部署
CentOS系统中的Docker安装
下载并导入Docker镜像
通过镜像启动容器
远程连接容器
修改相关配置(IP地址等)
三、服务器维护
调整服务器最大连接数
查看监听的端口
防火墙设置
日志查看
服务的启动与停止
四、HTTPS配置说明
Tigase-ServerHTTPS配置
五、自定义Docker镜像的创建
Docker的安装确认
编写Dockerfile文件
通过Dockerfile构建镜像
使用镜像启动容器及相关说明
在容器中安装相应服务
设置服务为开机自启动
六、IM服务的自启动方案说明
Windows系统中的自启动方案
Linux系统中的自启动方案
七、端口映射方案说明
使用Nginx进行端口转发
使用iptables或Firewall进行端口转发
开启服务器IP转发功能
配置端口转发
Windows系统下的端口映射
八、数据库加密
MongoDB加密说明
Redis加密说明
九、代码本地导入与编译(以Eclipse为例)
导入mianshi-parent项目
编译与运行mianshi-im-api项目
编译与运行tigase项目
Upload项目配置
详细安装步骤
一、部署方式一:直接安装
Linux系统中的IM服务安装
1)安装MongoDB
下载并解压MongoDB安装包:
<codeclass="language-go">cd/opt
wgethttp://47.75.89.57/soft/mongodb-linux-x86_64-3.4.0.tgz
tar-zxvfmongodb-linux-x86_64-3.4.0.tgz
mvmongodb-linux-x86_64-3.4.0mongodb-3.4.0
在/opt/mongodb目录下创建mongo.conf文件,内容如下:
旧版配置:
<codeclass="language-go">dbpath=/data/mongodb
logpath=/opt/mongodb-3.4.0/logs/mongodb.log
port=28018
fork=true
新版配置:
<codeclass="language-go">systemLog:
destination:file
path:"/opt/mongodb-3.4.0/logs/mongodb.log"
logappend:true
storage:
dbPath:"/data/mongodb"
journal:
enabled:true
mmapv1:
smallFiles:true
wiredTiger:
engineConfig:
configString:cache_size=1G
processManagement:
fork:true
net:
port:28018
setParameter:
enableLocalhostAuthBypass:false
security:
authorization:enabled
然后创建MongoDB数据目录和日志目录:
<codeclass="language-go">mkdir-p/data/mongodb
mkdirlogs
在/opt/mongodb-3.4.0目录下创建启动脚本start,内容如下:
<codeclass="language-go">/opt/mongodb-3.4.0/bin/mongod--config=/opt/mongodb-3.4.0/mongo.conf
执行start脚本后,若出现相关日志信息,则表示启动成功。
停止MongoDB脚本:
<codeclass="language-go">ps-ef|grepmongo.conf|grep-vgrep|awk'{printf$2}'|xargskill-9
注意:安装完成后,将SQL文件夹中的MongoDB数据导入。具体操作如下:
<codeclass="language-go">cd/opt/mongodb-3.4.0/bin
./mongo-port28018
useimapi
exit
./mongorestore-h127.0.0.1:28018-dimapi--dir/opt/imapi
2)安装Redis
可以使用宝塔面板进行安装,并设置密码。以下是安装步骤:
下载并解压Redis安装包:
<codeclass="language-go">cd/opt
wgethttp://47.75.89.57/soft/redis-4.0.1.tar.gz
tar-xvfredis-4.0.1.tar.gz
cdredis-4.0.1
make&&makeinstall
修改redis.conf配置文件中的daemonizeyes以后台运行进程,并创建启动脚本:
<codeclass="language-go">/opt/redis-4.0.1/src/redis-server/opt/redis-4.0.1/redis.conf
执行shstart命令启动Redis,并检查其是否启动成功。
停止Redis脚本:
<codeclass="language-go">ps-ef|grep/opt/redis-4.0.1/src/redis-server|grep-vgrep|awk'{printf$2}'|xargskill-9
3)安装JDK1.8+
<codeclass="language-go">cd/opt
wgethttp://47.75.89.57/soft/jdk-8u131-linux-x64.tar.gz
tar-zxvfjdk-8u131-linux-x64.tar.gz
mkdirjava
mvjdk1.8.0_131./java
设置全局JDK环境变量,修改/etc/profile文件并添加以下内容:
<codeclass="language-go">JAVA_HOME=/opt/java/jdk1.8.0_131
JRE_HOME=/opt/java/jdk1.8.0_131/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
exportPATHJAVA_HOMECLASSPATH
使环境变量生效:
<codeclass="language-go">source/etc/profile
检验JDK是否安装成功:
<codeclass="language-go">java-version
如果显示类似以下信息,则说明安装成功:
<codeclass="language-go">javaversion"1.8.0_131"
Java(TM)SERuntimeEnvironment(build1.8.0_131-b17)
JavaHotSpot(TM)64-BitServerVM(build25.65-b01,mixedmode)
可能遇到的问题及解决方法:若出现bash:/usr/bin/java:/lib/ld-linux.so.2:badELFinterpreter:Nosuchfileordirectory错误,请执行以下命令:
<codeclass="language-go">sudoyuminstallglibc.i686
4)部署Spring-boot-imapiAPI接口服务
<codeclass="language-go">cd/opt
wgethttp://47.75.89.57/soft/spring-boot-imapi.tar
tar-xvfspring-boot-imapi.tar
cdspring-boot-imapi
vimapplication.properties
修改配置文件后,在spring-boot-imapi目录下执行shstart命令运行imapi接口服务。启动完成后,在浏览器中打开http://localhost:8092/console/login,出现登录页面则部署成功。默认管理员账号为1000,初始密码为1000。
5)安装Tigase-Server通讯服务
<codeclass="language-go">cd/opt
wgethttp://47.75.89.57/soft/tigase-server-7.1.3-b4482.tar
tar-xvftigase-server-7.0.1.tar
cdtigase-server-7.0.1
vimetc/tigase.conf
修改tigase.conf配置文件中的JAVA_HOME参数为本机JDK安装目录,并配置init.properties文件。启动Tigase并检查其是否启动成功。
二、部署方式二:使用Docker进行部署
安装Docker(以CentOS为例)
CentOS系统的Docker安装:
<codeclass="language-go">uname-r#检查内核版本,确保高于3.10
yum-yinstalldocker-io#安装Docker服务
servicedockerstart#启动Docker服务
使用Docker创建Redis容器:
<codeclass="language-go">dockerpullredis:4.0.1#从官方仓库拉取Redis4.0.1镜像
mkdir/data/redis#在宿主机创建目录
dockerrun-p6388:6379--nameredis-4.0.1--hostnameredis--restart=always-v/data/redis:/data-dredis:4.0.1redis-server--appendonlyyes#启动容器
使用Docker创建Mongodb容器:
<codeclass="language-go">dockerpullmongo:3.4.0#拉取MongoDB3.4.0镜像
mkdir-p/data/mongodb/db#在宿主机创建目录
dockerrun-d-p28018:27017-v/data/mongodb/db:/data/db--restart=always--namemongodbmongo:3.4.0#启动MongoDB容器
使用Docker创建IMAPI服务容器:
<codeclass="language-go">cdspring-boot-imapi#进入IMAPI部署文件目录
vimimapi_dockerfile#创建Dockerfile并编辑
Dockerfile内容示例如下:
dockerfile
<codeclass="language-go">FROMjava:8
VOLUME/opt/logs
COPYapplication.properties/opt/application.properties
ADDmianshi-im-api-0.0.1-SNAPSHOT.war/opt/mianshi-im-api-0.0.1-SNAPSHOT.war
RUNbash-c'touch/opt/mianshi-im-api-0.0.1-SNAPSHOT.war'
EXPOSE8092
ENTRYPOINT["java","-jar","/opt/mianshi-im-api-0.0.1-SNAPSHOT.war","--spring.config.location=/opt/application.properties"]
构建镜像并启动容器:
<codeclass="language-go">dockerbuild-timapi-fimapi_dockerfile./
dockerrun-d-p8092:8092-e"UPLOAD_ADDR=192.168.0.152:8088"-e"MONGODB_ADDR=192.168.0.151:28018"-e"NAMESRV_ADDR=192.168.0.155:9876"-e"XMPP_HOST=192.168.0.155"-e"XMPP_SERVERNAME=im.shiku.co"-e"REDIS_ADDR=redis://192.168.0.155:6388"--nameimapi-serverimapi
三、服务器维护
调整服务器最大连接数
查看当前最大连接数(默认值为1024):
<codeclass="language-go">ulimit-n
修改以下配置文件以调整最大连接数:
<codeclass="language-go">vim/etc/security/limits.conf
在配置文件中添加以下内容:
<codeclass="language-go">*softnofile204800
*hardnofile204800
*softnproc204800
*hardnproc204800
修改/etc/pam.d/login文件,添加以下内容:
<codeclass="language-go">sessionrequiredpam_limits.so
保存后重启服务器,并验证最大连接数已修改成功:
<codeclass="language-go">ulimit-n
四、HTTPS配置说明
Tigase-ServerHTTPS配置
从证书认证机构网站下载根证书,并上传到服务器。
使用openssl命令将.crt格式的根证书转换为.pem格式:
<codeclass="language-go">opensslx509-informDES-inDigiCertGlobalRootCA.crt-outDigicertRoot.pem-text
使用cat命令合成证书,并将合成的.pem证书放到Tigase-Server的certs目录下:
<codeclass="language-go">catcert_oem.shiku.co.crtcert_oem.shiku.co.keyDigicertRoot.pem>oem.shiku.co.pem
九、数据库加密与备份
MongoDB加密说明:
为每个数据库配置用户名和密码:
<codeclass="language-go">cd/opt/mongodb-3.4.0/bin
./mongo-port28018
useimapi
db.createUser({user:"root",pwd:"root",roles:["readWrite","dbAdmssin"]})
<olstart="2">
Redis加密说明:
进入Redis目录并编辑redis.conf文件,找到requirepass行,去掉注释并设置密码。保存后重启Redis服务。