# pay-deploy **Repository Path**: feng_tai_jun/pay-deploy ## Basic Information - **Project Name**: pay-deploy - **Description**: 使用nodeJS完成自动jar包,nodeJS项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-08 - **Last Updated**: 2021-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 自动部署pay项目,目录说明 ./deploy_target_template -部署包的样板目录结构 /deploy/mysql/data 、/deploy/mysql/schema、/deploy/redis 分别用作mysql、redis的存储目录 ./docker_compose -docker容器服务的启动命令配置 ./shell -打包、部署的shell命令 ./SQL -支付项目的数据库sql ./src -打出部署包的程序。 入口函数 node src/index.js ### 构建部署包的过程 ——在打包服务器上执行 注:以下操作的环境是 CentOS7,Ubuntu-20.04操作系统. 优先使用Ubuntu操作系统构建部署包。运行部署包的操作系统可以是 Ubuntu、CentOS。开发环境请使用Ubuntu系统(或Lunbun、 Kubuntu、Linux Mint等Ubuntu衍生版本) 1、参考./安装docker.md,安装docker 2、创建部署目录 mkdir /deploy 或者 sudo mkdir /deploy 不是root用户,如果没有权限,则授权 sudo chown -R 用户名 /deploy 3、安装git。 sudo yum install -y git 或 sudo apt install -y git 安装node sudo yum install nodejs 或 sudo apt install nodejs 4、拉取pay-deploy(自动部署项目)git代码,执行 git clone cd /deploy git clone https://git.visioners.cn/charge/pay-deploy.git cp -rf ./pay-deploy/docker_compose /deploy/docker_compose cp -rf ./pay-deploy/deploy_target_template/* /deploy/ 5、「可省略这一步,已由deploy.sh执行」启动数据库。参考./docker_compose/docker-compose说明.txt cd /deploy/docker_compose docker-compose -p local -f ./mysql.yml --env-file ./env/default.env up -d 使用定义在./docker_compose/evn/default.env中的数据库密码,用客户端连接数据库 执行./SQL/databaseInit.sql 创建数据库、表、视图、存储过程、导入初始数据。 6、node src/index.js 生成 部署目录/deploy/* 。 及部署包/deploy/deploy.zip ### 新服务器的部署过程 1、把deploy.zip部署包复制 到 需要运行的目标服务器。 如: scp /deploy/deploy.zip root@test:/root/ 2、把部署文件解压到根目录。 unzip -o -d /deploy deploy.zip cd /deploy sh ./deploy.sh # 本地开发环境(ubuntu20.04)搭建过程参考: 1、安装docker。 2、切换到项目目录(pay-deploy/的目录下), (1)给数据库目录授权·「按情况授权」 sudo chmod 777 -R mysql/data/ sudo chmod 777 -R mysql/schema/ (2)执行 启动命令 docker-compose -f docker-compose-local.yml up -d 其它参考命令: 停止服务 docker-compose -f docker-compose-local.yml stop 停止并删除服务 docker-compose -f docker-compose-local.yml down 3、创建本地mysql数据库 使用账号/密码 root/Fortune2021 连接MySql localhost:3306 创建pay数据库,字符集 utf8mb4 ,排序规则 utf8mb4_general_ci mysql5.7版本默认sql_mode=only_full_group_by。会导致导⼊视图失败。 在阿⾥云rds控制台修改mysql5.7数据库的配置参数:sqlmode,把 only_full_group_by删掉。 参考操作: 1、查看sql_mode select @@sql_mode 查询结果应是: 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 2、去掉ONLY_FULL_GROUP_BY,重新设置值。 set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; 3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行: set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; 4、导入数据库表、视图、函数:把./SQL目录下的sql文件导入数据库中。(存储过程也需要) 5、检查表名是否区分大小写 show variables like '%lower_case_table_names%'; 如果lower_case_table_names的值是0,则需要改为1. 修改办法: 一、进入容器 docker exec -it mysql /bin/bash 二、修改 /etc/mysql/mysql.conf.d/mysqld.cnf,增加lower_case_table_names=1 三、重启 docker restart mysql 注: 或者复制出来,docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf ~/mysqld.cnf 修改之后,再复制进容器 docker cp ~/mysqld.cnf mysql:/etc/mysql/mysql.conf.d/mysqld.cnf 注意事项: 一、数据库初始参数设置lower_case_table_names:应用查询数据库映射成小写。 二、批处理服务, 数据库 存储过程、视图,需要设置成 对应的用户名进行创建。 三、涉及到不同数据库,相同的存储过程的名称,则账号要分数据库授权,不然,spring无法识别执行哪个数据库的存储过程 # Nacos环境搭建参考 如果使用了docker启动docker-compose -f docker-compose-local.yml up -d 则不用看下文。 [Nacos Docker 快速开始](https://nacos.io/zh-cn/docs/quick-start-docker.html) Clone 项目 git clone https://github.com/nacos-group/nacos-docker.git cd nacos-docker 1、单机模式 Derby(内嵌数据库):用于测试和单机使用 docker-compose -f example/standalone-derby.yaml up 2、集群模式:用于生产环境 # 使用nginx进行端口转换,示例参考: docker pull nginx mkdir -p /deploy/nginx/{conf,conf.d,html,logs} docker run --name nginx -d -p 80:80 -p 8080:8080 -v /deploy/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /deploy/nginx/logs:/var/log/nginx -d nginx docker run --name nginx -d -p 80:80 -p 11109:11109 -v /home/f/tool/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/f/tool/nginx/logs:/var/log/nginx nginx docker run --name nginx -d -p 80:80 -p 11109:11109 -v /home/f/tool/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/f/tool/nginx/logs:/var/log/nginx nginx:1.19.8-alpine # 本项目pay-deploy安装依赖: npm install 1. shelljs 重新包装了 child_process 子进程模块,调用系统命令更方便。 2. chalk 美化命令行,进行着色等 3. ora 命令行环境的 loading 效果 4. inquirer 命令行交互功能,像用户提问等。 5. commander 解析用户命令行输入 # 本项目pay-deploy异常-解决 npm ERR! code E404的解决办法: npm rebuild node-sass npm update sudo npm install -g npm