рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ Java
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣рд░реЛрдХреВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ HTTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреАрд╕реНрдЯреЛрд░реНрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ
ред
- рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЕрдиреНрдп рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛ
рдЪрд╛рд▓реВ рд░рдЦрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдо рдмрд╛рдд рд╣реИ
ред
рдЖрдорддреМрд░ рдкрд░
рдкрд╛рд╕рд╡рд░реНрдб-рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд - рдХреБрдВрдЬреА рдХрдВрдЯреЗрдирд░, рдЬреИрд╕реЗ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ .p12
рдпрд╛ jks
ред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╕рдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
:
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд▓реЛрдЧреЛрдВ
рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╣реА рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рдорд╛рди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ Java
!
рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рд╕реБрд░рдХреНрд╖рд╛ рдЕрдзрд┐рдХрд╛рд░реА (OB)
рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИBase64
- рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ
(рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рд░реЛрдХреВ рдбреИрд╢рдмреЛрд░реНрдб) - рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЖрдпрд╛рдд рдПрдХ рдПрдиреНрдХреЛрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ
Base64
рдореЗрдВ
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ,
рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рднреМрддрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рдЕрдм, рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЪрдХреНрд░
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ
ред
рдЖрдЗрдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдПрдБ:
- рдЬреБрдмрд╛рди:
Java
- рдордВрдЪ:
Heroku
- рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА:
Gradle
- рдореБрдЦреНрдп рд╕рдВрдЧреНрд░рд╣рдг рдкреНрд░рд╛рд░реВрдк:
PKCS12
.P12 рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рд╣рд░реЛрдХреВ рдХреЛ рдЖрдпрд╛рдд
- рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ
Heroku
Settings
рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ- "Reveal the config vars"
- :
keyStoreFileName
тАФ , "private_key.p12"keyStoreBase64
тАФ Base64
, " .p12"keyStorePassword
тАФ , .p12keyStoreType
тАФ pkcs12
trustStoreType
тАФ jks
.p12 Gradle
guild.gradle
stage
:
task initKeyStore() {
doLast {
println("Creating keystore file from environment variables.")
String keyStoreFileName = System.getenv("keyStoreFileName")
if (keyStoreFileName != null) {
String keyStoreBase64 = System.getenv("keyStoreBase64")
new File(keyStoreFileName).withOutputStream {
it.write(Base64.decoder.decode(keyStoreBase64))
}
}
}
}
stage.dependsOn(initKeyStore)
"procfile" Heroku
"procfile" Heroku
.
, shell
тАФ runApp.sh
.
runApp.sh:
java \
-Dserver.port=$PORT \
...
-Djavax.net.ssl.keyStoreType=$keyStoreType \
-Djavax.net.ssl.trustStoreType=$trustStoreType \
-Djavax.net.ssl.keyStore=$keyStoreFileName \
-Djavax.net.ssl.keyStorePassword=$keyStorePassword \
$JAVA_OPTS \
...
git
(push) (commit):
git update-index --chmod=+x runApp.sh
git commit -m ' runApp.sh'
git push origin master
Heroku
32
.
, .
- ,
Heroku
, Gradle
P12
. - ,
procfile
, Heroku
.
,
.p12
Java
- .
!