天天动画片 > 八卦谈 > 网站在线客服系统源码及PHP搭建方法

网站在线客服系统源码及PHP搭建方法

八卦谈 佚名 2022-11-21 11:32:37

  在线客服系统源码基于Thonkphp开发的,根据业务需要改造而来,修改和扩展了很多ejaberd不支持的功能。

  源码模块:

  源码:zxkfym.top

  ●ejabberd

  IM核心组件,负责维护与客户端的长连接和消息路由

  ●or

  IM平均均衡组件,负责验证终端身份,以及转发http请求到的后台服务

  ●im_http_service

  IM HTTP接口服务,负责IM相关消息数据的查询、设置以及历史同步(基于tomcat的java服务)

  ●qfproxy

  IM文件服务,负责服务文件的上传和下载(基于tomcat的java)

  ●推送服务

  IM的推送服务,用于离线消息的推送(基于tomcat的java服务)

  ●搜索

  提供远程搜索人员和群的服务

  ●edis

  IM缓存服务

  ●postgresql

  IM数据库服务

  源码安装:

  默认条件(如果主机用户名和这里的名字),则需要将安装步骤中的换成自己的名字:

  要求服务器:centos7.x

  主机名用变量STARTALK,可以替换成自己的主机名

  hosts 添加: 127.0.0.1 ${STARTALK} (sudo vim /etc/hosts)

  所有项目都安装到/startalk下面

  安装用户和用户组是:startalk:startalk,要保证startalk用户有sudo权限

  家目录下有下载文件夹,所有文件会下载到该文件夹下

  数据库用户名密码是 ejabberd:123456,服务地址是:127.0.0.1

  redis 密码是:123456,服务地址是:127.0.0.1

  数据库初始化sql在doc目录下

  保证可以访问主机的:5202、8080端口(关掉防火墙sudo systemctl stop firewalld.service:)

  IM 确定服务的域名是:startalk(大家在之前安装修改之前,最好修改这个值,然后确定了,的报价就不错了,可以参考域名)

  tls 证书:默认安装用是一个测试,上线使用,请更换 /startalk/ejabberd/etc/ejabberd/server.pem 文件,生成方法见securering -ejabberd-with-tls-encryption

  出现文件覆盖提示时,输入是的 敲回车自动

  安装文档中 # 大观输入的命令表示 root 执行的,$ 大观的命令表示普通用户

  # yum -y install epel-release

  # yum -y update

  # yum -y groupinstall Base "Development Tools" "Perl Support"

  # yum install -y telnet aspell bzip2 collectd-postgresql collectd-rrdtool collectd.x86_64 curl db4 expat.x86_64 gcc gcc-c++ gd gdbm git gmp ImageMagick java-1.8.0-openjdk java-1.8.0-openjdk-devel libcollection libedit libffi libffi-devel libicu libpcap libtidy libwebp libxml2 libXpm libxslt libyaml.x86_64 mailcap ncurses ncurses npm openssl openssl-devel pcre perl perl-Business-ISBN perl-Business-ISBN-Data perl-Collectd perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-Config-General perl-Data-Dumper perl-Digest perl-Digest-MD5 perl-Encode-Locale perl-ExtUtils-Embed perl-ExtUtils-MakeMaker perl-GD perl-HTML-Parser perl-HTML-Tagset perl-HTTP-Date perl-HTTP-Message perl-IO-Compress perl-IO-HTML perl-JSON perl-LWP-MediaTypes perl-Regexp-Common perl-Thread-Queue perl-TimeDate perl-URI python readline recode redis rrdtool rrdtool-perl sqlite systemtap-sdt.x86_64 tk xz zlib rng-tools python36-psycopg2.x86_64 python34-psycopg2.x86_64 python-psycopg2.x86_64 python-pillow python34-pip screen unixODBC unixODBC-devel pkgconfig libSM libSM-devel ncurses-devel libyaml-devel expat-devel libxml2-devel pam-devel pcre-devel gd-devel bzip2-devel zlib-devel libicu-devel libwebp-devel gmp-devel curl-devel postgresql-devel libtidy-devel libmcrypt libmcrypt readline-devel libxslt-devel vim docbook-dtds docbook-style-xslt fop

  添加主机

  在/etc/hosts下面添加一行:

  127.0.0.1 startalk.com

  请注意如果是生产服务,可以设置域名的DNS,如果有正确的DNS域名解析的话,这一步不是必须的。

  新建安装用户

  新增startalk用户:

  # groupadd startalk

  # useradd -g startalk startalk

  # passwd startalk

  新增发布 sql 系统包管理安装 postgre 的用户可以使用以下步骤:

  # groupadd postgres

  # useradd -g postgres postgres

  # passwd postgres

  新建安装目录

  # mkdir /startalk

  # chown startalk:startalk /startalk

  新建数据库目录

  # mkdir /startalk/database

  # chown -R postgres:postgres /startalk/database

  为startalk用户添加sudo权限

  # visudo

  在行

  root    ALL= (ALL)    ALL

  行后添加

  startalk     ALL= (ALL)    ALL

  postgres     ALL= (ALL)    ALL

  保存后退出

  下载源码

  # su - startalk

  $ mkdir /startalk/download

  $ cd /startalk/download

  $ git clone https://github.com/startalkIM/ejabberd.git

  $ git clone https://github.com/startalkIM/openresty_ng.git

  $ git clone https://github.com/startalkIM/search.git

  $ git clone https://github.com/startalkIM/tomcat_projects.git

  $ cp ejabberd/doc/qtalk.sql /startalk/

  $ cp ejabberd/doc/init.sql /startalk/

  检测端口使用:

  # sudo netstat -antlp | egrep "8080|8005|8009|8081|8006|8010|8082|8007|8011|8083|8888|5202|10050

  输出,则表明没有使用startalk使用的端口,否则需要关闭已经在使用如果没有端口的程序

  redis 安装

  $ sudo yum install -y redis

  $ sudo vim /etc/redis.conf

  将对应的配置修改为下面内容

  daemonize yes

  requirepass 123456

  maxmemory 134217728

  redis 启动

  启动redis

  $ sudo redis-server /etc/redis.conf

  确认启动成功:

  $ sudo netstat -antlp | grep 6379

  tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      8813/redis-server 1

  安装数据库

  建议使用 OS 发行版的预编译包,比如在 CentOS 7 里,我们可以执行下面的命令搜索并安装 PostgreSQL12:

  安装存储库 RPM:

  sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

  安装 PostgreSQL:

  sudo yum install -y postgresql12-server

  在 CentOS 7 里,用预编译包完结 postgresql,/usr/pgsql-12/bin设置所有安装后的文件在目录下,基本命令无特殊目录路径。

  初始化数据库实例

  sudo -u postgres /usr/pgsql-12/bin/initdb -D /startalk/database

  数据库启动

  sudo -u postgres /usr/pgsql-12/bin/pg_ctl -D /startalk/database start

  确认启动成功

  $ sudo netstat -antlp | grep 5432

  输出结果应该像下面这样:

  tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      4751/postmaster

  初始化数据库

  初始化数据库结构

  $ psql -U postgres -d postgres -f /startalk/qtalk.sql

  $ psql -U postgres -d ejabberd -f /startalk/init.sql

  初始化数据库用户:ejabberd的密码

  $ psql -U postgres -d postgres -c "ALTER USER ejabberd WITH PASSWORD '123456';"

  psql 连接数据库

  $ psql -U postgres -d ejabberd -h 127.0.0.1

  psql (12.6)

  ejabberd=# select * from host_users;

  如果 ejabberd 和 postgresql 的数据库不在同一个服务器,则允许参考 postgresql 的文档修改数据库的pg_hba.conf文件,ejabberd 的服务器访问数据库服务器。

  openresty 安装

  以CentOS 7为例,我们可以用官网快速安装openresty的方法来参考一下 openresty:

  wget https://openresty.org/package/centos/openresty.repo

  sudo mv openresty.repo /etc/yum.repos.d/

  sudo yum check-update

  sudo yum install openresty

  openresty 启动

  openresty 包安装在之后/usr/local/openresty

  启动方法是:

  sudo /usr/local/openresty/nginx/sbin/nginx

  执行下面命令确认启动成功:

  $ sudo netstat -antlp | grep 8080

  输出结果应该像下面这样:

  tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      23438/nginx: master

  为 Startalk 配置 OpenResty

  然后请参考Startalk OpenResty 配置把 Startalk 的 OpenResty 相关配置下载、配置上。重启 OpenResty:

  sudo killall nginx

  sudo /usr/local/openresty/nginx/sbin/nginx

  $ cd /startalk/download

  $ wget http://erlang.org/download/otp_src_19.3.tar.gz

  $ tar -zxvf otp_src_19.3.tar.gz

  $ cd otp_src_19.3

  $ ./configure --prefix=/startalk/erlang1903

  $ make

  $ make install

  执行把路径添加到 PATH 环境变量

  $ vim ~/.bash_profile

  ----------------------------------

  # User specific environment and startup programs

  ERLANGPATH=/startalk/erlang1903

  PATH=$PATH:$HOME/bin:$ERLANGPATH/bin

  ----------------------------------

  $ . ~/.bash_profile

  执行下面命令验证erlang是否安装成功:

  $ erl

  输出下面这样就是成功了:

  Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

  Eshell V8.3  (abort with ^G)

  1>

  安装ejabberd

  $ cd /startalk/download

  $ cd ejabberd/

  $ ./configure --prefix=/startalk/ejabberd --with-erlang=/startalk/erlang1903 --enable-pgsql --enable-full-xml

  $ make

  $ make install

  $ cp ejabberd.yml.qunar /startalk/ejabberd/etc/ejabberd/ejabberd.yml

  $ cp ejabberdctl.cfg.qunar /startalk/ejabberd/etc/ejabberd/ejabberdctl.cfg

  启动ejabberd

  $ cd /startalk/ejabberd

  $ ./sbin/ejabberdctl start

  验证 ejabberd 是否启动成功:

  $ ps -ef | grep 's ejabberd'

  startalk 23515     1  4 09:58 ?        00:00:03 /startalk/erlang1903/lib/erlang/erts-8.3/bin/beam.smp -K true -P 250000 -- -root /startalk/erlang1903/lib/erlang -progname erl -- -home /home/startalk -- -name ejabberd@startalk.com -noshell -noinput -noshell -noinput -mnesia dir "/startalk/ejabberd/var/lib/ejabberd" -ejabberd log_rate_limit 20000 log_rotate_size 504857600 log_rotate_count 41 log_rotate_date "$D0" -s ejabberd -smp auto start

  安装java服务

  /startalk/download/tomcat_projects/ 下就是打好包的三个java服务,自己也可以使用打包,然后自己部署

  $ cd /startalk/download/

  $ cp -rf tomcat_projects /startalk/tomcat

  $ cd /startalk/tomcat

  修改推送服务的地址

  $ vim /startalk/tomcat/push_service/webapps/push_service/WEB-INF/classes/app.properties

  #使用星语push url, 将ip换为服务器ip

  qtalk_push_url=http://ip:8091/qtapi/token/sendPush.qunar

  #使用星语push key

  qtalk_push_key=12342a14-e6c0-463f-90a0-92b8faec4063

  修改导航地址和扩展键盘:

  $  vim /startalk/tomcat/im_http_service/webapps/im_http_service/WEB-INF/classes/nav.json

  $  vim /startalk/tomcat/im_http_service/webapps/im_http_service/WEB-INF/classes/androidqtalk.json

  $  vim /startalk/tomcat/im_http_service/webapps/im_http_service/WEB-INF/classes/androidstartalk.json

  $  vim /startalk/tomcat/im_http_service/webapps/im_http_service/WEB-INF/classes/iosqtalk.json

  $  vim /startalk/tomcat/im_http_service/webapps/im_http_service/WEB-INF/classes/iosstartalk.json

  将ip替换成对应机器的ip地址(sed -i "s/ip/xxx.xxx.xxx.xxx/g" 或者在vim内 :%s/ip/xxx.xxx.xxx.xxx/g)

  启动java服务

  $ cd /startalk/tomcat/im_http_service

  $ ./bin/startup.sh

  $ cd /startalk/tomcat/qfproxy

  $ ./bin/startup.sh

  $ cd /startalk/tomcat/push_service

  $ ./bin/startup.sh

  确认服务启动成功

  $ sudo netstat -antlp | egrep '8081|8082|8083|8009|8010|8011|8005|8006|8007'

  输出像下面这样:

  tcp6       0      0 127.0.0.1:8007          :::*                    LISTEN      23853/java

  tcp6       0      0 :::8009                 :::*                    LISTEN      23748/java

  tcp6       0      0 :::8010                 :::*                    LISTEN      23785/java

  tcp6       0      0 :::8011                 :::*                    LISTEN      23853/java

  tcp6       0      0 :::8081                 :::*                    LISTEN      23748/java

  tcp6       0      0 :::8082                 :::*                    LISTEN      23785/java

  tcp6       0      0 :::8083                 :::*                    LISTEN      23853/java

  tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      23748/java

  tcp6       0      0 127.0.0.1:8006          :::*                    LISTEN      23785/java

  安装搜索服务

  : 你

  openssl 版本 >= 1.02

  python3.7及以上,以3.9.2以上为例

  cd /startalk/download && wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz

  tar -zxvf Python-3.9.2.tgz

  cd Python-3.9.2

  ./configure --prefix=/startalk/python392

  make && make install

  添加到bash_profile

  vim ~/.bash_profile

  PYTHONPATH=/startalk/python392

  PATH=$PATH:$PYTHONPATH/bin

  :wq

  source ~/.bash_profile

  (任选) 建议使用virtualenv部署模块 需要的环境

  升级pip

  /startalk/python392/bin/python3.9 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

  下载安装virtualenv

  pip3.9 install -U virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple

  创建虚拟环境

  cp -rf /startalk/download/search /startalk/ && cd /startalk/search && virtualenv --system-site-packages -p python3.9 ./venv

  启动环境

  source venv/bin/activate

  安装:

  配置conf/configure.ini

  安装, 使用-i 国内依赖源下载项目

  pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

  启动项目

  supervisord -c /startalk/search/conf/supervisor.conf

  确认服务正常:

  tail -100f /startalk/search/log/access.log

  可以执行以下脚本来检查一些常见的错误:下载该文件check.sh

  # sed -i 's/ip/自己的ip/g' ./check.sh

  # chmod +x check.sh

  # ./check.sh

  如果发现出现提示:“ip的5202端口未开启外网访问,开启该访问或者关闭请求关闭防火墙”,请在服务器上使用网络ip 5202是否可以连上,一般是因为防火墙限制了或者端口就可以了。

本文标题:网站在线客服系统源码及PHP搭建方法 - 八卦谈
本文地址:www.ttdhp.com/article/8163.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们