ಜ್ಞಾನ ಭಂಡಾರ

zinnector dev ನೊಂದಿಗೆ ಸ್ಥಳೀಯ ಅಭಿವೃದ್ಧಿ

zinnector dev ನಿಮ್ಮ ಸ್ವಂತ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ನೈಜ WordPress ಅನ್ನು ಹೇಗೆ ರನ್ ಮಾಡುತ್ತದೆ: ಎರಡು ರನ್‌ಟೈಮ್‌ಗಳು (Docker ಇಲ್ಲದೆ WebAssembly, ಅಥವಾ Docker ನಲ್ಲಿ ಸ್ಥಳೀಯ PHP), PHP ಮತ್ತು WordPress ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು, ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನಿಂದ ಏನು ಒದಗಿಸಲಾಗುತ್ತದೆ, 570 MB ರನ್‌ಟೈಮ್ ಎಲ್ಲಿ ಇರುತ್ತದೆ, ಮತ್ತು Node 26 ನಲ್ಲಿ ಏನಾಗುತ್ತದೆ.

zinnector dev ನಿಮ್ಮ ಸ್ವಂತ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ನೈಜ WordPress ಅನ್ನು ಚಲಾಯಿಸುತ್ತದೆ, ನೀವು ಆಯ್ಕೆಮಾಡುವ PHP ಆವೃತ್ತಿಯೊಂದಿಗೆ, ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿರುವ ಪ್ಲಗಿನ್‌ಗಳು ಮತ್ತು ಥೀಮ್‌ಗಳನ್ನು ಸರ್ವ್ ಮಾಡುತ್ತದೆ. ಇದು ಬಳಸಬಹುದಾದ ಎರಡು ರನ್‌ಟೈಮ್‌ಗಳು, ಆವೃತ್ತಿಗಳನ್ನು ಹೇಗೆ ಆರಿಸುವುದು, ಎಲ್ಲಿಂದ ಏನು ಸರ್ವ್ ಆಗುತ್ತದೆ, ಮತ್ತು ರನ್‌ಟೈಮ್ ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಎಲ್ಲಿ ನೆಲೆಸಿರುತ್ತದೆ ಎಂಬುದನ್ನು ಈ ಲೇಖನವು ವಿವರಿಸುತ್ತದೆ — ಇದರಿಂದಾಗಿ ನೀವು ಸ್ಥಳೀಯವಾಗಿ ಪರೀಕ್ಷಿಸುವುದನ್ನೇ ನಿಯೋಜಿಸುತ್ತೀರಿ (deploy).

ಎರಡು ರನ್‌ಟೈಮ್‌ಗಳು, ಮತ್ತು ಎರಡೂ ಏಕೆ ನೈಜವಾಗಿವೆ

Playground ಪೂರ್ವನಿಯೋಜಿತವಾಗಿದೆ (default). WordPress Playground PHP ಅನ್ನು WebAssembly ಗೆ ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು Node ಒಳಗೆ ರನ್ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ Node ಹೊರತುಪಡಿಸಿ ಬೇರೇನೂ ಇನ್‌ಸ್ಟಾಲ್ ಆಗಿರದ ಲ್ಯಾಪ್‌ಟಾಪ್ ಕೆಲವೇ ಸೆಕೆಂಡುಗಳಲ್ಲಿ WordPress ಅನ್ನು ಬೂಟ್ ಮಾಡುತ್ತದೆ. 5.2 ರಿಂದ 8.5 ರವರೆಗಿನ ಯಾವುದೇ PHP ಲಭ್ಯವಿದೆ. ಇದು PHP ವಿಸ್ತರಣೆಗಳ (extensions) ಒಂದು ಸಣ್ಣ ಸೆಟ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ (ಪ್ರಸ್ತುತ ಬಿಲ್ಡ್‌ನಲ್ಲಿ ಅಳತೆ ಮಾಡಿದಂತೆ intl, redis, memcached), ಇದು ಹೆಚ್ಚಿನ ಪ್ಲಗಿನ್ ಮತ್ತು ಥೀಮ್ ಕೆಲಸಗಳಿಗೆ ಸಾಕಾಗುತ್ತದೆ.

Docker ಸ್ಥಳೀಯ (native) php-fpm ಮತ್ತು MariaDB ಕಂಟೇನರ್‌ಗಳನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಇದು ನಿಧಾನವಾಗಿರುತ್ತದೆ, Docker ಡೀಮನ್ ಮತ್ತು ಸುಮಾರು 1.2 GB ಇಮೇಜ್‌ಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ, ಮತ್ತು PHP 7.4 ರಿಂದ 8.5 ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ — ಆದರೆ ಇದು imagick ಮತ್ತು gd ಸೇರಿದಂತೆ ಸಂಪೂರ್ಣ ವಿಸ್ತರಣೆಗಳ ಸೆಟ್‌ನೊಂದಿಗೆ ನೇಟಿವ್ PHP ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ನೀವು ಪರೀಕ್ಷಿಸಬೇಕಾದದ್ದು WebAssembly ಬಿಲ್ಡ್ ಹೊಂದಿರದ ವಿಸ್ತರಣೆಯಾಗಿದ್ದಾಗ ಇದು ಸೂಕ್ತ ಪರಿಹಾರವಾಗಿದೆ.

zinnector dev                       # playground
zinnector dev --runtime docker      # native PHP + MariaDB

Docker ಅನ್ನು ಎಂದಿಗೂ ಸದ್ದಿಲ್ಲದೆ ಫಾಲ್‌ಬ್ಯಾಕ್ ಆಗಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ. ತಾವು WebAssembly ನಲ್ಲಿದ್ದೇವೆ ಎಂದು ಭಾವಿಸಿ ವಾಸ್ತವವಾಗಿ Docker ನಲ್ಲಿರುವ ಡೆವಲಪರ್‌ಗೆ ಸಹಾಯ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುವ ಉಪಕರಣವೊಂದು ತಪ್ಪು ಉತ್ತರವನ್ನು ನೀಡಿದಂತಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಹೆಸರಿನ ಮೂಲಕವೇ ವಿನಂತಿಸಬೇಕಾಗುತ್ತದೆ.

PHP ಮತ್ತು WordPress ಆವೃತ್ತಿಗಳನ್ನು ಆರಿಸುವುದು

zinnector dev --php 8.1 --wp 6.7    # develop against a specific pair
zinnector dev --port 9401           # when 9400 is taken
zinnector dev --no-login            # do not sign in to wp-admin automatically
zinnector dev --verbose             # show the runtime's own output

ಪೂರ್ವನಿಯೋಜಿತ ಮೌಲ್ಯಗಳು ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿರುವ zinnector.json ನಿಂದ ಬರುತ್ತವೆ — php, wordpress, runtime ಮತ್ತು port — ಇದನ್ನು zinnector new ಬರೆಯುತ್ತದೆ ಮತ್ತು ನೀವು ಕಮಿಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಬ್ಬರೂ ಅದೇ ಆವೃತ್ತಿಗಳನ್ನು ರನ್ ಮಾಡುತ್ತಾರೆ. ಆ ರನ್‌ಗಾಗಿ ಕಮಾಂಡ್ ಲೈನ್‌ನಲ್ಲಿರುವ ಫ್ಲ್ಯಾಗ್ ಫೈಲ್‌ನಲ್ಲಿರುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಆದ್ಯತೆ ಪಡೆಯುತ್ತದೆ.

ನೀವು ಘೋಷಿಸುವ ಆವೃತ್ತಿ ಮತ್ತು ರನ್ ಆಗುವ ಆವೃತ್ತಿ ವಿಭಿನ್ನ ಸಂಗತಿಗಳಾಗಿವೆ. zinnector dev --once ರನ್‌ಟೈಮ್ ಅನ್ನು ಬೂಟ್ ಮಾಡುತ್ತದೆ, ಅದು ವಾಸ್ತವವಾಗಿ ವರದಿ ಮಾಡುವುದನ್ನು ಮುದ್ರಿಸುತ್ತದೆ — PHP ಆವೃತ್ತಿ, WordPress ಆವೃತ್ತಿ, ಲೋಡ್ ಆದ ವಿಸ್ತರಣೆಗಳು — ಮತ್ತು ನಿಲ್ಲುತ್ತದೆ. zinnector check --probe ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಹೋಸ್ಟಿಂಗ್ ಸ್ಲಾಟ್‌ಗೆ ಹೋಲಿಸಿದಾಗ ಇದೇ ಅಳತೆಯನ್ನು ಬಳಸುತ್ತದೆ.

ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನಿಂದ ಏನು ಸರ್ವ್ ಆಗುತ್ತದೆ

ರನ್‌ಟೈಮ್ ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನ wp-content/plugins, wp-content/themes ಮತ್ತು wp-content/mu-plugins ಡೈರೆಕ್ಟರಿಗಳನ್ನು ನೇರವಾಗಿ ಮೌಂಟ್ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ನೀವು ಉಳಿಸುವ ಫೈಲ್ ಮುಂದಿನ ಮರುಲೋಡ್‌ನಲ್ಲಿ ಲೈವ್ ಆಗಿರುತ್ತದೆ. ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದು ಆದರೆ ಯಾವುದೇ ನೈಜ ವಿಷಯವನ್ನು ಹೊಂದಿರದ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮೌಂಟ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ: ರನ್‌ಟೈಮ್‌ನ ಸ್ವಂತ ಥೀಮ್‌ಗಳ ಮೇಲೆ ಖಾಲಿ ಇರುವ themes/ ಅನ್ನು ಮೌಂಟ್ ಮಾಡುವುದರಿಂದ WordPress ಯಾವುದೇ ಥೀಮ್ ಇಲ್ಲದೆ ಉಳಿಯುತ್ತದೆ, ಇದು ನಿಮ್ಮ ಸೈಟ್ ಬದಲಿಗೆ ಖಾಲಿ 500 ದೋಷಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಅದಕ್ಕಾಗಿಯೇ ಸ್ಕ್ಯಾಫೋಲ್ಡ್ ಖಾಲಿ ಡೈರೆಕ್ಟರಿಗಳನ್ನು .gitkeep ನೊಂದಿಗೆ ಇರಿಸುತ್ತದೆ ಮತ್ತು ನೀವು ಅವುಗಳಲ್ಲಿ ಥೀಮ್ ಅನ್ನು ಇರಿಸುವವರೆಗೆ ಅವು ಯಾವುದನ್ನೂ ಮರೆಮಾಡುವುದಿಲ್ಲ.

ರನ್‌ಟೈಮ್ ಎಲ್ಲಿ ನೆಲೆಸಿರುತ್ತದೆ

WordPress ರನ್‌ಟೈಮ್ ಅನ್ನು CLI ನೊಂದಿಗೆ ಕಳುಹಿಸುವ ಬದಲು ಮೊದಲ ಬಳಕೆಯಲ್ಲೇ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ — ಪ್ರತಿಯೊಂದು PHP ಬಿಲ್ಡ್ ಅನ್ನು ಹೊತ್ತೊಯ್ಯುವ ಪ್ಯಾಕೇಜ್ ಸುಮಾರು 570 MB ಇರುತ್ತದೆ, ಮತ್ತು ಕೇವಲ ಸೈಟ್‌ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವ ಡೆವಲಪರ್ ಇದಕ್ಕಾಗಿ ಡೇಟಾ ವ್ಯಯಿಸಬಾರದು. ಇದನ್ನು Zinnector® ನ ಸ್ವಂತ ಸಂಗ್ರಹ (cache) ಆದ ~/.cache/zinnector/runtimes/playground/<version> ನಲ್ಲಿ (ಅಥವಾ ZINNECTOR_CACHE_DIR ಸೂಚಿಸುವ ಸ್ಥಳದಲ್ಲಿ) ಇರಿಸಲಾಗುತ್ತದೆ, ಎಂದಿಗೂ ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿ ಇರಿಸಲಾಗುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಇದು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಅಥವಾ zinnector push ಅಳೆಯುವ ಟ್ರೀಯಲ್ಲಿ ಸೇರಲು ಸಾಧ್ಯವಿಲ್ಲ. ಡೌನ್‌ಲೋಡ್ ಅನ್ನು ನಿಮ್ಮ ಸ್ವಂತ npm ಮೂಲಕ node npm-cli.js ಆಗಿ ರನ್ ಮಾಡುವ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ — ಎಂದಿಗೂ ಶೆಲ್ ಮೂಲಕ ಅಲ್ಲ.

ರನ್‌ಟೈಮ್ ಆವೃತ್ತಿಯನ್ನು CLI ಆವೃತ್ತಿಗೆ ಜೋಡಿಸಲಾಗಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಒಂದು ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿರುವ ಇಬ್ಬರು ಡೆವಲಪರ್‌ಗಳು ಒಂದೇ ರೀತಿಯ PHP ಬಿಲ್ಡ್‌ಗಳನ್ನು ರನ್ ಮಾಡುತ್ತಾರೆ. zinnector dev --reset-runtime ಇನ್‌ಸ್ಟಾಲ್ ಆದ ರನ್‌ಟೈಮ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತೆ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತದೆ, ಇದು ಇನ್‌ಸ್ಟಾಲ್ ಆಗಿದ್ದರೂ ಬೂಟ್ ಆಗದ ರನ್‌ಟೈಮ್‌ಗೆ ಪರಿಹಾರವಾಗಿದೆ.

Node 26 ಅಥವಾ ಹೊಸದರಲ್ಲಿ

CLI ಸ್ವತಃ 24 ಮತ್ತು ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಯಾವುದೇ Node ನಲ್ಲಿ ರನ್ ಆಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ರನ್‌ಟೈಮ್‌ನ ನೇಟಿವ್ ಮಾಡ್ಯೂಲ್ Node 24 ಮತ್ತು 25 ಗೆ ಮಾತ್ರ ಮೊದಲೇ ಬಿಲ್ಡ್ ಮಾಡಿದ ಬೈನರಿಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ (ಸೆಪ್ಟೆಂಬರ್ 2026 ರಂತೆ). ಯಾವುದನ್ನೂ ಕಂಪೈಲ್ ಮಾಡುವ ಬದಲು — Windows ನಲ್ಲಿ ಇದರರ್ಥ Visual Studio ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವುದು — Zinnector® ರನ್‌ಟೈಮ್‌ಗಾಗಿ ಮಾತ್ರ ಸುಮಾರು 30 MB ಗಾತ್ರದ Node 24 ಅನ್ನು nodejs.org ಪ್ರಕಟಿಸುವ ಚೆಕ್‌ಸಮ್‌ಗಳ ವಿರುದ್ಧ ಪರಿಶೀಲಿಸಿ, ಅದೇ ಕ್ಯಾಶ್‌ಗೆ ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ. ಇದು ಅನ್ವಯಿಸಿದಾಗ ಇನ್‌ಸ್ಟಾಲ್ ಪ್ರಾಂಪ್ಟ್ ಅದನ್ನು ತಿಳಿಸುತ್ತದೆ. ನಿಮ್ಮ ಸ್ವಂತ Node ನಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಆಗುವುದಿಲ್ಲ.

ಸಂಬಂಧಿತ ವಿಷಯಗಳು

ಎಲ್ಲಾ ಡೆವಲಪರ್ ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳು →

ಬ್ಲಾಗ್‌ನಿಂದ ಇತ್ತೀಚಿನದು

ಹೋಸ್ಟಿಂಗ್, ಎಸ್‌ಇಒ ಮತ್ತು ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಬಗ್ಗೆ ನಾವು ಬರೆದಿರುವುದು.

ಹೋಸ್ಟಿಂಗ್ ಪದರದಿಂದ ಎಸ್‌ಇಒ ಮತ್ತು ಲಿಂಕ್ ಬಿಲ್ಡಿಂಗ್: 2026 ರ ಆಪರೇಟರ್ ದೃಷ್ಟಿಕೋನ

2026 ರಲ್ಲಿ ಹೋಸ್ಟಿಂಗ್ ಹೇಗೆ ಇಂಡೆಕ್ಸಿಂಗ್ ಮತ್ತು ಲಿಂಕ್ ಇಕ್ವಿಟಿಯನ್ನು ರೂಪಿಸುತ್ತದೆ: ಪುಟಗಳನ್ನು ಇಂಡೆಕ್ಸ್‌ನಲ್ಲಿ ಇಡುವುದು, ಅವುಗಳ ಮೇಲೆ ಸೈಟ್ ನಿರ್ಮಿಸುವ ಮೊದಲು ಹಳೆಯ ಡೊಮೇನ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು, ಹುಡುಕಾಟದ ಹೆಜ್ಜೆಗುರುತು ಇಲ್ಲದೆ ಲಿಂಕ್ ಬಿಲ್ಡಿಂಗ್ ಮಾಡುವುದು, ಮತ್ತು ಎಸ್‌ಇಒಗಾಗಿ ಮೂಲಸೌಕರ್ಯವು ಏನು ಮಾಡಬಹುದು ಮತ್ತು ಏನು ಮಾಡಲಾಗುವುದಿಲ್ಲ ಎಂಬುದರ ಕುರಿತು ಪ್ರಾಮಾಣಿಕ ನೋಟ.

ಪೋಸ್ಟ್ ಓದಿ →

WordPress ಅನ್ನು ವೇಗವಾಗಿ ಮತ್ತು ಸುರಕ್ಷಿತವಾಗಿಸುವುದು: ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಪ್ಲಗಿನ್ ಪರಿಶೀಲನಾಪಟ್ಟಿ

ವೇಗದ, ಸುರಕ್ಷಿತ WordPress ಗಾಗಿ ಪ್ರಾಯೋಗಿಕ ಪರಿಶೀಲನಾಪಟ್ಟಿ: ಸರ್ವರ್-ಮಟ್ಟದ ಕ್ಯಾಶಿಂಗ್, ಪ್ರತಿ-ಸೈಟ್‌ಗೆ ಆಬ್ಜೆಕ್ಟ್ ಕ್ಯಾಶ್, ಬಳಸಲು ಯೋಗ್ಯವಾದ ಬೆರಳೆಣಿಕೆಯಷ್ಟು ಪ್ಲಗಿನ್‌ಗಳು, ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ನವೀಕೃತವಾಗಿರಿಸುವುದು ಮತ್ತು ನೀವು ಎಂದಿಗೂ ಕ್ಯಾಶ್ ಮಾಡಬಾರದ WooCommerce ಪುಟಗಳು.

ಪೋಸ್ಟ್ ಓದಿ →

2026 ರಲ್ಲಿ ನಿರ್ವಹಿಸಲ್ಪಡುವ ವೆಬ್ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಹೇಗೆ ಆಯ್ಕೆ ಮಾಡುವುದು: ಖರೀದಿದಾರರ ಮಾರ್ಗದರ್ಶಿ

ಕಂಟ್ರೋಲ್ ಪ್ಯಾನೆಲ್ ಹೊಂದಿರುವ ಅಗ್ಗದ ಬಾಕ್ಸ್‌ನಿಂದ ಉತ್ತಮ ಮ್ಯಾನೇಜ್ಡ್ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ವಾಸ್ತವವಾಗಿ ಯಾವುದು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ — ವಲಸೆಗಳು, ಬ್ಯಾಕಪ್‌ಗಳು, ಪ್ರತ್ಯೇಕತೆ, ನೈಜ ಕ್ಯಾಶಿಂಗ್ ಮತ್ತು ಪ್ರಾಮಾಣಿಕ ಸ್ಕೇಲಿಂಗ್ — ಮತ್ತು ನೀವು ಬದ್ಧರಾಗುವ ಮೊದಲು ಅದನ್ನು ಹೇಗೆ ನಿರ್ಣಯಿಸುವುದು.

ಪೋಸ್ಟ್ ಓದಿ →

ಬ್ಲಾಗ್ ಓದಿ →

ಇನ್ನೂ ಸಮಸ್ಯೆ ಎದುರಾಗುತ್ತಿದೆಯೇ?

ಪ್ರತಿಯೊಂದು ಪ್ಲಾನ್‌ನೊಂದಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಸಹಾಯವಾಣಿಯು ದಿನದ 24 ಗಂಟೆಗಳೂ ತೆರೆದಿರುತ್ತದೆ ಮತ್ತು ನಮ್ಮ 58 ಭಾಷೆಗಳಲ್ಲಿ ಯಾವುದರಲ್ಲಾದರೂ ನೀವು ನಮಗೆ ಬರೆಯಬಹುದು — ನಾವು ನಿಮ್ಮದೇ ಭಾಷೆಯಲ್ಲಿ ಉತ್ತರಿಸುತ್ತೇವೆ.

ಬೆಂಬಲವನ್ನು ಸಂಪರ್ಕಿಸಿ → ಎಲ್ಲಾ ಲೇಖನಗಳು →