เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, Plesk เด•เตบเดŸเตเดฐเต‹เตพ เดชเดพเดจเดฒเตเด‚ Github เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต CI/CD เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด…เดจเตเดญเดตเด‚ เดžเดพเตป เดชเด™เตเด•เดฟเดŸเตเด‚. "Helloworld" เดŽเดจเตเดจ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดฒเตเดฒเดพเดคเตเดค เดชเต‡เดฐเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดŽเด™เตเด™เดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เด‡เดจเตเดจเต เดจเดฎเตเดฎเตพ เดชเด เดฟเด•เตเด•เตเด‚. เดซเตเดฒเดพเดธเตเด•เต เดชเตˆเดคเตเดคเตบ เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดฒเดพเดฃเต เด‡เดคเต เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดธเต†เดฒเดฑเดฟ เดคเตŠเดดเดฟเดฒเดพเดณเดฟเด•เดณเตเด‚ เด’เดฐเต เด†เด‚เด—เตเดฒเดพเตผ 8 เดซเตเดฐเดฃเตเดŸเตโ€ŒเดŽเตปเดกเตเด‚.

เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ: เดชเดฟเตปเดญเดพเด—เด‚, เดซเตเดฐเดฃเตเดŸเต เดŽเตปเดกเต.

เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดญเดพเด—เดคเตเดคเต, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดญเดพเด—เด™เตเด™เดณเตเด‚ เดจเต‹เด•เตเด•เดพเด‚. เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเดฟเตฝ, Plesk เดŽเด™เตเด™เดจเต† เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เด˜เดŸเด•เด™เตเด™เดณเตเด‚ (DB, RabbitMQ, Redis, Docker เดฎเตเดคเดฒเดพเดฏเดต) เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚.

เดฎเต‚เดจเตเดจเดพเด‚ เดญเดพเด—เดคเตเดคเดฟเตฝ, เด’เดฐเต dev, prod เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดŽเด™เตเด™เดจเต† เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚. เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพ เดธเต†เตผเดตเดฑเดฟเตฝ เดธเตˆเดฑเตเดฑเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚.

เด…เดคเต†, เดžเดพเตป เดŽเดจเตเดจเต†เดคเตเดคเดจเตเดจเต† เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดฎเดฑเดจเตเดจเต. เดŽเดจเตเดฑเต† เดชเต‡เดฐเต เด’เดฒเต†เด—เต เดฌเต‹เตผเดธเต‹เดตเต, เดžเดพเตป เดกเต‹เด‚เด•เตเดฒเดฟเด•เตเด•เดฟเดฒเต† เดฎเต‹เตผเดŸเตเดŸเตเด—เต‡เดœเต เดฎเดพเดจเต‡เดœเตผเดฎเดพเตผเด•เตเด•เดพเดฏเตเดณเตเดณ CRM เดŸเต€เดฎเดฟเดฒเต† เด’เดฐเต เดซเตเตพเดธเตเดฑเตเดฑเดพเด•เตเด•เต เดกเต†เดตเดฒเดชเตเดชเดฑเดพเดฃเต.

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด…เดตเดฒเต‹เด•เดจเด‚

เด†เดฆเตเดฏเด‚, เดจเดฎเตเด•เตเด•เต เดฐเดฃเตเดŸเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เตพ เดจเต‹เด•เตเด•เดพเด‚ - เดฌเดพเด•เตเด•เต†เตปเดกเตเด‚ เดซเตเดฐเดฃเตเดŸเตเด‚ - เด•เต‚เดŸเดพเดคเต† เด•เต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•.

เดฌเดพเด•เตเด•เต†เตปเดกเต: เดซเตเดฒเดพเดธเตเด•เต+เดธเต†เดฒเดฑเดฟ

เดชเดฟเตปเดญเดพเด—เดคเตเดคเต, เดชเตˆเดคเตเดคเตบ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดตเดณเดฐเต† เดชเตเดฐเดšเดพเดฐเดฎเตเดณเตเดณ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดžเดพเตป เดŽเดŸเตเดคเตเดคเต: เดซเตเดฒเดพเดธเตเด•เต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต (API-เดฏเตโ€Œเด•เตเด•เต), เดธเต†เดฒเดฑเดฟ (เดŸเดพเดธเตโ€Œเด•เต เด•เตเดฏเต‚เดตเดฟเดจเดพเดฏเดฟ). SQLAchemy ORM เด†เดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดŸเดฟเดฏเต‡เดฑเตเดฑเดคเตเดคเดฟเดจเต เด…เดฒเด‚เดฌเดฟเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดนเดพเตปเดกเดฟเดฒเตเด•เดณเดฟเตฝ JSON เดฎเต‚เดฒเตเดฏเดจเดฟเตผเดฃเตเดฃเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ - Marshmallow.

ะ’ เดถเต‡เด–เดฐเด™เตเด™เตพ เด˜เดŸเดจเดฏเตเดŸเต† เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเดฃเดตเตเด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏ เด’เดฐเต Readme.md เดซเดฏเตฝ เด‰เดฃเตเดŸเต.

เดตเต†เดฌเต เดญเดพเด—เด‚ API เดคเดฟเด•เดšเตเดšเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดฒเตเดฒเดพเดคเตเดค, 6 เดชเต‡เดจเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต:

  • /ping - เดฒเดญเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป;
  • เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป, เด…เด‚เด—เต€เด•เดพเดฐเด‚, เดกเต€-เด“เดฅเดฑเตˆเดธเต‡เดทเตป, เด’เดฐเต เด…เด‚เด—เต€เด•เตƒเดค เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดจเต‡เดŸเตฝ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เตเดณเตเดณ เดนเดพเตปเดกเดฟเดฒเตเด•เตพ;
  • เดธเต†เดฒเดฑเดฟ เด•เตเดฏเต‚เดตเดฟเตฝ เด’เดฐเต เดŸเดพเดธเตเด•เต เด‡เดŸเตเดจเตเดจ เด’เดฐเต เด‡เดฎเต†เดฏเดฟเตฝ เดนเดพเตปเดกเดฟเตฝ.

เดธเต†เดฒเดฑเดฟ เดญเดพเด—เด‚ เด…เดคเดฟเดฒเตเด‚ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต, เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚ send_mail_task.

เดซเต‹เตพเดกเดฑเดฟเตฝ /conf เดฐเดฃเตเดŸเต เด‰เดชเดซเต‹เตพเดกเดฑเตเด•เตพ เด‰เดฃเตเดŸเต:

  • docker เดฐเดฃเตเดŸเต เดกเต‹เด•เตเด•เตผ เดซเดฏเดฒเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ (base.dockerfile เด…เดชเต‚เตผเดตเตเดตเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด‡เดฎเต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ Dockerfile เดชเตเดฐเดงเดพเดจ เด…เดธเด‚เดฌเตเดฒเดฟเด•เตพเด•เตเด•เต);
  • .env_files - เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เตเดณเตเดณ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดณเตเดณ เดซเดฏเดฒเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚.

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดฑเต‚เดŸเตเดŸเดฟเตฝ เดจเดพเดฒเต เดกเต‹เด•เตเด•เตผ-เด•เดฎเตเดชเต‹เดธเต เดซเดฏเดฒเตเด•เดณเตเดฃเตเดŸเต:

  • docker-compose.local.db.yml เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด‰เดฏเตผเดคเตเดคเดพเตป;
  • docker-compose.local.workers.yml เดคเตŠเดดเดฟเดฒเดพเดณเดฟ, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต, เดฑเต†เดกเดฟเดธเต, เดฑเดพเดฌเดฟเดฑเตเดฑเตเดŽเด‚เด•เตเดฏเต เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด‰เดจเตเดจเดฎเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ;
  • docker-compose.test.yml เดตเดฟเดจเตเดฏเดพเดธ เดธเดฎเดฏเดคเตเดคเต เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต;
  • docker-compose.yml เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ.

เดžเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เด…เดตเดธเดพเดจ เดซเต‹เตพเดกเตผ - .ci-cd. เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดณเตเดณ เดทเต†เตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • deploy.sh - เด•เตเดŸเดฟเดฏเต‡เดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดธเดฎเดพเดฐเด‚เดญเด‚. เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต;
  • rollback.sh - เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเดŸเต† เดฎเตเตป เดชเดคเดฟเดชเตเดชเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เดณเตเดŸเต† เดฑเต‹เตพเดฌเดพเด•เตเด•เต;
  • curl_tg.sh - เดŸเต†เดฒเดฟเด—เตเดฐเดพเดฎเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดพเดธ เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต.

เด•เต‹เดฃเดพเด•เตƒเดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เดฎเตเตปเดญเดพเด—เด‚

เดฎเตเตปเดตเดถเดคเตเดคเตเดณเตเดณ เดถเต‡เด–เดฐเด‚ เดฌเต†เด•เตเด•เดฟเดจเต†เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต. เดฎเตเตปเดญเดพเด—เด‚ เดฎเต‚เดจเตเดจเต เดชเต‡เดœเตเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต:

  • เด‡เดฎเต†เดฏเดฟเตฝ เด…เดฏเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเต‹เดฎเตเด‚ เดŽเด•เตเดธเดฟเดฑเตเดฑเต เดฌเดŸเตเดŸเดฃเตเด‚ เด‰เดณเตเดณ เดชเตเดฐเดงเดพเดจ เดชเต‡เดœเต.
  • เดฒเต‹เด—เดฟเตป เดชเต‡เดœเต.
  • เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เดชเต‡เดœเต.

เดชเตเดฐเดงเดพเดจ เดชเต‡เดœเต เดธเดจเตเดฏเดพเดธเดฟเดฏเดพเดฏเดฟ เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต:

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
เดฑเต‚เดŸเตเดŸเดฟเตฝ เดฐเดฃเตเดŸเต เดซเดฏเดฒเตเด•เดณเตเดฃเตเดŸเต Dockerfile ะธ docker-compose.yml, เด…เดคเตเดชเต‹เดฒเต† เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เดซเต‹เตพเดกเดฑเตเด‚ .ci-cd เดฌเดพเด•เตเด•เต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด‰เดณเตเดณเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด…เตฝเดชเตเดชเด‚ เด•เตเดฑเดšเตเดšเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด‰เดณเตเดณเดคเต (เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดค เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ).

Plesk-เตฝ เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

Plesk เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเดฌเตเดธเตเด•เตเดฐเดฟเดชเตเดทเตป เดธเตƒเดทเตเดŸเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚.

เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

Plesk-เตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เดจเดพเดฒเต เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  • Docker Plesk เด…เดกเตเดฎเดฟเตป เดชเดพเดจเดฒเดฟเดฒเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดŸเต† เดจเดฟเดฒ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดฆเตƒเดถเตเดฏเดชเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚;
  • Git เดธเต†เตผเดตเดฑเดฟเตฝ เดตเดฟเดจเตเดฏเดพเดธ เด˜เดŸเตเดŸเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต;
  • Let's Encrypt เดธเต—เดœเดจเตเดฏ TLS เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต (เดธเตเดตเดฏเด‚ เดชเตเดคเตเด•เตเด•เตเด•);
  • Firewall เด‡เตปเด•เดฎเดฟเด‚เด—เต เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดจเตเดฑเต† เดซเดฟเตฝเดŸเตเดŸเดฑเดฟเด‚เด—เต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเตป.

เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต† Plesk เด…เดกเตเดฎเดฟเตป เดชเดพเดจเตฝ เดตเดดเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚:

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดตเดฟเดถเดฆเดฎเดพเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดžเด™เตเด™เดณเตเดŸเต† เดกเต†เดฎเต‹ เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดšเต†เดฏเตเดฏเตเด‚.

เด’เดฐเต เดธเดฌเตเดธเตเด•เตเดฐเดฟเดชเตเดทเดจเตเด‚ เดธเตˆเดฑเตเดฑเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดžเด™เตเด™เดณเตเดŸเต† helloworld.ru เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเตป เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฟเดŸเต† dev.helloworld.ru เดธเดฌเตโ€ŒเดกเตŠเดฎเต†เดฏเตโ€Œเตป เดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.

  1. helloworld.ru เดกเตŠเดฎเต†เดฏเตโ€Œเดจเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเตป เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดณเตเดณ เดฒเต‹เด—เดฟเตป-เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
    เดชเต‡เดœเดฟเดจเตเดฑเต† เดคเดพเดดเต†เดฏเตเดณเตเดณ เดฌเต‹เด•เตเดธเต เดšเต†เด•เตเด•เตเดšเต†เดฏเตเดฏเตเด• เดฒเต†เดฑเตเดฑเตเดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเตŠเดฎเต†เดฏเตเตป เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเด•เตเด•เตเด•เดธเตˆเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต HTTPS เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  2. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดˆ เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเดจเดฟเตฝ, เด’เดฐเต เดธเดฌเตโ€ŒเดกเตŠเดฎเต†เดฏเตโ€Œเตป dev.helloworld.ru เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• (เด‡เดคเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเต—เดœเดจเตเดฏ TLS เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด‚ เดจเตฝเด•เดพเด‚):

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

เดธเต†เตผเดตเตผ เด˜เดŸเด•เด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเต†เตผเดตเตผ เด‰เดฃเตเดŸเต เด’เดŽเดธเต เดกเต†เดฌเดฟเดฏเตป เดธเตเดŸเตเดฐเต†เดšเตเดšเต 9.12 เด•เต‚เดŸเดพเดคเต† เด•เตบเดŸเตเดฐเต‹เตพ เดชเดพเดจเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต เดชเตเดฒเต†เดธเตเด•เต เด’เดฌเตเดธเดฟเดกเดฟเดฏเตป 18.0.27.

เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  • PostgreSQL (เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, dev, prod เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดฐเดฃเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเตเดณเตเดณ เด’เดฐเต เดธเต†เตผเดตเตผ เด‰เดฃเตเดŸเดพเด•เตเด‚).
  • RabbitMQ (เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดค vhosts เด‰เดณเตเดณ เด…เดคเต‡ เด‰เดฆเดพเดนเดฐเดฃเด‚).
  • เดฐเดฃเตเดŸเต Redis เดธเด‚เดญเดตเด™เตเด™เตพ (dev, prod เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ).
  • เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ (เดฌเดฟเตฝเดฑเตเดฑเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เดณเตเดŸเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ).
  • เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเด•เตเด•เตเดณเตเดณ เดฏเตเด.

PostgreSQL เดŽเดจเตเดจเต€

Plesk เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† PostgreSQL DBMS-เดจเตŠเดชเตเดชเด‚ เดตเดฐเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฒเตเดฒ (Plesk Obsidian เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดชเดฟเดจเตเดคเตเดฃเดšเตเดšเต เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เดชเดคเดฟเดชเตเดชเตเด•เตพ 8.4โ€“10.8). เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต (เด‡เดคเต เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต 12.3), เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด‡เดคเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด‚.

เดจเต†เดฑเตเดฑเดฟเตฝ เดกเต†เดฌเดฟเดฏเดจเดฟเตฝ เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดฟเดถเดฆเดฎเดพเดฏ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดงเดพเดฐเดพเดณเด‚ เด‰เดฃเตเดŸเต (เด‰เดฆเดพเดนเดฐเดฃเด‚), เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด…เดตเดฏเต† เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดžเดพเตป เด•เดฎเดพเตปเดกเตเด•เตพ เดจเตฝเด•เตเด‚:

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-server เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•:

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

RabbitMQ

เดธเต†เดฒเดฑเดฟเดฏเตเดŸเต† เดธเดจเตเดฆเต‡เดถ เดฌเตเดฐเต‹เด•เตเด•เดฑเดพเดฏ 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. เดธเต†เดฒเดฑเดฟ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดŸเต† เดซเดฒเด™เตเด™เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฌเดพเด•เตเด•เต†เตปเดกเดพเดฏเดฟ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต dev, prod เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ Redis-เดจเตŠเดชเตเดชเด‚ เดฐเดฃเตเดŸเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด‰เดฏเตผเดคเตเดคเตเด‚ Docker เดชเตเดฒเต†เดธเตเด•เต เดตเต‡เดฃเตเดŸเดฟ.

  1. เดžเด™เตเด™เตพ Plesk-เดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเต, เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เดกเต‹เด•เตเด•เตผ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดจเต‹เด•เตเด•เดฟ เด…เดคเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• (เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเตเดตเดคเดจเตเดคเตเดฐ เดชเดคเดฟเดชเตเดชเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต):

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  2. เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เดคเดฟเดฐเดฏเดฒเดฟเดฒเต‚เดŸเต† เดšเดฟเดคเตเดฐเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเด• redis bitnami เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  3. เดžเด™เตเด™เตพ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดค เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต: เดชเต‹เตผเดŸเตเดŸเต, เดชเดฐเดฎเดพเดตเดงเดฟ เด…เดจเตเดตเดฆเดฟเดšเตเดš เดฑเดพเด‚ เดตเดฒเตเดชเตเดชเด‚, เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเดฒเต† เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดŽเดจเตเดจเดฟเดต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•, เดตเต‹เดณเดฟเดฏเด‚ เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเด•:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  4. เดชเตเดฐเต‹เดกเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ 2-3 เด˜เดŸเตเดŸเด™เตเด™เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฎเดพเดคเตเดฐเด‚ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต: เดชเต‹เตผเดŸเตเดŸเต, เดชเดพเดธเตโ€Œเดตเต‡เดกเต, เดฑเดพเด‚ เดตเดฒเตเดชเตเดชเด‚, เดธเต†เตผเดตเดฑเดฟเดฒเต† เดตเต‹เดณเดฟเดฏเด‚ เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ

เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต‡เดตเดจเด™เตเด™เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดถเต‡เด–เดฐเด‚ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดจเตเดจเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดธเต†เตผเดตเตผ เด‡เดŸเด‚ เด‡เดชเตเดชเต‹เตพ เดตเดณเดฐเต† เดตเดฟเดฒเด•เตเดฑเดžเตเดžเดคเดพเดฃเต (เด’เดฐเต เดกเต‹เด•เตเด•เตผเดนเดฌเต เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเดจเต‡เด•เตเด•เดพเตพ เดตเดฟเดฒเด•เตเดฑเดžเตเดžเดคเดพเดฃเต), เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เดถเต‡เด–เดฐเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต.

เดžเด™เตเด™เตพเด•เตเด•เต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต:

  • เด’เดฐเต เดธเดฌเตโ€ŒเดกเตŠเดฎเต†เดฏเตโ€Œเดจเดฟเตฝ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจ เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดชเดฐเดฟเดฐเด•เตเดทเดฟเดค เดกเต‹เด•เตเด•เตผ เดถเต‡เด–เดฐเด‚ https://docker.helloworld.ru;
  • เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฏเตเด, เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฃเต https://docker-ui.helloworld.ru.

เด‡เดคเดฟเดจเดพเดฏเดฟ:

  1. เดจเดฎเตเดฎเตเดŸเต† เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเดจเดฟเตฝ Plesk-เตฝ เดฐเดฃเตเดŸเต เด‰เดชเดกเตŠเดฎเต†เดฏเตโ€Œเดจเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚: docker.helloworld.ru, docker-ui.helloworld.ru, เด•เต‚เดŸเดพเดคเต† เด…เดตเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚.
  2. 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'
    

  3. SSH-เดจเต เด•เต€เดดเดฟเตฝ, เดกเต‹เด•เตเด•เตผ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ .htpasswd เดซเดฏเตฝ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด‚:
    htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
  4. เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด‰เดฏเตผเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•:
    docker-compose up -d
  5. เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต Nginx เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต Plesk เดตเดดเดฟ เดšเต†เดฏเตเดฏเดพเด‚.

docker.helloworld.ru, docker-ui.helloworld.ru เดŽเดจเตเดจเต€ เด‰เดชเดกเตŠเดฎเต†เดฏเตโ€Œเดจเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

เดตเดฟเดญเดพเด—เด‚ เดฆเต‡เดตเต เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดธเตˆเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• เดกเต‹เด•เตเด•เตผ เดชเตเดฐเต‹เด•เตเดธเดฟ เดจเดฟเดฏเดฎเด™เตเด™เตพ:

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เด‡เตปเด•เดฎเดฟเด‚เด—เต เดŸเตเดฐเดพเดซเดฟเด•เต เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดจเดฟเดฏเดฎเด‚ เดšเต‡เตผเด•เตเด•เตเด•:

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  1. เดฒเต‹เด•เตเด•เตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต:
    $ 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
  2. docker-ui.helloworld.ru เด‰เดชเดกเตŠเดฎเต†เดฏเตโ€Œเดจเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเด‚ เดจเดฎเตเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
    เดจเดฟเด™เตเด™เตพ เดฌเตเดฐเต—เดธเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดฌเตเดฐเต—เดธเตผ เด’เดฐเต เด…เด‚เด—เต€เด•เดพเดฐ เดตเดฟเตปเดกเต‹ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚, เด…เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดตเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด‰เดณเตเดณ เด’เดฐเต เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เดณเต† เดฎเดพเดฑเตเดฑเตเด‚ (เด‡เดชเตเดชเต‹เตพ, เด‡เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดถเต‚เดจเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚):

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

Plesk เดซเดฏเตผเดตเดพเดณเดฟเตฝ เดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดคเตเดฑเด•เตเด•เตเดจเตเดจเต

เด˜เดŸเด•เด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตโ€Œเดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€Œเดค เดถเต‡เดทเด‚, เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดฌเดพเดนเตเดฏ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เด˜เดŸเด•เด™เตเด™เตพ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดคเตเดฑเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดจเดฎเตเดฎเตพ เดจเต‡เดฐเดคเตเดคเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค Plesk-เดจเตเดณเตเดณ เดซเดฏเตผเดตเดพเตพ เดŽเด•เตเดธเตเดฑเตเดฑเตปเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เดŽเด™เตเด™เดจเต† เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

  1. เดชเต‹เด•เตเด• เดŸเต‚เดณเตเด•เดณเตเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ > เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ > เดซเดฏเตผเดตเดพเตพ:
    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
  2. เดชเต‹เด•เตเด• Plesk เดซเดฏเตผเดตเดพเตพ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เตเด• > เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดจเดฟเดฏเดฎเด‚ เดšเต‡เตผเด•เตเด•เตเด• เดกเต‹เด•เตเด•เตผ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ TCP เดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดคเตเดฑเด•เตเด•เตเด• (172.0.0.0 / 8):
    RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
    เดฑเต†เดกเดฟเดธเต: 32785, 32786

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  3. PostgreSQL เดชเต‹เตผเดŸเตเดŸเตเด•เดณเตเด‚ RabbitMQ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดชเดพเดจเดฒเตเด•เดณเตเด‚ เดชเตเดฑเด‚ เดฒเต‹เด•เดคเตเดคเต‡เด•เตเด•เต เดคเตเดฑเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดจเดฟเดฏเดฎเดตเตเด‚ เดžเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เตเด‚:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  4. เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดฌเดŸเตเดŸเตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเดฏเดฎเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

Github เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฎเตเด•เตเด•เต เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เดญเดพเด—เดคเตเดคเต‡เด•เตเด•เต เด‡เดฑเด™เตเด™เดพเด‚ - เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจ เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดˆ เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดฐเดฃเตเดŸเต เดญเดพเด—เด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต:

  • เด’เดฐเต เด‡เดฎเต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• (เดฌเดพเด•เตเด•เต†เตปเดกเดฟเดจเดพเดฏเดฟ) - Github เดตเดถเดคเตเดคเต;
  • เดฎเตˆเด—เตเดฐเต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ (เดฌเดพเด•เตเด•เต†เตปเดกเดฟเดจเดพเดฏเดฟ) เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เดธเต†เตผเดตเดฑเดฟเตฝ.

Plesk เดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•

เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดชเต‹เดฏเดฟเดจเตเดฑเต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเด‚ (เด•เดพเดฐเดฃเด‚ เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เด…เดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต).

Plesk-เดจเตเดณเตเดณ Git เดŽเด•เตเดธเตเดฑเตเดฑเตปเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เด’เดฐเต เดฌเดพเด•เตเด•เต†เตปเดกเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เตเด•เต เดชเตเดฐเต‹เดกเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เด‰เดณเตเดณ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด•.

  1. เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดนเต†เดฒเตเดฒเต‹เดตเต‡เตพเดกเต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเดฟเดจเตเดฑเต† เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ Git เด‰เดชเดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเต:

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  2. "เดฑเดฟเดฎเต‹เดŸเตเดŸเต Git เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ" เดซเต€เตฝเดกเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† Github เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฒเดฟเด™เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดซเต‹เตพเดกเตผ เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• httpdocs เดฎเดฑเตเดฑเตŠเดฐเดพเดณเดฟเดฒเต‡เด•เตเด•เต (เด‰เดฆเดพ. /httpdocs/hw_back):

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  3. เดฎเตเดฎเตเดชเดคเตเดคเต† เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต SSH เดชเดฌเตเดฒเดฟเด•เต เด•เต€ เดชเด•เตผเดคเตเดคเตเด• เดšเต‡เตผเด•เตเด•เตเด• เด…เดคเต Github เด•เตเดฐเดฎเต€เด•เดฐเดฃเดคเตเดคเดฟเดฒเดพเดฃเต.
  4. เด˜เดŸเตเดŸเด‚ 2-เดฒเต† เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เดถเดฐเดฟ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด•, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดžเด™เตเด™เตพ Plesk-เดฒเต† เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เต เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเตเดšเต†เดฏเตเดฏเตเด‚. เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดฎเดพเดธเตเดฑเตเดฑเตผ เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เดณเดฟเตฝ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดถเต‡เด–เดฐเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดชเต‹เด•เตเด• เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเต‚เดฒเตเดฏเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด• Webhook URL (Github เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด‚):

    เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

  5. เดฎเตเดฎเตเดชเดคเตเดคเต† เด–เดฃเตเดกเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเด•เตเดฐเต€เดจเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดซเต€เตฝเดกเดฟเตฝ, เดตเดฟเดจเตเดฏเดพเดธเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเตฝเด•เตเด•:
    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} - เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดฏเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเดพเดฑเตเดฑเต/เดšเดพเดจเดฒเดฟเดจเตเดฑเต† เดเดกเดฟ.

    เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‰เดฆเดพเดนเดฐเดฃเด‚:

    cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/
    .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
  6. เดžเด™เตเด™เดณเตเดŸเต† เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดกเต‹เด•เตเด•เตผ เด—เตเดฐเต‚เดชเตเดชเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด• (เด…เดคเดฟเดจเดพเตฝ เด…เดตเตผเด•เตเด•เต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚):
    sudo usermod -aG docker helloworld_admin

เดฌเดพเด•เตเด•เต†เตปเดกเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เตเด•เตเด‚ เดซเตเดฐเดฃเตเดŸเตโ€ŒเดŽเตปเดกเดฟเดจเตเด‚ เดตเต‡เดฃเตเดŸเดฟเดฏเตเดณเตเดณ dev เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เด…เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เดตเดฟเดจเตเดฏเดพเดธ เดชเตˆเดชเตเดชเตเดฒเตˆเตป

เดจเดฎเตเดฎเตเดŸเต† CI/CD เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดญเดพเด—เด‚ Github เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚.

เดฌเดพเด•เตเด•เต†เตปเดกเต

เดชเตˆเดชเตเดชเต เดฒเตˆเตป เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต deploy.yml เดซเดฏเตฝ.

เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฎเตเด•เตเด•เต Github-เตฝ เด†เดตเดถเตเดฏเดฎเดพเดฏ Secret variables เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดชเต‹เด•เตเด• เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ -> เดฐเดนเดธเตเดฏเด™เตเด™เตพ:

  • DOCKER_REGISTRY - เดžเด™เตเด™เดณเตเดŸเต† เดกเต‹เด•เตเด•เตผ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดนเต‹เดธเตเดฑเตเดฑเต (docker.helloworld.ru);
  • DOCKER_LOGIN - เดกเต‹เด•เตเด•เตผ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•;
  • DOCKER_PASSWORD - เด…เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดธเตเดตเต‡เดกเต;
  • DEPLOY_HOST โ€” Plesk เด…เดกเตเดฎเดฟเตป เดชเดพเดจเตฝ เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจ เดนเต‹เดธเตเดฑเตเดฑเต (เด‰เดฆเดพเดนเดฐเดฃเด‚: helloworld.com: 8443 เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - เดธเต†เตผเดตเดฑเดฟเดฒเต† เดชเตเดฐเต‹เดกเต-เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดŸเต‹เด•เตเด•เตบ (เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต Plesk p. 4 เดฒเต† เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเตฝ เดฒเดญเดฟเดšเตเดšเต);
  • DEPLOY_BACK_DEV_TOKEN - เดธเต†เตผเดตเดฑเดฟเดฒเต† dev เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดณเตเดณ เดŸเต‹เด•เตเด•เตบ.

เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฒเดณเดฟเดคเดตเตเด‚ เดฎเต‚เดจเตเดจเต เดชเตเดฐเดงเดพเดจ เด˜เดŸเตเดŸเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเดคเตเดฎเดพเดฃเต:

  • เดžเด™เตเด™เดณเตเดŸเต† เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•;
  • เดชเตเดคเตเดคเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เด‡เดฎเต‡เดœเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•;
  • เดฌเตเดฐเดพเดžเตเดšเต (เดฆเต‡เดตเต/เดฎเดพเดธเตเดฑเตเดฑเตผ) เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดพเดธเด‚.

เดŽเดจเตเดฑเต

เดซเตเดฐเดฃเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เตเด•เตเดณเตเดณ deploy.yml เดซเดฏเตฝ เดฌเต†เด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดฒเตเดชเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต. เด‡เดคเดฟเดจเต เดฑเตบ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เด’เดฐเต เด˜เดŸเตเดŸเดฎเดฟเดฒเตเดฒ, เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เดŸเต‹เด•เตเด•เดฃเตเด•เดณเตเดŸเต† เดชเต‡เดฐเตเด•เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เดซเตเดฐเดฃเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดฐเดนเดธเตเดฏเด™เตเด™เตพ, เดตเดดเดฟเดฏเดฟเตฝ, เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดธเตˆเดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฃเด‚

Nginx เดตเดดเดฟเดฏเตเดณเตเดณ เดŸเตเดฐเดพเดซเดฟเด•เต เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดถเดฐเดฟ, เดžเด™เตเด™เตพ เด…เดตเดธเดพเดจเด‚ เดŽเดคเตเดคเดฟ. Nginx เดตเดดเดฟ เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เด‡เตปเด•เดฎเดฟเด‚เด—เต, เด”เดŸเตเดŸเตโ€Œเด—เต‹เดฏเดฟเด‚เด—เต เดŸเตเดฐเดพเดซเดฟเด•เตเด•เดฟเดจเตเดฑเต† เดชเตเดฐเต‹เด•เตเดธเดฟเดฏเดฟเด‚เด—เต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเตป เดฎเดพเดคเตเดฐเดฎเต‡ เด‡เดคเต เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเตเดณเตเดณเต‚. เดกเต‹เด•เตเด•เตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เดธเดœเตเดœเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† 5-เดพเด‚ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต. dev, prod เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเดฟเตฝ เดชเดฟเตปเดญเดพเด—เดคเตเดคเตเด‚ เดฎเตเตปเดญเดพเด—เด™เตเด™เดณเดฟเดฒเตเด‚ เด‡เดคเต เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเด‚.

เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเตเด•เตพ เดžเดพเตป เดจเตฝเด•เตเด‚.

เดฌเดพเด•เตเด•เต†เตปเดกเต

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD

เดŽเดจเตเดฑเต

เด’เดฐเต เดซเตเดฒเดพเดธเตเด•เต+เด•เต‹เดฃเดฟเด• เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ CI/CD
ะžะต ัƒั‚ะพั‡ะฝะตะฝะธะต. เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดต เด’เดดเดฟเด•เต† เดŽเดฒเตเดฒเดพ URL-เด•เดณเตเด‚ เดซเตเดฐเดฃเตเดŸเตโ€ŒเดŽเตปเดกเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚ /api/ - เด…เดต เดชเดฟเดจเตเดจเดฟเดฒเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚ (เด…เด™เตเด™เดจเต† เดชเดฟเตป เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ, เดŽเดฒเตเดฒเดพ เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เดณเตเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เดฃเด‚ /api/).

เดซเดฒเด™เตเด™เตพ

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เดณเตเดŸเต† เดธเตˆเดฑเตเดฑเต helloworld.ru, dev.helloworld.ru เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ (เดฏเดฅเดพเด•เตเดฐเดฎเด‚ prod- and dev-environments).

เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ, เดซเตเดฒเดพเดธเตเด•เดฟเดฒเตเด‚ เด†เด‚เด—เตเดฒเดฑเดฟเดฒเตเด‚ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด…เดคเต เดชเตเดฒเต†เดธเตโ€Œเด•เดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฑเต‹เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เด’เดฐเต เดชเตˆเดชเตเดชเต เดฒเตˆเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เดชเด เดฟเดšเตเดšเต.

เดžเดพเตป เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เดกเตเดฏเต‚เดชเตเดฒเดฟเด•เตเด•เต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด‚: เดชเดฟเตปเดญเดพเด—เด‚, เดซเตเดฐเดฃเตเดŸเต เดŽเตปเดกเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•