рдпрд╕ рд▓реЗрдЦрдорд╛, рдо Plesk рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрдпрд╛рдирд▓ рд░ Github рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ CI/CD рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреЗрдЫреБред рдЖрдЬ рд╣рд╛рдореА "Helloworld" рдирд╛рдордХреЛ рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдиреЗ рдЫреМрдБред рдпреЛ рдлреНрд▓рд╛рд╕реНрдХ рдкрд╛рдЗрдерди рдлреНрд░реЗрдорд╡рд░реНрдХрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рд╕реЗрд▓рд░реА рдХрд╛рдорджрд╛рд░рд╣рд░реВ рд░ рдПрдЩреНрдЧреБрд▓рд░ 8 рдлреНрд░рдиреНрдЯрдПрдиреНрдбрд╕рдБрдЧред
рднрдгреНрдбрд╛рд░рд╣рд░реВрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВ:
рд▓реЗрдЦрдХреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧрдорд╛, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░ рдпрд╕рдХреЛ рднрд╛рдЧрд╣рд░реВ рд╣реЗрд░реНрдиреЗрдЫреМрдВред рджреЛрд╕реНрд░реЛрдорд╛, рд╣рд╛рдореА рдХрд╕рд░реА Plesk рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ рд░ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ (DB, RabbitMQ, Redis, Docker, рдЖрджрд┐) рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВред
рддреЗрд╕реНрд░реЛ рднрд╛рдЧрдорд╛, рд╣рд╛рдореА рдЕрдиреНрддрддрдГ рд╣рд╛рдореНрд░реЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд▓рд╛рдИ рд╕рд░реНрднрд░рдорд╛ рдбреЗрдн рд░ рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╕рд░реА рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВред рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рд╕рд░реНрднрд░рдорд╛ рд╕рд╛рдЗрдЯ рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреМрдВред
рд░ рд╣реЛ, рдореИрд▓реЗ рдЖрдлреНрдиреЛ рдкрд░рд┐рдЪрдп рджрд┐рди рдмрд┐рд░реНрд╕реЗрдВред рдореЗрд░реЛ рдирд╛рдо рдУрд▓реЗрдЧ рдмреЛрд░реНрдЬреЛрдн рд╣реЛ, рдо Domclick рдорд╛ рдореЛрд░реНрдЯрдЧреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ CRM рдЯреЛрд▓реАрдорд╛ рдлреБрд▓рд╕реНрдЯреНрдпрд╛рдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдБред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рдкрд╣рд┐рд▓реЗ, рджреБрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдгреНрдбрд╛рд░рд╣рд░реВ рд╣реЗрд░реМрдВ - рдмреНрдпрд╛рдХрдПрдиреНрдб рд░ рдЕрдЧрд╛рдбрд┐ - рд░ рдХреЛрдбрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред
рдмреНрдпрд╛рдХрдПрдиреНрдб: рдлреНрд▓рд╛рд╕реНрдХ+рд╕реЗрд▓реЗрд░реА
рдкрдЫрд╛рдбрд┐рдХреЛ рднрд╛рдЧрдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рдПрдЙрдЯрд╛ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдПрдБ рдЬреБрди рдкрд╛рдЗрдерди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдмреАрдЪ рдзреЗрд░реИ рд▓реЛрдХрдкреНрд░рд┐рдп рдЫ: рдлреНрд▓рд╛рд╕реНрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдПрдкреАрдЖрдИрдХреЛ рд▓рд╛рдЧрд┐) рд░ рд╕реЗрд▓реЗрд░реА (рдХрд╛рд░реНрдп рд▓рд╛рдордХреЛ рд▓рд╛рдЧрд┐)ред SQLAchemy ORM рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред Alembic рдорд╛рдЗрдЧреНрд░реЗрд╕рди рдХреЛ рд▓рд╛рдЧреА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╣реНрдпрд╛рдиреНрдбрд▓рд╣рд░реВрдорд╛ JSON рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ - Marshmallowред
╨Т
/ping
- рдЙрдкрд▓рдмреНрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди;- рджрд░реНрддрд╛, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдбрд┐-рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд░ рдЕрдзрд┐рдХреГрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╣реНрдпрд╛рдиреНрдбрд▓рд╣рд░реВ;
- рдПрдЙрдЯрд╛ рдЗрдореЗрд▓ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЬрд╕рд▓реЗ рд╕реЗрд▓рд░реА рд▓рд╛рдордорд╛ рдХрд╛рд░реНрдп рд░рд╛рдЦреНрдЫред
send_mail_task
.
рдлреЛрд▓реНрдбрд░рдорд╛
docker
рджреБрдИ Dockerfiles рд╕рдВрдЧ (base.dockerfile
рдПрдХ рд╡рд┐рд░рд▓реИ рдкрд░рд┐рд╡рд░реНрддрди рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд░Dockerfile
рдореБрдЦреНрдп рд╕рднрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐);.env_files
- рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВрд╕рдБрдЧ рдлрд╛рдЗрд▓рд╣рд░реВрд╕рдБрдЧред
рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдореВрд▓рдорд╛ рдЪрд╛рд░ рдбрдХрд░-рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓рд╣рд░реВ рдЫрдиреН:
docker-compose.local.db.yml
рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдиреАрдп рдбрд╛рдЯрд╛рдмреЗрд╕ рдЙрдард╛рдЙрди;docker-compose.local.workers.yml
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛, рдбрд╛рдЯрд╛рдмреЗрд╕, Redis рд░ RabbitMQ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд╡реГрджреНрдзрд┐рдХреЛ рд▓рд╛рдЧрд┐;docker-compose.test.yml
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдордпрдорд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдЙрди;docker-compose.yml
рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреАред
рд░ рд╣рд╛рдореАрд▓реЗ рд░реБрдЪрд┐ рд░рд╛рдЦреЗрдХреЛ рдЕрдиреНрддрд┐рдо рдлреЛрд▓реНрдбрд░ -
deploy.sh
- рдорд╛рдЗрдЧреНрд░реЗрд╕рди рд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд╕реБрд░реБрд╡рд╛рддред Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдирд┐рд░реНрдорд╛рдг рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдг рдкрдЫрд┐ рд╕рд░реНрднрд░рдорд╛ рдЪрд▓реНрдЫ;rollback.sh
- рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд░реЛрд▓рдмреНрдпрд╛рдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛;curl_tg.sh
- рдЯреЗрд▓реАрдЧреНрд░рд╛рдордорд╛ рддреИрдирд╛рддреА рд╕реВрдЪрдирд╛рд╣рд░реВ рдкрдард╛рдЙрдБрджреИред
Angular рдорд╛ Frontend
- рдИрдореЗрд▓ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рд░рдо рд░ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдмрдЯрди рднрдПрдХреЛ рдореБрдЦреНрдп рдкреГрд╖реНрдаред
- рд▓рдЧрдЗрди рдкреГрд╖реНрдаред
- рджрд░реНрддрд╛ рдкреГрд╖реНрдаред
рдореБрдЦреНрдп рдкреГрд╖реНрда рддрдкрд╕реНрд╡реА рджреЗрдЦрд┐рдиреНрдЫ:
рд░реВрдЯрдорд╛ рджреБрдИ рдлрд╛рдЗрд▓рд╣рд░реВ рдЫрдиреН Dockerfile
╨╕ docker-compose.yml
, рд╕рд╛рдереИ рдкрд░рд┐рдЪрд┐рдд рдлреЛрд▓реНрдбрд░ .ci-cd
рдмреНрдпрд╛рдХ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рддреБрд▓рдирд╛рдорд╛ рдереЛрд░реИ рдереЛрд░реИ рд▓рд┐рдкрд┐рд╣рд░реВрд╕рдБрдЧ (рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдгрдХрд╛ рд▓рд╛рдЧрд┐ рд▓рд┐рдкрд┐рд╣рд░реВ рд╣рдЯрд╛рдЗрдпреЛ)ред
Plesk рдорд╛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реБрд░реБ рдЧрд░реНрджреИ
Plesk рд╕реЗрдЯ рдЕрдк рдЧрд░реЗрд░ рд░ рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ рд╕реБрд░реБ рдЧрд░реМрдВред
рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ
Plesk рдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ:
Docker
Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рджреГрд╢реНрдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди;Git
рд╕рд░реНрднрд░рдорд╛ рддреИрдирд╛рддреА рдЪрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди;Let's Encrypt
рдирд┐:рд╢реБрд▓реНрдХ TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди (рд░ рд╕реНрд╡рдд: рдирд╡реАрдХрд░рдг)Firewall
рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиред
рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗрдХреНрд╕рдирдорд╛ Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓ рдорд╛рд░реНрдлрдд рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
рд╣рд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╕реНрддреГрдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИрдиреМрдВ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рдбреЗрдореЛ рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрдиреЗрдЫред
рд╕рджрд╕реНрдпрддрд╛ рд░ рд╕рд╛рдЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдЕрд░реНрдХреЛ, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ helloworld.ru рд╡реЗрдмрд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рддреНрдпрд╣рд╛рдБ dev.helloworld.ru рд╕рдмрдбреЛрдореЗрди рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
- helloworld.ru рдбреЛрдореЗрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧрдЗрди-рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
рдкреГрд╖реНрдардХреЛ рддрд▓рдХреЛ рдмрд╛рдХрд╕ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН Let's Encrypt рдХреЛ рд╕рд╛рде рдбреЛрдореЗрди рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНрдпрджрд┐ рд╣рд╛рдореА рд╕рд╛рдЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ HTTPS рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ: - рдЕрд░реНрдХреЛ, рдпреЛ рд╕рджрд╕реНрдпрддрд╛рдорд╛, рдПрдЙрдЯрд╛ рд╕рдмрдбреЛрдореЗрди dev.helloworld.ru рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдГрд╢реБрд▓реНрдХ TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрдирд┐ рдЬрд╛рд░реА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ):
рд╕рд░реНрднрд░ рдЕрд╡рдпрд╡рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ
рд╣рд╛рдореАрд╕рдБрдЧ рд╕рд░реНрднрд░ рдЫ рдУрдПрд╕ рдбреЗрдмрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ реп.резреи рд░ рд╕реНрдерд╛рдкрдирд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрдпрд╛рдирд▓ Plesk Obsidian 18.0.27.
рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
- PostgreSQL (рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛, рддреНрдпрд╣рд╛рдБ dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд▓рд╛рдЧреА рджреБрдИ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдВрдЧ рдПрдХ рд╕рд░реНрднрд░ рд╣реБрдиреЗрдЫ)ред
- RabbitMQ (рдПрдЙрдЯреИ, рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдлрд░рдХ vhosts рд╕рдВрдЧ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг)ред
- рджреБрдИ Redis рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ (dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐)ред
- рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА (рдмрдирд╛рдЗрдПрдХреЛ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВрдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐)ред
- рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдХреЛ рд▓рд╛рдЧрд┐ UIред
PostgreSQL
Plesk рдкрд╣рд┐рд▓реЗ рдиреИ PostgreSQL DBMS рд╕рдБрдЧ рдЖрдЙрдБрдЫ, рддрд░ рдкрдЫрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЗрди (Plesk Obsidian рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛
рдиреЗрдЯрдорд╛ рдбреЗрдмрд┐рдпрдирдорд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЫрдиреН (
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
PostgreSQL рдорд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩреНрд╣рд░реВ рдЫрдиреН рднрдиреНрдиреЗ рдХреБрд░рд╛рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдЪреНрдпрд╛рдЙрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ /etc/postgresql/12/main/postgresql.conf
рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХрд╛рд╣рд░реВрд▓рд╛рдИред рдпрд╣рд╛рдБ рдзреНрдпрд╛рди рджрд┐рдиреБ рдкрд░реНрдЫ рдХрд┐ рддреНрдпрд╕реНрддрд╛ рдХреНрдпрд╛рд▓рдХреБрд▓реЗрдЯрд░рд╣рд░реВ рдЬрд╛рджреБрдИ рдмреБрд▓реЗрдЯ рд╣реЛрдЗрдирдиреН, рд░ рдЖрдзрд╛рд░рд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░ рдХреНрд╡реЗрд░реА рдЬрдЯрд┐рд▓рддрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдердк рд╕рдЯреАрдХ рд░реВрдкрдорд╛ рдЯреНрдпреБрди рдЧрд░реНрдиреБрдкрд░реНрджрдЫред рддрд░ рдпреЛ рд╕реБрд░реБ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫред
рдХреНрдпрд╛рд▓рдХреБрд▓реЗрдЯрд░рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рдореА рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ postgresql.conf
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреЛрд░реНрдЯ 5432 рдЕрд░реНрдХреЛрдорд╛ (рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ - 53983).
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдкрдЫрд┐, рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде postgresql-рд╕рд░реНрднрд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
service postgresql restart
рд╣рд╛рдореАрд▓реЗ PostgreSQL рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдЕрдм рдПрдХ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ, dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ, рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдиреБрд╣реЛрд╕реН:
$ su - postgres
postgres:~$ create database hw_dev_db_name;
CREATE DATABASE
postgres:~$ create user hw_dev_db_user with password 'hw_dev_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_dev_db_name to hw_dev_db_user;
GRANT
postgres:~$ create database hw_prod_db_name;
CREATE DATABASE
postgres:~$ create user hw_prod_db_user with password 'hw_prod_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_prod_db_name to hw_prod_db_user;
GRANT
рдЦрд░рдЧреЛрд╢ MQ
рд╕реЗрд▓рд░реАрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдиреНрджреЗрд╢ рдмреНрд░реЛрдХрд░, RabbitMQ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВред рдпрд╕рд▓рд╛рдИ рдбреЗрдмрд┐рдпрдирдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рдПрдХрджрдо рд╕рд░рд▓ рдЫ:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang erlang-nox
sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
рд╕реНрдерд╛рдкрдирд╛ рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ vhosts, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░ рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
sudo rabbitmqctl add_user hw_dev_amqp_user hw_dev_amqp_password
sudo rabbitmqctl set_user_tags hw_dev_amqp_user administrator
sudo rabbitmqctl add_vhost hw_dev_vhost
sudo rabbitmqctl set_permissions -p hw_dev_vhost hw_dev_amqp_user ".*" ".*" ".*"
sudo rabbitmqctl add_user hw_prod_amqp_user hw_prod_amqp_password
sudo rabbitmqctl set_user_tags hw_prod_amqp_user administrator
sudo rabbitmqctl add_vhost hw_prod_vhost
sudo rabbitmqctl set_permissions -p hw_prod_vhost hw_prod_amqp_user ".*" ".*" ".*"
Redis
рдЕрдм рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрддрд┐рдо рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реМрдВ - Redisред рдпрд╕рд▓рд╛рдИ рд╕реЗрд▓реЗрд░реА рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫред
рд╣рд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ Redis рд╕рдБрдЧ рджреБрдИ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЙрдард╛рдЙрдиреЗрдЫреМрдВ Docker
Plesk рдХреЛ рд▓рд╛рдЧреАред
- рд╣рд╛рдореА Plesk рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ, рдПрдХреНрд╕реНрдЯреЗрдиреНрд╕рди рд╕реЗрдХреНрд╕рдирдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдбрдХрд░ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдЦреЛрдЬреНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐: рд╢реБрд▓реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рд┐рдиреНрдЫ):
- рд╕реНрдерд╛рдкрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдЦреЛрдЬ рдорд╛рд░реНрдлрдд рдЫрд╡рд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН
redis bitnami
рд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрдирд╛: - рд╣рд╛рдореА рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрдЫреМрдВ: рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрдзрд┐рдХрддрдо рдЖрд╡рдВрдЯрд┐рдд RAM рдЖрдХрд╛рд░, рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рдорд╛ рдкрд╛рд╕рд╡рд░реНрдб, рд░ рднреЛрд▓реНрдпреБрдо рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
- рд╣рд╛рдореА рдкреНрд░реЛрдб рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ 2-3 рдЪрд░рдгрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдЫреМрдВ, рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рд╣рд╛рдореА рдХреЗрд╡рд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ: рдкреЛрд░реНрдЯ, рдкрд╛рд╕рд╡рд░реНрдб, RAM рд╕рд╛рдЗрдЬ рд░ рд╕рд░реНрднрд░рдорд╛ рднреЛрд▓реНрдпреБрдо рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреЗ рдмрд╛рдЯреЛ:
рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА
рдЖрдзрд╛рд░рднреВрдд рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╕рд░реНрднрд░рдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рдбрдХрд░ рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░ рд░рд╛рдЦреНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫред рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рд╕рд░реНрднрд░ рд╕реНрдкреЗрд╕ рдЕрдм рдПрдХрджрдо рд╕рд╕реНрддреЛ рдЫ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдПрдХ DockerHub рд╕рджрд╕реНрдпрддрд╛ рднрдиреНрджрд╛ рд╕рд╕реНрддреЛ), рд░ рдПрдХ рдирд┐рдЬреА рднрдгреНрдбрд╛рд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫред
рд╣рд╛рдореА рдЪрд╛рд╣рдиреНрдЫреМрдВ:
- рдкрд╛рд╕рд╡рд░реНрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдбрдХрд░ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕рдмрдбреЛрдореЗрдирдорд╛ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп
https://docker.helloworld.ru ; - рднрдгреНрдбрд╛рд░рдорд╛ рдЫрд╡рд┐рд╣рд░реВ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ UI, рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ
https://docker-ui.helloworld.ru .
рдпреЛ рдЧрд░реНрди:
- рд╣рд╛рдореНрд░реЛ рд╕рджрд╕реНрдпрддрд╛рдорд╛ Plesk рдорд╛ рджреБрдИрд╡рдЯрд╛ рд╕рдмрдбреЛрдореЗрдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ: docker.helloworld.ru рд░ docker-ui.helloworld.ru, рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реМрдВ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдЧрд░реМрдВред
- рдлрд╛рдЗрд▓рд▓рд╛рдИ docker.helloworld.ru рд╕рдмрдбреЛрдореЗрди рдлреЛрд▓реНрдбрд░рдорд╛ рдердкреНрдиреБрд╣реЛрд╕реН
docker-compose.yml
рдпреЛ рдЬрд╕реНрддреИ рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧ:version: "3" services: docker-registry: image: "registry:2" restart: always ports: - "53985:5000" environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_REALM: basic-realm REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data volumes: - ./.docker-registry.htpasswd:/auth/.htpasswd - ./data:/data docker-registry-ui: image: konradkleine/docker-registry-frontend:v2 restart: always ports: - "53986:80" environment: VIRTUAL_HOST: '*, https://*' ENV_DOCKER_REGISTRY_HOST: 'docker-registry' ENV_DOCKER_REGISTRY_PORT: 5000 links: - 'docker-registry'
- SSH рдЕрдиреНрддрд░реНрдЧрдд, рд╣рд╛рдореА рдбрдХрд░ рднрдгреНрдбрд╛рд░рдорд╛ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рд╛рдзрд┐рдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ .htpasswd рдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗрдЫреМрдВ:
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
- рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╕рдЩреНрдХрд▓рди рд░ рдЙрдард╛рдЙрдиреБрд╣реЛрд╕реН:
docker-compose up -d
- рд░ рд╣рд╛рдореАрд▓реЗ Nginx рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ Plesk рдорд╛рд░реНрдлрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
рдирд┐рдореНрди рдЪрд░рдгрд╣рд░реВ docker.helloworld.ru рд░ docker-ui.helloworld.ru рд╕рдмрдбреЛрдореЗрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
рдЦрдгреНрдб рджреЗрд╡ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЗрдЯ рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдбрдХрд░ рдкреНрд░реЛрдХреНрд╕реА рдирд┐рдпрдо:
рд░ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН:
- рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ рдХрд┐ рд╣рд╛рдореА рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдмрд╛рдЯ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
$ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
- docker-ui.helloworld.ru subdomain рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдкрдирд┐ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:
рдЬрдм рддрдкрд╛рдЗрдБ рдмреНрд░рд╛рдЙрдЬ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдмреНрд░рд╛рдЙрдЬрд░рд▓реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдиреНрдбреЛ рджреЗрдЦрд╛рдЙрдиреЗрдЫ рдЬрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рддреНрдпрд╕ рдкрдЫрд┐, рд╣рд╛рдореА рднрдгреНрдбрд╛рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрдардорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╣реБрдиреЗрдЫреМрдВ (рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдЦрд╛рд▓реА рд╣реБрдиреЗрдЫ):
Plesk рдлрд╛рдпрд░рд╡рд╛рд▓рдорд╛ рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрджреИ
рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд░ рдмрд╛рд╣реНрдп рдиреЗрдЯрд╡рд░реНрдХрдмрд╛рдЯ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫрдиреНред
рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдХреЛ Plesk рдХреЛ рд▓рд╛рдЧреА рдлрд╛рдпрд░рд╡рд╛рд▓ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдХрд╕рд░реА рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реМрдВред
- рдЬрд╛рдК рддреНрдпрд╣рд╛рдБ рдЙрдкрдХрд░рдг рд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ > рд╕реЗрдЯрд┐рдЩрд╣рд░реВ > рдлрд╛рдпрд░рд╡рд╛рд▓:
- рдЬрд╛рдК рддреНрдпрд╣рд╛рдБ Plesk рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдорд╣рд░реВ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН > рдЕрдиреБрдХреВрд▓рди рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реН рд░ рдбрдХрд░ рд╕рдмрдиреЗрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдореНрди TCP рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН (172.0.0.0 / 8):
RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
рд░реЗрдбрд┐рд╕: 32785, 32786 - рд╣рд╛рдореА рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рдорд╛ PostgreSQL рдкреЛрд░реНрдЯрд╣рд░реВ рд░ RabbitMQ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрдпрд╛рдирд▓рд╣рд░реВ рдЦреЛрд▓реНрдиреЗ рдирд┐рдпрдо рдкрдирд┐ рдердкреНрдиреЗрдЫреМрдВ:
- рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдмрдЯрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдирд┐рдпрдорд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ CI/CD рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ
рд╕рдмреИрднрдиреНрджрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рднрд╛рдЧрдорд╛ рдЬрд╛рдФрдВ - рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рд░ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рд░реНрднрд░рдорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрдиреЗред
рдпреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреБрдИ рднрд╛рдЧрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫ:
- рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ (рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХрд╛ рд▓рд╛рдЧрд┐) - Github рд╕рд╛рдЗрдбрдорд╛;
- рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди (рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд▓рд╛рдЧрд┐) рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрджреИ - рд╕рд░реНрднрд░рдорд╛ред
Plesk рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдкрд╣рд┐рд▓реЗ рджреЛрд╕реНрд░реЛ рдмрд┐рдиреНрджреБрд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реМрдВ (рдХрд┐рдирдХрд┐ рдкрд╣рд┐рд▓реЛ рдпрд╕рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ)ред
рд╣рд╛рдореА Plesk рдХреЛ рд▓рд╛рдЧреА Git рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫреМрдВред
рдмреНрдпрд╛рдХрдПрдиреНрдб рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ Helloworld рд╡реЗрдмрд╕рд╛рдЗрдЯрдХреЛ рд╕рджрд╕реНрдпрддрд╛рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ рд░ Git рдЙрдкрдЦрдгреНрдбрдорд╛ рдЬрд╛рдиреНрдЫреМрдВ:
- "рд░рд┐рдореЛрдЯ рдЧрд┐рдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА" рдлрд┐рд▓реНрдбрдорд╛ рд╣рд╛рдореНрд░реЛ Github рднрдгреНрдбрд╛рд░рдорд╛ рд▓рд┐рдЩреНрдХ рдШреБрд╕рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлреЛрд▓реНрдбрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
httpdocs
рдЕрд░реНрдХреЛрд▓рд╛рдИ (рдЬрд╕реНрддреИред/httpdocs/hw_back
): - рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдмрд╛рдЯ SSH рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░
рдердкреНрдиреБрд╣реЛрд╕реН рдпреЛ Github рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдЫред - рдЪрд░рдг 2 рдорд╛ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдареАрдХ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореАрд▓рд╛рдИ Plesk рдорд╛ рднрдгреНрдбрд╛рд░ рдкреГрд╖реНрдардорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░рд┐рдиреЗрдЫред рдЕрдм рд╣рд╛рдореАрд▓реЗ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛рдорд╛ рдХрдорд┐рдЯрд╣рд░реВрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рднрдгреНрдбрд╛рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрди, рдЬрд╛рдиреБрд╣реЛрд╕реН рднрдгреНрдбрд╛рд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд░ рдореВрд▓реНрдп рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
Webhook URL
(рдЧрд┐рдердм рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдкрдЫрд┐ рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрдиреЗрдЫ): - рдЕрдШрд┐рд▓реНрд▓реЛ рдЕрдиреБрдЪреНрдЫреЗрджрдмрд╛рдЯ рд╕реНрдХреНрд░рд┐рдирдХреЛ рдХрд╛рд░реНрдп рдХреНрд╖реЗрддреНрд░рдорд╛, рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕реБрд░реБ рдЧрд░реНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
cd {REPOSITORY_ABSOLUTE_PATH} .ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID}
рдХрд╣рд╛рдБ:
{REPOSITORY_ABSOLUTE_PATH}
- рд╕рд░реНрднрд░рдорд╛ рдмреНрдпрд╛рдХрдЗрдиреНрдб рднрдгреНрдбрд╛рд░рдХреЛ рдкреНрд░реЛрдб рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреЗ рдмрд╛рдЯреЛ;
{ENV}
- рд╡рд╛рддрд╛рд╡рд░рдг (dev / prod), рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛prod
;
{DOCKER_REGISTRY_HOST}
- рд╣рд╛рдореНрд░реЛ рдбрдХрд░ рднрдгреНрдбрд╛рд░рдХреЛ рд╣реЛрд╕реНрдЯ
{TG_BOT_TOKEN}
- рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдмреЛрдЯ рдЯреЛрдХрди;
{TG_CHAT_ID}
- рд╕реВрдЪрдирд╛рд╣рд░реВ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЪреНрдпрд╛рдЯ/рдЪреНрдпрд╛рдирд▓рдХреЛ IDредрд▓рд┐рдкрд┐ рдЙрджрд╛рд╣рд░рдг:
cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/ .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
- рд╣рд╛рдореНрд░реЛ рд╕рджрд╕реНрдпрддрд╛рдмрд╛рдЯ рдбрдХрд░ рд╕рдореВрд╣рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдердкреНрдиреБрд╣реЛрд╕реН (рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХреНрдЫрдиреН):
sudo usermod -aG docker helloworld_admin
рдмреНрдпрд╛рдХрдЗрдиреНрдб рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд░ рдлреНрд░рдиреНрдЯрдПрдиреНрдбрдХреЛ рд▓рд╛рдЧрд┐ dev рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдорд╛рди рд░реВрдкрдорд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░рд┐рдПрдХреЛ рдЫред
Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рддреИрдирд╛рддреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди
Github рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рд╣рд╛рдореНрд░реЛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВред
рдмреНрдпрд╛рдХрдЗрдиреНрдб
рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ
рддрд░ рдпрд╕рд▓рд╛рдИ рдкрд╛рд░реНрд╕ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓рд╛рдИ Github рдорд╛ рдЪрд╛рд╣рд┐рдиреЗ рдЧреЛрдкреНрдп рдЪрд░рд╣рд░реВ рднрд░реМрдВред рдпреЛ рдЧрд░реНрди, рдЬрд╛рдиреБрд╣реЛрд╕реН рд╕реЗрдЯрд┐рдЩреНрд╣рд░реВ -> рдЧреЛрдкреНрдп:
DOCKER_REGISTRY
- рд╣рд╛рдореНрд░реЛ рдбрдХрд░ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЛ рд╣реЛрд╕реНрдЯ (docker.helloworld.ru);DOCKER_LOGIN
- рдбрдХрд░ рднрдгреНрдбрд╛рд░рдорд╛ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН;DOCKER_PASSWORD
- рдпрд╕рд▓рд╛рдИ рдкрд╛рд╕рд╡рд░реНрдб;DEPLOY_HOST
- рд╣реЛрд╕реНрдЯ рдЬрд╣рд╛рдБ Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрдпрд╛рдирд▓ рдЙрдкрд▓рдмреНрдз рдЫ (рдЙрджрд╛рд╣рд░рдг:helloworld.ru : рекреж рд╡рд╛123.4.56.78 реорекрекрей);DEPLOY_BACK_PROD_TOKEN
- рд╕рд░реНрднрд░рдорд╛ рдкреНрд░реЛрдб-рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЯреЛрдХрди (рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ Plesk p. 4 рдорд╛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдорд╛ рдкрд╛рдпреМрдВ);DEPLOY_BACK_DEV_TOKEN
- рд╕рд░реНрднрд░рдорд╛ рдбреЗрдн рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЯреЛрдХрдиред
рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░рд▓ рдЫ рд░ рддреАрди рдореБрдЦреНрдп рдЪрд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:
- рд╣рд╛рдореНрд░реЛ рднрдгреНрдбрд╛рд░рдорд╛ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрджреИ;
- рднрд░реНрдЦрд░реИ рдирд┐рд░реНрдорд┐рдд рдЫрд╡рд┐рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрджреИ;
- рд╢рд╛рдЦрд╛ (dev/master) рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЗрдЪреНрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рддреИрдирд╛рддреАред
рдлреНрд░рдиреНрдЯрдЗрдиреНрдб
рд╕рд╛рдЗрдЯ рд╕реЗрдЯрдЕрдк
Nginx рдорд╛рд░реНрдлрдд рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реНрджреИ
рдЦреИрд░, рд╣рд╛рдореА рдЕрдиреНрддреНрдпрдорд╛ рдЖрдПрдХрд╛ рдЫреМрдВред рдпреЛ Nginx рдорд╛рд░реНрдлрдд рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЖрдЧрдорди рд░ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдкреНрд░реЛрдХреНрд╕реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдорд╛рддреНрд░ рдмрд╛рдБрдХреА рдЫред рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗрдЯрдЕрдкрдХреЛ рдЪрд░рдг 5 рдорд╛ рдХрднрд░ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред dev рд░ prod рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдкрдЫрд╛рдбрд┐ рд░ рдЕрдЧрд╛рдбрд┐ рднрд╛рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрд╣реА рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ рд╣реБрдиреБрдкрд░реНрдЫред
рдо рд╕реЗрдЯрд┐рдЩреНрд╣рд░реВрдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗрдЫреБред
рдмреНрдпрд╛рдХрдЗрдиреНрдб
рдлреНрд░рдиреНрдЯрдЗрдиреНрдб
╨г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡ ╤Г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡ред рд╕рдмреИ URL рд▓рд╛рдИ рдлреНрд░рдиреНрдЯрдПрдиреНрдб рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░рд┐рдиреЗ рдЫ, рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рдмрд╛рд╣реЗрдХ /api/
- рддрд┐рдиреАрд╣рд░реВ рдкрдЫрд╛рдбрд┐рдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░реЛрдХреНрд╕реА рд╣реБрдиреЗрдЫрдиреН (рддреНрдпрд╕реИрд▓реЗ рдкрдЫрд╛рдбрд┐рдХреЛ рдХрдиреНрдЯреЗрдирд░рдорд╛, рд╕рдмреИ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рд╕реБрд░реБ рд╣реБрдиреБрдкрд░реНрдЫ /api/
).
рдкрд░рд┐рдгрд╛рдорд╣рд░реВ
рдЕрдм рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЗрдЯ helloworld.ru рд░ dev.helloworld.ru (рдХреНрд░рдорд╢рдГ prod- рд░ dev-environments) рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреБрдкрд░реНрдЫред
рдХреБрд▓ рдорд┐рд▓рд╛рдПрд░, рд╣рд╛рдореАрд▓реЗ рдлреНрд▓рд╛рд╕реНрдХ рд░ рдПрдЩреНрдЧреБрд▓рд░рдорд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХрд╕рд░реА рддрдпрд╛рд░ рдЧрд░реНрдиреЗ рд░ Plesk рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕рд░реНрднрд░рдорд╛ рд░реЛрд▓ рдЖрдЙрдЯ рдЧрд░реНрди Github Actions рдорд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдпреМрдВред
рдо рдХреЛрдбрдХреЛ рд╕рд╛рде рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрд╣рд░реВрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВ рдирдХреНрдХрд▓ рдЧрд░реНрдиреЗрдЫреБ:
рд╕реНрд░реЛрдд: www.habr.com