当前位置: 首页 > 工具软件 > TeamTalk5 > 使用案例 >

teamtalk mysql.h_【编译打包】teamtalk 在CentOS 7 上的安装

上官树
2023-12-01

teamtalk 是由蘑菇街开源的一款IM 软件,包含完整的服务端和各种客户端(windows,andriod,IOS等),相当给力,进群讨论,气氛也十分活跃。蓝狐兄弟低调的同时也十分客气。

由于官方没有提供rpm包,我这里暂且自作聪明,打了一个src.rpm 包。

官方对于权限分配没有做处理,几个脚本都是root编译root运行,编译和下载过程混乱,我于是重新实现了一套编译脚本和服务启动脚本,用于一站式安装,增加安全性,提高部署体验。

使用下面的办法,可以确保编译/安装成功。不喜欢编译的同学,可使用附件提供的二进制rpm安装包,请直接从第8步开始, 请优先选择附件目录中日期较新的文件目录,新的文件通常包含bug修复和功能提升。

1、请确保系统为CentOS 7(由于gcc版本问题,官方推荐centos7),并且以root身份登录,将附件中的srpm目录中的文件下载到/root

2、建立基本的编译环境

yum install gcc gcc-c++ make cmake libtool rpm-build redhat-rpm-config yum-utils -y

3、安装epel软件源 (centos官方仓库里没有的依赖包,通常这里都可以找到)

yum install epel-release -y

4、安装基本的环境依赖包

yum install mariadb-devel gtest-devel log4cxx-devel curl-devel apr-devel apr-util-devel libuuid-devel openssl-devel hiredis-devel protobuf-devel rsync wget -y

5、安装teamtalk.XXXX.src.rpm

rpm -ivh teamtalk.xxxx.src.rpm # 会在/root目录下生成一个目录rpmbuild

6、检查和解决软件包依赖

cd /root/rpmbuild/SPEC

yum-builddep teamtalk.spec

7、编译teamtalk (编译过程实际并不需要root权限)

rpmbuild -ba teamtalk.spec #根据机器配置,耗时约5-10分钟不等

编译完成,会在/root/rpmbuild/RPMS/ 下生成一些后缀为rpm的软件包

8、使用下面的命令安装rpm包

cd /root/rpmbuild/RPMS/x86_64/

rm -rf teamtalk-debuginfo* #我们不需要debug包

yum localinstall teamtalk-*.rpm -y

yum localinstall /root/rpmbuild/RPMS/noarch/teamtalk-web*.rpm -y

#teamtalk-web这个包依赖nginx和php-fpm,会通过yum一并安装

直接使用二进制rpm包的同学,请下载附件地址的rpm目录中的文件到服务器的同一目录下,

比如/tmp/teamtalk/,以root身份安装

cd /tmp/teamtalk

yum install epel-release -y

yum localinstall teamtalk-*.rpm -y

9、至此,teamtalk这块算是安装完成了,teamtalk 安装在/opt/teamtalk 目录下。

----------------------华丽的分界线-------------------------------------------

10、安装LNMP+redis环境

yum install epel-release -y #如果前面你已经安装,这步可省略

yum install nginx mariadb-server php-mysql php-fpm php-xml php-gd php-pecl-zendopcache redis -y

11、mariadb的基本配置

如果你安装了teamtalk-web这个软件包的话,可以在/opt/teamtalk/www下看到一个teamtalk.sql文件,那就是teamtalk的数据库结构.

systemctl enable mariadb

systemctl start mariadb

mysql

mysql> create database teamtalk;

mysql> use teamtalk;

mysql> source /opt/teamtalk/www/teamtalk.sql;

mysql> grant all on teamtalk.* to teamtalk@'localhost' identified by '123456';

mysql> flush privileges;

如果你使用了其他用户名和密码,请酌情修改下列文件中的对应配置:

/opt/teamtalk/www/application/config/database.php

/opt/teamtalk/db_proxy_server/dbproxyserver.conf

12、nginx+php-fpm的基本配置

systemctl enable nginx

systemctl enable php-fpm

systemctl start nginx

systemctl start php-fpm

修改/etc/nginx/nginx.conf 文件:

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

events {

use epoll;

worker_connections 1024;

}

http {

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

server_tokens off;

keepalive_timeout 30;

types_hash_max_size 2048;

gzip on;

gzip_min_length 1k;

gzip_disable"MSIE [1-6]\.";

gzip_types text/plain application/x-javascript text/css application/xml;

include /etc/nginx/mime.types;

default_typeapplication/octet-stream;

server {

listen 80 ;

server_name localhost ;

index index.html index.htm index.php ;

root /opt/teamtalk/www ;

location ~ \.php($|/) {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_split_path_info ^(.+\.php)(.*)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

includefastcgi_params;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 7d;}

location ~ .*\.(js|css)?$ { expires 12h; }

if (!-e $request_filename) {

rewrite ^/(.*)$ /index.php/$1 last;

break;

}

}

}

php-fpm可无需配置,默认监听在127.0.0.1:9000,直接启动服务就好了。

如果想使用unix socket,请修改配置文件/etc/php-fpm.d/www.conf,并重启服务,不详述。

修改nginx配置后需要重启nginx

systemctl restart nginx

至此,你应该至少应该能够通过浏览器登录web管理后台了,默认用户名和密码均是admin,后台功能并不完整,因为有一个配置文件需要配置后端的服务,详见: /opt/teamtalk/www/application/config/config.php

14、配置redis

redis也可以不需配置,直接启动就好。

systemctl enable redis

systemctl start redis

15、开启teamtalk服务

teamtalk 的服务端分的很细,好多个不同的模块,由于root身份过于安全敏感,我做了一些限制,需要使用普通用户teamtalk登陆来运行服务。

通用的启动方法是这样的,比如:file_server

cd /opt/teamtalk/file_server

../daeml file_server

服务启动后会在当前目录生成一个文件server.pid,里面是进程号

关闭服务的话就是杀进程号

cd /opt/teamtalk/file_server

kill `cat server.pid`

官方带有两个脚本。restart.sh 和monitor.sh,我进行了些许改造,但是效果不是很好,依然保留。

另外我自己重新实现了一套启动脚本。位于/usr/bin/teamtalk,使用方法如下:

teamtalk start file_server

teamtalk stop file_server

teamtalk restart file_server

下列服务都可以利用默认配置文件直接启动。

teamtalk start db_proxy_server

teamtalk start file_server

teamtalk start http_msg_server

teamtalk start login_server

teamtalk start msfs

teamtalk start msg_server

teamtalk start route_server

teamtalk start push_server

16、其他说明 (未完待续,保持更新)

注:本文不代表官方。

 类似资料: