# ifndao-cloud **Repository Path**: wztongkai/ifndao-cloud ## Basic Information - **Project Name**: ifndao-cloud - **Description**: ifndao-pro的微服务版本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-07-18 - **Last Updated**: 2025-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: activiti7 ## README 参考 ruoyi-vue-pro、ruoyi-vue、jeecg-boot实现 # Linux部署 ## 一、前端部署 ### 1、修改配置 ```sh 修改 .env.production 文件 修改 VITE_GLOB_BASE_URL = "http://xxx.xxx.xxx.xxx" #(前端服务的服务器IP) VITE_GLOB_API_URL = http://xxx.xxx.xxx.xxx/admin-api #admin-api 为后台接口的统一前缀 ``` ### 2、编译打包 ```sh pnpm run build ``` ### 3、上传 `dist` 文件 ```sh 1、在 Linux 服务器上创建 /work/project/ifndaoCloudUI 目录,使用 scp 命令或者 FTP 工具,将 dist 上传到该目录 ``` ## 二、后端部署 ### 1、修改配置 ​ 修改配置文件中 Mysql、Redis、Nacos、Kafka等服务的链接地址 ### 2、编译打包 执行 `mvn clean package -Dmaven.test.skip=true` 命令,编译后端项目,构建出它的 Jar 包, Jar包构建成功后在对应服务的 `target` 目录下 ### 3、上传 Jar 包 ​ 在 Linux 服务器上创建各服务的存放目录 ```sh /work/project/ifndaoCloudServer/system 系统服务 /work/project/ifndaoCloudServer/infra 基础服务 /work/project/ifndaoCloudServer/gateway 网关服务 /work/project/ifndaoCloudServer/bpm 流程服务 将各服务target目录下的 xxx.jar 和lib目录上传到对应的目录中(jar 和 lib同级) ``` ### 4、编写脚本 ​ 在各服务的目录中新建 Shell 脚本:`deploy.sh` ,用于启动服务 ​ 需修改基础路径和服务名称为对应服务 ```sh #!/bin/bash set -e DATE=$(date +%Y%m%d%H%M) # 基础路径 BASE_PATH=/work/project/ifndaoCloudServer/bpm # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAME=ifndao-bpm-biz # 环境 PROFILES_ACTIVE=dev # heapError 存放路径 HEAP_ERROR_PATH=$BASE_PATH/heapError # JVM 参数 JAVA_OPS="-Xms256m -Xmx256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH" # 停止:优雅关闭之前已经启动的服务 function stop() { echo "[stop] 开始停止 $BASE_PATH/$SERVER_NAME" PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}') # 如果 Java 服务启动中,则进行关闭 if [ -n "$PID" ]; then # 正常关闭 echo "[stop] $BASE_PATH/$SERVER_NAME 运行中,开始 kill [$PID]" kill -15 $PID # 等待最大 120 秒,直到关闭完成。 for ((i = 0; i < 120; i++)) do sleep 1 PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}') if [ -n "$PID" ]; then echo -e ".\c" else echo '[stop] 停止 $BASE_PATH/$SERVER_NAME 成功' break fi done # 如果正常关闭失败,那么进行强制 kill -9 进行关闭 if [ -n "$PID" ]; then echo "[stop] $BASE_PATH/$SERVER_NAME 失败,强制 kill -9 $PID" kill -9 $PID fi # 如果 Java 服务未启动,则无需关闭 else echo "[stop] $BASE_PATH/$SERVER_NAME 未启动,无需停止" fi } # 启动:启动后端项目 function start() { # 开启启动前,打印启动参数 echo "[start] 开始启动 $BASE_PATH/$SERVER_NAME" echo "[start] JAVA_OPS: $JAVA_OPS" echo "[start] JAVA_AGENT: $JAVA_AGENT" echo "[start] PROFILES: $PROFILES_ACTIVE" # 开始启动 nohup java -server $JAVA_OPS $JAVA_AGENT -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active=$PROFILES_ACTIVE > nohup.out 2>&1 & echo "[start] 启动 $BASE_PATH/$SERVER_NAME 完成" } # 部署 function deploy() { cd $BASE_PATH # 第一步:停止 Java 服务 stop # 第二步:启动 Java 服务 start } deploy ``` ### 5、启动 ```sh 启动: sh deploy.sh 日志: tail -f nohup.out ``` ## 三、配置Nginx ```sh user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; gzip_min_length 1k; # 设置允许压缩的页面最小字节数 gzip_buffers 4 16k; # 用来存储 gzip 的压缩结果 gzip_http_version 1.1; # 识别 HTTP 协议版本 gzip_comp_level 2; # 设置 gzip 的压缩比 1-9。1 压缩比最小但最快,而 9 相反 gzip_types gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 指定压缩类型 gzip_proxied any; # 无论后端服务器的 headers 头返回什么信息,都无条件启用压缩 server { listen 80; server_name 140.143.119.164; #charset koi8-r; #access_log logs/host.access.log main; location / { root /work/project/ifndaoCloudUI/dist; index index.html index.htm; try_files $uri $uri/ /index.html; } location /admin-api/ { ## 后端项目 - 管理后台 proxy_pass http://43.140.224.230:48080/admin-api/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /websocket { add_header backendIP $upstream_addr; add_header backendCode $upstream_status; proxy_redirect off; proxy_connect_timeout 6000; proxy_read_timeout 6000; proxy_send_timeout 6000; proxy_set_header Host 43.140.224.230:48080; proxy_pass http://43.140.224.230:48080/websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } map $http_upgrade $connection_upgrade { default upgrade; '' close; } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} } ``` ## 四、访问 ```sh http://140.143.119.164/ ```