# 个人开发者地址备忘

# maven制品仓库

# 仓库凭证信息

该凭证信息需要设置到settings.xml

<servers>
    <server>
        <id>rdc-releases</id>
        <username>63bfbed4b7bea95c5370baf3</username>
        <password>E_BG7Vs0gKDy</password>
    </server>
    <server>
        <id>rdc-snapshots</id>
        <username>63bfbed4b7bea95c5370baf3</username>
        <password>E_BG7Vs0gKDy</password>
    </server>
</servers>

# 仓库发布配置

注,如果要发布制品,需要在settings.xml文件中填写仓库凭证

<distributionManagement>
    <repository>
        <id>rdc-releases</id>
        <url>https://packages.aliyun.com/maven/repository/2211645-release-a4sdkI/</url>
    </repository>
    <snapshotRepository>
        <id>rdc-snapshots</id>
        <url>https://packages.aliyun.com/maven/repository/2211645-snapshot-8hgfr3/</url>
    </snapshotRepository>
</distributionManagement>

# 制品库依赖

<repositories>
    <repository>
        <id>rdc-releases</id>
        <name>default</name>
        <url>https://packages.aliyun.com/maven/repository/2211645-release-a4sdkI/</url>
    </repository>
    <repository>
        <id>rdc-snapshots</id>
        <name>default</name>
        <url>https://packages.aliyun.com/maven/repository/2211645-snapshot-8hgfr3/</url>
    </repository>
</repositories>
<mirrors>
  <mirror>
    <id>aliyun-central</id>
    <mirrorOf>central</mirrorOf>
    <name>central</name>
    <url>https://maven.aliyun.com/repository/central</url>
  </mirror>
</mirrors>

# 学习类源码制品库依赖

  • spring源码依赖
<dependencies>
    <dependency>
        <groupId>com.automannn.spring</groupId>
        <artifactId>springCore</artifactId>
        <version>0.0.1</version>
    </dependency>
    <!--    更多依赖模块,略-->
</dependencies>
  • springBoot源码依赖
<dependencies>
    <dependency>
        <groupId>com.automannn</groupId>
        <artifactId>spring-boot</artifactId>
        <version>0.0.1</version>
    </dependency>
</dependencies>
  • springSecurity源码依赖
<dependencies>
    <dependency>
        <groupId>com.automannn</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>0.0.1</version>
    </dependency>
</dependencies>
  • springSession源码依赖
<dependencies>
    <groupId>com.automannn</groupId>
    <artifactId>spring-session-source</artifactId>
    <version>0.0.1</version>
</dependencies>
  • tomcat源码依赖
<dependencies>
    <groupId>com.automannn.embed-tomcat</groupId>
    <artifactId>embed-tomcat</artifactId>
    <version>0.0.1</version>
</dependencies>
  • SOA框架-dubbo源码依赖
<dependencies>
  <groupId>com.automannn</groupId>
  <artifactId>dubbo</artifactId>
  <version>0.0.1</version>
</dependencies>
  • 微服务框架-springCloud依赖
<dependencies>
  <groupId>com.automannn</groupId>
  <artifactId>spring-cloud-context-source</artifactId>
  <version>0.0.2</version>
</dependencies>
<dependencies>
  <groupId>com.automannn</groupId>
  <artifactId>spring-cloud-commons-source</artifactId>
  <version>0.0.2</version>
</dependencies>

# 研发类制品库

  • 后台框架依赖
<dependencies>
    <dependency>
        <groupId>com.automannn.natm</groupId>
        <artifactId>natm-component-security</artifactId>
        <version>1.1.1.1</version>
    </dependency>
</dependencies>

# CI/CD持续集成和持续部署备忘

# docker配置

  • docker地址:chenkaihai/centos-web:11
  • 大小: 5G

# 启动命令

docker run --name automannn-web -p 80:80 -p 8080:8080 -p 443:443 -p 3306:3306 -it -d automannn-web:12.0

# 环境信息

jdk8
tomcat
mysql
redis
nginx
nodejs14,nodejs16  #不兼容,需要根据环境动态选择
git
maven
jenkins

# 初始化命令

# environment enable node,npm,maven
source /etc/profile

#start mysql:
/usr/local/bin/mysql-start.sh &

#start tomcat:
/apps/tomcat/bin/catalina.sh start

# start redis
/apps/redis/redis-5.0.8/src/redis-server /usr/local/redis/redis.conf

# start nginx
/usr/local/nginx/sbin/nginx

# 端口映射信息

0.0.0.0:80->80/tcp, 
:::80->80/tcp,
0.0.0.0:443->443/tcp, 
:::443->443/tcp, 
0.0.0.0:3306->3306/tcp, 
:::3306->3306/tcp, 
0.0.0.0:8080->8080/tcp, 
:::8080->8080/tcp

# jenkins配置

# blog任务

rm -rf /usr/local/nginx/html/blog
npm install
npm run docs:build
mv dist /usr/local/nginx/html/blog
/usr/local/nginx/sbin/nginx -s reload

# natm-admin任务

rm -rf /usr/local/nginx/html/natm
npm install
npm run build
mv dist /usr/local/nginx/html/natm
/usr/local/nginx/sbin/nginx -s reload

# generator任务

rm -rf /apps/tomcat/webapps/generator.war
mvn clean package
cd generator-starter/target/
mv generator.war /apps/tomcat/webapps

# ssoServer任务

rm -rf /apps/tomcat/webapps/ssoServer.war
mvn clean package
cd atm-sso-server/atm-sso-server-admin/target
mv ssoServer.war /apps/tomcat/webapps

# nginx配置

server{
		listen       80;
        server_name  www.automannn.cn;

        location /atm/sso/ {
                proxy_pass http://www.automannn.cn:8080/ssoServer/sso/;
                proxy_cookie_path /ssoServer/ /atm/sso;
        }

        location /atm/ {
                proxy_pass http://www.automannn.cn:8080/generator/;
                proxy_cookie_path /generator/ /atm;
        }
        
        location =/ {
            root   html;
            index  index.html index.htm;
            if ($http_host = www.automannn.cn) {
              rewrite ^(.*)$ https://www.automannn.cn/blog;
            }
            if ($http_host = automannn.cn) {
              rewrite ^(.*)$ https://www.automannn.cn/blog;
            }
            if ($http_host = blog.automannn.cn) {
              rewrite ^(.*)$ https://www.automannn.cn/blog;
            }
            if ($http_host = product.automannn.cn) {
              rewrite ^(.*)$ http://www.automannn.cn/natm/;
            }
        }
}

server {
        listen       443 ssl;
        server_name  www.automannn.cn;

        ssl_certificate      ./cert/7929866_www.automannn.cn.pem;
        ssl_certificate_key  ./cert/7929866_www.automannn.cn.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location =/ {
           rewrite ^(.*)$ https://www.automannn.cn/blog;
        }
}

# ngrok配置

# 操作说明

  1. 在linux操作系统下运行./pre.sh生成签名文件,用户可将NGROK_DOMAIN参数改为自己的域名来生成签名文件

  2. 运行./windows.sh编译生成windows平台下可运行的ngrok客户端和服务器程序

  3. 运行·./linux.sh·编译生成linux平台下可运行的ngrok客户端和服务器程序

  4. 运行./clean.sh清楚所有已经编译的信息

git clone https://gitee.com/silingyuan/ngrokchina.git #该项目已经编译好了。 ngrok的编译需要依赖go环境,且由于版本老旧,会遇到各种问题

cd ngrokchina/

vim pre.sh #设置域名

./pre.sh #生成签名

./linux.sh #生成linux的客户端及服务端

./windows.sh #生成windows平台的客户端

cd bin/linux_386/

nohup sudo ./ngrokd -domain="automannn.cn" -httpAddr=":8000" -httpsAddr=":8001" -tunnelAddr=":4443" > serOut.log & #执行服务端程序

cd bin/windows_386/

xftp:send ngrok.exe <target:localhost>  #将客户端传送至本机并运行

# pre.sh

#!/bin/sh
rm -fv assets/client/tls/ngrokroot.crt device.crt assets/server/tls/snakeoil.crt assets/server/tls/snakeoil.key
export NGROK_DOMAIN="automannn.cn"
echo $NGROK_DOMAIN
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp -fv rootCA.pem assets/client/tls/ngrokroot.crt
cp -fv device.crt assets/server/tls/snakeoil.crt
cp -fv device.key assets/server/tls/snakeoil.key
rm -fv device.* rootCA.*

# COLA脚手架使用示例

  • 在新项目中,一般建议在ide的maven插件中执行:mvn install,在具有私服的环境下,也可以不本地安装;
  • 根pom设置类型为<packaging>pom</packaging>
  • 项目源码(私有),暂不开源: https://gitee.com/automannn/COLA.git

# 生成web项目

mvn archetype:generate  -DgroupId=com.automannn -DartifactId=secKill -Dversion=0.0.1  -Dpackage=com.automannn -DarchetypeArtifactId=cola-framework-archetype-web -DarchetypeGroupId=com.automannn.cola -DarchetypeVersion=1.0.0 -DinteractiveMode=false

# 生成service项目

mvn archetype:generate  -DgroupId=com.automannn -DartifactId=secKill -Dversion=0.0.1  -Dpackage=com.automannn -DarchetypeArtifactId=cola-framework-archetype-service -DarchetypeGroupId=com.automannn.cola -DarchetypeVersion=1.0.0 -DinteractiveMode=false
  • 如果是单项目,则将生成的项目,整体拷贝至根项目中;如果是多项目,则不用做变动
  • 根据实际情况,重命名根项目名称

# 前端脚手架的使用

npm install -g natm-cli
natm-cli -init natm-payment-admin-ui

# 中后台项目说明

  • 关闭静态路由;
  • 关闭postMessage特性,所有的权限都需要做控制;
  • 保留views下的auth,authority,worktable模块

# 前台项目说明

  • 开启静态路由;
  • 开启postMessage特性,所有的权限都需要做控制;
  • 删除views下的auth,authority,worktable模块