{"id":13753294,"url":"https://github.com/junneyang/xxproject","last_synced_at":"2026-01-21T10:47:21.684Z","repository":{"id":78444404,"uuid":"94749165","full_name":"junneyang/xxproject","owner":"junneyang","description":"SpringCloud 微服务综合实例。分布式配置中心，服务发现\u0026负载均衡，链路断路器，API网关，OAuth2认证授权，分布式追踪，ELK日志中心，Ansible/Docker持续交付等最佳实践。","archived":false,"fork":false,"pushed_at":"2022-07-10T11:47:57.000Z","size":4288,"stargazers_count":398,"open_issues_count":1,"forks_count":214,"subscribers_count":45,"default_branch":"master","last_synced_at":"2024-11-16T05:32:43.354Z","etag":null,"topics":["ansible","config","docker","docker-compose","elk","eureka","hystrix","oauth2","springcloud","turbine","zipkin","zuul"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junneyang.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/.project","governance":null,"roadmap":null,"authors":null}},"created_at":"2017-06-19T07:33:41.000Z","updated_at":"2024-10-30T16:20:51.000Z","dependencies_parsed_at":"2023-03-13T20:13:48.304Z","dependency_job_id":null,"html_url":"https://github.com/junneyang/xxproject","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxproject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxproject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxproject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junneyang%2Fxxproject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junneyang","download_url":"https://codeload.github.com/junneyang/xxproject/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253321865,"owners_count":21890483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","config","docker","docker-compose","elk","eureka","hystrix","oauth2","springcloud","turbine","zipkin","zuul"],"created_at":"2024-08-03T09:01:19.761Z","updated_at":"2026-01-21T10:47:21.646Z","avatar_url":"https://github.com/junneyang.png","language":"Java","readme":"#################### Delpoy as Host App\n\ncd /opt/java/workspace/xproject \nmvn clean\nmvn package\nps -ef | grep java | grep 1.0.0-RELEASE.jar | awk -F' '  '{ print $2 }' | xargs kill -9\n\n\n# support-service: config-server\nsource bootstrap.rc \u0026\u0026 java -jar support/config-server/target/config-server-1.0.0-RELEASE.jar\n# http://localhost:7001/service-test01/default/1.0.0\n# support-service: auth-server\nsource bootstrap.rc \u0026\u0026 java -jar support/auth-server/target/auth-server-1.0.0-RELEASE.jar\nhttp://localhost:9999/uaa/oauth/authorize?response_type=code\u0026client_id=acme\u0026redirect_uri=http://example.com\u0026scope=webshop\u0026state=97536\nhttps://www.xproject.com:9999/uaa/oauth/authorize?response_type=code\u0026client_id=acme\u0026redirect_uri=http://example.com\u0026scope=webshop\u0026state=97536\n\ncurl acme:acmesecret@localhost:9999/uaa/oauth/token \\\n\t-d grant_type=authorization_code \\\n\t-d client_id=acme \\\n\t-d redirect_uri=http://example.com \\\n\t-d code=$CODE -s | jq .\ncurl https://acme:acmesecret@www.xproject.com:9999/uaa/oauth/token \\\n    -d grant_type=authorization_code \\\n    -d client_id=acme \\\n    -d redirect_uri=http://example.com \\\n    -d code=$CODE -ks | jq .\n\ncurl \"http://localhost:9999/uaa/user\" -H  \"Authorization: Bearer $TOKEN\" -s | jq .\ncurl \"https://www.xproject.com:9999/uaa/user\" -H  \"Authorization: Bearer $TOKEN\" -ks | jq .\n\n# support-service: eureka01\nsource bootstrap.rc \u0026\u0026 SPRING_CLOUD_CONFIG_PROFILE=${EUREKA_SERVER01} java -jar support/eureka-server/target/eureka-server-1.0.0-RELEASE.jar\n# support-service: eureka02 \nsource bootstrap.rc \u0026\u0026 SPRING_CLOUD_CONFIG_PROFILE=${EUREKA_SERVER02} java -jar support/eureka-server/target/eureka-server-1.0.0-RELEASE.jar\n# support-service: zuul \nsource bootstrap.rc \u0026\u0026 java -jar support/zuul-server/target/zuul-server-1.0.0-RELEASE.jar\n\n\n# support-service: turbine-server(optional, need to delete composite-service spring-cloud-netflix-hystrix-amqp \u0026\u0026 amqp config)\nsource bootstrap.rc \u0026\u0026 java -jar support/turbine-server/target/turbine-server-1.0.0-RELEASE.jar\n# support-service: hystrix-dashboard(optional)\nsource bootstrap.rc \u0026\u0026 java -jar support/hystrix-dashboard/target/hystrix-dashboard-1.0.0-RELEASE.jar\n# http://localhost:8088/hystrix\n# http://turbine-server:8989/turbine.stream\n\n\n# core-service: product-service\nsource bootstrap.rc \u0026\u0026 java -jar core/product-service/target/product-service-1.0.0-RELEASE.jar\n# core-service: review-service\nsource bootstrap.rc \u0026\u0026 java -jar core/review-service/target/review-service-1.0.0-RELEASE.jar\n\n# composite-service: product-composite-service\nsource bootstrap.rc \u0026\u0026 java -jar composite/product-composite-service/target/product-composite-service-1.0.0-RELEASE.jar\n# http://localhost:5555/api/product-composite-service/product-test\n# http://localhost:5555/api/product-composite-service/product-composite\n\n# api-service: product-api-service\nsource bootstrap.rc \u0026\u0026 java -jar api/product-api-service/target/product-api-service-1.0.0-RELEASE.jar\n# http://localhost:5555/api/product-api-service/product-api-test\n# http://localhost:5555/api/product-api-service/product-api-composite\n\n# test-api\n# curl \"http://localhost:5555/api/product-api-service/product-api-composite\" -H  \"Authorization: Bearer $TOKEN\" -s | jq .\ncurl \"https://www.xproject.com:5555/api/product-api-service/product-api-composite\" -H  \"Authorization: Bearer $TOKEN\" -ks | jq .\n# curl \"http://localhost:5555/api/product-api-service/product-api-test\" -H  \"Authorization: Bearer $TOKEN\" -s | jq .\ncurl \"https://www.xproject.com:5555/api/product-api-service/product-api-test\" -H  \"Authorization: Bearer $TOKEN\" -ks | jq .\n\n#################### Delpoy as Docker App\ndocker images | grep xproject | awk -F' ' '{ print $3 }' | xargs docker rmi -f\ndocker rmi $(docker images -qa --filter=reference='xproject/*/*:*1.0.0-RELEASE')\nunset JAVA_TOOL_OPTIONS\nmvn clean\nmvn package docker:build\ndocker rmi $(docker images -qa -f dangling=true)\ndocker volume rm $(docker volume ls -qf dangling=true)\nrm -rf /var/lib/docker/aufs/diff/*-removing\nsource bootstrap.rc\ndocker-compose rm -sf\ndocker-compose up -d\ndocker-compose ps\ndocker-compose up --scale product-service=2\n\n\n# http://www.blogjava.net/icewee/archive/2012/06/04/379947.html\nkeytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore server.keystore -dname \"CN=www.xproject.com, OU=XPROJECT, O=XPROJECT, L=WuHan, ST=HuBei, C=CN\" -storepass passw0rd -keypass passw0rd\n#keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore server.keystore \\\n#\t-dname \"CN=localhost, OU=XPROJECT, O=XPROJECT, L=WuHan, ST=HuBei, C=CN\" -storepass passw0rd -keypass passw0rd\nkeytool -export -v -alias server -keystore server.keystore -storepass passw0rd -rfc -file server.cer\n\nkeytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname \"CN=www.xproject.com, OU=XPROJECT, O=XPROJECT, L=WuHan, ST=HuBei, C=CN\" -storepass passw0rd -keypass passw0rd\nkeytool -export -v -alias client -keystore client.p12 -storetype PKCS12 -storepass passw0rd -rfc -file client.cer\n\nkeytool -import -v -alias server -file server.cer -keystore client.truststore -storepass passw0rd -noprompt\nkeytool -import -v -alias client -file client.cer -keystore server.keystore -storepass passw0rd -noprompt\n\n\nkeytool -list -keystore server.keystore -storepass passw0rd\n\n\n\n# JWT\n# http://blog.csdn.net/zhao1949/article/details/68064984\n# http://www.jianshu.com/p/6307c89fe3fa\n# https://github.com/Baeldung/spring-security-oauth/\n# https://github.com/junneyang/spring-cloud-security-oauth2-jwt\nkeytool -genkeypair -alias jwtstote -keyalg RSA -keypass passw0rd -keystore jwtkeystore.jks -dname \"CN=www.xproject.com, OU=XPROJECT, O=XPROJECT, L=WuHan, ST=HuBei, C=CN\" -storepass passw0rd\nkeytool -list -rfc --keystore jwtkeystore.jks | openssl x509 -inform pem -pubkey\n\n-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg8Duclg0/nXNSGWLi6al\n9baMmwSKeO1cO2UM+ZS/85GYF7oqjh5bg8ibKf11uSnDD1eo/TPgpY+Zcw3HLQxS\nWEzsR+1mtw3cRzH5Xu7YNDzAFa3XswMtd75eaIH3WnjuWDMdOtkunm0hqesFASeK\nQVPDYH5aC/rMWc9MVzKtx0PE8YeDpJGe396nnZFJa1a6HdJg39ZL0SwMPFtG5CTA\nQ5G9rSU6SWx5OXVpZlgv9TxU5GGCTPDa8BafvrfFCrLiVZhjU5wQZ+26JBTz4Kt5\nr3nzNGlSSFRTBD4M8/gSU1q279uCi1/mR61IgFxd8YAgnTIbjQXN9euWKQLmBp8h\nqwIDAQAB\n-----END PUBLIC KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDezCCAmOgAwIBAgIEAUV+7jANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJD\nTjEOMAwGA1UECBMFSHVCZWkxDjAMBgNVBAcTBVd1SGFuMREwDwYDVQQKEwhYUFJP\nSkVDVDERMA8GA1UECxMIWFBST0pFQ1QxGTAXBgNVBAMTEHd3dy54cHJvamVjdC5j\nb20wHhcNMTcwOTA1MTAwOTA1WhcNMTcxMjA0MTAwOTA1WjBuMQswCQYDVQQGEwJD\nTjEOMAwGA1UECBMFSHVCZWkxDjAMBgNVBAcTBVd1SGFuMREwDwYDVQQKEwhYUFJP\nSkVDVDERMA8GA1UECxMIWFBST0pFQ1QxGTAXBgNVBAMTEHd3dy54cHJvamVjdC5j\nb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCDwO5yWDT+dc1IZYuL\npqX1toybBIp47Vw7ZQz5lL/zkZgXuiqOHluDyJsp/XW5KcMPV6j9M+Clj5lzDcct\nDFJYTOxH7Wa3DdxHMfle7tg0PMAVrdezAy13vl5ogfdaeO5YMx062S6ebSGp6wUB\nJ4pBU8NgfloL+sxZz0xXMq3HQ8Txh4OkkZ7f3qedkUlrVrod0mDf1kvRLAw8W0bk\nJMBDkb2tJTpJbHk5dWlmWC/1PFTkYYJM8NrwFp++t8UKsuJVmGNTnBBn7bokFPPg\nq3mvefM0aVJIVFMEPgzz+BJTWrbv24KLX+ZHrUiAXF3xgCCdMhuNBc3165YpAuYG\nnyGrAgMBAAGjITAfMB0GA1UdDgQWBBSqgHn0egrll8owOJG9UWONjI2kmDANBgkq\nhkiG9w0BAQsFAAOCAQEADeM4X3EMxvlMKLe9geyLbLHjnGil6jV1GJA0ea/MvkVt\ndJ0K6jHYkS7NsjP/vguforg+3pGi734Gj2107DvB/revKeqkUl0TV3g22toTY3gX\njG0FX4QBzQfKMUuzBlkJs5QavoeI91zKibL1/GKhZ6UPs927PYvrPT4xfo+ov7Qw\nCZt2NBiO/Ga1WvXE6bQVlxKqUlEe8/wMWnJ3KXocBLEYUI7UqFLJlprmW+jRV8MN\nmch1pnEOixSCx7waem7MV7Ws7IA4PCxih0L5vx10IemAgEnsbGZhh7O+1+IEFVwC\n/fuGwdfJHPXrLG0lWmThdHGFqHYbYjheZTLo2u6gcA==\n-----END CERTIFICATE-----\n\n\n# Ref: MicroService Framework\n# http://blog.csdn.net/showgood119/article/details/55510685\n# https://www.zhihu.com/question/50806354\n# http://blog.csdn.net/qq_32971807/article/details/54693254\n# https://segmentfault.com/p/1210000008728111\n# https://github.com/yidongnan/grpc-spring-boot-starter/tree/master/examples\n# https://fuxiaopang.gitbooks.io/learnelasticsearch/getting_started/tutorial_conclusion.html\n\n","funding_links":[],"categories":["springcloud"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunneyang%2Fxxproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunneyang%2Fxxproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunneyang%2Fxxproject/lists"}