Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Contribute to GitLab
  • Sign in / Register
I
IM项目Bug提取列表
  • Project
    • Project
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 16
    • Issues 16
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • 黎仕勇
  • IM项目Bug提取列表
  • Wiki
  • 服务端部署文档

服务端部署文档

Last edited by 黎仕勇 Oct 10, 2020
Page history

服务端安装部署文档

服务端安装方式分为两种,一是linux上面直接部署,二是使用docker容器化部署方式,安装部署文档涉及到的软件包,都在压缩包soft.zip下,软件包找相关项目负责人获取。


1、端口开放情况

服务 用途 使用端口 说明
Mongodb 数据库 27017 不用对外开放
imapi Api接口 8092 需要开放
Tigase-server 通讯服务 Web端使用5260端口,手机端使用5666端口 需要开放
Upload 文件上传 8088 需要开放
Nginx 静态文件访问 8080 需要开放
Redis 缓存 6379 不用对外开放

2、产品架构图

690593850b9f11bd0d4ed06b0b716298

一、LINUX 直接安装

软件包跟目录放在/opt 下

1、源码安装mongoDB

1.1 解压源码

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# mv /soft/mongodb-linux-x86_64-3.4.0.tgz ./
[root@mac-pro~]# tar  -zxvf  mongodb-linux-x86_64-3.4.0.tgz
[root@mac-pro~]# mv  mongodb-linux-x86_64-3.4.0  mongodb-3.4.0

1.2 在/opt/mongodb-3.4.0目录下创建mongo.conf文件内容如下:

[root@mac-pro~]# cd   mongodb-3.4.0
[root@mac-pro~]# vim  mongo.conf
#录入以下内容
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:
   # bindIp: 127.0.0.1
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false

1.3 然后创建mongodb数据目录,和日志目录

[root@mac-pro~]# mkdir  -p  /data/mongodb
[root@mac-pro~]# mkdir  logs 

1.4在/opt/mongodb-3.4.0目录下创建start启动脚本内容如下:

/opt/mongodb-3.4.0/bin/mongod --config=/opt/mongodb-3.4.0/mongo.conf

执行start脚本,出现如下图所示内容则启动成功

imgimg

Stop脚本:
ps -ef|grep mongo.conf|grep -v grep|awk '{printf $2}'|xargs kill -9

2、安装Redis

2.1 解压、安装

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# tar  -zxvf  redis-4.0.1.tar.gz
[root@mac-pro~]# cd  redis-4.0.1
[root@mac-pro~]# make && make  install

2.2 修改/opt/redis-4.0.1目录下redis.conf文件中配置项:

daemonize yes(进程后台运行)

2.3 在/opt/redis-4.0.1目录下创建start启动脚本内容如下:

/opt/redis-4.0.1/src/redis-server /opt/redis-4.0.1/redis.conf

2.4 执行sh start 命令启动脚本,查看redis是否启动成功

img

2.5 Stop脚本

ps -ef|grep  /opt/redis-4.0.1/src/redis-server|grep -v grep|awk '{printf $2}'|xargs kill -9
ps -ef|grep  /opt/redis-4.0.1/src/redis-server

3、安装Jdk1.8+

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# tar -zxvf  jdk-8u131-linux-x64.tar.gz
[root@mac-pro~]# mkdir  java
[root@mac-pro~]# mv  jdk1.8.0_131  ./java

3.1 设置jdk环境变量

这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量

[root@mac-pro~]# vim /etc/profile

打开之后在末尾添加

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
export PATH JAVA_HOME CLASSPATH

3.2 使环境变量生效

[root@mac-pro~]# source /etc/profile

3.3 检验是否安装成功

在终端执行: java -version 命令,看看是否安装成功,成功则显示如下:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

img

3.4 可能出现的问题:

若出现

bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

执行:sudo yum install glibc.i686 命令安装glibc

4、安装Rocket MQ 队列

4.1 解压源码

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# unzip  rocketmq-all-4.3.2-bin-release.zip
[root@mac-pro~]# mv  rocketmq-all-4.3.2-bin-release rocketmq-4.3.2 
[root@mac-pro~]# cd  rocketmq-4.3.2 

4.2 调整rocketMq 的内存值

注意:这里请根据机器的实际情况进行调整,如机器内存较大可适当配置高一点

[root@mac-pro~]# vim bin/runbroker.sh

img

[root@mac-pro~]# vim bin/runserver.sh

img

4.3 执行编写启动脚本 startSrv 并启动nameServer

[root@mac-pro~]# vim startSrv

写入如下内容:

nohup sh ./bin/mqnamesrv  >  ./logs/rocketmqlogs/namesrv.log  &
tail  -f  ./logs/rocketmqlogs/namesrv.log

sh startSrv

image-20201010142139945

4.4 执行编写启动脚本 startBroker 并启动Broker

vim startBroker

写入如下内容:

nohup sh bin/mqbroker -n  localhost:9876  >  ./logs/rocketmqlogs/broker.log  &
tail  -f  ./logs/rocketmqlogs/broker.log

执行startBroker脚本启动borker

sh startBroker

image-20201010142302112

执行jps 命令 查看正常应该能看到NamesrvStaup 和 BrokerStartup

image-20201010142342007

4.4 注册推送消息、用户状态话题

sh  bin/mqadmin updateTopic -n localhost:9876  -c DefaultCluster  -t  pushMessage
sh  bin/mqadmin updateTopic -n localhost:9876  -c DefaultCluster  -t  xmppMessage
sh  bin/mqadmin updateTopic -n localhost:9876  -c DefaultCluster  -t  userStatusMessage
sh  bin/mqadmin updateTopic -n localhost:9876  -c DefaultCluster  -t HWPushMessage
sh  bin/mqadmin updateTopic -n localhost:9876  -c DefaultCluster -t  fullPushMessage

附: 单个脚本启动

vim vim mqStart

写入如下内容:

#!/bin/sh
export JAVA_HOME=/opt/java/jdk1.8.0_131/
nohup sh /opt/rocketmq-4.3.2/bin/mqnamesrv > /opt/rocketmq-4.3.2/logs/rocketmqlogs/namesrv.log  2>&1 &
echo "Start Name Server End"
nohup sh /opt/rocketmq-4.3.2/bin/mqbroker -n localhost:9876 > /opt/rocketmq-4.3.2/logs/rocketmqlogs/broker.log  2>&1  &
echo "Start  Broker End"

附: 单个脚本停止

vim mqStop

#!/bin/sh
sh /opt/rocketmq-4.3.2/bin/mqshutdown broker &
sh /opt/rocketmq-4.3.2/bin/mqshutdown namesrv &
echo "Please wait process to exit! check it type jps"

附:停止命令

sh bin/mqshutdown namesrv
sh bin/mqshutdown broker

5 安装imapi api 接口服务

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# tar  -xvf  imapi.tar
[root@mac-pro~]# cd  imapi
[root@mac-pro~]# vim  application.properties

5.1 修改application.properties配置文件

image-20201010142702865

image-20201010142819922

5.2 在imapi目录下执行sh start命令运行imapi接口服务

sh start

5.3 修改后台配置

启动完成后,在浏览器打开链接“http://localhost:8092/console/login”,出现如下图所示内容即酷信接口部署成功

image-20201010142908310

注:超级管理员账号:1000 初始密码:1000

6 安装tigase-server 通讯服务

6.1 包目录说明

Tigase-Server-聊天服务器

lib 目录为 jar包存放目录 etc/init.properties 为服务器配置文件

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# tar -zxvf tigase-server-7.1.3-b4482.tar
[root@mac-pro~]# cd tigase-server-7.1.3-b4482
[root@mac-pro~]# vim etc/init.properties

6.2 修改init.properties 配置文件

将172.18.1.232 替换成相应服务的内网地址。

image-20201010143539534

serverName是用户域,有几个地方都要保持一致 需要跟访问的地址一样(即是外网地址)。

tigase的--virt-hosts

imapi的im.xmppConfig.serverName

xmpp-push的im.xmppConfig.serverName

后台管理的xmpp虚拟域名

6.3 JVM、GC设置和建议

6.3.1 修改 etc/tigase.conf 配置文件

对于非生产部署(开发或说明环境),我们建议使用JVM的默认内存设置(这取决于底层操作系统),这会导致自动内存分配,并且根据经验,这是最安全的。环境。对于生产环境,我们建议使用固定大小的HEAP - 初始和最大大小,可以分别设置(JVM )-Xms和-XmxJVM标志

6.3.2 服务器类机器(非VM)> 16GB > = 8核CPU

建议启用CMS垃圾收集器。根据实际物理内存大小调整Xms和Xms大小以获得实际可用内存 使用以下内容:

GC="-XX:+UseBiasedLocking -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:NewRatio=2 -XX:+CMSIncrementalMode -XX:-ReduceInitialCardMarks -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"
EX="-XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+UseNUMA"
HEAP=" -Xms10G -Xmx10G"
JAVA_OPTIONS="${GC} ${GC_DEBUG} ${EX} ${HEAP}"
6.3.3 对于具有大量可用内存的服务器,使用G1GC收集器可能是一个更好的主意
OSGI=${osgiEnabled}
ENC="-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
GC="-XX:+UseG1GC -XX:ConcGCThreads=4 -XX:G1HeapRegionSize=2 -XX:InitiatingHeapOccupancyPercent=35 -XX:MaxGCPauseMillis=100"
EX="-XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+UseNUMA"
HEAP="-Xms60G -Xmx60G"
JAVA_OPTIONS="${GC} ${GC_DEBUG} ${EX} ${HEAP}"
6.3.4 8GB RAM,4核CPU等效

建议启用CMS垃圾收集器。必须配置NewRatio。需要调整Xms和Xms大小以获得实际可用内存。应该使用以下内容:

GC="-XX:+UseBiasedLocking -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:NewRatio=2 -XX:+CMSIncrementalMode -XX:-ReduceInitialCardMarks -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"
EX="-XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+UseNUMA"
HEAP="-Xms7G -Xmx7G" # heap memory settings must be adjusted on per deployment-base!
JAVA_OPTIONS="${GC} ${GC_DEBUG} ${EX} ${HEAP}"
nohup java -Djava.ext.dirs="lib" ${JAVA_OPTIONS}  com.mac-pro.imserver.IMServerStarter imserver.properties > log.log &

6.4 在IMServer 执行 start 启动 服务

sh start

7、push 推送服务

push服务为离线消息推送服务,去消费tigase-server 放到RocketMq 队列里的离线消息

7.1 安装push 推送服务

[root@mac-pro~]# tar  -xvf  push.tar
[root@mac-pro~]# cd  push
[root@mac-pro~]# vim  application.properties

7.2 修改application.properties 配置文件

img

imgimg

目前ios 支持anps和极光推送 ,安卓目前集成了华为、小米、魅族、vovo、oppo,谷歌六种推送,如果手机有谷歌框架且能访问外网,会使用谷歌推送,否则根据机型来,非以上机型使用小米推送如已经申请好相关配置,将申请好的小米、华为、极光 等平台的key secret 配置到对应的位置。也可以后续在配置,加上配置重启push 服务即可

img

ios apns 推送配置 替换ios apns推送证书,个人版和企业版选择一个使用即可,需要注意在申请ios apns 证书的时候必须要设置密码。

7.3.修改完配置后使用 sh start 命令启动push服务

sh start

8、安装xmpp-push服务

说明:xmpp-push 是从 imapi 中独立出来的服务,用于发送系统Xmpp 消息Imapi 服务里面群组等部分接口操作后,需要发一条xmpp 消息通知用户,此时imapi 将需要发送的xmpp 消息放到rocketMq 队列下,由xmpp-push 服务获取队列里的消息然后把消息经过tigage-server 发送到设备端

8.1 安装 xmpp-push 服务并 参照如下示例,修改配置文件

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# tar -xvf xmpp-push.tar
[root@mac-pro~]# cd  xmpp-push
[root@mac-pro~]# vim  application.properties

img

8.2 启动 xmpp-push 服务

[root@mac-pro~]#sh start

9、安装Upload文件上传服务

9.1 安装Upload服务

[root@mac-pro~]# cd  /opt
[root@mac-pro~]# tar -xvf upload.tar
[root@mac-pro~]# cd  upload
[root@mac-pro~]# vim  application.properties

9.2 参照如下示例修改配置:

说明:/data/www/resources:文件上传成功后存储的根目录 beginIndex:根目录“/data/www/resources”的字符串长度(从0开始)用于分隔字符串生成文件链接用(需要注意,如果修改了相关路径,beginIndex 的数值也要相应修改)

img

img

9.3 在文件上传服务所在机器创建存储目录(例如“/data/www/resources”)并初始化目录结构

可以直接将以下命令全部拷贝到Linux服务器一次性执行

mkdir  -p  /data/www/resources
cd /data/www/resources
mkdir audio
mkdir avatar
mkdir avatar/o
mkdir avatar/t
mkdir avatar_r
mkdir avatar_r/o
mkdir avatar_r/t
mkdir gift
mkdir image
mkdir image/o
mkdir image/t
mkdir other
mkdir preview
mkdir temp
mkdir u
mkdir video

9.4 启动 upload

[root@mac-pro~]# cd  /opt/upload
[root@mac-pro~]# sh  start

img

10、安装FastDFS分布式文件存储服务

10、安装Nginx,配置文件访问

10.1 首先安装 nginx 所需的依赖

 [root@mac-pro~]# yum install -y  pcre  pcre-devel  zlib  zlib-devel openssl  openssl-devel  

10.2 安装 Nginx-1.9.11

[root@mac-pro~]# cd /opt
[root@mac-pro~]# tar  -zxvf  nginx-1.9.11.tar.gz
[root@mac-pro~]# mv  nginx-1.9.11  nginx-install
[root@mac-pro~]# cd nginx-install 
[root@mac-pro~]# ./configure --prefix=/opt/nginx-1.9.11  --with-http_ssl_module  --with-stream
[root@mac-pro~]# make && make install 
[root@mac-pro~]# rm  -rf  ../nginx-install

10.3在/opt/nginx-1.9.11目录下创建start、stop脚本:

vim start , 写入如下内容

./sbin/nginx
ps -ef|grep nginx

vim stop , 写入如下内容

./sbin/nginx -s stop
ps -ef|grep nginx

10.4 在upload 所在的机器上 配置头像访问。首先请确保已经安装 Nginx,如没有安装请参考上面的 安装 Nginx-1.9.11中的步骤进行安装。

说明:由于FastDfs 不支持对上传文件的自定义命名,而目前用户头像是根据userId 命名的,所以目前用户头像没有使用FastDfs 储存。

10.5 修改Nginx 配置文件 nginx.conf ,添加如下内容

#用户头像访问
server{
  listen       80;
  server_name    head.mac-pro.co;
  #拒接访问html 等类型的文件避免受到脚本攻击
  location ~* /\.(html|htm|jsp|php|js)$ {
     deny  all;
  }

  location /{
      root     /data/www/resources;
      expires   4d;
  }
}
#ip 配置示例
server{
     listen       8080;
     #本机外网ip
     server_name    192.168.0.168;
     #拒接访问html 等类型的文件避免受到脚本攻击
     location ~ /\.(html|htm|jsp) {
        deny  all;
   }

    location ~* /{
      root   /data/www/resources;
      expires    4d;
    }
}

如按IP方式配置即得到文件访问、下载路径 为 ip:8080

  1. 执行start、stop脚本,查看nginx是否启动、停止成功:

img

至此服务端相关服务已经部署完成

最后徐修改后台配置

Imapi服务启动完成后,在浏览器打开链接“http://localhost:8092/console/login”

账号密码 默认1000

将系统配置---> 客户端配置里的地址修改为部署的服务器的地址,这些地址用于在客户端启动时返回给客户端使用,请参考下图

image-20201010134711212

修改配置保存后访问

http://localhost:8092/config

image-20201010134801328

最后

http://localhost:8092/config 为客户端配置的apiurl 将 apiurl和 apikey(在imapi服务配置文件中配置) 提供 给客户端,客户端打包需要的,至此大功告成。

11、将服务设置为开机自启动

注意:这里的启、停本质上也是执行对应服务的安装目录下的start 与stop脚本

如果之前start脚本里配置的是相对路径,那么就需要改为绝对路径

11.1 Mongodb

在/lib/systemd/system/目录下新建mongodb.service文件,内容如下:

[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/opt/mongodb-3.2.4/bin/mongod --config /opt/mongodb-3.2.4/mongo.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/opt/mongodb-3.2.4/bin/mongod  --shutdown  --config /opt/mongodb-3.2.4/mongo.conf
PrivateTmp=true


[Install]
WantedBy=multi-user.target

如图所示:

img

设置权限

[root@mac-pro~]# chmod 754 mongodb.service

启动服务

[root@mac-pro~]#systemctl start mongodb.service

关闭服务

[root@mac-pro~]#systemctl stop mongodb.service

开机启动

[root@mac-pro~]#systemctl enable mongodb.service

11.2 Redis

在/lib/systemd/system/目录下新建redis.service文件,内容如下:

[Unit]
Description=redis
After=syslog.target network.target 

[Service]
Type=forking
PIDFile=/var/run/redis_6388.pid
ExecStart=/opt/redis-4.0.1/src/redis-server  /opt/redis-4.0.1/redis.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID

[Install]
WantedBy=multi-user.target

如下图所示:

img

设置权限

[root@mac-pro~]# chmod 754 redis.service

启动服务

[root@mac-pro~]#systemctl start redis.service

关闭服务

[root@mac-pro~]#systemctl stop redis.service

开机启动

[root@mac-pro~]#systemctl enable redis.service

11.3 Nginx

在/lib/systemd/system/目录下新建 nginx.service文件,内容如下:

[Unit]
Description=nginx
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/nginx_1.9.11/sbin/nginx
ExecReload=/opt/nginx_1.9.11/sbin/nginx -s reload
ExecStop=/opt/nginx_1.9.11/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

设置权限

[root@mac-pro~]# chmod 754 nginx.service

启动服务

[root@mac-pro~]#systemctl start nginx.service

关闭服务

[root@mac-pro~]#systemctl stop nginx.service

*开机启动 *

[root@mac-pro~]#systemctl enable nginx.service

11.4 Imapi

注: 设置开机自启动服务启动脚本全部要求使用绝对路径 ,和给予相应执行权限

如 :

image-20201010140020220

在/lib/systemd/system/目录下新建 imapi.service文件,内容如下:

[Unit]
Description=imapi
After=syslog.target network.target remote-fs.target nss-lookup.target mongodb.service  redis.service

[Service]
Type=simple
PIDFile=/opt/imapi/imapi.pid
ExecStart=/opt/imapi/start
ExecReload=/bin/kill-s HUP $MAINPID
ExecStop=/opt/spring-boot-imapi/stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target 

如下图所示:

image-20201010140056595

设置权限

[root@mac-pro~]# chmod 754 imapi.service

启动服务

[root@mac-pro~]#systemctl start imapi.service

关闭服务

[root@mac-pro~]#systemctl stop imapi.service

开机启动

[root@mac-pro~]#systemctl enable imapi.service

11.5 Tigase-Server

在/lib/systemd/system/目录下新建 tigase.service文件,内容如下:

[Unit]
Description=tigase-server
After=syslog.target network.target remote-fs.target nss-lookup.target mongodb.service  redis.service

 
[Service]

Type=forking
ExecStart=/opt/tigase-server-7.1.3-b4482/start  
ExecReload=/bin/kill-s HUP $MAINPID
ExecStop=/opt/tigase-server-7.1.3-b4482/stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

设置权限

[root@mac-pro~]# chmod 754 tigase-server.service

启动服务

[root@mac-pro~]#systemctl start tigase-server.service

关闭服务

[root@mac-pro~]#systemctl stop tigase-server.service

开机启动

[root@mac-pro~]#systemctl enable tigase-server.service

11.6 rocketmq

在/lib/systemd/system/目录下新建 rocketmq.service文件,内容如下:

[Unit]
Description=rocketmq
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/opt/rocketmq-all-4.3.2-bin-release/mqStart
ExecReload=/bin/kill-s HUP $MAINPID
ExecStop=/opt/rocketmq-all-4.3.2-bin-release/mqStop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

设置权限

[root@mac-pro~]# chmod 754 rocketmq.service

启动服务

[root@mac-pro~]#systemctl start rocketmq.service

关闭服务

[root@mac-pro~]#systemctl stop rocketmq.service

开机启动

[root@mac-pro~]#systemctl enable rocketmq.service

11.7 xmpp-push

在/lib/systemd/system/目录下新建 xmpp-push.service文件,内容如下:

[Unit]

iDescription=xmpp-push
After=syslog.target network.target remote-fs.target nss-lookup.target  mongodb.service  redis.service rocketmq.service

[Service]
ExecStart=/opt/xmpp-push/start
ExecReload=/bin/kill-s HUP $MAINPID
ExecStop=/opt/xmpp-push/stop
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

设置权限

[root@mac-pro~]# chmod 754 xmpp-push.service

启动服务

[root@mac-pro~]#systemctl start xmpp-push.service

关闭服务

[root@mac-pro~]#systemctl stop xmpp-push.service

开机启动

[root@mac-pro~]#systemctl enable xmpp-push.service

11.8 push

在/lib/systemd/system/目录下新建 push.service文件,内容如下:

[Unit]

iDescription=push
After=syslog.target network.target remote-fs.target nss-lookup.target  mongodb.service  redis.service rocketmq.service

[Service]
ExecStart=/opt/push/start
ExecReload=/bin/kill-s HUP $MAINPID
ExecStop=/opt/push/stop
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

设置权限

[root@mac-pro~]# chmod 754 push.service

启动服务

[root@mac-pro~]#systemctl start push.service

关闭服务

[root@mac-pro~]#systemctl stop push.service

开机启动

[root@mac-pro~]#systemctl enable push.service

11.9 upload

在/lib/systemd/system/目录下新建 upload.service文件,内容如下:

[Unit]

iDescription=push
After=syslog.target network.target remote-fs.target nss-lookup.target  mongodb.service  redis.service rocketmq.service

[Service]
ExecStart=/opt/upload/start
ExecReload=/bin/kill-s HUP $MAINPID
ExecStop=/opt/upload/stop
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

设置权限

[root@mac-pro~]# chmod 754 upload.service

启动服务

[root@mac-pro~]#systemctl start upload.service

关闭服务

[root@mac-pro~]#systemctl stop upload.service

开机启动

[root@mac-pro~]#systemctl enable upload.service

二、部署方式二(通过docker部署)

注:如习惯使用Docker 容器部署项目,并具有相应的使用、维护经验,则可以使用Docker 容器的方式部署。

1. 安装docker(以centos7.X 为例)

[root@mac-pro ~]# uname -r

img

安装 docker 服务

[root@mac-pro ~]# yum -y install docker-io

img

启动docker 服务

[root@mac-pro ~]#service docker start

img

2. Docker 创建Redis 容器

1、从官方仓库拉取redis 4.0.1 的镜像

[root@mac-pro ~]# docker pull redis:4.0.1

img

2、在宿主机创建 /data/redis 目录

mkdir /data/redis

3、通过镜像启动容器

docker run -p 6388:6379 --name redis-4.0.1 --hostname redis --restart=always -v /data/redis:/data -d redis:4.0.1 redis-server --appendonly yes

img

3. Docker 创建Mongodb容器

1、使用命令从官方仓库拉取3.4.0 版本的镜像

[root@mac-pro ~]# docker pull mongo:3.4.0

2、在宿主机创建目录

mkdir -p /data/mongodb/db

3、使用镜像启动容器

docker run -d -p 27107:27017 -v /data/mongodb/db:/data/db --restart=always --name mongodb mongo:3.4.0

*注:IP地址请根据实际部署机器的内网ip进行调整*

4. Docker 创建imapi容器

1、在imapi 的部署文件imapi中创建 imapi_dockerfile文件 ,写入如下内容

FROM java:8
VOLUME  /opt/logs
COPY application.properties /opt/application.properties
ADD imapi.war /opt/imapi.war
RUN bash -c 'touch /opt/imapi.war'
EXPOSE 8092

ENTRYPOINT ["java","-jar","/opt/imapi.war","--spring.config.location=/opt/application.properties"]

说明:这里的application.properties 从 imapi 目录里拷贝mapi.war 为imapi 服务的部署包

2、通过dockerfile 文件构建镜像

docker build -t imapi -f imapi_dockerfile ./

3、通过镜像启动容器

docker run -d -p 8092:8092 -e "UPLOAD_ADDR=192.168.0.152:8088" -e "MONGODB_ADDR=192.168.0.151:27107" -e "NAMESRV_ADDR=192.168.0.155:9876" -e "XMPP_HOST=192.168.0.155" -e "XMPP_SERVERNAME=im.mac-pro.co" -e "REDIS_ADDR=redis://192.168.0.155:6379" --name imapi-server imapi

5. Docker 创建Tigase-server容器

1、修改 tigase-server-7.1.3-b4482/etc/tigase.conf 配置文件

img

修改 JAVA_HOME的值为"${JAVA_HOME}",修改TIGASE_HOME的值为"/opt/tigase-server"

JAVA_HOME="${JAVA_HOME}"

TIGASE_HOME="/opt/tigase-server"

2、修改 tigase-server-7.1.3-b4482/etc/init.properties 配置文件

img

imgimg

3、编辑tigase-dockerfile 文件,写入如下内容

注:tigase-server-7.1.3-b4482 为tigase-server 的部署文件的目录 5222 端口用于Android、Ios、PC 等客户端连接使用,5280 端口用于WEB 版连接使用,如没有 WEB 版5280 端口可不用

FROM java:8
VOLUME  /opt/logs
ADD ./tigase-server-7.1.3-b4482/  /opt/tigase-server
RUN chmod  -R 755 /opt
EXPOSE 5222
EXPOSE 5280
ENTRYPOINT cd /opt/tigase-server; java -version; ./scripts/tigase.sh run etc/tigase.conf; wait $!

4、通过dockerfile 文件构建镜像

docker build -t tigase-server -f tigase-dockerfile ./

5、通过镜像启动容器

docker run -d -p 5222:5222 -p 5280:5280 --name tigase-server tigase-server

6. Docker 创建RocketMq容器

1、拉取rocketmq-4.3.2 的镜像

docker pull rocketmqinc/rocketmq:4.3.2

img

2、在宿主机创建目录

mkdir  -p  /data/namesrv/logs
mkdir  -p  /data/namesrv/store
mkdir  -p  /data/broker/logs
mkdir  -p  /data/broker/store

3、使用镜像启动 NameServer 容器

docker run -d -p 9876:9876 -v /data/namesrv/logs:/root/logs -v  /data/namesrv/store:/root/store --name rmqnamesrv  rocketmqinc/rocketmq:4.3.2 sh mqnamesrv

4、使用镜像启动broker 容器(说明:***-Xms512m 等内存值可根据机器实际内存值进行调整***)

docker run -d -p 10911:10911 -p 10909:10909 -v /data/broker/logs:/root/logs -v /data/broker/store:/root/store --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876"  -e "JAVA_OPT=${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m" rocketmqinc/rocketmq:4.3.2  sh  mqbroker

7. Docker 创建push容器

1、在push的部署文件push中创建push_dockerfile文件 ,写入如下内容

FROM java:8
VOLUME  /opt/push/logs
COPY application.properties /opt/push/application.properties
COPY *.p12  /opt/push/
COPY sixth-hawk-164509-firebase-adminsdk-342gn-465351f0ef.json /opt/mac-pro-push/sixth-hawk-164509-firebase-adminsdk-342gn-465351f0ef.json
ADD push.war /opt/push/push.war
RUN bash -c 'touch /opt/push/push.war'
ENTRYPOINT ["java","-jar","/opt/push/push-1.0.war","--spring.config.location=/opt/push/application.properties"] 

说明:这里的application.properties 从 push目录里拷贝

.p12 文件为ios 推送证书文件

sixth-hawk-164509-firebase-adminsdk-342gn-465351f0ef.json 为Google 推送需要的文件

push.war 为 push 服务部署包

2、通过dockerfile 文件构建镜像

docker build -t mac-pro-push -f push_dockerfile ./

3、通过镜像启动容器

docker run -d -e "MONGODB_ADDR=192.168.0.151:27107" -e "NAMESRV_ADDR=192.168.0.155:9876" -e "XMPP_HOST=192.168.0.155" -e "XMPP_SERVERNAME=192.168.0.155" -e "REDIS_ADDR=redis://192.168.0.155:6379" --name push-server push

8.Docker 创建xmpp-push 容器

1、在xmpp-push的部署文件xmpp-push中创建 xmpp-push_dockerfile文件 ,写入如下内容

FROM java:8
VOLUME  /opt/xmpp-push/logs
COPY application.properties /opt/xmpp-push/application.properties
ADD  xmpp-push-0.0.1-SNAPSHOT.war /opt/xmpp-push/xmpp-push-0.0.1-SNAPSHOT.war
RUN bash -c 'touch /opt/xmpp-push/xmpp-push-0.0.1-SNAPSHOT.war'
ENTRYPOINT ["java","-jar","/opt/xmpp-push/xmpp-push-0.0.1-SNAPSHOT.war","--spring.config.location=/opt/xmpp-push/application.properties"]

说明:这里的application.properties 从 conf_file/message-push目录里拷贝

xmpp-push-0.0.1-SNAPSHOT.war 为 xmpp-push 服务的部署包

2、通过dockerfile 文件构建镜像

docker build -t message-push -f message-push_dockerfile ./

3、通过镜像启动容器

docker run -d -e "MONGODB_ADDR=192.168.0.151:27107" -e "NAMESRV_ADDR=192.168.0.151:9876" -e "XMPP_HOST=192.168.0.151" -e "XMPP_SERVERNAME=im.mac-pro.co" -e "REDIS_ADDR=redis://192.168.0.151:6379" --name xmpp-push-server xmpp-push

9.Docker 创建Upload容器

1、在upload的部署文件upload中创建 upload_dockerfile文件 ,写入如下内容

FROM java:8
VOLUME  /opt/upload/logs
COPY application.properties /opt/upload/application.properties
ADD  upload-2.0.war /opt/upload/upload-2.0.war
RUN bash -c 'touch /opt/upload/upload-2.0.war'
RUN mkdir  -p  /data/www/resources
ENTRYPOINT ["java","-jar","/opt/upload/upload-2.0.war","--spring.config.location=/opt/upload/application.properties"]

说明:这里的application.properties 从 conf_file/upload目录里拷贝

upload-2.0.war 为 upload 服务的部署包

2、通过dockerfile 文件构建镜像

docker build -t upload -f upload_dockerfile ./

3、在宿主机创建文件存储目录,挂载到容器(可将下面命令复制后一次执行)

mkdir  -p  /data/www/resources
cd  /data/www/resources 
mkdir audio
mkdir avatar
mkdir avatar/o
mkdir avatar/t
mkdir avatar_r
mkdir avatar_r/o
mkdir avatar_r/t
mkdir gift
mkdir image
mkdir image/o
mkdir image/t
mkdir other
mkdir preview
mkdir temp
mkdir u
mkdir video

4、通过镜像启动容器

docker run -d -p 8088:8088 -v /data/www/resources:/data/www/resources" -e "MONGODB_URL=mongodb://192.168.0.151:27107" --name upload-server upload

10.Docker 创建Nginx容器

说明:这里Nginx 主要提供文件访问服务,需要和 Upload 放在同一宿主机,以便能读取到上传的文件

1、拉取官方镜像

docker pull nginx

2、在宿主机创建目录,编辑配置文件

mkdir  -p  /data/nginx/logs
mkdir  -p  /data/nginx/conf
cd  /data/nginx/conf

vim nginx.conf

写入如下内容:

user  root;
worker_processes  1;
pid     /run/nginx.pid;

events {
  worker_connections  1024;
}


http {
  include    mime.types;
  default_type  application/octet-stream;
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  sendfile     on;
  keepalive_timeout  65;
server{
  listen     8080;  
  charset utf-8;
  location / {
   if ($http_referer ~* ".php") {
       return 403;
   }
    root   /www/resources;
    expires  5d;
  }
}
}

3、通过镜像启动容器

docker run -p 8080:8080 --name nginx -v /data/www/resources:/www/resources -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -d nginx

三、服务器管理、维护

1.修改调整服务器最大连接数

使用以下命令查看当前最大连接数:(默认为1024,需要改大)

[root@mac-pro ~]# ulimit -n

1024

修改以下配置文件:

1.1 编辑 /etc/security/limits.conf

[root@mac-pro~]# vim /etc/security/limits.conf

*    soft   nofile   204800 
*    hard   nofile   204800 
*    soft   nproc   204800 
*    hard   nproc   204800 

在配置文件中添加以上内容

1.2 编辑 /etc/pam.d/login

[root@mac-pro~]# vim /etc/pam.d/login

session required pam_limits.so

在配置文件中添加以上内容

将以上保存好,然后重启服务器,再使用ulimit -n

[root@mac-pro~]# ulimit -n

204800

2 查看监听的端口

当某个服务出现不能正常访问,使用如下命令会查看对应的端口是否处于监听状态

#[root@mac-pro~]#netstat -lntp

img

各个服务对应端口说明:

服务名称 描述 端口号使用情况
Tigase-server xmpp 通讯服务 客户端使用5222,Web版使用5280端口
upload 文件上传服务 8088
mongodb 数据库 27017
Redis 缓存服务 6379
Nginx 主要用于文件访问时的目录映射 8080
fastDfs 分布式文件存储服务 tracker 服务使用 22122 端口 Storage 服务使用23000端口
Clone repository
  • Andriod
  • Backend
  • Home
  • Install
  • Ios
  • 后端相关文档
  • 服务端安装文档
  • 服务端部署文档
More Pages

New Wiki Page

Tip: You can specify the full path for the new file. We will automatically create any missing directories.