mochat-java安装

        mochat是开源的scrm系统,php版代码在这儿,php版安装文档在这儿
java版代码在这儿,java版的安装可以参考php版的,略有改动即可。
        因为php版本的wxwork_finance_sdk的问题无法解决(参考文档1文档2倒是可以得到wxwork_finance_sdk.so,但是执行php会报错,报错信息大概是aborted core dumped等等),所以就放弃了php版,转而投向java版的。

ps:貌似php版的更新了,比java版多了一个operation模块。


环境:
OS:vagrant下使用Ubuntu 20.04.3 LTS 
gradle:Gradle 7.1.1
jdk:java version "1.8.0_291"
node:node-v16.0.0-linux-x64
redis:Redis server v=5.0.7 
mysql:Ver 8.0.26-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
nginx:nginx version: nginx/1.18.0 (Ubuntu) built with OpenSSL 1.1.1f  31 Mar 2020
mochat-java:代码位于/data/www下

gradle、jdk、node下载安装包并解压缩到/usr/local下
redis、mysql、nginx使用apt安装。

步骤:
安装gradle、jdk、node、redis、mysql、nginx
在~/.bashrc中配置环境变量:
APP_HOME=/usr/local
JAVA_HOME=$APP_HOME/jdk1.8.0_291
CLASSPATH=.:$JAVA_HOME/lib
TOMCAT_HOME=$APP_HOME/apache-tomcat-9.0.50
CATALINA_HOME=$TOMCAT_HOME
CATALINA_BASE=$TOMCAT_HOME
GRADLE_HOME=$APP_HOME/gradle-7.1.1
NODE_HOME=$APP_HOME/node-v16.0.0-linux-x64
PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$GRADLE_HOME/bin:$NODE_HOME/bin:$PATH
export APP_HOME JAVA_HOME CLASSPATH TOMCAT_HOME CATALINA_HOME CATALINA_BASE GRADLE_HOME NODE_HOME PATH

配置hosts:
配置vagrant hosts: 
127.0.0.1 localhost
127.0.0.1 vm-php7 vm-php7

127.0.0.1 api.mochat.dev sidebar.mochat.dev dashboard.mochat.dev op.mochat.dev


配置本机hosts:
10.208.0.210 api.mochat.dev sidebar.mochat.dev dashboard.mochat.dev op.mochat.dev
其中10.208.0.210是vagrant配置的静态ip。



# 进入项目目录
cd /data/www/

# 克隆项目文件
git clone https://github.com/mochat-cloud/mochat-java.git

# 更新子模块文件
git submodule update --init --recursive


mysql配置:
sudo mysql,无密码登录mysql服务器
执行alter user 'root'@'localhost' identified with mysql_native_password by  'pwd13524' #将root的密码修改为pwd13524
然后下次执行mysql -u root -p,输入pwd13524即可登入mysql服务器。
当然也可以新增用户并授权:
创建用户: create user 'test'@'localhost' identified with mysql_native_password by 'admin123' ; #创建一个用户test,密码为admin123
授权:grant all privileges on *.* to 'test'@'localhost' ; #所有权限授给test用户
刷新权限:flush privileges;
创建mochat数据库: create database mochat default charset utf8 collate utf8_general_ci; 
use mochat;

执行数据初始化,将api-server/install/mochat.sql导入mysql 
source your_absolute_sql_path
我把另一个mochat_upgrade.sql也导入进去了。


后端配置执行:
文中提到需要导入idea,但vagrant中没有ide,所以决定直接在api-server下执行gradle生成jar包来运行服务端。
进入api-server目录,修改resources下的application-dev.xml,把mysql用户名密码修改为正确的,修改redis配置信息
所以在api-server目录下直接使用gradle生成了jar包来运行,需要执行:
gradle bootJar ,这样生成一个mochat-1.0.0.jar文件,位于build/libs/mochat-1.0.0.jar。
执行java -jar mochat1.0.0.jar,即可即启动服务端
初始管理员账号为 18888888888 密码123456

前端配置-dashboard:
安装yarn:
sudo npm install yarn -gd 
# 进入项目目录
cd /path/to/mochat/dashboard

# 安装依赖
yarn install

# 修改 .env 中的配置 
VUE_APP_API_BASE_URL= 接口地址 #我的配置是api.mochat.dev

# 编译直接查看
yarn run dev


# 编译生成dist
yarn run build

sidebar配置:
cp .env.example .env
# 修改 .env 中的配置 
VUE_APP_API_BASE_URL= 接口地址 #我的配置是sidebar.mochat.dev
# 编译直接查看
yarn run dev


# 编译生成dist
yarn run build

前端两个执行yarn run build之后,会各生成一个dist文件夹,将dist文件夹复制到nginx服务器下某个文件夹即可,通过nginx -V可查看到如下信息:
--prefix=/usr/share/nginx,
则需要将dist文件夹下内容复制到/usr/share/nginx/html下即可,
sudo cp dashboar/dist    /usr/share/nginx/html/dashboard -r
sudo cp -r sidebar/dist    /usr/share/nginx/html/sidebar

最重要的是nginx的配置了:
在/etc/nginx/nginx.conf的http配置下增加:
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
#include /etc/nginx/sites-enabled/*; #这句注释掉,省得老是往默认nginx首页跳转

nginx新增的配置文件,参考的php版设置,略有改动
后端的配置:
server {
    # 监听端口
    listen 80;
    # 绑定的域名,填写您的域名
    server_name api.mochat.dev;

    location / {
        # 将客户端的 Host 和 IP 信息一并转发到对应节点
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 转发Cookie,设置 SameSite
        proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        # 执行代理访问真实服务器
        proxy_pass http://127.0.0.1:9501;
    }
}

dashboard的配置:
server {
    listen 80;
    server_name dashboard.mochat.dev;

    access_log /var/log/nginx/dashboard.mochat.dev.log main;
    error_log /var/log/nginx/dashboard.mochat.dev.log.err error;
    fastcgi_intercept_errors off;
    rewrite_log off;
    root /usr/share/nginx/html/dashboard/;
    location / {
        #root dashboard;
        #root /data/www/mochat-java/dashboard/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    location /authRedirect {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # http时使用下面的配置
        proxy_cookie_path / "/; HttpOnly; SameSite=strict";
        # https时使用下面的配置
        # proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        proxy_pass http://127.0.0.1:9501/dashboard/officialAccount/authRedirect/;
    }

    location ~* \.(?:jpg|jpeg|png|gif|ico|css|js)$ {
        # 缓存30天
        expires 30d;
    }

    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }
}


sidebar的配置:
server {
    listen 80;
    server_name sidebar.mochat.dev;

    access_log /var/log/nginx/sidebar.mochat.dev.log main;
    error_log /var/log/nginx/sidebar.mochat.dev.log.err error;
    fastcgi_intercept_errors off;
    rewrite_log off;
    root /usr/share/nginx/html/sidebar; #sidebar的dist目录,之前尝试过制定其他的自定义目录,但是不生效,就放弃了,使用nginx默认的目录
#据说源码编译nginx,重新指定目录可以解决,但没尝试
    location / {
        #root sidebar;
        #root /data/www/mochat-java/sidebar/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    location ~* \.(?:jpg|jpeg|png|gif|ico|css|js)$ {
        # 缓存30天
        expires 30d;
    }
    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }

}

php版还有个运营模块的nginx配置文件,java里没有,不过也给配置进去了,但文件后缀不是.conf,改成其他的了,避免nginx加载这个文件
运营模块的nginx配置文件:
server {
    listen 80;
    server_name op.mochat.dev;

    access_log /var/log/nginx/op.mochat.dev.log main;
    error_log /var/log/nginx/op.mochat.dev.log.err error;
    fastcgi_intercept_errors off;
    rewrite_log off;
    #root /usr/share/nginx/html/operation;
    location / {
        #root operation;
        #root /data/www/mochat-java/operation/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    location ^~ /auth/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...skipping...
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # http时使用下面的配置
        proxy_cookie_path / "/; HttpOnly; SameSite=strict";
        # https时使用下面的配置
        # proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        proxy_pass http://127.0.0.1:9501/operation/openUserInfo/;
   }

    location ~* \.(?:jpg|jpeg|png|gif|ico|css|js)$ {
        # 缓存30天
        expires 30d;
    }
    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }

}

终于搞定了,可以在本机访问http://dashboard.mochat.dev(没有用https的),并使用默认手机和密码登录(初始管理员账号为 18888888888 密码123456)
但貌似老是有报错:422 未找到所属企业信息

应该是我没有配置企业微信的原因吧,再研究吧