рдиреЛрдЯ: рдпрд╣ рдореЗрд░реА рдкреЛрд╕реНрдЯ (рдЕрдВрдЧреНрд░реЗрдЬреА) рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрд╕реА рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЯрд┐рдкреНрдкрдгреА рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореВрд▓ рд╕реНрдерд┐рдд рд╣реИред
TL; DR рд╕рдВрд╕реНрдХрд░рдг: рдореИрдВрдиреЗ рдПрдХ рдХрдореЗрдВрдЯреЛ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдмрд╕ рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рддреИрдирд╛рдд рд╣реИред рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ GitHub рд╕реЗ рдЦреБрдж рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ README рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВ irresistibly Disqus рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рдЬреЛ рд╢рд╛рдпрдж рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рдкреНрд░рдгрд╛рд▓реА рд╣реИ - рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЦреБрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдПред
рдХрдИ рдЕрдиреНрдп "рдореБрдлреНрдд" рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рддрд░рд╣, рдбрд┐рд╕реНрдХрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рдд, рдЖрдкред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рд╕реНрдХрд╕ рд╣рд░ рдкреГрд╖реНрда рдХреЛ "рд╕рдореГрджреНрдз" рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА, рдЗрд╕рдХрд╛ рдирд┐: рд╢реБрд▓реНрдХ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдЬреНрдЮрд╛рдкрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдк $ 9 рдкреНрд░рддрд┐ рдорд╛рд╣ (рдХреЗрд╡рд▓ рдкреНрд▓рд╛рди) рдХреЗ рд▓рд┐рдП "рдХреЗрд╡рд▓" рднреБрдЧрддрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдХреЗрд▓рд╛ рд╣реА рдХреБрдЫ рдмреЗрд╣рддрд░ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рдФрд░ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЯрд┐рдкреНрдкрдгреА рд╕рд░реНрд╡рд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╕рдВрдпреЛрдЧ рд╕реЗ, рдХрдореЗрдВрдЯреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛ рд╣реЛ рдЧрдпрд╛ - рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдерд╛, рдореБрдлреНрдд рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдФрд░ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрджреНрдпрдо ред рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕рдХ рдЖрджрд┐рддреНрдп рдЪрдВрджреНрд░рд╢реЗрдЦрд░ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рдЯрд┐рдкреНрдкрдгреА, рдбрд┐рд╕реНрдХрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 11 рдХреЗрдмреА рд╣реИ , рд╕рд╛рде рд╣реА рдЯрд┐рдкреНрдкрдгреА рдЦреБрдж, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдорд╛рдг рдХреЗ рдЖрджреЗрд╢ рд╣реИрдВ ред рдЖрд╡рд╢реНрдпрдХ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред
рдХрдореЗрдВрдЯреЛ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рдФрд░ рдкреНрд▓рд╕ рдпрд╣ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдЦреИрд░, рдХреЗрдХ рдкрд░ рдПрдХ рдЪреЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╣ рдбрд┐рд╕реНрдХрд╕ рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдФрд░ рдХреНрдпрд╛ рд╕рдкрдирд╛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ?
рдЧреИрд░-рдЙрдиреНрдирдд (рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, Commento рдХреЗ рдкрд╛рд╕ commento.io рдкрд░ рдПрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рд╣реИред рд▓реЗрдЦрдХ рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдорд╛рд╕рд┐рдХ рд╢реБрд▓реНрдХ рдЪреБрдирдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдХрдиреАрдХреА рдХрд╛рд░рдгреЛрдВ рд╕реЗ $ 3 рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╢реНрд░реА рдЪрдВрджреНрд░рд╢реЗрдЦрд░ рдиреЗ рдЙрджрд╛рд░рддрд╛ рд╕реЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП "рдЧреИрд░-рддреБрдЪреНрдЫ рдкреИрдЪ" рдХреЗ рдмрджрд▓реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА .io рдкрд░ рдПрдХ рдореБрдлреНрдд рдЦрд╛рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЦреИрд░, рдореИрдВрдиреЗ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: рдЦреБрдж рдХрдореЗрдВрдЯреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рдкрд░ (рд╣реЛрд╕реНрдЯрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред
рдХрдард┐рдирд╛рдЗрдпреЛрдВ
рдореИрдВ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдХрдИ рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдбреЙрдХрд░ рдХрдВрдкреЛрдЬ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред GitLab рдХрдВрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдХрдореЗрдВрдЯреЛ рдореЗрдВ рд░реЗрдбреА-рдЯреВ-рдпреВрдЬрд╝ рдбреЙрдХрдЯрд░ рдЗрдореЗрдЬ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ - рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХреБрдЫ рдЪреАрдЬреЗрдВ рддрдп рдХрд░рдиреА рдереАрдВред
рдХрдард┐рдирд╛рдИ рдирдВрдмрд░ 1: PostgreSQL
Commento рдХреЛ PostgreSQL рд╕рд░реНрд╡рд░ рдХреЗ рд╣рд╛рд▓рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреЛрдИ рдЕрдиреНрдп SQL рд╕рд░реНрд╡рд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдЦреИрд░, рд╣рдо рдЕрднреА рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред
# 2 рдХрдард┐рдирд╛рдИ: рдХреЛрдИ HTTPS рд╕рд╣рд╛рдпрддрд╛
рдХрдореЗрдВрдЯреЛ рд╕реНрд╡рдпрдВ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЕрднреНрдпрд╛рд╕ рдЗрди рджрд┐рдиреЛрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдПрд╕рдПрд╕рдПрд▓ рдСрдлрд▓реЛрдбрд┐рдВрдЧ рднреА рдХрд░рддрд╛ рд╣реИред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ / рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рд╕рдорд░реНрдерди рдмрд┐рд▓реНрдХреБрд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рдЖрдЦрд┐рд░рдХрд╛рд░, 2019 рдореЗрдВ рдпрд╛рд░реНрдб рдореЗрдВ рдФрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдмрд╣реБрдд рддрд┐рд░рдЫрд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВрдиреЗ рдирдЧрдиреЗрдХреНрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдлреА рдЕрдиреБрднрд╡ рдерд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝, рдХрд┐рдлрд╛рдпрддреА рдФрд░ рд╕реНрдерд┐рд░ рд╣реИред рдФрд░ рдбреЛрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
HTTPS рдиреБрд╕реНрдЦрд╛ рдореЗрдВ рджреВрд╕рд░рд╛ рдШрдЯрдХ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИред рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЕрдереЙрд░рд┐рдЯреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдИрдПрдлрдПрдл рдФрд░ рдореЛрдЬрд┐рд▓рд╛ рдХрд╛ рд╕рджрд╛ рдЖрднрд╛рд░реА рд╣реВрдВ, рдЬреЛ рд╣рд░ рдорд╣реАрдиреЗ рд▓рд╛рдЦреЛрдВ рдлреНрд░реА рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред
рдЪрд▓реЛ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреНрд░рд┐рдкреНрдЯрдмреЙрдЯ рдирд╛рдордХ рдПрдХ рдореБрдлреНрдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ - рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐!
# 3 рдХрдард┐рдирд╛рдИ: рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЪрд┐рдХрди рдЕрдВрдбреЗ рдХреА рд╕рдорд╕реНрдпрд╛
рд▓реЗрдХрд┐рди рдпрд╣ рддрд░рдХреАрдм рдЬреНрдпрд╛рджрд╛ рдкреЗрдЪреАрджрд╛ рд╣реИред
рд╣рдо Nginx рдкрд░ рд╣рдорд╛рд░реЗ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдмрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдХрд┐рд╕реА рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ HTTP рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд▓реЗрдЯ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдбреЛрдореЗрди рдХреЗ рдЖрдкрдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдФрд░, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд╛рдлреА рд╢рд╛рди рд╕реЗ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдбрдореА, рдЕрдорд╛рдиреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп Nginx рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред
- рдиреЗрдЧрдиреЗрдХреНрд╕ рдФрд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдПрдХ рдирдпрд╛, рдЕрдм рд╡реИрдз рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
- рдЬреИрд╕реЗ рд╣реА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд╕рд░реНрдмреЛрдЯ "рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб" рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░ 12 рдШрдВрдЯреЗ рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЙрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред
- рдЬрдм рдкрд▓ рдЖ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдирд╡реАрдиреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рд░реНрдЯрд┐рдлреЛрдЯ рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред
рдХрдард┐рдирд╛рдИ рдирдВрдмрд░ 4: рдХреБрдЫ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд░рд┐рдмреВрдЯ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рдмрдЪрд╛рдИ рдЬрд╛рдПрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрд╛рдХрд┐ рд▓реЗрдЯ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рди рдХрд░реЗ, рдкреВрд░реА рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рджреЛрдиреЛрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдбреЙрдХрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рд┐рд╕реНрдЯрдореЛ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЯрд┐рдкреНрдкрдгреА рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рдереАред рд╡реЙрд▓реНрдпреВрдо рдХреЛ external
рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ external
, рдЗрд╕рд▓рд┐рдП рдбреЙрдХрд░ docker-compose down -v
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп рдбреЙрдХрд░ рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕рдм рд╕рд╛рде рд▓рд╛рдПрдВ
рдЕрдм рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдВрдХрдбрд╝рд╛ рдЪрд╛рд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП depends_on
рд╡рд┐рдХрд▓реНрдк рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдХрд┐ рдХрдВрдЯреЗрдирд░ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдВред
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ Commento рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢реЗрд╖ рд▓реЗрдЦ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ GitHub рдкрд░ рдХреЛрдб рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЦреИрд░, рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рдЪрд┐рддреНрд░ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореЗрд░реА "рд░рдЪрдирд╛" рдореЗрдВ рдЪрд╛рд░ рд╕реЗрд╡рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
certbot
- рдИрдПрдлрдПрдл рд╕реЗ certbot
рдЙрдкрдпреЛрдЧрд┐рддрд╛nginx
- рдПрд╕рдПрд╕рдПрд▓ рдСрдлрд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реАapp
- рдХрдореЗрдВрдЯреЛ рд╕рд░реНрд╡рд░postgres
- PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕
Docker docker-compose.yml
рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ docker-compose.yml
рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдШреЛрд╖рдгрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ commento_network
docker-compose.yml
рдиреЗрдЯрд╡рд░реНрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рддреАрди рдЦрдВрдб, рдЬрд┐рдирдореЗрдВ рд╕реЗ рджреЛ рдмрд╛рд╣рд░реА рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдмрд╛рд╣рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП):
- Commento_postgres_volume рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП PostgreSQL рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдордзреНрдпрд╕реНрде, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ, рдЖрджрд┐ред
certbot_etc_volume
рдореЗрдВ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВред
nginx
Nginx рдХрдВрдЯреЗрдирд░ рдЕрд▓реНрдкрд╛рдЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╣рд▓реНрдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЫрд╡рд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- рд▓рд╛рдЗрди 3 ( ARRGHHH, Habr рдХреЛрдб рдореЗрдВ рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред ) рдПрдХ рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░ рдкрдВрдЬреАрдХреГрдд рд╣реИ рддрд╛рдХрд┐ рдХрдВрдЯреЗрдирд░ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ Nginx рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПред
- рд▓рд╛рдЗрди 27
certbot
рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ certbot
рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрд╕рдПрд╕рдПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ certbot
рдЖрдиреЗ рддрдХ certbot
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдиреЗрдЧреНрдиреЗрдХреНрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджреЗрдЧрд╛ред - рд▓рд╛рдЗрди 30 рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ, рд╣рд░ рджрд╕ рд╕реЗрдХрдВрдб рдореЗрдВ, рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлреНрд▓реИрдЧ рдлрд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред
.nginx-reload
, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, .nginx-reload
рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдлрд╛рдЗрд▓ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рднреА рдмрдирд╛рддреА рд╣реИред - рд▓рд╛рдЗрди 34 рдирдЧрдиреЗрдХреНрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
exec
рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╢реЗрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирдЧреАрдиреЗрдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдХрдореЗрдВрдЯреЛ рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЬреЛ рдирд┐рдЧреНрдиреЗрдХреНрд╕ рдХреЛ commento
рдХрдВрдЯреЗрдирд░ рдореЗрдВ HTTPS рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ:
server { listen [::]:443 ssl ipv6only=on; listen 443 ssl; server_tokens off; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name __DOMAIN__; location / { proxy_pass http://app:8080/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ssl_certificate /etc/letsencrypt/live/__DOMAIN__/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/__DOMAIN__/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; } server { listen 80 default_server; listen [::]:80 default_server; server_tokens off; server_name __DOMAIN__; location /.well-known/acme-challenge/ { root /var/www/certbot; }
рдкрд╣рд▓рд╛ рд╕рд░реНрд╡рд░ рдмреНрд▓реЙрдХ (рд▓рд╛рдЗрди 1-21 ) рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ HTTPS рдФрд░ рдЕрдЧреНрд░реЗрд╖рдг рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЪрд▓реЛ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдЯрдмреНрд╕)ред
рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рдбреЛрдореЗрди рдХреЛ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд▓рд╛рдЗрди __DOMAIN__
рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рдмреНрд▓реЙрдХ (рд▓рд╛рдЗрдиреЗрдВ 23-38 ) HTTP рд╕рд░реНрд╡рд░ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ, рдЬреЛ рдбреЛрдореЗрди рд╕реНрд╡рд╛рдорд┐рддреНрд╡ (рддрдерд╛рдХрдерд┐рдд "рдПрд╕реАрдПрдордИ рдЪреБрдиреМрддреА") рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдЕрдиреБрд░реЛрдз HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрддреЗ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред
certbot
рд╣рдорд╛рд░реА рд╕рд░реНрдкреЛрдЯ рдЫрд╡рд┐ рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:
рдЗрд╕рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рджреМрд░рд╛:
- рд▓рд╛рдЗрди 3 , рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣, рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд┐рдпрдорд┐рдд рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
- рд▓рд╛рдЗрдиреЗрдВ 17-19 рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
- рдФрд░ 22-25 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ - рдХрд┐ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдХрд╛рдВрдЯрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдХрдВрдЯреЗрдирд░ рдХреА рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ 30-50 рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рдПрдХ рдбрдореА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЬреЛ рдирдЧреАрдиреЗрдХреНрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдЗрд╕ рдмреАрдЪ, Nginx, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
- рдПрдХ рдмрд╛рд░ Nginx рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд░реНрдмреЛрдЯ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдПрдХ рд╡реИрдз рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
- рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЬреИрд╕реЗ рд╣реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ,
.nginx-reload
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, Nginx рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
- рд▓рд╛рдЗрди 54 рдиреЗрдЧрдиреЗрдХреНрд╕ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ - рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИред
- рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рдж ( 58-63 рдкрдВрдХреНрддрд┐рдпрд╛рдБ), рд╡рд╣ рдЪрдХреНрд░ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд╣рд░ 12 рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдирд╡реАрдиреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдкреБрди: рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдЧреНрдиреЗрдХреНрд╕ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
app
рдФрд░ postgres
рдХрдВрдЯреЗрдирд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдореВрд▓ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╕рд┐рд╕реНрдЯрдордб рд╕рд░реНрд╡рд┐рд╕
рдЗрд╕ рдкрд╣реЗрд▓реА рдХрд╛ рдЕрдВрддрд┐рдо рдЯреБрдХрдбрд╝рд╛ systemd commento.service
рдпреВрдирд┐рдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ , рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ /etc/systemd/system/commento.service
рдореЗрдВ рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рдордп рдкрд░ рд╢реБрд░реВ рд╣реЛ:
[Unit] Description=Commento server [Service] TimeoutStopSec=30 WorkingDirectory=/opt/commento ExecStartPre=-/usr/bin/docker volume create commento_postgres_volume ExecStartPre=-/usr/bin/docker volume create certbot_etc_volume ExecStartPre=-/usr/local/bin/docker-compose -p commento down -v ExecStart=/usr/local/bin/docker-compose -p commento up --abort-on-container-exit ExecStop=/usr/local/bin/docker-compose -p commento down -v [Install] WantedBy=multi-user.target
рд░реЗрдЦрд╛:
- рд▓рд╛рдЗрди 6 рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб
/opt/commento
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред - рдпрджрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд▓рд╛рдЗрдиреЗрдВ 7-8 рдмрд╛рд╣рд░реА рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рддреА рд╣реИрдВред
- рдкрдВрдХреНрддрд┐ 9 рдореЗрдВ , рдкрд┐рдЫрд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╡рд╢реЗрд╖ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВред рдмрд╛рд╣рд░реА рдорд╛рддреНрд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВред
- рд▓рд╛рдЗрди 10 рдбреЛрдХрд░ рдХрдВрдкреЛрдЬ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЙрдиреНрдЪ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред -
--abort-on-container-exit
рдлреНрд▓реИрдЧ --abort-on-container-exit
рдкреВрд░реЗ рдЭреБрдВрдб --abort-on-container-exit
рдЬрдм рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА --abort-on-container-exit
ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рд┐рд╕реНрдЯрдордб рдХрдо рд╕реЗ рдХрдо рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реЗрд╡рд╛ рдмрдВрдж рд╣реЛ рдЧрдИ рд╣реИред - рд▓рд╛рдЗрди 11 рдХрдВрдЯреЗрдирд░, рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдл рдФрд░ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, docker-compose.yml
рдореЗрдВ рдХреЗрд╡рд▓ рдЪрд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ README рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреЛрдб рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдЕрдзреАрди рд╣реИред
рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!