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 未找到所属企业信息
应该是我没有配置企业微信的原因吧,再研究吧