diff --git a/README.md b/README.md index bf162b1..511834e 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,11 @@ 项目下载和运行 ---- -开发环境准备与运行,请参考:开发环境准备与运行.md +##### 一键运行脚本 +快速部署docker镜像,请使用Centos 7以上版本,最低配置2C/4G。下载:[一键运行脚本](http://www.kykms.cn/install_community.sh) +部署成功,访问:http://Your_IP:3000 +##### 开发环境准备与运行 +请参考:[开发环境准备与运行](开发环境准备与运行.md) - 默认登录账号: admin/123456 diff --git a/ant-design-vue-jeecg/.env.docker b/ant-design-vue-jeecg/.env.docker new file mode 100644 index 0000000..5853060 --- /dev/null +++ b/ant-design-vue-jeecg/.env.docker @@ -0,0 +1,4 @@ +NODE_ENV=docker +VUE_APP_API_BASE_URL=/api +VUE_APP_CAS_BASE_URL=http://localhost:8888/cas +VUE_APP_ONLINE_BASE_URL=http://localhost/onlinePreview \ No newline at end of file diff --git a/ant-design-vue-jeecg/Dockerfile b/ant-design-vue-jeecg/Dockerfile index eca902b..cc91e97 100644 --- a/ant-design-vue-jeecg/Dockerfile +++ b/ant-design-vue-jeecg/Dockerfile @@ -1,29 +1,4 @@ FROM nginx MAINTAINER hnliuwx@gmail.com -VOLUME /tmp -ENV LANG en_US.UTF-8 -RUN echo "server { \ - listen 3000; \ - location ^~ /ky { \ - proxy_pass http://localhost:8080/ky/; \ - proxy_set_header Host localhost; \ - proxy_set_header X-Real-IP \$remote_addr; \ - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \ - } \ - #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \ - location / { \ - root /var/www/html/; \ - index index.html index.htm; \ - if (!-e \$request_filename) { \ - rewrite ^(.*)\$ /index.html?s=\$1 last; \ - break; \ - } \ - } \ - access_log /var/log/nginx/access.log ; \ - } " > /etc/nginx/conf.d/default.conf \ - && mkdir -p /var/www \ - && mkdir -p /var/www/html -ADD dist/ /var/www/html/ -EXPOSE 80 -EXPOSE 443 \ No newline at end of file +EXPOSE 3000 \ No newline at end of file diff --git a/ant-design-vue-jeecg/nginx.conf b/ant-design-vue-jeecg/nginx.conf new file mode 100644 index 0000000..25550bd --- /dev/null +++ b/ant-design-vue-jeecg/nginx.conf @@ -0,0 +1,78 @@ +user nginx; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + 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; + + keepalive_timeout 65; + + gzip on; + gzip_buffers 16 8k; + gzip_comp_level 6; + gzip_http_version 1.1; + gzip_min_length 256; + gzip_proxied any; + gzip_vary on; + gzip_types + text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml + text/javascript application/javascript application/x-javascript + text/x-json application/json application/x-web-app-manifest+json + text/css text/plain text/x-component + font/opentype application/x-font-ttf application/vnd.ms-fontobject + image/x-icon; + gzip_disable "MSIE [1-6]\.(?!.*SV1)"; + + server { + listen 3000; + + #server添加下面内容 解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 + location / { + root /usr/share/nginx/html; + index index.html index.htm; + if (!-e $request_filename) { + rewrite ^(.*)$ /index.html?s=$1 last; + break; + } + } + + location /api/{ + + if ($request_method = 'OPTIONS') { #处理预检请求 + add_header 'Access-Control-Allow-Origin' '*'; #此处理客户端预检请求->nginx服务器跨域问题 + add_header 'Access-Control-Allow-Headers' '*'; #此允许客户端请求携带header自定义参数,也可以指定具体参数名称 + return 204; + } + if ($request_method != 'OPTIONS') { #正常请求 + #add_header 'Access-Control-Allow-Origin' '*'; #此处根据服务端api是否配置跨域决定是否配置,不能重复配置 + } + + proxy_pass http://kykms:8080/ky/; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } + + +} diff --git a/ant-design-vue-jeecg/package.json b/ant-design-vue-jeecg/package.json index 52042bc..32d2691 100644 --- a/ant-design-vue-jeecg/package.json +++ b/ant-design-vue-jeecg/package.json @@ -6,6 +6,8 @@ "pre": "cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org ", "serve:development": "vue-cli-service serve --mode development", "build:test": "vue-cli-service build --mode test", + "build:docker": "vue-cli-service build --mode docker", + "serve:docker": "vue-cli-service serve --mode docker", "build:production": "vue-cli-service build --mode production", "build": "vue-cli-service build", "lint": "vue-cli-service lint", diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue index edbcf67..a6a7d7b 100644 --- a/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/DraftsList.vue @@ -747,7 +747,8 @@ showPreviewKmDoc(id,title) { this.showTitlePDF=true; this.title=" "; - this.TitlePDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + '?docId=' + id + //this.TitlePDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + '?docId=' + id + this.PDFurl = this.url.previewKmDoc + "?docId=" + record.id; }, @@ -908,7 +909,8 @@ this.versions = this.model.versions; this.formDisabled = boolFormDisabled; this.businessTypes = this.model.businessTypes; - this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + // this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + this.PDFurl = this.url.previewKmDoc + "?docId=" + record.id; this.pdfLoading = true; this.pdfShow = true; diff --git a/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue b/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue index 691250a..54b5dd8 100644 --- a/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue +++ b/ant-design-vue-jeecg/src/views/km/filemanagement/KmDocFavouriteList.vue @@ -553,7 +553,8 @@ this.versions = this.model.versions; this.formDisabled = boolFormDisabled; this.businessTypes = this.model.businessTypes; - this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + // this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + this.PDFurl = this.url.previewKmDoc + "?docId=" + record.id; this.pdfLoading = true; this.pdfShow = true; if (this.model.previewFileId != this.model.originalPreviewFileId) { diff --git a/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue b/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue index 3e8aeff..75e64bb 100644 --- a/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue +++ b/ant-design-vue-jeecg/src/views/km/search/AdvancedSearch.vue @@ -503,7 +503,8 @@ // 显示预览窗口,初始化 previewKmDoc(record, boolFormDisabled) { - this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + // this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + this.PDFurl = this.url.previewKmDoc + "?docId=" + record.id; this.visible = true; this.pdfLoading = true; this.pdfShow = true; diff --git a/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue b/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue index 428cbd6..ffcea43 100644 --- a/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue +++ b/ant-design-vue-jeecg/src/views/km/search/DefaultDocSearch.vue @@ -627,7 +627,8 @@ // 显示预览窗口,初始化 previewKmDoc(record) { - this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + //this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + this.PDFurl = this.url.previewKmDoc + "?docId=" + record.id; this.title ='预览 - ' + record.title; this.visible = true; this.pdfLoading = true; diff --git a/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue b/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue index 339deb2..a295d76 100644 --- a/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue +++ b/ant-design-vue-jeecg/src/views/km/search/DocSearch.vue @@ -759,7 +759,8 @@ // 显示预览窗口,初始化 previewKmDoc(record) { - this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + // this.PDFurl = window._CONFIG['domianURL'] + this.url.previewKmDoc + "?docId=" + record.id; + this.PDFurl = this.url.previewKmDoc + "?docId=" + record.id; this.visible = true; this.pdfLoading = true; this.pdfShow = true; diff --git a/jeecg-boot/ES/Dockerfile b/jeecg-boot/ES/Dockerfile index 2cdd50b..05061d8 100644 --- a/jeecg-boot/ES/Dockerfile +++ b/jeecg-boot/ES/Dockerfile @@ -2,4 +2,4 @@ FROM elasticsearch:7.6.1 MAINTAINER hnliuwx@gmail.com -RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install -b http://www.kykms.cn/elasticsearch-analysis-ik-7.6.1.zip +RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install -b http://qn.kykms.cn/elasticsearch-analysis-ik-7.6.1.zip diff --git a/jeecg-boot/docker-compose-business.yml b/jeecg-boot/docker-compose-business.yml index 2c92434..4cad10c 100644 --- a/jeecg-boot/docker-compose-business.yml +++ b/jeecg-boot/docker-compose-business.yml @@ -53,10 +53,11 @@ services: kykms-nginx: image: mahonelau/kykms-nginx:business restart: always + depends_on: - kykms-mysql - kykms-redis - kykms - kykms-ES container_name: kykms-nginx ports: - - 3000:3000 \ No newline at end of file + - 3000:3000 diff --git a/jeecg-boot/docker-compose-local.yml b/jeecg-boot/docker-compose-local.yml new file mode 100644 index 0000000..96f26cf --- /dev/null +++ b/jeecg-boot/docker-compose-local.yml @@ -0,0 +1,66 @@ +version: '2' +services: + kymks-mysql: + image: mysql:5.7 + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_ROOT_HOST: '%' + TZ: Asia/Shanghai + restart: always + container_name: kykms-mysql + volumes: + - /home/docker/data/mysql:/var/lib/mysql + command: + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --explicit_defaults_for_timestamp=true + --lower_case_table_names=1 + --max_allowed_packet=128M + ports: + - 3306:3306 + + kymks-redis: + image: redis:5.0 + ports: + - 6379:6379 + restart: always + container_name: kykms-redis + + kymks-ES: + image: elasticsearch:7.6.1 + restart: always + hostname: kykms-ES + container_name: kykms-ES + volumes: + - /home/docker/data/elasticsearch:/usr/share/elasticsearch/data + ports: + - 9200:9200 + - 9300:9300 + environment: + discovery.type: single-node + ES_JAVA_OPTS: "-Xms512m -Xmx512m" + cpuset-cpus: 1 + m: 2G + + kykms-nginx: + image: local-nginx:latest + restart: always + container_name: local-nginx + volumes: + - /home/docker/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - /home/docker/data/nginx/html:/usr/share/nginx/html + ports: + - 3000:3000 + + kykms: + image: kykms:latest + restart: always + privileged: true + container_name: kykms + hostname: kykms + volumes: + - /home/docker/data/kykms:/kykms + - /sys/fs/cgroup:/sys/fs/cgroup + command: /bin/bash -c "java -jar /kykms/jeecg-boot-module-system-2.4.5.jar" + ports: + - 8080:8080 diff --git a/jeecg-boot/docker-compose-official.yml b/jeecg-boot/docker-compose-official.yml index 7d93baa..5e9d605 100644 --- a/jeecg-boot/docker-compose-official.yml +++ b/jeecg-boot/docker-compose-official.yml @@ -5,8 +5,12 @@ services: image: mahonelau/kykms-mysql:latest environment: MYSQL_ROOT_PASSWORD: root + MYSQL_ROOT_HOST: '%' + TZ: Asia/Shanghai restart: always container_name: kykms-mysql + volumes: + - /home/docker/data/mysql:/var/lib/mysql command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci @@ -24,12 +28,12 @@ services: container_name: kykms-redis kykms-ES: - build: - context: ./ES image: mahonelau/kykms-es:latest restart: always hostname: kykms-ES container_name: kykms-ES + volumes: + - /home/docker/data/elasticsearch:/usr/share/elasticsearch/data ports: - 9200:9200 - 9300:9300 @@ -52,5 +56,11 @@ services: image: mahonelau/kykms-nginx:latest restart: always container_name: kykms-nginx + volumes: + - /home/docker/data/nginx/conf:/etc/nginx/ + - /home/docker/data/nginx/html:/usr/share/nginx/html ports: - - 3000:81 + - 3000:3000 + + + diff --git a/jeecg-boot/docker-compose.yml b/jeecg-boot/docker-compose.yml index afc0017..c6aef81 100644 --- a/jeecg-boot/docker-compose.yml +++ b/jeecg-boot/docker-compose.yml @@ -9,6 +9,7 @@ services: TZ: Asia/Shanghai restart: always container_name: kykms-mysql + hostname: kykms-mysql image: mysql:5.7 command: --character-set-server=utf8mb4 @@ -32,6 +33,8 @@ services: build: context: ./ES image: elasticsearch:7.6.1 + volumes: + - /home/docker/data/elasticsearch:/usr/share/elasticsearch/data restart: always hostname: kykms-ES container_name: kykms-ES @@ -55,6 +58,8 @@ services: - kykms-ES container_name: kykms image: kykms + volumes: + - /home/docker/data/kykms:/kykms hostname: kykms ports: - - 8080:8080 \ No newline at end of file + - 8080:8080 diff --git a/jeecg-boot/jeecg-boot-module-system/Dockerfile b/jeecg-boot/jeecg-boot-module-system/Dockerfile index 1213512..4bdb456 100644 --- a/jeecg-boot/jeecg-boot-module-system/Dockerfile +++ b/jeecg-boot/jeecg-boot-module-system/Dockerfile @@ -9,17 +9,10 @@ curl -o /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo; curl -o /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo;\ yum clean all;\ yum makecache;\ -yum install libreoffice-writer.x86_64 -y; \ - -mkdir /kykms +yum install libreoffice.x86_64 -y; WORKDIR /kykms -EXPOSE 8080 - -ADD ./target/jeecg-boot-module-system-2.4.5.jar ./ ADD ./simsun.ttc /usr/share/fonts -CMD /usr/sbin/init;\ -sleep 10;\ -java -Djava.security.egd=file:/dev/./urandom -jar jeecg-boot-module-system-2.4.5.jar +EXPOSE 8080 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-docker.yml b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-docker.yml new file mode 100644 index 0000000..2e0ed45 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-docker.yml @@ -0,0 +1,177 @@ +server: + port: 8080 + tomcat: + max-swallow-size: -1 + error: + include-exception: true + include-stacktrace: ALWAYS + include-message: ALWAYS + servlet: + context-path: /ky + compression: + enabled: true + min-response-size: 1024 + mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/* + +management: + endpoints: + web: + exposure: + include: metrics,httptrace + +##文件上传和转换工具的配置 +base: + #上传文件保存的路径 + upload-dir: /kykms/KmDocs + # libreOffice安装路径 + soffice-path: /usr/bin/soffice + # soffice-path: /opt/libreoffice7.0/program/soffice + one-system-url: + +##ElasticSearch服务配置 for highLevelRestClient +esclient: + master-host: kykms-ES + master-port: 9200 + +spring: + servlet: + multipart: + max-file-size: 2000MB + max-request-size: 2000MB + mail: + host: + username: + password: ?? + properties: + mail: + smtp: + auth: true + starttls: + enable: true + required: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + aop: + proxy-target-class: true + freemarker: + suffix: .ftl + content-type: text/html + charset: UTF-8 + cache: false + prefer-file-system-access: false + template-loader-path: + - classpath:/templates + mvc: + static-path-pattern: /** + resource: + static-locations: classpath:/static/,classpath:/public/ + autoconfigure: + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure + datasource: + druid: + stat-view-servlet: + enabled: true + loginUsername: admin + loginPassword: 123456 + allow: + web-stat-filter: + enabled: true + dynamic: + druid: + initial-size: 5 + min-idle: 5 + maxActive: 1000 + maxWait: 60000 + timeBetweenEvictionRunsMillis: 60000 + minEvictableIdleTimeMillis: 300000 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + poolPreparedStatements: false + maxPoolPreparedStatementPerConnectionSize: -1 + filters: stat,wall,slf4j + connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + datasource: + # 数据库登录信息配置 + master: + url: jdbc:mysql://kykms-mysql:3306/km?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + #redis 配置 + redis: + database: 0 + host: kykms-redis + lettuce: + pool: + max-active: 8 + max-idle: 8 + max-wait: -1ms + min-idle: 0 + shutdown-timeout: 100ms + password: '' + port: 6379 + +mybatis-plus: + mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml + global-config: + banner: false + db-config: + id-type: ASSIGN_ID + table-underline: true + configuration: + #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + call-setters-on-nulls: true + +jeecg : + uploadType: alioss + path : + upload: /opt/upload + webapp: /opt/webapp + shiro: + excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/sys/loginThird,/KM/EsMgnt/** + + oss: + accessKey: ?? + secretKey: ?? + endpoint: oss-cn-beijing.aliyuncs.com + bucketName: ?? + staticDomain: https://static.jeecg.com + minio: + minio_url: http://minio.jeecg.com + minio_name: ?? + minio_pass: ?? + bucketName: ?? + xxljob: + enabled: false + adminAddresses: http://127.0.0.1:9080/xxl-job-admin + appname: ${spring.application.name} + accessToken: '' + address: 127.0.0.1:30007 + ip: 127.0.0.1 + port: 30007 + logPath: logs/jeecg/job/jobhandler/ + logRetentionDays: 30 + route: + config: + data-id: jeecg-gateway-router + group: DEFAULT_GROUP + data-type: yml + redisson: + address: 127.0.0.1:6379 + password: + type: STANDALONE + enabled: true +cas: + prefixUrl: http://cas.example.org:8443/cas +logging: + level: + org.jeecg.modules.system.mapper : info +knife4j: + production: false + basic: + enable: true + username: jeecg + password: jeecg1314 diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml index 2e0ed45..3874b3a 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml @@ -24,13 +24,13 @@ base: #上传文件保存的路径 upload-dir: /kykms/KmDocs # libreOffice安装路径 - soffice-path: /usr/bin/soffice - # soffice-path: /opt/libreoffice7.0/program/soffice + # soffice-path: /usr/bin/soffice + soffice-path: /opt/libreoffice7.3/program/soffice one-system-url: ##ElasticSearch服务配置 for highLevelRestClient esclient: - master-host: kykms-ES + master-host: localhost master-port: 9200 spring: @@ -96,14 +96,14 @@ spring: datasource: # 数据库登录信息配置 master: - url: jdbc:mysql://kykms-mysql:3306/km?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://localhost:3306/km?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver #redis 配置 redis: database: 0 - host: kykms-redis + host: localhost lettuce: pool: max-active: 8 diff --git a/jeecg-boot/pom.xml b/jeecg-boot/pom.xml index 4635482..7e6ee4a 100644 --- a/jeecg-boot/pom.xml +++ b/jeecg-boot/pom.xml @@ -4,7 +4,7 @@ jeecg-boot-parent 2.4.5 pom - + org.springframework.boot spring-boot-starter-parent @@ -399,5 +399,24 @@ 127.0.0.1:8848 - - \ No newline at end of file + + + docker + + + docker + + jeecg + + 127.0.0.1:8848 + + + + DEFAULT_GROUP + + 127.0.0.1:8848 + + + + +