เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD
เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจชเจฒเฉ‡เจธเจ• เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจชเฉˆเจจเจฒ เจ…เจคเฉ‡ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉ€เจ†เจˆ/เจธเฉ€เจกเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจคเจœเจผเจฐเจฌเฉ‡ เจจเฉ‚เฉฐ เจธเจพเจ‚เจเจพ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจ…เฉฑเจœ เจ…เจธเฉ€เจ‚ เจธเจฟเจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ "เจนเฉˆเจฒเฉ‹เจตเจฐเจฒเจก" เจจเจพเจฎ เจฆเฉ‡ เจธเจงเจพเจฐเจจ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‡เจน เจซเจฒเจพเจธเจ• เจชเจพเจˆเจฅเจจ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจตเจฟเฉฑเจš, เจธเฉˆเจฒเจฐเฉ€ เจตเจฐเจ•เจฐเจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจเจ‚เจ—เฉเจฒเจฐ 8 เจซเจฐเฉฐเจŸเจเจ‚เจก เจฆเฉ‡ เจจเจพเจฒ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจฒเจˆ เจฒเจฟเฉฐเจ•: เจฌเฉˆเจ•เจเจ‚เจก, เจ…เจ—เจฐเจพเจ‚เจค.

เจฒเฉ‡เจ– เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡เฅค เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ Plesk เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ (DB, RabbitMQ, Redis, Docker, เจ†เจฆเจฟ) เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจคเฉ€เจœเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ†เจ–เจฐเจ•เจพเจฐ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจตเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจธเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‡เจต เจ…เจคเฉ‡ เจ‰เจคเจชเจพเจฆ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฅเจพเจชเจค เจ•เจฐเจจเฉ€ เจนเฉˆเฅค เจ…เจคเฉ‡ เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ…เจคเฉ‡ เจนเจพเจ‚, เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ€ เจœเจพเจฃ-เจชเจ›เจพเจฃ เจ•เจฐเจจเจพ เจญเฉเฉฑเจฒ เจ—เจฟเจ†เฅค เจฎเฉ‡เจฐเจพ เจจเจพเจฎ เจ“เจฒเฉ‡เจ— เจฌเฉ‹เจฐเจœเจผเฉ‹เจต เจนเฉˆ, เจฎเฉˆเจ‚ Domclick 'เจคเฉ‡ เจฎเฉŒเจฐเจ—เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐเจพเจ‚ เจฒเจˆ CRM เจŸเฉ€เจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเฉเฉฑเจฒเจธเจŸเฉˆเจ• เจกเจฟเจตเฉˆเจฒเจชเจฐ เจนเจพเจ‚เฅค

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจฆเฉ‹ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ - เจฌเฉˆเจ•เจเจ‚เจก เจ…เจคเฉ‡ เจซเจฐเฉฐเจŸ - เจ…เจคเฉ‡ เจ•เฉ‹เจก เจ‰เฉฑเจคเฉ‡ เจœเจพเจ“เฅค

เจฌเฉˆเจ•เจเจ‚เจก: เจซเจฒเจพเจธเจ• + เจธเฉˆเจฒเจฐเฉ€

เจชเจฟเจ›เจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจฒเจˆ, เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจเฉเฉฐเจก เจฒเจฟเจ† เจœเฉ‹ เจชเจพเจˆเจฅเจจ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจฎเจธเจผเจนเฉ‚เจฐ เจนเฉˆ: เจซเจฒเจพเจธเจ• เจซเจฐเฉ‡เจฎเจตเจฐเจ• (เจเจชเฉ€เจ†เจˆ เจฒเจˆ) เจ…เจคเฉ‡ เจธเฉˆเจฒเจฐเฉ€ (เจŸเจพเจธเจ• เจ•เจคเจพเจฐ เจฒเจˆ). SQLAchemy เจจเฉ‚เฉฐ ORM เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจเจฒเฉ‡เจฎเจฌเจฟเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจนเฉˆเจ‚เจกเจฒเจพเจ‚ เจตเจฟเฉฑเจš JSON เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจฒเจˆ - เจฎเจพเจฐเจธเจผเจฎเฉˆเจฒเฉ‹เฅค

ะ’ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจขเจพเจ‚เจšเฉ‡ เจ…เจคเฉ‡ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจตเจฐเจฃเจจ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• 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 เจตเจฐเจ•เจฐ, เจกเจพเจŸเจพเจฌเฉ‡เจธ, Redis เจ…เจคเฉ‡ RabbitMQ เจฆเฉ‡ เจธเจฅเจพเจจเจ• เจ‰เจญเจพเจฐ เจฒเจˆ;
  • docker-compose.test.yml เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉŒเจฐเจพเจจ เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ;
  • docker-compose.yml เจคเจพเจ‡เจจเจพเจคเฉ€ เจฒเจˆ.

เจ…เจคเฉ‡ เจ†เจ–เจฐเฉ€ เจซเฉ‹เจฒเจกเจฐ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ - .ci-cd. เจ‡เจธ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจคเฉ€ เจฒเจˆ เจธเจผเฉˆเฉฑเจฒ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจนเจจ:

  • deploy.sh - เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจคเฅค Github เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจŸเฉˆเจธเจŸ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจšเฉฑเจฒเจฆเจพ เจนเฉˆ;
  • rollback.sh - เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจฒเจˆ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเจพ เจฐเฉ‹เจฒเจฌเฉˆเจ•;
  • curl_tg.sh - เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจคเฉ€ เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจญเฉ‡เจœเจฃเจพ.

เจเจ‚เจ—เฉเจฒเจฐ 'เจคเฉ‡ เจซเจฐเฉฐเจŸเจเจ‚เจก

เจธเจพเจนเจฎเจฃเฉ‡ เจตเจพเจฒเจพ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฌเฉ‡เจ• เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจฌเจนเฉเจค เจธเจฐเจฒเฅค เจธเจพเจนเจฎเจฃเฉ‡ เจคเจฟเฉฐเจจ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ:

  • เจˆเจฎเฉ‡เจฒ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจซเจพเจฐเจฎ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจเจ—เจœเจผเจฟเจŸ เจฌเจŸเจจ เจตเจพเจฒเจพ เจฎเฉเฉฑเจ– เจชเฉฐเจจเจพเฅค
  • เจฒเฉŒเจ—เจ‡เจจ เจชเฉฐเจจเจพ.
  • เจฐเจœเจฟเจธเจŸเฉเจฐเฉ‡เจธเจผเจจ เจชเฉฐเจจเจพ.

เจฎเฉเฉฑเจ– เจชเฉฐเจจเจพ เจคเจชเฉฑเจธเจตเฉ€ เจฆเจฟเจธเจฆเจพ เจนเฉˆ:

เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD
เจฐเฉ‚เจŸ 'เจคเฉ‡ เจฆเฉ‹ เจซเจพเจˆเจฒเจพเจ‚ เจนเจจ Dockerfile ะธ docker-compose.yml, เจจเจพเจฒ เจนเฉ€ เจœเจพเจฃเฉ‚ เจซเฉ‹เจฒเจกเจฐ .ci-cd เจฌเฉˆเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเจพเจฒเฉ‹เจ‚ เจฅเฉ‹เฉœเฉเจนเฉ€เจ†เจ‚ เจ˜เฉฑเจŸ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเจพเจฒ (เจšเฉฑเจฒ เจฐเจนเฉ‡ เจŸเฉˆเจธเจŸเจพเจ‚ เจฒเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‡เจ† เจ—เจฟเจ†)เฅค

Plesk เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ

เจ†เจ“ Plesk เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจ•เฉ‡ เจ…เจคเฉ‡ เจธเจพเจกเฉ€ เจธเจพเจˆเจŸ เจฒเจˆ เจ—เจพเจนเจ•เฉ€ เจฌเจฃเจพ เจ•เฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเฉ€เจเฅค

เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจชเจฒเฉ‡เจธเจ• เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ เจšเจพเจฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

  • Docker Plesk เจเจกเจฎเจฟเจจ เจชเฉˆเจจเจฒ เจตเจฟเฉฑเจš เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ…เจคเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ;
  • Git เจธเจฐเจตเจฐ 'เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจชเฉœเจพเจ… เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ;
  • Let's Encrypt เจฎเฉเจซเจผเจค TLS เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ (เจ…เจคเฉ‡ เจธเจตเฉˆ-เจจเจตเฉ€เจจเฉ€เจ•เจฐเจจ) เจฒเจˆ;
  • Firewall เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเฉ‡ เจซเจฟเจฒเจŸเจฐเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆเฅค

เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจญเจพเจ— เจตเจฟเฉฑเจš Plesk เจเจกเจฎเจฟเจจ เจชเฉˆเจจเจฒ เจฆเฉเจ†เจฐเจพ เจธเจฅเจพเจชเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD
เจ…เจธเฉ€เจ‚ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจฒเจˆ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจกเจฟเจซเฉŒเจฒเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจธเจพเจกเฉ‡ เจกเฉˆเจฎเฉ‹ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจ•เจฐเจจเจ—เฉ€เจ†เจ‚เฅค

เจ‡เฉฑเจ• เจ—เจพเจนเจ•เฉ€ เจ…เจคเฉ‡ เจธเจพเจˆเจŸ เจฌเจฃเจพเจ“

เจ…เฉฑเจ—เฉ‡, เจธเจพเจจเฉ‚เฉฐ เจธเจพเจกเฉ€ helloworld.ru เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจฒเจˆ เจธเจฌเจธเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ dev.helloworld.ru เจธเจฌเจกเฉ‹เจฎเฉ‡เจจ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

  1. helloworld.ru เจกเฉ‹เจฎเฉ‡เจจ เจฒเจˆ เจ—เจพเจนเจ•เฉ€ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฒเจˆ เจฒเฉŒเจ—เจ‡เจจ-เจชเจพเจธเจตเจฐเจก เจฆเจฟเจ“:

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD
    เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฌเจพเจ•เจธ 'เจคเฉ‡ เจจเจฟเจธเจผเจพเจจ เจฒเจ—เจพเจ“ Let's Encrypt เจจเจพเจฒ เจกเฉ‹เจฎเฉ‡เจจ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเฉ‹เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจธเจพเจˆเจŸ เจฒเจˆ HTTPS เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚:

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

  2. เจ…เฉฑเจ—เฉ‡, เจ‡เจธ เจ—เจพเจนเจ•เฉ€ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจธเจฌเจกเฉ‹เจฎเฉ‡เจจ dev.helloworld.ru เจฌเจฃเจพเจ“ (เจœเจฟเจธ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเฉเจซเจค TLS เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจตเฉ€ เจœเจพเจฐเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹):

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

เจธเจฐเจตเจฐ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจเจพ

เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจนเฉˆ OS เจกเฉ‡เจฌเฉ€เจ…เจจ เจธเจŸเฉเจฐเฉˆเจš 9.12 เจ…เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจชเฉˆเจจเจฒ เจชเจฒเฉ‡เจธเจ• เจ“เจฌเจธเฉ€เจกเฉ€เจ…เจจ 18.0.27.

เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจธเจฅเจพเจชเจฟเจค เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

  • PostgreSQL (เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, dev เจ…เจคเฉ‡ prod เจตเจพเจคเจพเจตเจฐเจฃเจพเจ‚ เจฒเจˆ เจฆเฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพ)เฅค
  • RabbitMQ (เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจˆ เจตเฉฑเจ–-เจตเฉฑเจ– vhosts เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ€, เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ)เฅค
  • เจฆเฉ‹ Redis เจฎเฉŒเจ•เฉ‡ (dev เจ…เจคเฉ‡ prod เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจˆ)เฅค
  • เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ (เจฌเจฟเจฒเจŸ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจธเจฅเจพเจจเจ• เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฒเจˆ)เฅค
  • เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจฒเจˆ UIเฅค

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

เจฐเฉˆเจฌเจฟเจŸเจฎเจ•เจฟQ

เจ†เจ‰, เจธเฉˆเจฒเจฐเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉฐเจฆเฉ‡เจธเจผ เจฌเฉเจฐเฉ‹เจ•เจฐ, 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 Plesk เจฒเจˆ.

  1. เจ…เจธเฉ€เจ‚ เจชเจฒเฉ‡เจธเจ• 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจธเฉˆเจ•เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจกเฉŒเจ•เจฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเฉเจซเจค เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ):

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

  2. เจธเจฅเจพเจชเจฟเจค เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ 'เจคเฉ‡ เจœเจพเจ“, เจ–เฉ‹เจœ เจฆเฉเจ†เจฐเจพ เจšเจฟเฉฑเจคเจฐ เจฒเฉฑเจญเฉ‹ redis bitnami เจ…เจคเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹:

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

  3. เจ…เจธเฉ€เจ‚ เจกเจพเจ‰เจจเจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚: เจชเฉ‹เจฐเจŸ, เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจจเจฟเจฐเจงเจพเจฐเจค เจฐเฉˆเจฎ เจ†เจ•เจพเจฐ, เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš เจชเจพเจธเจตเจฐเจก, เจ…เจคเฉ‡ เจตเจพเจฒเฉ€เจ…เจฎ เจจเฉ‚เฉฐ เจฎเจพเจŠเจ‚เจŸ เจ•เจฐเฉ‹:

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

  4. เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจก เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฒเจˆ เจ•เจฆเจฎ 2-3 เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚: เจชเฉ‹เจฐเจŸ, เจชเจพเจธเจตเจฐเจก, เจฐเฉˆเจฎ เจฆเจพ เจ†เจ•เจพเจฐ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจตเจพเจฒเฉ€เจ…เจฎ เจซเฉ‹เจฒเจกเจฐ เจฆเจพ เจฎเจพเจฐเจ—:

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€

เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจ—เจพเจ‰เจฃเจพ เจšเฉฐเจ—เจพ เจนเฉ‹เจตเฉ‡เจ—เจพ. เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจธเจฐเจตเจฐ เจธเจชเฉ‡เจธ เจนเฉเจฃ เจ•เจพเจซเจผเฉ€ เจธเจธเจคเฉ€ เจนเฉˆ (เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐเจนเฉฑเจฌ เจ—เจพเจนเจ•เฉ€ เจจเจพเจฒเฉ‹เจ‚ เจฏเจ•เฉ€เจจเจจ เจธเจธเจคเจพ), เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฌเจนเฉเจค เจธเจงเจพเจฐเจจ เจนเฉˆ.

เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚:

  • เจชเจพเจธเจตเจฐเจก-เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจกเฉŒเจ•เจฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจ‡เฉฑเจ• เจธเจฌเจกเฉ‹เจฎเฉ‡เจจ 'เจคเฉ‡ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉˆ https://docker.helloworld.ru;
  • เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ UI, เจ‡เฉฑเจฅเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉˆ https://docker-ui.helloworld.ru.

เจ‡เจธ เจฒเจˆ:

  1. เจšเจฒเฉ‹ เจ†เจชเจฃเฉ€ เจธเจฌเจธเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจตเจฟเฉฑเจš เจชเจฒเฉ‡เจธเจ• เจตเจฟเฉฑเจš เจฆเฉ‹ เจธเจฌเจกเฉ‹เจฎเฉ‡เจจ เจฌเจฃเจพเจˆเจ: docker.helloworld.ru เจ…เจคเฉ‡ docker-ui.helloworld.ru, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ Let's Encrypt เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเฉ€เจเฅค
  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

เจชเจฒเฉ‡เจธเจ• เจซเจพเจ‡เจฐเจตเจพเจฒ เจตเจฟเฉฑเจš เจชเฉ‹เจฐเจŸ เจ–เฉ‹เจฒเฉเจนเจฃเจพ

เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ เจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒ เจ…เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจธเจพเจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจ…เจคเฉ‡ เจฌเจพเจนเจฐเฉ€ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจคเฉ‹เจ‚ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจนเฉ‹เจฃเฅค

เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจชเจฒเฉ‡เจธเจ• เจฒเจˆ เจซเจพเจ‡เจฐเจตเจพเจฒ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค

  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

เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจœเจผ เจตเจฟเฉฑเจš CI/CD เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ

เจ†เจ“ เจธเจญ เจคเฉ‹เจ‚ เจฆเจฟเจฒเจšเจธเจช เจนเจฟเฉฑเจธเฉ‡ 'เจคเฉ‡ เจ‰เจคเจฐเฉ€เจ - เจ‡เฉฑเจ• เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจพเจ‰เจฃเจพเฅค

เจ‡เจธ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฆเฉ‡ เจฆเฉ‹ เจนเจฟเฉฑเจธเฉ‡ เจนเฉ‹เจฃเจ—เฉ‡:

  • เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจŸเฉˆเจธเจŸ (เจฌเฉˆเจ•เจเจ‚เจก เจฒเจˆ) - เจ—เจฟเจฅเจฌ เจธเจพเจˆเจก 'เจคเฉ‡;
  • เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ (เจฌเฉˆเจ•เจเจ‚เจก เจฒเจˆ) เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจจเจพ - เจธเจฐเจตเจฐ 'เจคเฉ‡เฅค

Plesk เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเฉ‹

เจ†เจ“ เจชเจนเจฟเจฒเจพเจ‚ เจฆเฉ‚เจœเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เฉ€เจ (เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเจนเจฟเจฒเจพ เจ‡เจธ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค

เจ…เจธเฉ€เจ‚ Plesk เจฒเจˆ Git เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ‡เฉฑเจ• เจฌเฉˆเจ•เจเจ‚เจก เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจก เจตเจพเจคเจพเจตเจฐเจจ เจจเจพเจฒ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ‹เฅค

  1. เจ…เจธเฉ€เจ‚ เจธเจพเจกเฉ€ เจนเฉˆเจฒเฉ‹เจตเจฐเจฒเจก เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจฆเฉ€ เจ—เจพเจนเจ•เฉ€ 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ—เจฟเฉฑเจŸ เจ‰เจชเจญเจพเจ— 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚:

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

  2. "เจฐเจฟเจฎเฉ‹เจŸ เจ—เจฟเจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€" เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจธเจพเจกเฉ‡ เจ—เจฟเจฅเจฌ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจชเจพเจ“ เจ…เจคเฉ‡ เจกเจฟเจซเฉŒเจฒเจŸ เจซเฉ‹เจฒเจกเจฐ เจฌเจฆเจฒเฉ‹ httpdocs เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจจเฉ‚เฉฐ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ. /httpdocs/hw_back):

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

  3. เจชเจฟเจ›เจฒเฉ‡ เจชเฉœเจพเจ… เจคเฉ‹เจ‚ SSH เจชเจฌเจฒเจฟเจ• เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจœเฉ‹เฉœเจจเจพ เจ‡เจน Github เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจนเฉˆเฅค
  4. เจธเจŸเฉˆเจช 2 เจตเจฟเฉฑเจš เจธเจ•เฉเจฐเฉ€เจจ เจคเฉ‡ เจ เฉ€เจ• เจนเฉˆ เจคเฉ‡ เจ•เจฒเจฟเจ• เจ•เจฐเฉ‹, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจพเจจเฉ‚เฉฐ เจชเจฒเฉ‡เจธเจ• เจตเจฟเฉฑเจš เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจชเฉ‡เจœ เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจนเฉเจฃ เจธเจพเจจเฉ‚เฉฐ เจฎเจพเจธเจŸเจฐ เจฌเฉเจฐเจพเจ‚เจš เจจเฉ‚เฉฐ เจ•เจฎเจฟเจŸ 'เจคเฉ‡ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, 'เจคเฉ‡ เจœเจพเจ“ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฌเจšเจพเจ“ Webhook URL (เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€):

    เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš 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 เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ…เฉฑเจ—เฉ‡ เจตเจงเฉ€เจเฅค

เจชเจฟเฉฑเจ เจตเจฐเจคเฉ€

เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆ deploy.yml เจซเจพเจˆเจฒ.

เจชเจฐ เจ‡เจธเจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ—เจฟเจฅเจฌ เจตเจฟเฉฑเจš เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ—เฉเจชเจค เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจญเจฐเฉ€เจเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, 'เจคเฉ‡ เจœเจพเจ“ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ -> เจฐเจพเจœเจผ:

  • DOCKER_REGISTRY - เจธเจพเจกเฉ‡ เจกเฉŒเจ•เจฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเจพ เจฎเฉ‡เจœเจผเจฌเจพเจจ (docker.helloworld.ru);
  • DOCKER_LOGIN - เจกเฉŒเจ•เจฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเฉ‹;
  • DOCKER_PASSWORD - เจ‡เจธเจฆเจพ เจชเจพเจธเจตเจฐเจก;
  • DEPLOY_HOST โ€” เจนเฉ‹เจธเจŸ เจœเจฟเฉฑเจฅเฉ‡ Plesk เจเจกเจฎเจฟเจจ เจชเฉˆเจจเจฒ เจ‰เจชเจฒเจฌเจง เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจ: helloworld.com: 8443 เจœเจพเจ‚ 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡ เจชเฉเจฐเฉ‹เจก-เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจˆ เจคเฉˆเจจเจพเจคเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจŸเฉ‹เจ•เจจ (เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจชเจฒเฉ‡เจธเจ• เจชเฉ€. 4 เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจคเฉ€ เจตเจฟเฉฑเจš เจฎเจฟเจฒเจฟเจ†);
  • DEPLOY_BACK_DEV_TOKEN - เจธเจฐเจตเจฐ 'เจคเฉ‡ dev เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจˆ เจคเฉˆเจจเจพเจคเฉ€ เจฒเจˆ เจŸเฉ‹เจ•เจจเฅค

เจคเฉˆเจจเจพเจคเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจงเจพเจฐเจจ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจคเจฟเฉฐเจจ เจฎเฉเฉฑเจ– เจ•เจฆเจฎ เจนเจจ:

  • เจธเจพเจกเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจเจพ;
  • เจ‡เฉฑเจ• เจคเจพเจœเจผเฉ‡ เจฌเจฃเจพเจ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ‡ เจŸเฉˆเจธเจŸ;
  • เจธเจผเจพเจ–เจพ (dev/master) 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจˆ เจคเฉˆเจจเจพเจคเฉ€เฅค

เจ…เจ—เจฐเจพเจ‚เจค

เจธเจพเจนเจฎเจฃเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจˆ deploy.yml เจซเจพเจˆเจฒ เจฌเฉ‡เจ• เจคเฉ‹เจ‚ เจฅเฉ‹เฉœเฉเจนเจพ เจตเฉฑเจ–เจฐเจพเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ‡ เจŸเฉˆเจธเจŸเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เจฆเจฎ เจฆเฉ€ เจ˜เจพเจŸ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจฒเจˆ เจŸเฉ‹เจ•เจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎ เจฌเจฆเจฒเจฆเฉ‡ เจนเจจเฅค เจซเจฐเฉฐเจŸ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฒเจˆ เจฐเจพเจœเจผ, เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจญเจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

เจธเจพเจˆเจŸ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช

Nginx เจฆเฉเจ†เจฐเจพ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เจฐเจจเจพ

เจ–เฉˆเจฐ, เจ…เจธเฉ€เจ‚ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ† เจ—เจ เจนเจพเจ‚เฅค เจ‡เจน เจธเจฟเจฐเจซเจผ Nginx เจฐเจพเจนเฉ€เจ‚ เจธเจพเจกเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ 'เจคเฉ‡ เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจ…เจคเฉ‡ เจฌเจพเจนเจฐ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเฉ€ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจ‡เจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจฆเฉ‡ เจ•เจฆเจฎ 5 เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจตเจฐ เจ•เจฐ เจšเฉเฉฑเจ•เฉ‡ เจนเจพเจ‚เฅค dev เจ…เจคเฉ‡ prod เจตเจพเจคเจพเจตเจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจชเจฟเจ›เจฒเฉ‡ เจ…เจคเฉ‡ เจ…เจ—เจฒเฉ‡ เจญเจพเจ—เจพเจ‚ เจฒเจˆ เจ‡เจนเฉ€ เจฆเฉเจนเจฐเจพเจ‡เจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ‡ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเจพเจŸ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจชเจฟเฉฑเจ เจตเจฐเจคเฉ€

เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD

เจ…เจ—เจฐเจพเจ‚เจค

เจซเจฒเจพเจธเจ• + เจเจ‚เจ—เฉเจฒเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš CI/CD
ะฃั‚ะพั‡ะฝะตะฝะธะต ัƒั‚ะพั‡ะฝะตะฝะธะต. เจธเจพเจฐเฉ‡ URL เจจเฉ‚เฉฐ เจซเจฐเฉฐเจŸเจเจ‚เจก เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเจพเจฒ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ, เจธเจฟเจตเจพเจ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจตเจพเจฒเฉ‡ /api/ - เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฟเจ›เจฒเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเจพเจฒ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (เจ‡เจธ เจฒเจˆ เจชเจฟเจ›เจฒเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš, เจธเจพเจฐเฉ‡ เจนเฉˆเจ‚เจกเจฒเจฐ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ /api/).

เจจเจคเฉ€เจœเฉ‡

เจนเฉเจฃ เจธเจพเจกเฉ€ เจธเจพเจˆเจŸ helloworld.ru เจ…เจคเฉ‡ dev.helloworld.ru (เจ•เฉเจฐเจฎเจตเจพเจฐ prod- เจ…เจคเฉ‡ dev-environments) 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค

เจ•เฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจธเจฟเฉฑเจ–เจฟเจ† เจ•เจฟ เจซเจฒเจพเจธเจ• เจ…เจคเฉ‡ เจเจ‚เจ—เฉเจฒเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เจฟเจตเฉ‡เจ‚ เจคเจฟเจ†เจฐ เจ•เจฐเจจเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ Plesk เจšเจฒเจพ เจฐเจนเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจฐเฉ‹เจฒ เจ†เจŠเจŸ เจ•เจฐเจจ เจฒเจˆ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจเจœเจผ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจ•เฉ‹เจก เจจเจพเจฒ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเฉ€ เจกเฉเจชเจฒเฉ€เจ•เฉ‡เจŸ เจ•เจฐเจพเจ‚เจ—เจพ: เจฌเฉˆเจ•เจเจ‚เจก, เจ…เจ—เจฐเจพเจ‚เจค.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹