安装部署

宝塔部署/非宝塔部署

安装

授权得到压缩包后,参考以下步骤进行安装。

环境要求

推荐使用Linux服务器(ubuntu)

硬件
    基础阶段:1核 1G内存 1M带宽 50G硬盘(最低配置即可)
    中级阶段:4核 8G内存 5M带宽 50G硬盘(有一定访问量)
    高级阶段:8核 16G内存 10M带宽 50G硬盘(访问量比较大)
软件
    Mysql >= 5.6 (需支持innodb引擎)
    Nginx
        

宝塔面板

提前安装宝塔面板,宝塔面板可以很方便的配置域名、反向代理、数据库,所以建议安装一下。安装nginx,mysql数据库(5.6)。

创建数据库

请记住设置的数据库名,用户名,密码

部署服务

上传压缩包文件到服务器,比如上传到/www/wwwroot/go-fly-pro,给此目录的所有文件赋权限777

编辑config/mysql.json,修改为创建数据库时设置的数据库名,用户名,密码

进入终端,切换目录到/www/wwwroot/go-fly-pro

cd /www/wwwroot/go-fly-pro

执行导入数据库命令,确保数据库配置信息正确,自动创建导入数据库相关表

./go-fly-pro install

执行开启服务命令,监听端口,开启服务,-d为守护进程模式

./go-fly-pro server -d

关闭服务,可以用ps -ef|grep go查看下进程是否存在,验证关闭成功

./sh stop.sh ,这里如果关闭不成功,可以多执行几次

到宝塔安全页面将8081端口开放

如果是云服务器,则安全组也需要设置下让8081端口可以被外网访问。

访问外网地址: http://ip:8081/login

配置域名

到宝塔网站页面=>添加站点

设置反向代理,反代到客服程序监听的默认8081端口

增加支持websocket的反向代理参数

            proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

完整的配置文件(注意root路径和端口号,其他应该都不需要改动)

#PROXY-START/

location /
{
    root /www/wwwroot/go-fly-pro;
   try_files $uri  @gofly;

}
location @gofly {
    proxy_pass http://127.0.0.1:8081;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    add_header X-Cache $upstream_cache_status;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    #Set Nginx Cache
    add_header Cache-Control no-cache;
}

#PROXY-END/
        

配置HTTPS

需要先暂停反向代理,才能去开启

需要先暂停反向代理,才能去开启

非宝塔部署

ubuntu系统安装nginx

apt-get install curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
apt-key fingerprint ABF5BD827BD9BF62
apt-get update
apt-get install nginx
        

centos系统安装nginx

vim 编辑 /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
        
yum install  nginx
        

配置nginx反向代理

location /static { } 这里配置的是,访问静态资源的时候,直接nginx返回静态资源,就不用走到go后端服务了
proxy_pass http://127.0.0.1:8081; 这里就是重点了,反向代理到后端8081端口
下面这几句是传递真实IP到后端服务
proxy_set_header X-Real-IP $remote_addr;
升级连接成为websocket连接 , 支持websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
        

完整的nginx配置文件

server{
       listen 80;
        server_name  gofly.sopans.com;
        access_log  /var/log/nginx/gofly.sopans.com.access.log  main;
        location /
        {
            root /www/wwwroot/go-fly-pro;
           try_files $uri  @gofly;

        }
        location @gofly {
            proxy_pass http://127.0.0.1:8081;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;

            add_header X-Cache $upstream_cache_status;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            #Set Nginx Cache
            add_header Cache-Control no-cache;
        }

}

分布式方案

目前为了减少依赖当前项目不支持分布式,但是可以有其他实现方案

因为无依赖部署很方便,所以可以按域名进行分布,比如kf1.sopans.com kf2.sopans.com ,部署到不同的机器上,都使用一个MySQL数据库。前端跳转到客服的时候,通过访客ID进行下分配策略

按地域分布,比如cn.sopans.com部署到国内机器, hk.sopans.com部署在香港,na.sopans.com 部署到北美,根据访客集中地区进行前端分配。