рдПрдХ DevOps рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЕрдХреНрд╕рд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрдИрдЯреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ: рдХрдВрдЯреЗрдирд░реЛрдВ рд╕реЗ рдмрд╛рджрд▓ рддрдХред рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рд╕реНрдЯреИрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрдИ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рд╛: рдЫреЛрдЯреЗ (рдЬреИрд╕реЗ рдЯреЙрдордХреИрдЯ) рд╕реЗ рд▓реЗрдХрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ (рд╣рдбреЛрдк, рдХреИрд╕реЗрдВрдбреНрд░рд╛, рдЖрджрд┐)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рдЧрднрдЧ рд╣рд░ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рднреА, рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рдЕрдиреВрдареА рд▓реЙрдиреНрдЪ рдкреНрд░рдгрд╛рд▓реА рдереАред рдХрдо рд╕реЗ рдХрдо, рдпреЗ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереЗ, рдЬреИрд╕реЗ рдХрд┐ рдЯреЗрдбрдХреИрдЯ , рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реЗ рдврд╛рдВрдЪреЗ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдбреЛрдк рдореЗрдВ ред рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди "рд░реЛрдЧреА", рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдиреЗрдХреНрд╕рд╕ рдУрдПрд╕рдПрд╕ 3 рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рднрдВрдбрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА ~ 400 рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИред
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛, рдЕрддрд┐рд░реЗрдХ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдПрдХ рдШрдЯрдХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░рддреА рд╣реИрдВред рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдРрд╕реЗ рдШрдЯрдХреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдХреА рддрд░реНрдЬ рдкрд░ рдЕрдореВрд░реНрдд рдХреА рдПрдХ рдФрд░ рдкрд░рдд рд▓рд┐рдЦреЗрдВ, рдЗрд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реАрдЖрдИ рдпрд╛ рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ ...
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЪрд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдиреЗрдХреНрд╕рд╕ 3 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╢реЗрд▓ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдЪрдХреНрд░рд╡реНрдпреВрд╣ рд╕реЗ рдХреИрд╕реЗ java -jar <program.jar>
рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ java -jar <program.jar>
рд╕рдорд╛рди рд╣реИ, рдЬреЛ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрдзреБрдирд┐рдХ рдбреЗрд╡рдкреНрд╕ рдЯреВрд▓реНрд╕ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред
рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреА рд╣реИ?
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкреНрд░рд╛рдЪреАрди рд╕рдордп рдореЗрдВ, рдЬрдм рдпреВрдирд┐рдХреНрд╕ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛: "рд▓рд┐рдирдХреНрд╕ рдХреЗ рдЕрд░реНрде рдореЗрдВ?", рдХреЛрдИ рд╕рд┐рд╕реНрдЯрдордб рдФрд░ рдбреЙрдХрд░ рдЖрджрд┐ рдирд╣реАрдВ рдерд╛, рдкреЛрд░реНрдЯреЗрдмрд▓ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЗрдирд┐рдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдФрд░ рдкреАрдЖрдИрдбреА- рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд╝рд╛рдЗрд▓реЗрдВред рдЗрдирд┐рдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдиреЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛, рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдпреВрдирд┐рдХреНрд╕ рдореЗрдВ рдЕрд▓рдЧ рдереЗ, рдФрд░, рддрд░реНрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдпрд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ / рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╣рд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдореИрдиреБрдЕрд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдереА ... рд▓реЗрдХрд┐рди рдмрд╛рдд рдирд╣реАрдВред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдкреНрд░рд╛рдЧреИрддрд┐рд╣рд╛рд╕рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ SunOS, HP-UX рдФрд░ рдЕрдиреНрдп UNIX s рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рддреА рд╣реИрдВ:
- UNIX / Linux рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рднреА рдмреИрд╕рд╛рдЦрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде POSIX рд╢реЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- OS рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдФрд░
uname
, /etc/*release
, рдЖрджрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ /etc/*release
ред - рд╡реЗ JRE / JDK рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдиреБрдХреНрдХрдбрд╝реЛрдВ рдореЗрдВ рдЦреЛрдЬрддреЗ рд╣реИрдВ рдФрд░ рдЪрддреБрд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдмрд╕реЗ "рдЙрдкрдпреБрдХреНрдд" рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдХрднреА-рдХрднреА рдкреНрд░рддреНрдпреЗрдХ OS рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ
- рдЬреЗрд╡реАрдПрдо рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдореГрддрд┐ рдЖрдХрд╛рд░ (
-Xms
, -Xms
), рдЬреАрд╕реА рдзрд╛рдЧреЗ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЖрджрд┐ред - JRE / JDK рдХреЗ рдЪрдпрдирд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП JVM рдХреЛ
-XX
рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ - рдЙрдирдХреЗ рдШрдЯрдХреЛрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ, рдЖрд╕рдкрд╛рд╕ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдЖрджрд┐ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдЦреЛрдЬреЗрдВред
- рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ: ulimits, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░, рдЖрджрд┐ред
- рдПрдХ рдкрд╛рд╢ рдХреЗ рд╕рд╛рде CLASSPATH рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ:
for f in $path/*.jar; do CLASSPATH="${CLASSPATH}:$f"; done
for f in $path/*.jar; do CLASSPATH="${CLASSPATH}:$f"; done
- рдкрд╛рд░реНрд╕ рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рддрд░реНрдХ:
start|stop|restart|reload|status|...
- рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЕрдВрддрддрдГ рдКрдкрд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ред рдЕрдХреНрд╕рд░, рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рдХреЗ рд╕рдорд╛рди рдХреБрдЦреНрдпрд╛рдд PID рдлрд╛рдЗрд▓реЗрдВ,
&
, nohup
, рд╡рд┐рд╢реЗрд╖ TCP рдкреЛрд░реНрдЯ рдФрд░ рдЕрдиреНрдп рдЯреНрд░рд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ( Karaf рд╕реЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)
рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдиреЗрдХреНрд╕рд╕ 3 рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрд░реНрдХ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рд╢реБрд░реБрдЖрдд рд╕реЗ рдЕрдВрдд рддрдХ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдмрд╕реЗ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╕рд┐рд░рджрд░реНрдж, рджреЛрдиреЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд▓рд┐рдП рдЬреЗрд╡реАрдПрдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рд╕рдордЭрдирд╛ рдФрд░ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдПрдХ рдирдИ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ред
рдХреНрдпрд╛ рдХрд░реЗрдВ?
рдореИрдВ - рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - Schat! KISS рдФрд░ YAGNI рд╣рдорд╛рд░реЗ рд╣рд╛рдеред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрд╖ 2018 рдпрд╛рд░реНрдб рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐:
- рдмрд╣реБрдд рдХрдо рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде, UNIX == рд▓рд┐рдирдХреНрд╕
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ ( Systemd , Docker ), рдФрд░ рд╕рдореВрд╣реЛрдВ ( Kubernette , рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг ( Ansible , рдЖрджрд┐) рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ
- рдХреБрд▓ рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рд╢рд╛рд╕рди рдореЗрдВ рдЖ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрдж рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареЛрд╕ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ: рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╛рдЬреБрдХ рдЕрджреНрд╡рд┐рддреАрдп "рд╕реНрдиреЛрдлреНрд▓реЗрдХ рд╕рд░реНрд╡рд░" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп , рдЕрдм рдЙрдкрд░реНрдпреБрдХреНрдд Ansible рдФрд░ Docker рд╕рд╣рд┐рдд рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
- рд░рдирдЯрд╛рдЗрдо рдЖрдБрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдЬреЗрд╡реАрдПрдо рдЦреБрдж рдХреЗ рд▓рд┐рдП ( рдЙрджрд╛рд╣рд░рдг ) рдФрд░ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП ( рдЙрджрд╛рд╣рд░рдг )
- рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рджрд┐рдЦрд╛рдИ рджрд┐рдП: рд╕рд┐рд╕реНрдЯрдо рдФрд░ DevOps рдЗрдВрдЬреАрдирд┐рдпрд░, рдЬреЛ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдкрд░ JVM рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдмрд╛рдж рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рд░рдирдЯрд╛рдЗрдо рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ
рддреЛ рдЪрд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ, рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд┐рдП рдмрд┐рдирд╛, рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╕рднреА "рдЕрдирд╛рд╡рд╢реНрдпрдХ" рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
POSIX рд╢реЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ тЗТ /bin/bash
рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ тЗТ UNIX == рд▓рд┐рдирдХреНрд╕, рдпрджрд┐ рдУрдПрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВJRE / JDK рдЦреЛрдЬ тЗТ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░ рдпрд╣ OpenJDK (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ Oracle JDK, рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), java
рдФрд░ рдХрдВрдкрдиреА рдорд╛рдирдХ рдкреНрд░рдгрд╛рд▓реА рдкрде рдореЗрдВ рд╣реИрдВрд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдЬреЗрд╡реАрдПрдо, рдЯреНрдпреВрдирд┐рдВрдЧ рдЬреЗрд╡реАрдПрдо тЗТ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИрдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ тЗТ рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ тЗТ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВCLASSPATH рдкреАрдврд╝реА тЗТ -cp path/to/my/jars/*
рдпрд╛ рд╕рдо, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, Uber-JARрдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ тЗТ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рд▓реЙрдиреНрдЪ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛- рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдЕрд╕реЗрдВрдмрд▓реА
- рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдмрд╕ рдЪрдпрдирд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ (рд╕рд┐рд╕реНрдЯрдордб, рдбреЙрдХрд░, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЙрд░реНрдо java <opts> -jar <program.jar>
рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдХреЛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ java <opts> -jar <program.jar>
ред рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╡рд┐рдХрд▓реНрдк ( <opts>
) рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА <opts>
рдХрд╛рдлреА рд▓рдВрдмреА рд╣реИ, рддреЛ рдЖрдк рдлрд┐рд░ рд╕реЗ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рдШреЛрд╖рдгрд╛рддреНрдордХред рдХреЛрдИ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЙрдЬрд┐рдХ рдирд╣реАрдВред
рдЙрджрд╛рд╣рд░рдг
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рдиреЗрдХреНрд╕рд╕ 3 рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреИрд╕реЗ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рдирд╣реАрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП - рдмрд╕ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ ./nexus start
(( ./nexus start
) рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ ( ps -ef
) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЖрд╡реЗрджрди рдХреА рддрд░реНрдХреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА ( ps -ef
рдорд╛рдзреНрдпрдо рд╕реЗ) рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбрд┐рдмрдЧ рдореЛрдб ( bash -x ./nexus start
) рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ /usr/java/jdk1.8.0_171-amd64/bin/java -server -Dinstall4j.jvmDir=/usr/java/jdk1.8.0_171-amd64 -Dexe4j.moduleName=/home/nexus/nexus-3.12.1-01/bin/nexus -XX:+UnlockDiagnosticVMOptions -Dinstall4j.launcherId=245 -Dinstall4j.swt=false -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Xms1200M -Xmx1200M -XX:MaxDirectMemorySize=2G -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass -XX:+LogVMOutput -XX:LogFile=../sonatype-work/nexus3/log/jvm.log -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true -Dkaraf.home=. -Dkaraf.base=. -Dkaraf.etc=etc/karaf -Djava.util.logging.config.file=etc/karaf/java.util.logging.properties -Dkaraf.data=../sonatype-work/nexus3 -Djava.io.tmpdir=../sonatype-work/nexus3/tmp -Dkaraf.startLocalConsole=false -Di4j.vpt=true -classpath /home/nexus/nexus-3.12.1-01/.install4j/i4jruntime.jar:/home/nexus/nexus-3.12.1-01/lib/boot/nexus-main.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.apache.karaf.main-4.0.9.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.osgi.core-6.0.0.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.apache.karaf.diagnostic.boot-4.0.9.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.apache.karaf.jaas.boot-4.0.9.jar com.install4j.runtime.launcher.UnixLauncher start 9d17dc87 '' '' org.sonatype.nexus.karaf.NexusMain
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд░рд▓ рдЪрд╛рд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
- рдкрд░рд┐рд╡рд░реНрддрди
/the/long/and/winding/road/to/my/java
рд╕реЗ java
, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкрде рдореЗрдВ рд╣реИ - рдЬрд╛рд╡рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╕реВрдЪреА рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рд░рдгреА рдореЗрдВ рд░рдЦреЗрдВ , рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛ рджреЗрдВ
рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЕрдзрд┐рдХ рд╕реБрдкрд╛рдЪреНрдп рдорд┐рд▓рддрд╛ рд╣реИ JAVA_OPTS = ( '-server' '-Dexe4j.moduleName=/home/nexus/nexus-3.12.1-01/bin/nexus' '-Di4j.vpt=true' '-Di4jv=0' '-Dinstall4j.jvmDir=/usr/java/jdk1.8.0_171-amd64' '-Dinstall4j.launcherId=245' '-Dinstall4j.swt=false' '-Djava.io.tmpdir=../sonatype-work/nexus3/tmp' '-Djava.net.preferIPv4Stack=true' '-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties' '-Dkaraf.base=.' '-Dkaraf.data=../sonatype-work/nexus3' '-Dkaraf.etc=etc/karaf' '-Dkaraf.home=.' '-Dkaraf.startLocalConsole=false' '-XX:+LogVMOutput' '-XX:+UnlockDiagnosticVMOptions' '-XX:+UnlockDiagnosticVMOptions' '-XX:+UnsyncloadClass' '-XX:-OmitStackTraceInFastThrow' '-XX:LogFile=../sonatype-work/nexus3/log/jvm.log' '-XX:MaxDirectMemorySize=2G' '-Xms1200M' '-Xmx1200M' '-classpath /home/nexus/nexus-3.12.1-01/.install4j/i4jruntime.jar:/home/nexus/nexus-3.12.1-01/lib/boot/nexus-main.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.apache.karaf.main-4.0.9.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.osgi.core-6.0.0.jar:/home/nexus/nexus-3.12.1-01/lib/boot/org.apache.karaf.diagnostic.boot-4.0.9.jar:/home/nexus/nexus-3.12.1-01/lib/boot/' ) java ${JAVA_OPTS[*]} com.install4j.runtime.launcher.UnixLauncher start 9d17dc87 '' '' org.sonatype.nexus.karaf.NexusMain
рдЕрдм рддреБрдо рдЧрд╣рд░реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реЛред
Install4j рдПрдХ рдРрд╕рд╛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЬрд╛рд╡рд╛ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред
рд╣рдо Nexus рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдкрд░ рд╕рд╣рдордд рд╣реИрдВ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ
/opt/nexus-<version>
рдореЗрдВ рд╣реА /opt/nexus-<version>
- рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ
/opt/nexus -> /opt/nexus-<version>
рдмрдирд╛рдПрдВ /opt/nexus -> /opt/nexus-<version>
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореВрд▓ рдХреЗ рдмрдЬрд╛рдп
/opt/nexus/bin/nexus
рдмрдЬрд╛рдп рд░рдЦреЗрдВ - рд╣рдорд╛рд░реЗ рдиреЗрдХреНрд╕рд╕ рдХреЗ рд╕рднреА рдбреЗрдЯрд╛
/data/nexus
рд░реВрдк рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЧрдП рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЭреВрда рд╣реЛрдВрдЧреЗ
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд╛ рдмрд╣реБрдд рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдирд┐рдпрддрд┐ рд╣реИ (рд╕рднреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП (Ansible рдореЗрдВ 5-10 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП), рддреЛ рдЪрд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ /opt/nexus
рдмрджрд▓ рджреЗрддреА рд╣реИ - рдлрд┐рд░ рд╣рдо рдиреЗрдХреНрд╕рд╕ рдШрдЯрдХреЛрдВ рдХреЗ рдкрдереЛрдВ рдХреЛ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдлреЙрд░реНрдо рдХрд╛ рд╡рд┐рдХрд▓реНрдк -Dkaraf.*
Apache Karaf , OSGi рдХрдВрдЯреЗрдирд░ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ Nexus рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдкреИрдХ" рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВред рдШрдЯрдХреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ karaf.home
, karaf.base
, karaf.etc
рдФрд░ karaf.data
рдмрджрд▓реЗрдВ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ CLASSPATH рдореЗрдВ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рд╣реА lib/
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ set -o noglob
, рдЗрд╕ рдкреВрд░реА рд╕реВрдЪреА рдХреЛ lib/*
рдмрджрд▓реЗрдВ (рдЖрдкрдХреЛ set -o noglob
рд╕рд╛рде рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд┐рд╕реНрддрд╛рд░ рдмрдВрдж рдХрд░рдирд╛ set -o noglob
)ред
java
рдХреЛ exec java
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП java
рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ java
рд╢реБрд░реВ рди рдХрд░реЗрдВ (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдЧрд╛), рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЛ java
( рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╡рд┐рд╡рд░рдг ) рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ:
> 400, рдкрд╛рд░рджрд░реНрд╢реА, рд╕реНрдкрд╖реНрдЯ, рдШреЛрд╖рдгрд╛рддреНрдордХ, рдХреЛрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддрд░реНрдХ рдХреЗ рдмрдЬрд╛рдп рдХреБрд▓ 27 рд▓рд╛рдЗрдиреЗрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ Ansible / Puppet / Chef рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдПрдиреНрдЯреНрд░реАрдкрд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕рд┐рд╕реНрдЯрдордб рдпреВрдирд┐рдЯ-рдлрд╛рдЗрд▓ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕рдореЗрдВ рдЙрд▓реНрдЯреА рдФрд░ рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
[Unit] Description=Nexus After=network.target [Service] Type=simple LimitNOFILE=1048576 ExecStart=/opt/nexus/bin/nexus User=nexus Restart=on-abort [Install] WantedBy=multi-user.target
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЖрддрд╛ рд╣реИ:
- рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЕрдкрдирд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдорд╛рдЗрдХреНрд░реЛрд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдирд╛рдЦреВрдиреЛрдВ рдореЗрдВ рд╣рдереМрдбрд╝рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
- рд╕рд╛рджрдЧреА (KISS, YAGNI) рдЯреИрдХреНрд╕рд┐рдпреЛрдВ - рдмрд╕ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИред
- рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдЖрдИрдЯреА-рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред рдЪрд▓реЛ рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЖрдИрдЯреА рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рд░рд▓, рд╕реНрдкрд╖реНрдЯ рдФрд░ рдмреЗрд╣рддрд░ рдмрдирд╛рддреЗ рд╣реИрдВ! :)
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд░рдЪрдирд╛рддреНрдордХ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред