ಈ ಲೇಖನದಲ್ಲಿ, Plesk ನಿಯಂತ್ರಣ ಫಲಕ ಮತ್ತು Github ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು CI/CD ಅನ್ನು ಹೊಂದಿಸುವ ನನ್ನ ಅನುಭವವನ್ನು ನಾನು ಹಂಚಿಕೊಳ್ಳುತ್ತೇನೆ. "ಹೆಲೋವರ್ಲ್ಡ್" ಎಂಬ ಜಟಿಲವಲ್ಲದ ಹೆಸರಿನೊಂದಿಗೆ ಸರಳವಾದ ಯೋಜನೆಯನ್ನು ಹೇಗೆ ನಿಯೋಜಿಸಬೇಕೆಂದು ಇಂದು ನಾವು ಕಲಿಯುತ್ತೇವೆ. ಇದನ್ನು ಫ್ಲಾಸ್ಕ್ ಪೈಥಾನ್ ಚೌಕಟ್ಟಿನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ, ಸೆಲೆರಿ ಕೆಲಸಗಾರರು ಮತ್ತು ಕೋನೀಯ 8 ಮುಂಭಾಗ.
ಲೇಖನದ ಮೊದಲ ಭಾಗದಲ್ಲಿ, ನಾವು ನಮ್ಮ ಯೋಜನೆ ಮತ್ತು ಅದರ ಭಾಗಗಳನ್ನು ನೋಡುತ್ತೇವೆ. ಎರಡನೆಯದರಲ್ಲಿ, Plesk ಅನ್ನು ಹೇಗೆ ಹೊಂದಿಸುವುದು ಮತ್ತು ಅಗತ್ಯ ವಿಸ್ತರಣೆಗಳು ಮತ್ತು ಘಟಕಗಳನ್ನು (DB, RabbitMQ, Redis, Docker, ಇತ್ಯಾದಿ) ಸ್ಥಾಪಿಸುವುದು ಹೇಗೆ ಎಂದು ನಾವು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತೇವೆ.
ಮೂರನೇ ಭಾಗದಲ್ಲಿ, ಡೆವ್ ಮತ್ತು ಪ್ರಾಡ್ ಪರಿಸರದಲ್ಲಿ ಸರ್ವರ್ಗೆ ನಮ್ಮ ಯೋಜನೆಯನ್ನು ನಿಯೋಜಿಸಲು ಪೈಪ್ಲೈನ್ ಅನ್ನು ಹೇಗೆ ಹೊಂದಿಸುವುದು ಎಂದು ನಾವು ಅಂತಿಮವಾಗಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತೇವೆ. ತದನಂತರ ನಾವು ಸರ್ವರ್ನಲ್ಲಿ ಸೈಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ.
ಮತ್ತು ಹೌದು, ನಾನು ನನ್ನನ್ನು ಪರಿಚಯಿಸಲು ಮರೆತಿದ್ದೇನೆ. ನನ್ನ ಹೆಸರು ಒಲೆಗ್ ಬೊರ್ಜೋವ್, ನಾನು ಡೊಮ್ಕ್ಲಿಕ್ನಲ್ಲಿ ಅಡಮಾನ ನಿರ್ವಾಹಕರಿಗಾಗಿ CRM ತಂಡದಲ್ಲಿ ಫುಲ್ಸ್ಟಾಕ್ ಡೆವಲಪರ್ ಆಗಿದ್ದೇನೆ.
ಪ್ರಾಜೆಕ್ಟ್ ಅವಲೋಕನ
ಮೊದಲಿಗೆ, ಎರಡು ಪ್ರಾಜೆಕ್ಟ್ ರೆಪೊಸಿಟರಿಗಳನ್ನು ನೋಡೋಣ - ಬ್ಯಾಕೆಂಡ್ ಮತ್ತು ಫ್ರಂಟ್ - ಮತ್ತು ಕೋಡ್ ಮೇಲೆ ಹೋಗಿ.
ಬ್ಯಾಕೆಂಡ್: ಫ್ಲಾಸ್ಕ್ + ಸೆಲರಿ
ಹಿಂದಿನ ಭಾಗಕ್ಕಾಗಿ, ನಾನು ಪೈಥಾನ್ ಡೆವಲಪರ್ಗಳಲ್ಲಿ ಸಾಕಷ್ಟು ಜನಪ್ರಿಯವಾಗಿರುವ ಗುಂಪನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದೇನೆ: ಫ್ಲಾಸ್ಕ್ ಫ್ರೇಮ್ವರ್ಕ್ (API ಗಾಗಿ) ಮತ್ತು ಸೆಲೆರಿ (ಕಾರ್ಯ ಕ್ಯೂಗಾಗಿ). SQLAchemy ಅನ್ನು ORM ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಅಲೆಂಬಿಕ್ ಅನ್ನು ವಲಸೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಹ್ಯಾಂಡಲ್ಗಳಲ್ಲಿ JSON ಮೌಲ್ಯೀಕರಣಕ್ಕಾಗಿ - ಮಾರ್ಷ್ಮ್ಯಾಲೋ.
В ಭಂಡಾರಗಳು ಯೋಜನೆಯ ಚಾಲನೆಗೆ ರಚನೆ ಮತ್ತು ಸೂಚನೆಗಳ ವಿವರವಾದ ವಿವರಣೆಯೊಂದಿಗೆ Readme.md ಫೈಲ್ ಇದೆ.
ವೆಬ್ ಭಾಗ API ಸಾಕಷ್ಟು ಜಟಿಲವಲ್ಲದ, 6 ಪೆನ್ನುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:
/ping - ಲಭ್ಯತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು;
ನೋಂದಣಿ, ದೃಢೀಕರಣ, ಅಧಿಕಾರ ರದ್ದುಗೊಳಿಸುವಿಕೆ ಮತ್ತು ಅಧಿಕೃತ ಬಳಕೆದಾರರನ್ನು ಪಡೆಯುವುದಕ್ಕಾಗಿ ನಿಭಾಯಿಸುತ್ತದೆ;
ಸೆಲೆರಿ ಕ್ಯೂನಲ್ಲಿ ಕಾರ್ಯವನ್ನು ಇರಿಸುವ ಇಮೇಲ್ ಹ್ಯಾಂಡಲ್.
ಸೆಲರಿ ಭಾಗ ಇನ್ನೂ ಸುಲಭ, ಒಂದೇ ಒಂದು ಸಮಸ್ಯೆ ಇದೆ send_mail_task.
ಇಮೇಲ್ ಕಳುಹಿಸಲು ಫಾರ್ಮ್ ಮತ್ತು ನಿರ್ಗಮನ ಬಟನ್ ಹೊಂದಿರುವ ಮುಖ್ಯ ಪುಟ.
ಲಾಗಿನ್ ಪುಟ.
ನೋಂದಣಿ ಪುಟ.
ಮುಖ್ಯ ಪುಟವು ತಪಸ್ವಿಯಾಗಿ ಕಾಣುತ್ತದೆ:
ಮೂಲದಲ್ಲಿ ಎರಡು ಫೈಲ್ಗಳಿವೆ Dockerfile и docker-compose.yml, ಹಾಗೆಯೇ ಪರಿಚಿತ ಫೋಲ್ಡರ್ .ci-cd ಹಿಂದಿನ ರೆಪೊಸಿಟರಿಗಿಂತ ಸ್ವಲ್ಪ ಕಡಿಮೆ ಸ್ಕ್ರಿಪ್ಟ್ಗಳೊಂದಿಗೆ (ಚಾಲನೆಯಲ್ಲಿರುವ ಪರೀಕ್ಷೆಗಳಿಗಾಗಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ).
Plesk ನಲ್ಲಿ ಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ
Plesk ಅನ್ನು ಹೊಂದಿಸುವ ಮೂಲಕ ಮತ್ತು ನಮ್ಮ ಸೈಟ್ಗೆ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸುವ ಮೂಲಕ ಪ್ರಾರಂಭಿಸೋಣ.
ವಿಸ್ತರಣೆಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ
Plesk ನಲ್ಲಿ, ನಮಗೆ ನಾಲ್ಕು ವಿಸ್ತರಣೆಗಳು ಬೇಕಾಗುತ್ತವೆ:
Docker Plesk ನಿರ್ವಾಹಕ ಫಲಕದಲ್ಲಿ ಧಾರಕಗಳ ಸ್ಥಿತಿಯನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ದೃಷ್ಟಿಗೋಚರವಾಗಿ ಪ್ರದರ್ಶಿಸಲು;
Git ಸರ್ವರ್ನಲ್ಲಿ ನಿಯೋಜನೆ ಹಂತವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು;
Let's Encrypt ಉಚಿತ TLS ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಉತ್ಪಾದಿಸಲು (ಮತ್ತು ಸ್ವಯಂ-ನವೀಕರಣ);
Firewall ಒಳಬರುವ ದಟ್ಟಣೆಯ ಫಿಲ್ಟರಿಂಗ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು.
ವಿಸ್ತರಣೆಗಳ ವಿಭಾಗದಲ್ಲಿ Plesk ನಿರ್ವಾಹಕ ಫಲಕದ ಮೂಲಕ ನೀವು ಅವುಗಳನ್ನು ಸ್ಥಾಪಿಸಬಹುದು:
ವಿಸ್ತರಣೆಗಳಿಗಾಗಿ ನಾವು ವಿವರವಾದ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪರಿಗಣಿಸುವುದಿಲ್ಲ, ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು ನಮ್ಮ ಡೆಮೊ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಮಾಡುತ್ತದೆ.
ಚಂದಾದಾರಿಕೆ ಮತ್ತು ಸೈಟ್ ಅನ್ನು ರಚಿಸಿ
ಮುಂದೆ, ನಾವು ನಮ್ಮ helloworld.ru ವೆಬ್ಸೈಟ್ಗಾಗಿ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ ಮತ್ತು ಅಲ್ಲಿ dev.helloworld.ru ಸಬ್ಡೊಮೇನ್ ಅನ್ನು ಸೇರಿಸಬೇಕು.
helloworld.ru ಡೊಮೇನ್ಗಾಗಿ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸಿ ಮತ್ತು ಸಿಸ್ಟಮ್ ಬಳಕೆದಾರರಿಗೆ ಲಾಗಿನ್-ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ:
ಪುಟದ ಕೆಳಭಾಗದಲ್ಲಿರುವ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪರಿಶೀಲಿಸಿ ಲೆಟ್ಸ್ ಎನ್ಕ್ರಿಪ್ಟ್ನೊಂದಿಗೆ ಡೊಮೇನ್ ಅನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಿನಾವು ಸೈಟ್ಗಾಗಿ HTTPS ಅನ್ನು ಹೊಂದಿಸಲು ಬಯಸಿದರೆ:
ಮುಂದೆ, ಈ ಚಂದಾದಾರಿಕೆಯಲ್ಲಿ, dev.helloworld.ru ಎಂಬ ಉಪಡೊಮೇನ್ ಅನ್ನು ರಚಿಸಿ (ಇದಕ್ಕಾಗಿ ನೀವು ಉಚಿತ TLS ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸಹ ನೀಡಬಹುದು):
ಸರ್ವರ್ ಘಟಕಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ
ನಮ್ಮಲ್ಲಿ ಸರ್ವರ್ ಇದೆ ಓಎಸ್ ಡೆಬಿಯನ್ ಸ್ಟ್ರೆಚ್ 9.12 ಮತ್ತು ಸ್ಥಾಪಿಸಲಾದ ನಿಯಂತ್ರಣ ಫಲಕ ಪ್ಲೆಸ್ಕ್ ಅಬ್ಸಿಡಿಯನ್ 18.0.27.
ನಮ್ಮ ಯೋಜನೆಗಾಗಿ ನಾವು ಸ್ಥಾಪಿಸಬೇಕು ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿದೆ:
PostgreSQL (ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ದೇವ್ ಮತ್ತು ಪ್ರಾಡ್ ಪರಿಸರಗಳಿಗಾಗಿ ಎರಡು ಡೇಟಾಬೇಸ್ಗಳೊಂದಿಗೆ ಒಂದು ಸರ್ವರ್ ಇರುತ್ತದೆ).
RabbitMQ (ಪರಿಸರಗಳಿಗಾಗಿ ವಿಭಿನ್ನ vhostಗಳೊಂದಿಗೆ ಅದೇ, ಅದೇ ನಿದರ್ಶನ).
ಎರಡು ರೆಡಿಸ್ ನಿದರ್ಶನಗಳು (ದೇವ್ ಮತ್ತು ಪ್ರಾಡ್ ಪರಿಸರಗಳಿಗಾಗಿ).
ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿ (ನಿರ್ಮಿತ ಡಾಕರ್ ಚಿತ್ರಗಳ ಸ್ಥಳೀಯ ಸಂಗ್ರಹಣೆಗಾಗಿ).
ಡಾಕರ್ ನೋಂದಾವಣೆಗಾಗಿ UI.
PostgreSQL
Plesk ಈಗಾಗಲೇ PostgreSQL DBMS ನೊಂದಿಗೆ ಬಂದಿದೆ, ಆದರೆ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯಲ್ಲ (ಪ್ಲೆಸ್ಕ್ ಅಬ್ಸಿಡಿಯನ್ ಬರೆಯುವ ಸಮಯದಲ್ಲಿ ಬೆಂಬಲಿಸಿದರು ಪೋಸ್ಟ್ಗ್ರೆಸ್ ಆವೃತ್ತಿಗಳು 8.4–10.8). ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಾಗಿ ನಾವು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಬಯಸುತ್ತೇವೆ (ಈ ಬರವಣಿಗೆಯ ಸಮಯದಲ್ಲಿ 12.3), ಆದ್ದರಿಂದ ನಾವು ಅದನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಥಾಪಿಸುತ್ತೇವೆ.
ನೆಟ್ನಲ್ಲಿ ಡೆಬಿಯನ್ನಲ್ಲಿ ಪೋಸ್ಟ್ಗ್ರೆಸ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಕಷ್ಟು ವಿವರವಾದ ಸೂಚನೆಗಳಿವೆ (ಉದಾಹರಣೆ), ಆದ್ದರಿಂದ ನಾನು ಅವುಗಳನ್ನು ವಿವರವಾಗಿ ವಿವರಿಸುವುದಿಲ್ಲ, ನಾನು ಆಜ್ಞೆಗಳನ್ನು ನೀಡುತ್ತೇನೆ:
PostgreSQL ಸಾಧಾರಣ ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ, ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಸರಿಹೊಂದಿಸಲು ಇದು ಕಡ್ಡಾಯವಾಗಿದೆ. ಇದು ನಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ ಕ್ಯಾಲ್ಕುಲೇಟರ್: ನಿಮ್ಮ ಸರ್ವರ್ನ ನಿಯತಾಂಕಗಳಲ್ಲಿ ನೀವು ಚಾಲನೆ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಫೈಲ್ನಲ್ಲಿನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಾಯಿಸಬೇಕು /etc/postgresql/12/main/postgresql.confನೀಡಿದವರಿಗೆ. ಅಂತಹ ಕ್ಯಾಲ್ಕುಲೇಟರ್ಗಳು ಮ್ಯಾಜಿಕ್ ಬುಲೆಟ್ ಅಲ್ಲ ಎಂದು ಇಲ್ಲಿ ಗಮನಿಸಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಹಾರ್ಡ್ವೇರ್, ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ಪ್ರಶ್ನೆ ಸಂಕೀರ್ಣತೆಯ ಆಧಾರದ ಮೇಲೆ ಬೇಸ್ ಅನ್ನು ಹೆಚ್ಚು ನಿಖರವಾಗಿ ಟ್ಯೂನ್ ಮಾಡಬೇಕು. ಆದರೆ ಪ್ರಾರಂಭಿಸಲು ಇದು ಸಾಕು.
ಕ್ಯಾಲ್ಕುಲೇಟರ್ ಪ್ರಸ್ತಾಪಿಸಿದ ಸೆಟ್ಟಿಂಗ್ಗಳ ಜೊತೆಗೆ, ನಾವು ಸಹ ಬದಲಾಯಿಸುತ್ತೇವೆ postgresql.confಡೀಫಾಲ್ಟ್ ಪೋರ್ಟ್ 5432 ಇನ್ನೊಂದಕ್ಕೆ (ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ - 53983).
ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಅನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ, ಆಜ್ಞೆಯೊಂದಿಗೆ postgresql-server ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ:
service postgresql restart
ನಾವು PostgreSQL ಅನ್ನು ಸ್ಥಾಪಿಸಿದ್ದೇವೆ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದೇವೆ. ಈಗ ನಾವು ಡೇಟಾಬೇಸ್ ಅನ್ನು ರಚಿಸೋಣ, ಡೆವ್ ಮತ್ತು ಪ್ರಾಡ್ ಪರಿಸರಕ್ಕಾಗಿ ಬಳಕೆದಾರರು ಮತ್ತು ಡೇಟಾಬೇಸ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಬಳಕೆದಾರರಿಗೆ ಹಕ್ಕುಗಳನ್ನು ನೀಡೋಣ:
$ 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 ಅನ್ನು ಸ್ಥಾಪಿಸಲು ನಾವು ಹೋಗೋಣ. ಇದನ್ನು ಡೆಬಿಯನ್ನಲ್ಲಿ ಸ್ಥಾಪಿಸುವುದು ತುಂಬಾ ಸರಳವಾಗಿದೆ:
ಈಗ ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಾಗಿ ಕೊನೆಯ ಘಟಕವನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡೋಣ - ರೆಡಿಸ್. ಸೆಲರಿ ಕಾರ್ಯಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಬ್ಯಾಕೆಂಡ್ ಆಗಿ ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಡೆವ್ ಮತ್ತು ಪ್ರಾಡ್ ಪರಿಸರಕ್ಕಾಗಿ ನಾವು ರೆಡಿಸ್ನೊಂದಿಗೆ ಎರಡು ಡಾಕರ್ ಕಂಟೇನರ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ Docker Plesk ಗಾಗಿ.
ನಾವು Plesk ಗೆ ಹೋಗುತ್ತೇವೆ, ವಿಸ್ತರಣೆಗಳ ವಿಭಾಗಕ್ಕೆ ಹೋಗಿ, ಡಾಕರ್ ವಿಸ್ತರಣೆಯನ್ನು ನೋಡಿ ಮತ್ತು ಅದನ್ನು ಸ್ಥಾಪಿಸಿ (ನಮಗೆ ಉಚಿತ ಆವೃತ್ತಿಯ ಅಗತ್ಯವಿದೆ):
ಸ್ಥಾಪಿಸಲಾದ ವಿಸ್ತರಣೆಗೆ ಹೋಗಿ, ಹುಡುಕಾಟದ ಮೂಲಕ ಚಿತ್ರವನ್ನು ಹುಡುಕಿ redis bitnami ಮತ್ತು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಾಪಿಸಿ:
ನಾವು ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಕಂಟೇನರ್ಗೆ ಹೋಗಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಹೊಂದಿಸಿ: ಪೋರ್ಟ್, ಗರಿಷ್ಠ ನಿಗದಿಪಡಿಸಿದ RAM ಗಾತ್ರ, ಪರಿಸರ ವೇರಿಯಬಲ್ಗಳಲ್ಲಿನ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಮತ್ತು ಪರಿಮಾಣವನ್ನು ಆರೋಹಿಸಿ:
ಪ್ರಾಡ್ ಕಂಟೇನರ್ಗಾಗಿ ನಾವು 2-3 ಹಂತಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ, ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ನಾವು ನಿಯತಾಂಕಗಳನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸುತ್ತೇವೆ: ಪೋರ್ಟ್, ಪಾಸ್ವರ್ಡ್, RAM ಗಾತ್ರ ಮತ್ತು ಸರ್ವರ್ನಲ್ಲಿನ ವಾಲ್ಯೂಮ್ ಫೋಲ್ಡರ್ಗೆ ಮಾರ್ಗ:
ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿ
ಮೂಲಭೂತ ಸೇವೆಗಳ ಜೊತೆಗೆ, ಸರ್ವರ್ನಲ್ಲಿ ನಿಮ್ಮ ಸ್ವಂತ ಡಾಕರ್ ಇಮೇಜ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಹಾಕುವುದು ಒಳ್ಳೆಯದು. ಅದೃಷ್ಟವಶಾತ್, ಸರ್ವರ್ ಸ್ಪೇಸ್ ಈಗ ಸಾಕಷ್ಟು ಅಗ್ಗವಾಗಿದೆ (ಡಾಕರ್ಹಬ್ ಚಂದಾದಾರಿಕೆಗಿಂತ ಖಂಡಿತವಾಗಿಯೂ ಅಗ್ಗವಾಗಿದೆ), ಮತ್ತು ಖಾಸಗಿ ರೆಪೊಸಿಟರಿಯನ್ನು ಹೊಂದಿಸುವ ಪ್ರಕ್ರಿಯೆಯು ತುಂಬಾ ಸರಳವಾಗಿದೆ.
ನಮ್ಮ ಚಂದಾದಾರಿಕೆಯಲ್ಲಿ Plesk ನಲ್ಲಿ ಎರಡು ಉಪಡೊಮೇನ್ಗಳನ್ನು ರಚಿಸೋಣ: docker.helloworld.ru ಮತ್ತು docker-ui.helloworld.ru, ಮತ್ತು ಅವರಿಗೆ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡೋಣ ಎಂದು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.
ಫೈಲ್ ಅನ್ನು docker.helloworld.ru ಸಬ್ಡೊಮೈನ್ ಫೋಲ್ಡರ್ಗೆ ಸೇರಿಸಿ docker-compose.yml ಈ ರೀತಿಯ ವಿಷಯದೊಂದಿಗೆ:
ಮತ್ತು ನಾವು Nginx ಅನ್ನು ನಮ್ಮ ಕಂಟೈನರ್ಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸಬೇಕಾಗಿದೆ. ಇದನ್ನು ಪ್ಲೆಸ್ಕ್ ಮೂಲಕ ಮಾಡಬಹುದು.
docker.helloworld.ru ಮತ್ತು docker-ui.helloworld.ru ಉಪಡೊಮೇನ್ಗಳಿಗಾಗಿ ಈ ಕೆಳಗಿನ ಹಂತಗಳನ್ನು ಮಾಡಬೇಕಾಗಿದೆ:
ವಿಭಾಗದಲ್ಲಿ ದೇವ್ ಪರಿಕರಗಳು ನಮ್ಮ ಸೈಟ್ಗೆ ಹೋಗಿ ಡಾಕರ್ ಪ್ರಾಕ್ಸಿ ನಿಯಮಗಳು:
ಮತ್ತು ನಮ್ಮ ಕಂಟೇನರ್ಗೆ ಪ್ರಾಕ್ಸಿ ಒಳಬರುವ ಟ್ರಾಫಿಕ್ಗೆ ನಿಯಮವನ್ನು ಸೇರಿಸಿ:
ನಾವು ಸ್ಥಳೀಯ ಯಂತ್ರದಿಂದ ನಮ್ಮ ಕಂಟೇನರ್ಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತೇವೆ:
$ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
ಡಾಕರ್-ui.helloworld.ru ಉಪಡೊಮೇನ್ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಸಹ ಪರಿಶೀಲಿಸೋಣ:
ನೀವು ಬ್ರೌಸ್ ರೆಪೊಸಿಟರಿಗಳ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ, ಬ್ರೌಸರ್ ಅಧಿಕೃತ ವಿಂಡೋವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ, ಅಲ್ಲಿ ನೀವು ರೆಪೊಸಿಟರಿಗಾಗಿ ಬಳಕೆದಾರಹೆಸರು ಮತ್ತು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಬೇಕಾಗುತ್ತದೆ. ಅದರ ನಂತರ, ರೆಪೊಸಿಟರಿಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿರುವ ಪುಟಕ್ಕೆ ನಮ್ಮನ್ನು ವರ್ಗಾಯಿಸಲಾಗುತ್ತದೆ (ಇದೀಗ, ಅದು ನಿಮಗಾಗಿ ಖಾಲಿಯಾಗಿರುತ್ತದೆ):
ಘಟಕಗಳನ್ನು ಸ್ಥಾಪಿಸಿದ ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ನಂತರ, ನಾವು ಪೋರ್ಟ್ಗಳನ್ನು ತೆರೆಯಬೇಕಾಗುತ್ತದೆ ಇದರಿಂದ ಘಟಕಗಳನ್ನು ಡಾಕರ್ ಕಂಟೇನರ್ಗಳು ಮತ್ತು ಬಾಹ್ಯ ನೆಟ್ವರ್ಕ್ನಿಂದ ಪ್ರವೇಶಿಸಬಹುದು.
ನಾವು ಮೊದಲು ಸ್ಥಾಪಿಸಿದ Plesk ಗಾಗಿ ಫೈರ್ವಾಲ್ ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಇದನ್ನು ಹೇಗೆ ಮಾಡಬೇಕೆಂದು ನೋಡೋಣ.
ಗೆ ಹೋಗಿ ಪರಿಕರಗಳು ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಗಳು > ಸೆಟ್ಟಿಂಗ್ಗಳು > ಫೈರ್ವಾಲ್:
ಗೆ ಹೋಗಿ Plesk ಫೈರ್ವಾಲ್ ನಿಯಮಗಳನ್ನು ಮಾರ್ಪಡಿಸಿ > ಕಸ್ಟಮ್ ನಿಯಮವನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಡಾಕರ್ ಸಬ್ನೆಟ್ಗಾಗಿ ಕೆಳಗಿನ TCP ಪೋರ್ಟ್ಗಳನ್ನು ತೆರೆಯಿರಿ (172.0.0.0 / 8):
RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
ರೆಡಿಸ್: 32785, 32786
PostgreSQL ಪೋರ್ಟ್ಗಳು ಮತ್ತು RabbitMQ ನಿರ್ವಹಣಾ ಫಲಕಗಳನ್ನು ಹೊರಗಿನ ಪ್ರಪಂಚಕ್ಕೆ ತೆರೆಯುವ ನಿಯಮವನ್ನು ಸಹ ನಾವು ಸೇರಿಸುತ್ತೇವೆ:
ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸು ಬಟನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿಯಮಗಳನ್ನು ಅನ್ವಯಿಸಿ:
ಗಿಥಬ್ ಕ್ರಿಯೆಗಳಲ್ಲಿ CI/CD ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ
ನಾವು ಅತ್ಯಂತ ಆಸಕ್ತಿದಾಯಕ ಭಾಗಕ್ಕೆ ಇಳಿಯೋಣ - ನಿರಂತರ ಏಕೀಕರಣ ಪೈಪ್ಲೈನ್ ಅನ್ನು ಹೊಂದಿಸುವುದು ಮತ್ತು ನಮ್ಮ ಯೋಜನೆಯನ್ನು ಸರ್ವರ್ಗೆ ತಲುಪಿಸುವುದು.
ಈ ಪೈಪ್ಲೈನ್ ಎರಡು ಭಾಗಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ:
ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸುವುದು ಮತ್ತು ಪರೀಕ್ಷೆಗಳನ್ನು ನಡೆಸುವುದು (ಬ್ಯಾಕೆಂಡ್ಗಾಗಿ) - ಗಿಥಬ್ ಬದಿಯಲ್ಲಿ;
ಚಾಲನೆಯಲ್ಲಿರುವ ವಲಸೆಗಳು (ಬ್ಯಾಕೆಂಡ್ಗಾಗಿ) ಮತ್ತು ಕಂಟೇನರ್ಗಳನ್ನು ನಿಯೋಜಿಸುವುದು - ಸರ್ವರ್ನಲ್ಲಿ.
Plesk ಗೆ ನಿಯೋಜಿಸಿ
ಎರಡನೆಯ ಅಂಶವನ್ನು ಮೊದಲು ನಿಭಾಯಿಸೋಣ (ಏಕೆಂದರೆ ಮೊದಲನೆಯದು ಅದರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ).
Plesk ಗಾಗಿ Git ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ನಿಯೋಜನೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತೇವೆ.
ಬ್ಯಾಕೆಂಡ್ ರೆಪೊಸಿಟರಿಗಾಗಿ ಉತ್ಪನ್ನ ಪರಿಸರದೊಂದಿಗೆ ಉದಾಹರಣೆಯನ್ನು ಪರಿಗಣಿಸಿ.
ನಾವು ನಮ್ಮ ಹೆಲೋವರ್ಲ್ಡ್ ವೆಬ್ಸೈಟ್ನ ಚಂದಾದಾರಿಕೆಗೆ ಹೋಗುತ್ತೇವೆ ಮತ್ತು Git ಉಪವಿಭಾಗಕ್ಕೆ ಹೋಗುತ್ತೇವೆ:
"ರಿಮೋಟ್ Git ರೆಪೊಸಿಟರಿ" ಕ್ಷೇತ್ರಕ್ಕೆ ನಮ್ಮ Github ರೆಪೊಸಿಟರಿಯ ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಡೀಫಾಲ್ಟ್ ಫೋಲ್ಡರ್ ಅನ್ನು ಬದಲಾಯಿಸಿ httpdocs ಇನ್ನೊಬ್ಬರಿಗೆ (ಉದಾ. /httpdocs/hw_back):
ಹಿಂದಿನ ಹಂತದಿಂದ SSH ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಸೇರಿಸಿ ಇದು Github ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿದೆ.
ಹಂತ 2 ರಲ್ಲಿ ಪರದೆಯ ಮೇಲೆ ಸರಿ ಕ್ಲಿಕ್ ಮಾಡಿ, ಅದರ ನಂತರ ನಾವು Plesk ನಲ್ಲಿ ರೆಪೊಸಿಟರಿ ಪುಟಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ. ಈಗ ನಾವು ಮಾಸ್ಟರ್ ಶಾಖೆಗೆ ಕಮಿಟ್ಗಳಲ್ಲಿ ನವೀಕರಿಸಲು ರೆಪೊಸಿಟರಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ಹೋಗಿ ರೆಪೊಸಿಟರಿ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ಮೌಲ್ಯವನ್ನು ಉಳಿಸಿ Webhook URL (ಗಿಥಬ್ ಕ್ರಿಯೆಗಳನ್ನು ಹೊಂದಿಸುವಾಗ ನಮಗೆ ಇದು ನಂತರ ಅಗತ್ಯವಿದೆ):
ಹಿಂದಿನ ಪ್ಯಾರಾಗ್ರಾಫ್ನಿಂದ ಪರದೆಯ ಮೇಲಿನ ಕ್ರಿಯೆಗಳ ಕ್ಷೇತ್ರದಲ್ಲಿ, ನಿಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನಮೂದಿಸಿ:
cd {REPOSITORY_ABSOLUTE_PATH}
.ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID}
ಅಲ್ಲಿ:
{REPOSITORY_ABSOLUTE_PATH} - ಸರ್ವರ್ನಲ್ಲಿ ಬ್ಯಾಕೆಂಡ್ ರೆಪೊಸಿಟರಿಯ ಪ್ರಾಡ್ ಫೋಲ್ಡರ್ಗೆ ಮಾರ್ಗ; {ENV} - ಪರಿಸರ (dev / prod), ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ prod; {DOCKER_REGISTRY_HOST} - ನಮ್ಮ ಡಾಕರ್ ರೆಪೊಸಿಟರಿಯ ಹೋಸ್ಟ್ {TG_BOT_TOKEN} - ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಟೋಕನ್; {TG_CHAT_ID} - ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು ಚಾಟ್/ಚಾನೆಲ್ನ ಐಡಿ.
ಸ್ಕ್ರಿಪ್ಟ್ ಉದಾಹರಣೆ:
cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/
.ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
ಡಾಕರ್ ಗುಂಪಿಗೆ ನಮ್ಮ ಚಂದಾದಾರಿಕೆಯಿಂದ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ (ಆದ್ದರಿಂದ ಅವರು ಕಂಟೇನರ್ಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು):
sudo usermod -aG docker helloworld_admin
ಬ್ಯಾಕೆಂಡ್ ರೆಪೊಸಿಟರಿ ಮತ್ತು ಮುಂಭಾಗದ dev ಪರಿಸರವನ್ನು ಅದೇ ರೀತಿಯಲ್ಲಿ ಹೊಂದಿಸಲಾಗಿದೆ.
ಗಿಥಬ್ ಕ್ರಿಯೆಗಳಲ್ಲಿ ನಿಯೋಜನೆ ಪೈಪ್ಲೈನ್
Github ಕ್ರಿಯೆಗಳಲ್ಲಿ ನಮ್ಮ CI/CD ಪೈಪ್ಲೈನ್ನ ಮೊದಲ ಭಾಗವನ್ನು ಹೊಂದಿಸಲು ನಾವು ಮುಂದುವರಿಯೋಣ.
ನಿಯೋಜನೆ ಪ್ರಕ್ರಿಯೆಯು ಸರಳವಾಗಿದೆ ಮತ್ತು ಮೂರು ಮುಖ್ಯ ಹಂತಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:
ನಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸುವುದು ಮತ್ತು ಪ್ರಕಟಿಸುವುದು;
ಹೊಸದಾಗಿ ನಿರ್ಮಿಸಲಾದ ಚಿತ್ರದ ಆಧಾರದ ಮೇಲೆ ಕಂಟೇನರ್ನಲ್ಲಿ ಪರೀಕ್ಷೆಗಳನ್ನು ನಡೆಸುವುದು;
ಶಾಖೆಯನ್ನು ಅವಲಂಬಿಸಿ ಅಪೇಕ್ಷಿತ ಪರಿಸರಕ್ಕೆ ನಿಯೋಜನೆ (dev/master).
ಮುಂಭಾಗ
ಮುಂಭಾಗದ ರೆಪೊಸಿಟರಿಗಾಗಿ deploy.yml ಫೈಲ್ ಬೆಕ್ಗಿಂತ ಸ್ವಲ್ಪ ಭಿನ್ನವಾಗಿದೆ. ಇದು ಚಾಲನೆಯಲ್ಲಿರುವ ಪರೀಕ್ಷೆಗಳೊಂದಿಗೆ ಒಂದು ಹಂತವನ್ನು ಹೊಂದಿಲ್ಲ ಮತ್ತು ನಿಯೋಜನೆಗಾಗಿ ಟೋಕನ್ಗಳ ಹೆಸರನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಮುಂಭಾಗದ ರೆಪೊಸಿಟರಿಗಾಗಿ ರಹಸ್ಯಗಳು, ಮೂಲಕ, ಪ್ರತ್ಯೇಕವಾಗಿ ಭರ್ತಿ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ಸೈಟ್ ಸೆಟಪ್
Nginx ಮೂಲಕ ಪ್ರಾಕ್ಸಿಯಿಂಗ್ ಟ್ರಾಫಿಕ್
ಸರಿ, ನಾವು ಅಂತ್ಯಕ್ಕೆ ಬಂದಿದ್ದೇವೆ. Nginx ಮೂಲಕ ನಮ್ಮ ಕಂಟೇನರ್ಗೆ ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ದಟ್ಟಣೆಯ ಪ್ರಾಕ್ಸಿಯಿಂಗ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಮಾತ್ರ ಇದು ಉಳಿದಿದೆ. ಡಾಕರ್ ರಿಜಿಸ್ಟ್ರಿ ಸೆಟಪ್ನ ಹಂತ 5 ರಲ್ಲಿ ನಾವು ಈಗಾಗಲೇ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಆವರಿಸಿದ್ದೇವೆ. ದೇವ್ ಮತ್ತು ಪ್ರಾಡ್ ಪರಿಸರದಲ್ಲಿ ಹಿಂಭಾಗ ಮತ್ತು ಮುಂಭಾಗದ ಭಾಗಗಳಿಗೆ ಅದೇ ರೀತಿ ಪುನರಾವರ್ತಿಸಬೇಕು.
ನಾನು ಸೆಟ್ಟಿಂಗ್ಗಳ ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳನ್ನು ಒದಗಿಸುತ್ತೇನೆ.
ಬ್ಯಾಕೆಂಡ್
ಮುಂಭಾಗ
ಪ್ರಮುಖ ಸ್ಪಷ್ಟೀಕರಣ. ಎಲ್ಲಾ URL ಗಳನ್ನು ಮುಂಭಾಗದ ಕಂಟೇನರ್ಗೆ ಪ್ರಾಕ್ಸಿ ಮಾಡಲಾಗುವುದು, ಜೊತೆಗೆ ಪ್ರಾರಂಭವಾಗುವದನ್ನು ಹೊರತುಪಡಿಸಿ /api/ - ಅವುಗಳನ್ನು ಹಿಂದಿನ ಕಂಟೇನರ್ಗೆ ಪ್ರಾಕ್ಸಿ ಮಾಡಲಾಗುತ್ತದೆ (ಆದ್ದರಿಂದ ಹಿಂದಿನ ಕಂಟೇನರ್ನಲ್ಲಿ, ಎಲ್ಲಾ ಹ್ಯಾಂಡ್ಲರ್ಗಳು ಇದರೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಬೇಕು /api/).
ಫಲಿತಾಂಶಗಳು
ಈಗ ನಮ್ಮ ಸೈಟ್ helloworld.ru ಮತ್ತು dev.helloworld.ru (ಕ್ರಮವಾಗಿ prod ಮತ್ತು dev ಪರಿಸರಗಳು) ನಲ್ಲಿ ಲಭ್ಯವಿರಬೇಕು.
ಒಟ್ಟಾರೆಯಾಗಿ, ಫ್ಲಾಸ್ಕ್ ಮತ್ತು ಆಂಗ್ಯುಲರ್ನಲ್ಲಿ ಸರಳವಾದ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ಸಿದ್ಧಪಡಿಸುವುದು ಮತ್ತು ಪ್ಲೆಸ್ಕ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಸರ್ವರ್ಗೆ ರೋಲ್ ಮಾಡಲು ಗಿಥಬ್ ಆಕ್ಷನ್ಗಳಲ್ಲಿ ಪೈಪ್ಲೈನ್ ಅನ್ನು ಹೇಗೆ ಹೊಂದಿಸುವುದು ಎಂದು ನಾವು ಕಲಿತಿದ್ದೇವೆ.
ನಾನು ಕೋಡ್ನೊಂದಿಗೆ ರೆಪೊಸಿಟರಿಗಳಿಗೆ ಲಿಂಕ್ಗಳನ್ನು ನಕಲು ಮಾಡುತ್ತೇನೆ: ಬ್ಯಾಕೆಂಡ್, ಮುಂಭಾಗ.