āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇, āφāĻŽāĻŋ Plesk āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻĒā§āϝāĻžāύ⧇āϞ āĻāĻŦāĻ‚ Github āĻ…ā§āϝāĻžāĻ•āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ CI/CD āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āφāĻŽāĻžāϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻž āĻļ⧇āϝāĻŧāĻžāϰ āĻ•āϰāĻŦāĨ¤ āφāϜ āφāĻŽāϰāĻž āĻļāĻŋāĻ–āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϝāĻžāϰ āύāĻžāĻŽ "āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ"āĨ¤ āĻāϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• āĻĒāĻžāχāĻĨāύ āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϏ⧇āϞāĻžāϰāĻŋ āĻ•āĻ°ā§āĻŽā§€ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ•ā§ŒāĻŖāĻŋāĻ• 8 āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄ āϏāĻš āϞ⧇āĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āϞāĻŋāĻ™ā§āĻ•: āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ, āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļ.

āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āĻ…āĻ‚āĻļ⧇, āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻāĻŦāĻ‚ āĻāϰ āĻ…āĻ‚āĻļāϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āĻŦāĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧāϟāĻŋāϤ⧇, āφāĻŽāϰāĻž āϕ⧀āĻ­āĻžāĻŦ⧇ Plesk āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻŦ āĻāĻŦāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻāĻŦāĻ‚ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ (DB, RabbitMQ, Redis, Docker, āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦ āϤāĻž āĻŦ⧇āϰ āĻ•āϰāĻŦāĨ¤

āϤ⧃āϤ⧀āϝāĻŧ āĻ…āĻ‚āĻļ⧇, āφāĻŽāϰāĻž āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻŦ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟāϕ⧇ āĻāĻ•āϟāĻŋ dev āĻāĻŦāĻ‚ prod āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āφāĻŽāϰāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϏāĻžāχāϟāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻŦāĨ¤

āφāϰ āĻšā§āϝāĻžāρ, āĻĒāϰāĻŋāϚāϝāĻŧ āĻĻāĻŋāϤ⧇ āϭ⧁āϞ⧇ āϗ⧇āĻ›āĻŋāĨ¤ āφāĻŽāĻžāϰ āύāĻžāĻŽ āĻ“āϞ⧇āĻ— āĻŦā§‹āĻ°ā§āϜāĻ­, āφāĻŽāĻŋ āĻĄā§‹āĻŽāĻ•ā§āϞāĻŋāĻ•-āĻ āĻŦāĻ¨ā§āϧāϕ⧀ āĻĒāϰāĻŋāϚāĻžāϞāĻ•āĻĻ⧇āϰ āϜāĻ¨ā§āϝ CRM āϟāĻŋāĻŽā§‡āϰ āĻāĻ•āϜāύ āĻĢ⧁āϞāĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĨ¤

āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ

āĻĒā§āϰāĻĨāĻŽā§‡, āφāϏ⧁āύ āĻĻ⧁āϟāĻŋ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āĻĻ⧇āĻ–āĻŋ - āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻāĻŦāĻ‚ āĻĢā§āϰāĻ¨ā§āϟ - āĻāĻŦāĻ‚ āϕ⧋āĻĄā§‡āϰ āωāĻĒāϰ āϝāĻžāύāĨ¤

āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ: āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āϏ⧇āϞāĻžāϰāĻŋ

āĻĒāĻŋāĻ›āύ⧇āϰ āĻ…āĻ‚āĻļ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻŋ āĻāĻ•āϟāĻŋ āϗ⧁āĻšā§āĻ› āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ āϝāĻž āĻĒāĻžāχāĻĨāύ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦ⧇āĻļ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ: āĻĢā§āϞāĻžāĻ¸ā§āĻ• āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• (āĻāĻĒāĻŋāφāχāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ) āĻāĻŦāĻ‚ āϏ⧇āϞāĻžāϰāĻŋ (āϟāĻžāĻ¸ā§āĻ• āĻ•āĻŋāωāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ)āĨ¤ 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 - āĻŸā§‡āϞāĻŋāĻ—ā§āϰāĻžāĻŽā§‡ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻĒāĻžāĻ āĻžāύ⧋āĨ¤

āĻ•ā§ŒāĻŖāĻŋāĻ• āωāĻĒāϰ āϏāĻŽā§āĻŽā§āĻ–āĻ­āĻžāĻ—

āϏāĻžāĻŽāύ⧇āϰ āϏāĻžāĻĨ⧇ āĻ­āĻžāĻ¨ā§āĻĄāĻžāϰ āĻŦ⧇āϕ⧇āϰ āϤ⧁āϞāύāĻžāϝāĻŧ āĻ…āύ⧇āĻ• āϏāĻšāϜāĨ¤ āϏāĻžāĻŽāύ⧇ āϤāĻŋāύāϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻž āϰāϝāĻŧ⧇āϛ⧇:

  • āχāĻŽā§‡āϞ āĻĒāĻžāĻ āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻ°ā§āĻŽ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻŦā§‹āϤāĻžāĻŽ āϏāĻš āĻĒā§āϰāϧāĻžāύ āĻĒ⧃āĻˇā§āĻ āĻžāĨ¤
  • āϞāĻ—āχāύ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ.
  • āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻĒ⧃āĻˇā§āĻ āĻžāĨ¤

āĻŽā§‚āϞ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āϤāĻĒāĻ¸ā§āĻŦā§€ āĻĻ⧇āĻ–āĻžāϝāĻŧ:

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
āϰ⧁āĻŸā§‡ āĻĻ⧁āϟāĻŋ āĻĢāĻžāχāϞ āφāϛ⧇ Dockerfile и docker-compose.yml, āϏ⧇āχāϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ .ci-cd āĻĒāĻŋāĻ›āύ⧇āϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āϤ⧁āϞāύāĻžāϝāĻŧ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻ•āĻŽ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϏāĻš (āϚāϞāĻŽāĻžāύ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇)āĨ¤

Plesk āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻļ⧁āϰ⧁

āφāϏ⧁āύ Plesk āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāχāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒāĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻŋāĨ¤

āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻĒā§āϞ⧇āĻ¸ā§āϕ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āϚāĻžāϰāϟāĻŋ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĻāϰāĻ•āĻžāϰ:

  • Docker Plesk āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒā§āϝāĻžāύ⧇āϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋāϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻāĻŦāĻ‚ āĻĻ⧃āĻļā§āϝāϤ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇;
  • Git āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āϧāĻžāĻĒ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇;
  • Let's Encrypt āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇ TLS āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ āϤ⧈āϰāĻŋ (āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ-āύāĻŦā§€āĻ•āϰāĻŖ) āĻ•āϰāϤ⧇;
  • Firewall āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāϕ⧇āϰ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāĻŋāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇āĨ¤

āφāĻĒāύāĻŋ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŦāĻŋāĻ­āĻžāϗ⧇ Plesk āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒā§āϝāĻžāύ⧇āϞ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
āφāĻŽāϰāĻž āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻļāĻĻ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻŦ āύāĻž, āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏ⧇āϟāĻŋāĻ‚āϏ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄā§‡āĻŽā§‹ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āĻ•āϰāĻŦ⧇āĨ¤

āĻāĻ•āϟāĻŋ āϏāĻĻāĻ¸ā§āϝāϤāĻž āĻāĻŦāĻ‚ āϏāĻžāχāϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āĻāϰāĻĒāϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ helloworld.ru āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒāĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āϏ⧇āĻ–āĻžāύ⧇ dev.helloworld.ru āϏāĻžāĻŦāĻĄā§‹āĻŽā§‡āύ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

  1. helloworld.ru āĻĄā§‹āĻŽā§‡āύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒāĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āϞāĻ—āχāύ-āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧁āύ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
    āĻĒ⧃āĻˇā§āĻ āĻžāϰ āύ⧀āĻšā§‡ āĻŦāĻžāĻ•ā§āϏāϟāĻŋ āĻšā§‡āĻ• āĻ•āϰ⧁āύ āϞ⧇āϟāϏ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĻāĻŋāϝāĻŧ⧇ āĻĄā§‹āĻŽā§‡āχāύāϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻ•āϰ⧁āύāϝāĻĻāĻŋ āφāĻŽāϰāĻž āϏāĻžāχāĻŸā§‡āϰ āϜāĻ¨ā§āϝ HTTPS āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āϚāĻžāχ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  2. āĻāϰāĻĒāϰ⧇, āĻāχ āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒāĻļāύ⧇, āĻāĻ•āϟāĻŋ āϏāĻžāĻŦāĻĄā§‹āĻŽā§‡āύ dev.helloworld.ru āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ (āϝāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇āϰ TLS āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰāĻ“ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ):

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

āϏāĻžāĻ°ā§āĻ­āĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āφāϛ⧇ OS Debian āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āϘ āĻāĻŦāĻ‚ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻĒā§āϝāĻžāύ⧇āϞ āĻĒā§āϞ⧇āĻ¸ā§āĻ• āĻ…āĻŦāϏāĻŋāĻĄāĻŋāϝāĻŧāĻžāύ 18.0.27.

āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

  • PostgreSQL (āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, dev āĻāĻŦāĻ‚ prod āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻĻ⧁āϟāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϏāĻš āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĨāĻžāĻ•āĻŦ⧇)āĨ¤
  • RabbitMQ (āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ­āĻšā§‹āĻ¸ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āχ, āĻāĻ•āχ āωāĻĻāĻžāĻšāϰāĻŖ)āĨ¤
  • āĻĻ⧁āϟāĻŋ Redis āωāĻĻāĻžāĻšāϰāĻŖ (dev āĻāĻŦāĻ‚ prod āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ)āĨ¤
  • āĻĄāĻ•āĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ (āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻĄāĻ•āĻžāϰ āϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋāϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡āϰ āϜāĻ¨ā§āϝ)āĨ¤
  • āĻĄāĻ•āĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϰ āϜāĻ¨ā§āϝ UIāĨ¤

āĻĒā§‹āĻ¸ā§āϟāĻ—ā§āϰāĻŋ

Plesk āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ PostgreSQL DBMS āĻāϰ āϏāĻžāĻĨ⧇ āĻāϏ⧇āϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āύāϝāĻŧ (Plesk Obsidian āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻĒā§‹āĻ¸ā§āϟāĻ—ā§āϰ⧇āϏ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 8.4–10.8)āĨ¤ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϚāĻžāχ (āĻāχ āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ 12.3), āϤāĻžāχ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŦāĨ¤

Postgres āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ Debian āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻāϰ āĻĒā§āϰāϚ⧁āϰ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤āωāĻĻāĻžāĻšāϰāĻŖ), āϤāĻžāχ āφāĻŽāĻŋ āϤāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻŦ āύāĻž, āφāĻŽāĻŋ āĻļ⧁āϧ⧁ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻ⧇āĻŦ:

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

RabbitMQ

āϚāϞ⧁āύ āĻāĻŦāĻžāϰ Celery-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŽā§‡āϏ⧇āϜ āĻŦā§āϰ⧋āĻ•āĻžāϰ RabbitMQ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĻāĻŋāϕ⧇ āĻāĻ—ā§‹āύ⧋ āϝāĻžāĻ•āĨ¤ āĻāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ Debian āĻŦāĻŋāώāϝāĻŧāϟāĻž āĻŦ⧇āĻļ āϏāĻšāϜ:

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. āφāĻŽāϰāĻž āĻĒā§āϞ⧇āĻ¸ā§āϕ⧇ āϝāĻžāχ, āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŦāĻŋāĻ­āĻžāϗ⧇ āϝāĻžāύ, āĻĄāĻ•āĻžāϰ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύāϟāĻŋ āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŋ (āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĒā§āϰāϝāĻŧā§‹āϜāύ):

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  2. āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ⧇ āϝāĻžāύ, āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϚāĻŋāĻ¤ā§āϰāϟāĻŋ āϖ⧁āρāϜ⧁āύ redis bitnami āĻāĻŦāĻ‚ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  3. āφāĻŽāϰāĻž āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āϝāĻžāχ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰāĻŋ: āĻĒā§‹āĻ°ā§āϟ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧁āύ, āϏāĻ°ā§āĻŦāĻžāϧāĻŋāĻ• āĻŦāϰāĻžāĻĻā§āĻĻāĻ•ā§ƒāϤ RAM āφāĻ•āĻžāϰ, āĻĒāϰāĻŋāĻŦ⧇āĻļ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻ­āϞāĻŋāωāĻŽ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰ⧁āύ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  4. āφāĻŽāϰāĻž āĻĒā§āϰ⧋āĻĄ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ 2-3 āϧāĻžāĻĒāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāĻŋ, āϏ⧇āϟāĻŋāĻ‚āϏ⧇ āφāĻŽāϰāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋ: āĻĒā§‹āĻ°ā§āϟ, āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ, āĻ°â€Œā§āϝāĻžāĻŽ āφāĻ•āĻžāϰ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ­āϞāĻŋāωāĻŽ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āϰ āĻĒāĻĨ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

āĻĄāĻ•āĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ

āĻŽā§ŒāϞāĻŋāĻ• āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϰāĻžāĻ–āĻž āĻ­āĻžāϞ āĻšāĻŦ⧇āĨ¤ āϏ⧌āĻ­āĻžāĻ—ā§āϝāĻŦāĻļāϤ, āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻ¸ā§āĻĒ⧇āϏ āĻāĻ–āύ āĻŦ⧇āĻļ āϏāĻ¸ā§āϤāĻž (āĻ…āĻŦāĻļā§āϝāχ āĻāĻ•āϟāĻŋ DockerHub āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒāĻļāύ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āϏāĻ¸ā§āϤāĻž), āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϖ⧁āĻŦāχ āϏāĻšāϜāĨ¤

āφāĻŽāϰāĻž āĻĨāĻžāĻ•āϤ⧇ āϚāĻžāχ:

  • āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ-āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻĄāĻ•āĻžāϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻāĻ•āϟāĻŋ āϏāĻžāĻŦāĻĄā§‹āĻŽā§‡āύ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝ https://docker.helloworld.ru;
  • āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇ āĻ›āĻŦāĻŋ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ UI, āĻāĻ–āĻžāύ⧇ āωāĻĒāϞāĻŦā§āϧ 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 āϏāĻžāĻŦāĻĄā§‹āĻŽā§‡āύ⧇āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϗ⧁āϞāĻŋ āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰ:

āĻ…āĻ§ā§āϝāĻžāϝāĻŧ āĻĻ⧇āĻŦ āϏāϰāĻžā§āϜāĻžāĻŽ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāχāĻŸā§‡ āϝāĻžāύ āĻĄāĻ•āĻžāϰ āĻĒā§āϰāĻ•ā§āϏāĻŋ āύāĻŋāϝāĻŧāĻŽ:

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻĒā§āϰāĻ•ā§āϏāĻŋ āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻŸā§āϰāĻžāĻĢāĻŋāϕ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽ āϝ⧋āĻ— āĻ•āϰ⧁āύ:

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  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. āĻĄāĻ•āĻžāϰ-ui.helloworld.ru āϏāĻžāĻŦāĻĄā§‹āĻŽā§‡āύ⧇āϰ āĻ…āĻĒāĻžāϰ⧇āĻļāύāĻ“ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āϝāĻžāĻ•:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
    āφāĻĒāύāĻŋ āĻŦā§āϰāĻžāωāϜ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϞ⧇, āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āωāχāĻ¨ā§āĻĄā§‹ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻŦ⧇ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻžāϕ⧇ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āύāĻžāĻŽ āĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϞāĻŋāĻ–āϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āϏāĻš āĻāĻ•āϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻšāĻŦ (āφāĻĒāĻžāϤāϤ, āĻāϟāĻŋ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āĻ–āĻžāϞāĻŋ āĻĨāĻžāĻ•āĻŦ⧇):

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

Plesk āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ⧇ āĻĒā§‹āĻ°ā§āϟ āĻ–ā§‹āϞāĻž āĻšāĻšā§āϛ⧇

āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§‹āĻ°ā§āϟāϗ⧁āϞāĻŋ āϖ⧁āϞāϤ⧇ āĻšāĻŦ⧇ āϝāĻžāϤ⧇ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻĄāĻ•āĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻāĻŦāĻ‚ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĨ⧇āϕ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝ āĻšāϝāĻŧāĨ¤

āφāĻŽāϰāĻž āφāϗ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž Plesk-āĻāϰ āϜāĻ¨ā§āϝ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āĻĻ⧇āĻ–āĻž āϝāĻžāĻ•āĨ¤

  1. āϝāĻžāĻ“ āϟ⧁āϞ āĻ“ āϏ⧇āϟāĻŋāĻ‚āϏ > āϏ⧇āϟāĻŋāĻ‚āϏ > āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ:
    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
  2. āϝāĻžāĻ“ Plesk āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āύāĻŋāϝāĻŧāĻŽ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧁āύ > āĻ•āĻžāĻ¸ā§āϟāĻŽ āύāĻŋāϝāĻŧāĻŽ āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāϰ āϏāĻžāĻŦāύ⧇āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϟāĻŋāϏāĻŋāĻĒāĻŋ āĻĒā§‹āĻ°ā§āϟāϗ⧁āϞāĻŋ āϖ⧁āϞ⧁āύ (172.0.0.0 / 8):
    RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
    āϰ⧇āĻĄāĻŋāϏ: 32785, 32786

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  3. āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽāĻ“ āϝ⧋āĻ— āĻ•āϰāĻŦ āϝāĻž PostgreSQL āĻĒā§‹āĻ°ā§āϟ āĻāĻŦāĻ‚ RabbitMQ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻĒā§āϝāĻžāύ⧇āϞāϗ⧁āϞāĻŋāϕ⧇ āĻŦāĻšāĻŋāĻ°ā§āĻŦāĻŋāĻļā§āĻŦ⧇ āϖ⧁āϞāĻŦ⧇:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  4. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύ āĻŦā§‹āϤāĻžāĻŽāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

Github āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ CI/CD āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āϚāϞ⧁āύ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻ…āĻ‚āĻļ⧇ āύ⧇āĻŽā§‡ āφāϏāĻŋ - āĻāĻ•āϟāĻŋ āĻ…āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āχāĻ¨ā§āϟāĻŋāĻ—ā§āϰ⧇āĻļāύ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻžāĨ¤

āĻāχ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻĻ⧁āϟāĻŋ āĻ…āĻ‚āĻļ āĻ—āĻ āĻŋāϤ āĻšāĻŦ⧇:

  • āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻž āϚāĻžāϞāĻžāύ⧋ (āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ) - Github āĻĒāĻžāĻļ⧇;
  • āϚāϞāĻŽāĻžāύ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ (āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ) āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž - āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āĨ¤

Plesk āĻ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύ

āφāϏ⧁āύ āĻĒā§āϰāĻĨāĻŽā§‡ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāϟāĻŋ āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŋ (āĻ•āĻžāϰāĻŖ āĻĒā§āϰāĻĨāĻŽāϟāĻŋ āĻāϟāĻŋāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇)āĨ¤

āφāĻŽāϰāĻž Plesk-āĻāϰ āϜāĻ¨ā§āϝ Git āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻŦāĨ¤

āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻĄ āĻĒāϰāĻŋāĻŦ⧇āĻļ āϏāĻš āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤

  1. āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāĻŸā§‡āϰ āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒāĻļāύ⧇ āϝāĻžāχ āĻāĻŦāĻ‚ āĻ—āĻŋāϟ āϏāĻžāĻŦāϏ⧇āĻ•āĻļāύ⧇ āϝāĻžāχ:

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  2. "āϰāĻŋāĻŽā§‹āϟ āĻ—āĻŋāϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ" āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ Github āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ• āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰāĻžāύ āĻāĻŦāĻ‚ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ httpdocs āĻ…āĻ¨ā§āϝ⧇āϰ āĻ•āĻžāϛ⧇ (āϝ⧇āĻŽāύ /httpdocs/hw_back):

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  3. āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ āĻĨ⧇āϕ⧇ SSH āĻĒāĻžāĻŦāϞāĻŋāĻ• āϕ⧀ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϝ⧋āĻ— āĻāϟāĻž Github āϏ⧇āϟāĻŋāĻ‚āϏ⧇āĨ¤
  4. āϧāĻžāĻĒ 2-āĻ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻ“āϕ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ⧇ āφāĻŽāϰāĻž Plesk-āĻāϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻĒ⧁āύāσāύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāϤ āĻšāĻŦāĨ¤ āĻāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽā§‚āϞ āĻļāĻžāĻ–āĻžāϰ āĻĒā§āϰāϤāĻŋāĻļā§āϰ⧁āϤāĻŋāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞāϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻ•āϰāϤ⧇, āϝāĻžāύ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϏ⧇āϟāĻŋāĻ‚āϏ āĻāĻŦāĻ‚ āĻŽāĻžāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ Webhook URL (āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āĻĒāϰ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇):

    āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

  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 āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻāĻ•āχāĻ­āĻžāĻŦ⧇ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

Github āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āĻĒāĻžāχāĻĒāϞāĻžāχāύ

āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āφāĻŽāĻžāĻĻ⧇āϰ CI/CD āĻĒāĻžāχāĻĒāϞāĻžāχāύ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āĻ…āĻ‚āĻļ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āĻĻāĻŋāϕ⧇ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻ•āĨ¤

āĻŦā§āϝāĻžāĻ•-āĻāĻ¨ā§āĻĄ

āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ deploy.yml āĻĢāĻžāχāϞ.

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āĻĒāĻžāĻ°ā§āϏ āĻ•āϰāĻžāϰ āφāϗ⧇, āφāϏ⧁āύ Github-āĻ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ—ā§‹āĻĒāύ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϗ⧁āϞāĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāĻŋāĨ¤ āĻāϟāĻŋ āĻ•āϰāϤ⧇, āϝāĻžāύ āϏ⧇āϟāĻŋāĻ‚āϏ -> āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž:

  • 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/master) āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāĨ¤

āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļ

āϏāĻžāĻŽāύ⧇āϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āϜāĻ¨ā§āϝ deploy.yml āĻĢāĻžāχāϞ āĻŦ⧇āϕ⧇āϰ āĻĨ⧇āϕ⧇ āĻāĻ•āϟ⧁ āφāϞāĻžāĻĻāĻžāĨ¤ āĻāϟāĻŋāϤ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āϚāĻžāϞāĻžāύ⧋āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ⧇āϰ āĻ…āĻ­āĻžāĻŦ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āĻŸā§‹āϕ⧇āύāϗ⧁āϞāĻŋāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤ āϏāĻžāĻŽāύ⧇āϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻžāϗ⧁āϞāĻŋ, āϝāĻžāχāĻšā§‹āĻ•, āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āĻĒā§‚āϰāĻŖ āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰāĨ¤

āϏāĻžāχāϟ āϏ⧇āϟāφāĻĒ

Nginx āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻŸā§āϰāĻžāĻĢāĻŋāĻ•

āφāĻšā§āĻ›āĻž, āφāĻŽāϰāĻž āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻāϏ⧇āĻ›āĻŋāĨ¤ āĻāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ Nginx āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻāĻŦāĻ‚ āφāωāϟāĻ—ā§‹āϝāĻŧāĻŋāĻ‚ āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāϕ⧇āϰ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻŦāĻļ⧇āώāĨ¤ āφāĻŽāϰāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻĄāĻ•āĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āϏ⧇āϟāφāĻĒ⧇āϰ 5 āϧāĻžāĻĒ⧇ āĻāχ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āĻ•āĻ­āĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ dev āĻāĻŦāĻ‚ prod āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āĻĒāĻŋāĻ›āύ⧇ āĻāĻŦāĻ‚ āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āχ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤

āφāĻŽāĻŋ āϏ⧇āϟāĻŋāĻ‚āϏ⧇āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻŦāĨ¤

āĻŦā§āϝāĻžāĻ•-āĻāĻ¨ā§āĻĄ

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ

āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļ

āĻāĻ•āϟāĻŋ āĻĢā§āϞāĻžāĻ¸ā§āĻ• + āĻ•ā§ŒāĻŖāĻŋāĻ• āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āϏāĻŋāφāχ/āϏāĻŋāĻĄāĻŋ
ĐŖŅ‚ĐžŅ‡ĐŊĐĩĐŊиĐĩ ŅƒŅ‚ĐžŅ‡ĐŊĐĩĐŊиĐĩ. āϏāĻŽāĻ¸ā§āϤ āχāωāφāϰāĻāϞ āĻĢā§āϰāĻ¨ā§āϟāĻāĻ¨ā§āĻĄ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻ•āϰāĻž āĻšāĻŦ⧇, āĻāϰ āϏāĻžāĻĨ⧇ āĻļ⧁āϰ⧁ āĻšāĻ“āϝāĻŧāĻž āĻ›āĻžāĻĄāĻŧāĻž /api/ - āϤāĻžāϰāĻž āĻĒāĻŋāĻ›āύ⧇āϰ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻĒā§āϰāĻ•ā§āϏāĻŋ āĻ•āϰāĻž āĻšāĻŦ⧇ (āϤāĻžāχ āĻĒāĻŋāĻ›āύ⧇āϰ āĻĒāĻžāĻ¤ā§āϰ⧇, āϏāĻŽāĻ¸ā§āϤ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰāĻĻ⧇āϰ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ /api/).

āĻĢāϞāĻžāĻĢāϞ

āĻāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāχāϟāϟāĻŋ helloworld.ru āĻāĻŦāĻ‚ dev.helloworld.ru (āϝāĻĨāĻžāĻ•ā§āϰāĻŽā§‡ prod- āĻāĻŦāĻ‚ dev-āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ) āĻ āĻĒāĻžāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤāĨ¤

āϏāĻžāĻŽāĻ—ā§āϰāĻŋāĻ•āĻ­āĻžāĻŦ⧇, āφāĻŽāϰāĻž āĻļāĻŋāϖ⧇āĻ›āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĢā§āϞāĻžāĻ¸ā§āĻ• āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻ™ā§āϗ⧁āϞāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ—āĻŋāĻĨ⧁āĻŦ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϝāĻžāϤ⧇ āĻāϟāĻŋ Plesk āϚāϞāĻŽāĻžāύ āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϰ⧋āϞ āφāωāϟ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

āφāĻŽāĻŋ āϕ⧋āĻĄ āϏāĻš āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞāϗ⧁āϞāĻŋāϰ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āύāĻ•āϞ āĻ•āϰāĻŦ: āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ, āϏāĻžāĻŽāύ⧇āϰ āĻ…āĻ‚āĻļ.

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster