server



چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو .4 تنظیم کرد مقدمه با حرکت ابزارهای گسترش دهنده به سمت cloud ، پذیرش پلتفرم cloud IDE (محیط پیشرفت در هم تنیده) در حال رشد است. Cloud IDE از هر نوع دستگاه مدرن از طریق مرورگرهای وب قابل دسترسی است و برای سناریوهای همکاری در زمان واقعی مزایای بسیاری را ارائه می دهند. کار در یک Cloud IDE ، یک محیط توسعه و آزمایش یکپارچه را برای شما و تیم شما ایجاد می کند ، در عین حال ناسازگاری های پلتفرم را به حداقل می رساند. چون از طریق مرورگرهای وب قابل دسترسی است ، Cloud IDE ها از هر نوع دستگاه مدرن در دسترس هستند. Eclipse Theia یک Cloud IDE قابل توسعه است که بر روی یک سرور مجازی از راه دور و از یک مرورگر وب قابل دسترسی است. از لحاظ بصری ، طراحی شده است که به طور مشابه با Microsoft Visual Studio Code دیده شود و با آن کار شود ، به این معنی که از بسیاری از زبان های برنامه نویسی پشتیبانی می کند ، دارای یک طرح انعطاف پذیر و یک ترمینال یکپارچه است. آنچه Eclipse Theia را از دیگر نرم افزارهای cloud IDE جدا می کند قابلیت توسعه آن است. می توان آن را با استفاده از افزونه های سفارشی اصلاح کرد ، که به شما امکان می دهد یک Cloud IDE متناسب با نیازهای خود تهیه کنید. در این آموزش ،Eclipse Theia را با استفاده از Docker Compose ، یک ابزار ارکستر، به سرور مجازی Ubuntu .04 خود منتقل خواهید کرد. شما آن را در دامنه خود با استفاده از nginx-proxy ، یک سیستم خودکار برای Docker قرار می دهید که فرایند پیکربندی Nginx را ساده تر می کند تا به عنوان یک پروکسی مع برای یک container سرویس دهد. شما با استفاده از یک گواهی نامه Let Encrypt TLS رایگان ، که با استفاده از افزونه تخصصی آن تهیه می کنید ، آن را ایمن خواهید کرد. در پایان ، شما باید Eclipse Theia را روی سرور مجازی Ubuntu .04 خود از طریق HTTPS در دسترس داشته باشید و از کاربر بخواهید وارد شود. پیش نیازها ⦁ یک سرور مجازی Ubuntu .04 با امتیازات اصلی و یک حساب ثانویه و غیر ریشه. می توانید با دنبال کردن راهنمای تنظیم اولیه سرور مجازی ما برای Ubuntu .04 ، این تنظیمات را انجام دهید. برای این آموزش کاربر غیر ریشه sammy است. ⦁ Docker نصب شده روی سرور مجازی شما. مرحله 1 و مرحله 2 نحوه نصب Docker را در اوبونتو .04 دنبال کنید. برای آشنایی با Docker ، به ایستم Docker: مقدمه ای بر مؤلفه های مشترک مراجعه کنید. ⦁ Docker compose روی سرور مجازی شما نصب است. مرحله 1 نحوه نصب Docker Compose را در اوبونتو .04 دنبال کنید. ⦁ نام دامنه کاملاً ثبت شده. در این آموزش کلا از theia.your_domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، یکی از آنها را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. ⦁ یک ثبت A DNS با theia.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره میکند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این معرفی را در vpsgol DNS دنبال کنید. مرحله 1 - استفاده از پروکسی nginx با Let’s Encrypt در این بخش nginx-proxy و افزونه Let’s Encrypt را با استفاده از Docker Compose به کار میگیرید. این امر امکان تهیه و نوسازی مجوز خودکار TLS را فراهم می کند ، به طوری که هنگام استقرار Eclipse Theia از طریق HTTPS در دامنه شما قابل دسترسی خواهد بود. برای اهداف این آموزش ، تمام فایل ها را تحت ~ / eclipse-theia ذخیره می کنید. با اجرای دستور زیر دایرکتوری ایجاد کنید: ⦁ $ mkdir ~/eclipse-theia به آن مراجعه کنید: ⦁ $ cd ~/eclipse-theia پیکربندی Docker Compose را برای nginx-proxy در فایلی به نام nginx-proxy-compose.yaml ذخیره خواهید کرد. آن را با استفاده از ویرایشگر متن خود ایجاد کنید: ⦁ $nano nginx-proxy-compose.yaml خطوط زیر را اضافه کنید: ~/eclipse-theia/nginx-proxy-compose.yaml version: '2' services: nginx-proxy: restart: always image: jwilder/nginx-proxy ports: - "80:80" - "443:443" volumes: - "/etc/nginx/htpasswd:/etc/nginx/htpasswd" - "/etc/nginx/vhost.d" - "/usr/share/nginx/html" - "/var/run/docker.sock:/tmp/docker.sock:ro" - "/etc/nginx/certs" letsencrypt-nginx-proxy-companion: restart: always image: jrcs/letsencrypt-nginx-proxy-companion volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" volumes_from: - "nginx-proxy" در اینجا شما دو سرویس را تعریف می کنید که Docker Compose اجرا خواهد کرد ، nginx-proxy و همراه آن Let’s Encrypt. برای پروکسی ، شما jwilder / nginx-proxy را به عنوان تصویر مشخص میکنید، پورت های HTTP و HTTPS را نقشه برداری می کنید ، و حجم هایی را تعریف می کنید که در زمان اجرا در دسترس شما خواهد بود. حجم ها دایرکتوری هایی در سرور مجازی شما هستند که سرویس تعریف شده به آنها دسترسی کامل خواهد داشت ، که بعداً برای تنظیم تأیید اعتبار کاربر از آنها استفاده خواهید کرد. برای دستیابی به این هدف ، از جلد اول لیست استفاده می کنید ، که دایرکتوری محلی / etc / nginx / htpasswd را به همان قسمت موجود در داخل آن نگاشت می کشد. در آن پوشه ، nginx-proxy انتظار دارد فایلی را به نام دامنه هدف پیدا کند ، که حاوی اطلاعات ورود به سیستم برای احراز هویت کاربر در قالب htpasswd (نام کاربری: hashed_password) است. برای افزودن ، شما تصویر Docker را نامگذاری می کنید و با تعیین یک حجم امکان دسترسی به سوکت Docker را می دهید. سپس ، شما مشخص می کنید که این افزونه باید دسترسی به حجمهای تعریف شده برای nginx-proxy را ادامه دهد. هر دو سرویس تنظیمات راه اندازی مجدد دارند ، که روی ALWAYS تنظیم میشود و به Docker دستور می دهد کانتینر را در صورت خرابی یا ریبوت سیستم مجدداً راه اندازی کند. فایل را ذخیره کنید و ببندید. پیکربندی را با اجرای دستور انجام دهید: ⦁ $ docker-compose -f nginx-proxy-compose.yaml up -d در اینجا نام فایل nginx-proxy-compose.yaml را در پارامتر -f دستور docker-compose می گذارید ، که فایل را برای اجرا مشخص می کند. سپس ، شما فعل UP را می گذرانید که به آن دستور می دهد کانتینرها را اجرا کند. پرچم -d حالت جداشده را فعال می سازد ، به این معنی که Docker Compose کانتینرها را در پس زمینه اجرا می کند. خروجی نهایی به شرح زیر خواهد بود: Output Creating network "eclipse-theia_default" with the default driver Pulling nginx-proxy (jwilder/nginx-proxy:). latest: Pulling from jwilder/nginx-proxy 8d691f585fa8: Pull complete 5b07f4e08ad0: Pull complete . Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28 Status: Downloaded newer image for jwilder/nginx-proxy:latest Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:). latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion 89d9c30c1d48: Pull complete 668840c175f8: Pull complete . Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest Creating eclipse-theia_nginx-proxy_1 . done Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 . done شما nginx-proxy و همراهش Let’s Encrypt را با استفاده از Docker Compose به کار گرفته اید. اکنون می توانید Eclipse Theia را در دامنه خود تنظیم کرده و آن را ایمن کنید. مرحله 2 – به کارگیری Eclipse Theia دوکر شده در این بخش ، فایلی را ایجاد خواهید کرد که شامل هر ترکیب ورود به سیستم مجاز است که کاربر باید آن را وارد کند. سپس Eclipse Theia را با استفاده از Docker Compose به سرور مجازی خود منتقل می کنید و با استفاده از nginx-proxy آن را در دامنه امن خود قرار می دهید. همانطور که در مرحله قبل توضیح داده شد ، nginx-proxy انتظار دارد که ترکیب های ورود به سیستم در فایلی به نام دامنه در معرض ، با فرمت htpasswd قرار بگیرند و در دایرکتوری / etc / nginx / htpasswd در کانتینر ذخیره شوند. همانطور که در پیکربندی nginx-proxy مشخص کرده ایم ، دایرکتوری محلی که به دایرکتوری مجازی نگاشت می کند ، نیازی به یکسان بودن ندارد. برای ایجاد ترکیبات ورود ، ابتدا با اجرای دستور زیر باید htpasswd را نصب کنید: ⦁ $ sudo apt install apache2-utils پکیج apache2-utils حاوی برنامه htpasswd است. دایرکتوری / etc / nginx / htpasswd را ایجاد کنید: ⦁ $ sudo mkdir -p /etc/nginx/htpasswd فایلی ایجاد کنید که ورود به سیستم را برای دامنه شما ذخیره کند: ⦁ $ sudo touch /etc/nginx/htpasswd/theia.your_domain به یاد داشته باشید theia.your_domain را با دامنه Eclipse Theia خود جایگزین کنید. برای افزودن نام کاربری و رمز ورود ، دستور زیر را اجرا کنید: ⦁ $ sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username USERNAME را با نام کاربری که می خواهید اضافه کنید جایگزین کنید. از شما دوبار رمز عبور خواسته می شود. پس از ارائه آن ، htpasswd نام کاربری و جفت رمز عبور را در انتهای فایل اضافه می کند. می توانید این دستور را به هر تعداد ورود به سیستم که میخواهید تکرار کنید. اکنون ، پیکربندی را برای استقرار Eclipse Theia ایجاد خواهید کرد. شما آن را در فایلی به نام eclipse-theia-compose.yaml ذخیره خواهید کرد. آن را با استفاده از ویرایشگر متن خود ایجاد کنید: ⦁ $ nano eclipse-theia-compose.yaml خطوط زیر را اضافه کنید: ~/eclipse-theia/eclipse-theia-compose.yaml version: '2.2' services: eclipse-theia: restart: always image: theiaide/theia:next init: true environment: - VIRTUAL_HOST=theia.your_domain - LETSENCRYPT_HOST=theia.your_domain در این پیکربندی ، شما یک سرویس واحد به نام eclipse-theia با ریستارت برای ALWAYS و theiaide/theia:next به عنوان تصویر کانتینر تعریف می کنید: شما همچنین می توانید init را روی true تنظیم کنید تا به Docker دستور دهید هنگام اجرای Eclipse Theia در داخل کانتینر ، از init به عنوان مدیر اصلی فرآیند استفاده کند. سپس دو متغیر محیط را در بخش environment مشخص می کنید: VIRTUAL_HOST و LETSENCRYPT_HOST. اولین مورد به پروکسی nginx منتقل می شود و به آن می گوید کانتینر چه دامنه ای را باید در معرض دید قرار دهید ، در حالی که دومی توسط افزونه Let’s Encrypt آن استفاده می شود و مشخص می کند که برای کدام دامنه درخواست گواهینامه TLS شود. مگر اینکه یک wildcard را به عنوان مقدار VIRTUAL_HOST تعیین کنید ، این دو مقدار باید یکسان باشند. به یاد داشته باشید theia.your_domain را با دامنه مورد نظر خود جایگزین کنید ، سپس فایل را ذخیره کنید و ببندید. اکنون با اجرای دستور زیر Eclipse Theia را اجرا کنید: ⦁ $ docker-compose -f eclipse-theia-compose.yaml up -d خروجی نهایی مشابه زیر به نظر می رسد: Output . Pulling eclipse-theia (theiaide/theia:next). next: Pulling from theiaide/theia 63bc94deeb28: Pull complete 100db3e2539d: Pull complete . Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109 Status: Downloaded newer image for theiaide/theia:next Creating eclipse-theia_eclipse-theia_1 . done سپس در مرورگر خود به دامنه مورد استفاده برای Eclipse Theia بروید. مرورگر شما فوریتی را به شما نشان می دهد که از شما خواسته می شود وارد شوید. پس از ارائه اطلاعات صحیح ، شما وارد Eclipse Theia می شوید و بلافاصله رابط کاربری گرافیکی آن را مشاهده می کنید. در نوار آدرس یک پدلاک را مشاهده خواهید کرد که نشان می دهد اتصال امن است. اگر این را بلافاصله مشاهده نکردید ، چند دقیقه صبر کنید تا گواهینامه های TLS ارائه شود ، سپس صفحه را مجدد بارگیری کنید. اکنون که می توانید به راحتی به cloud IDE خود دسترسی داشته باشید ، در مرحله بعد شروع به استفاده از ویرایشگر خواهید کرد. مرحله 3 - استفاده از رابط Eclipse Theia در این بخش به بررسی برخی از ویژگی های رابط Eclipse Theia می پردازید. در سمت چپ IDE ، یک ردیف عمودی از چهار دکمه وجود دارد که متداول ترین ویژگی های مورد استفاده را در یک صفحه جانبی باز می کند. این نوار قابل تنظیم است بنابراین می توانید این نماها این نوار قابل سفارشی


چگونه پیکربندی SSH Daemon خود را بر روی یک VPS لینوکس تنظیم کنید مقدمه SSH راه اصلی برای اتصال به سرورهای راه دور لینوکس و یونیکس مانند از طریق خط فرمان است. که یک اتصال مطمئن فراهم می کند که می توانید از آن برای اجرای دستورات ، تعامل با سیستم و حتی تونل زدن از میان ترافیک نامربوط استفاده کنید. بیشتر کاربران از اصول اولیه چگونگی شروع و اتصال به یک سرور از راه دور با یک فرمان مانند زیر آگاه هستند: ssh username@remote_server با این حال ، گزینه های بیشتری در رابطه با پیکربندی Demon SSH وجود دارد که می تواند برای افزایش امنیت ، مدیریت اتصالات کاربر و غیره مفید باشد. ما در مورد برخی از گزینه های موجود در اختیار شما بحث خواهیم کرد تا کنترل دقیق تری روی دسترسی SSH داشته باشید. . ما این مفاهیم را به طور نمونه از Ubuntu 12.04 VPS استفاده خواهیم کرد ، اما هر توزیع مدرن لینوکس باید به روشی مشابه عمل کند. کاوش در فایل پیکربندی SSHD منبع اصلی پیکربندی مربوط به Demon SSH در فایل / etc / ssh / sshd_config است. توجه داشته باشید که این با فایل ssh_config متفاوت است ، که پیش فرض سمت مشتری را مشخص می کند. اکنون فایل را با امتیازات ادمین باز کنید: sudo nano /etc/ssh/sshd_config شما یک فایل با ویژگی های کاملاً متفاوت را مشاهده خواهید کرد و خوشبختانه (بسته به توزیع خود) نظرهای زیادی را نیز مشاهده میکنید. در حالی که اکثر توزیع ها کار نسبتاً خوبی برای ایجاد پیش فرض های عاقلانه انجام می دهند ، همچنان جای بهبود و سفارشی سازی وجود دارد. بیایید به برخی از گزینه هایی که قبلاً در فایل ما در اوبونتو 12.04 تنظیم شده اند بپردازیم: پورت ها و پروتکل ها پورت 22: پورتی را که Daemon SSH به دنبال اتصال در آن است ، مشخص می کند. به طور پیش فرض ، اکثر مشتری ها و سرورها در درگاه 22 کار می کنند ، اما تغییر دادن آن به درگاه متفاوت می تواند به طور بالقوه میزان تلاش ورود به سیستم توسط SSH توسط کاربران مخرب را کاهش دهد. پروتکل 2: SSH از طریق دو نسخه پروتکل بوده است. مگر اینکه به طور خاص نیاز به پشتیبانی مشتریانی داشته باشید که فقط می توانند در پروتکل 1 کار کنند ، توصیه می شود این موارد را رها کنید. کلیدها و جدایی HostKey / etc / ssh / ssh_host…: این خطوط کلیدهای هاست را برای سرور مشخص می کنند. از این کلیدها برای شناسایی سرور برای اتصال مشتری استفاده می شود. اگر مشتری قبلاً با سرور ارتباط برقرار کرده باشد ، می تواند از این کلید برای اعتبار سنجی اتصال جدید استفاده کند. UsePrivilegeSeparation yes: این گزینه به SSH اجازه می دهد تا فرآیندهای کودک را افزایش دهد که فقط امتیازات لازم را برای انجام وظایف خود دارند. این یک ویژگی ایمنی برای جداسازی فرایندها در صورت بهره برداری امنیتی است. KeyRegenerationInterval and ServerKeyBits: این گزینه ها روی کلید سرور تولید شده برای پروتکل SSH 1 تأثیر می گذارند. اگر خواستار اتصال کانکشن های خود به پروتکل 2 هستید ، لازم نیست که نگران این موضوع باشید. ورود به سیستم و محدودیت ها SyslogFacility and LogLevel : این گزینه ها نحوه ورود به سیستم را مشخص می کنند. گزینه اول مربوط به کد تسهیلات برای پیام های logging است و گزینه دوم سطح ورود به سیستم یا میزان جزئیات را می گوید. LoginGraceTime 120: تعداد ثانیه هایی است که سرور قبل از جدا شدن از مشتری در صورت عدم ورود موفق به سیستم ، منتظر می ماند. PermitRootLogin yes: این گزینه امکان SSH را با استفاده از حساب root امکان پذیر یا رد می کند. از آنجا که حساب روت یکی از مواردی است که حمله کننده می داند در دستگاه سرور وجود دارد و از آنجا که دسترسی نامحدود به دستگاه را فراهم می کند ، اغلب یک حساب کاربری بسیار هدفمند است. وقتی یک حساب کاربری معمولی را با امتیازات sudo پیکربندی کردید تنظیم این گزینه روی حالت "خیر" توصیه می شود. StrictModes yes: این به SSH می گوید که از پرونده های پیکربندی سطح کاربر که مجوزهای صحیحی ندارند، چشم پوشی کند. اگر کاربر پرونده های پیکربندی خود را به صورت جهانی قابل خواندن قرار دهد ، پیامدهای امنیتی خواهد داشت. تا زمانی که این مشکل برطرف شود، بهتر است دسترسی برداشته باشد. IgnoreRhosts and RhostsRSAAuthentication : این گزینه ها مشخص می کند که آیا احراز هویت به سبک rhost پذیرفته خواهد شد یا خیر. این دستور پروتکل 1 است که در مورد پروتکل 2 صدق نمی کند. HostbasedAuthentication no: این نسخه پروتکل 2 از مورد فوق است. در اصل، اجازه می دهد تا احراز هویت بر اساس میزبان مشتری در حال اتصال انجام شود. معمولاً فقط برای محیط های ایزوله قابل قبول است ، زیرا امکان جعل اطلاعات منبع وجود دارد. شما می توانید اطلاعات میزبان را در یک فایل /etc/ssh/shosts.equiv یا فایل /etc/hosts.equiv مشخص کنید. این خارج از محدوده این راهنما میباشد. PermitEmptyPasswords no: این گزینه دسترسی SSH را برای حساب هایی که رمز عبور ندارند در هنگام تأیید رمز عبور محدود می کند. این می تواند یک خطر امنیتی بزرگ باشد و تقریباً هرگز نباید آن را تغییر دهید. ChallengeResponseAuthentication: این خط یک نوع تأیید پاسخ-چالش را فعال یا غیرفعال می کند که می توان از طریق PAM پیکربندی کرد. این بحث خارج از محدوده این راهنما است. نمایش X11Forwarding yes: این گزینه به شما امکان می دهد تا واسط های گرافیکی X11کاربر را برای برنامه های روی سرور به دستگاه مشتری منتقل کنید. این بدان معنی است که می توانید یک برنامه گرافیکی را روی یک سرور شروع کنید، و با آن در سیستم مشتری تعامل داشته باشید. مشتری باید یک سیستم X در دسترس داشته باشد. می توانید این موارد را در OS X نصب کنید و هر لینوکس دسکتاپی این قابلیت را دارد. X11DisplayOffset 10: این یک آفست برای شماره نمایشگر sshd برای ارسال X11 است. این افست اجازه می دهد تا SSH باعث ایجاد پنجره های X11 شود تا از درگیری با سرور X موجود جلوگیری کند. PrintMotd no: این گزینه مشخص می کند که Daemon SSH نباید پیام فایل روز را بخواند و نمایش دهد. این گاهی اوقات توسط خود shell خوانده می شود ، بنابراین ممکن است شما نیاز به تغییر پرونده های ترجیحی shell خود نیز داشته باشید. PrintLastLog yes: این به Daemon SSH می گوید تا اطلاعات آخرین باری که وارد سیستم شدید را چاپ کند. اتصال و محیط TCPKeepAlive yes: مشخص می کند که آیا پیام های نگهدارنده TCP به دستگاه مشتری ارسال می شوند. این می تواند به سرور در هنگام بروز مشکل و قطع اتصال کمک کند. اگر این گزینه غیرفعال باشد ، در صورت بروز مشکل در شبکه ، اتصالات از بین نمی روند ، که می تواند خوب باشد ، اما همچنین بدان معنی است که ارتباط کاربران می تواند از هم قطع شود و همچنان به قفل کردن منابع ادامه دهند. AcceptEnv LANG LC_ *: این گزینه به شما امکان می دهد متغیرهای محیطی خاصی را از دستگاه مشتری قبول کنید. در این مثال خاص ، ما متغیرهای زبان را می پذیریم ، که می تواند به بخش shell کمک کند که به درستی برای مشتری نمایش داده شود. Subsystem sftp /usr/lib/openssh/sftp-serve: زیر سیستم های خارجی را که می توان با SSH استفاده کرد پیکربندی می کند. در این مثال سرور SFTP و مسیر اجرای آن مشخص شده است. UsePAM yes: این مشخص می کند که PAM (ماژول های تأیید قابل اتصال) برای کمک به تأیید اعتبار کاربران در دسترس خواهد بود. این امر به گزینه های پیش فرض فعال شده دستگاه Ubuntu 12.04 ما احتیاج دارد. در مرحله بعدی، بگذارید درباره برخی گزینه های دیگر صحبت کنیم که ممکن است برای تنظیم یا تغییر برای شما مفید باشد. سایر گزینه های SSHD چندین گزینه دیگر وجود دارد که می توانیم برای Daemon SSH خود تعیین کنیم. برخی از این موارد ممکن است فوراً برای شما مفید باشد ، در حالی که برخی دیگر فقط در شرایط خاص می توانند مفید باشند. ما در اینجا به همه موارد نمی پردازیم ، اما برخی از موارد مفید را مرور خواهیم کرد. فیلتر کاربری و گروهی برخی گزینه ها به شما امکان می دهند دقیقاً کنترل کنید که کاربران از چه طریق امکان ورود به سیستم از طریق SSH را دارند. این گزینه ها باید به صورت انحصاری در نظر گرفته شوند. به عنوان مثال ، گزینه AllowUsers به این معنی است که از دسترسی سایر کاربران جلوگیری می شود. AllowGroups: این گزینه به شما امکان می دهد نام گروه ها را روی سرور مشخص کنید. فقط کاربرانی که عضو یکی از این گروه ها هستند ، می توانند وارد سیستم شوند. این یک لیست سفید از گروه هایی ایجاد می کند که باید دسترسی داشته باشند. AllowUsers: مشابه گزینه فوق است ، اما کاربران خاصی را که مجاز به ورود به سیستم هستند مشخص می کند. هر کاربر که در این لیست نباشد قادر به ورود به سیستم نخواهد بود. و به عنوان یک لیست سفید کاربری کار می کند. DenyGroups: این گزینه یک لیست سیاه از گروههایی را ایجاد می کند که نباید اجازه ورود به سیستم را داشته باشند. کاربرانی که به این گروه ها تعلق دارند ، اجازه دسترسی ندارند. DenyUsers: این یک لیست سیاه برای کاربران است. به طور خاص مشخص می کند که به کدام یک از کاربران امکان ورود به سیستم از طریق SSH داده نمی شود. علاوه بر این ، برخی از گزینه های محدود کننده دیگر نیز در دسترس هستند. اینها را می توان در رابطه با هر یک از گزینه های فوق استفاده کرد: Match: این گزینه امکان کنترل بسیار دقیق تر بر روی افرادی را دارد که تحت چه شرایطی می توانند تأیید کنند. این مجموعه گزینه های متفاوتی را مشخص می کند که هنگام اتصال یک کاربر یا گروه خاص باید از آنها استفاده شود. ما بعداً با جزئیات بیشتری در مورد این موضوع بحث خواهیم کرد. RevokenKeys: این به شما امکان می دهد لیستی از کلیدهای عمومی ابطال شده را مشخص کنید. این کار از ورود کلیدهای ذکر شده برای ورود به سیستم جلوگیری می کند. گزینه های متفرقه گزینه هایی وجود دارد که می توانیم از آنها استفاده کنیم تا پیکربندی کنیم چه ترافیک شبکه ای را Daemon SSH به آن توجه خواهد کرد: AddressFamily: این گزینه مشخص می کند که چه نوع آدرس هایی را انتخاب می کنید که اتصالات آن ها را بپذیرید. به طور پیش فرض ، مقدار "هر" است ، اما می توانید "inet" را برای آدرسهای IPv4 یا "inet6" را برای آدرسهای IPv6 قرار دهید. ListenAddress: این گزینه به شما امکان می دهد تا به Daemon SSH بگویید که در یک آدرس و پورت خاص گوش کند. Daemon به طور پیش فرض تمام آدرسهایی را که برای این دستگاه پیکربندی شده است گوش می دهد. انواع دیگر گزینه هایی که در دسترس هستند عبارتند از مواردی که برای تنظیم تأیید هویت مبتنی بر گواهینامه ، گزینه های محدود کننده اتصال مانند ClientAliveCountMax و ClientAliveInterval و گزینه هایی مانند ChrootDirectory استفاده می شود ، که می تواند برای قفل کردن ورود به سیستم کاربر به یک فضای خاص و محیط از پیش تنظیم شده Chroot استفاده شود. . محدود کردن ورود به سیستم کاربر ما در بالا به برخی از ابزارهایی که شما باید دسترسی کاربران و گروه ها را محدود کنید ، اشاره کردیم. بیایید کمی با جزئیات بیشتر بحث کنیم. ابتدایی ترین دستور برای استفاده از این موارد چیزی شبیه به زیر است: AllowUsers demouser fakeuser madeupuser همانطور که مشاهده می کنید، ما می توانیم کاربرهای مختلفی را از هم جدا کنیم که در هر یک از این دستورالعمل ها قرار دارند. ما همچنین می توانیم از wild cards استفاده کرده و ورودی ها را نفی کنیم. به عنوان مثال ، اگر می خواستیم به همه کاربرها به جز "جان" اجازه ورود به سیستم بدهیم ، می توانیم چیزی شبیه به این را امتحان کنیم: AllowUsers * !john این نمونه خاص احتمالاً با خط DenyUsers بهتر بیان می شود: DenyUsers john ما همچنین می توانیم از علامت ? برای مطابقت دقیق با یک حرف استفاده کنیم، به عنوان مثال میتوانیم از دستور زیر استفاده کنیم: AllowUsers ?im این کار اجازه می دهد تا از حساب هایی مانند "tim" ، "jim" یا "vim" وارد شوید. با این حال ما می توانیم مشخص تر شویم. در هر دو مشخصات کاربر ، می توانیم از فرم کاربر user@hostname استفاده کنیم تا ورود به مکانهای منبع خاص مشتری محدود شود. به عنوان مثال ، شما می توانید چیزی مانند دستور زیر را تایپ کنید: AllowUsers demouser@host1.com fakeuser این کار باعث می شود "fakeuser" از هرجای دیگری وارد سیستم شود ، اما فقط به "demouser" اجازه می دهد تا از یک هاست مشخص وارد شود. ما همچنین می توانیم دسترسی را به صورت میزبان به میزبان در خارج از فایل sshd_config از طریق بسته های TCP محدود کنیم. این از طریق فایل های /etc/hosts.allow و /etc/hosts.deny پیکربندی میشود. به عنوان مثال ، ما می توانیم دسترسی را به طور خاص بر اساس ترافیک SSH با اضافه کردن خط هایی مانند زیر به فایل hosts.allow محدود کنیم: sshd: .example.com با فرض اینکه ما در فایل hosts.deny یک خط همراه داریم که به صورت زیر است: sshd: ALL این کار ورود به سیستم را فقط برای افرادی که از example.com یا یک زیر دامنه وارد می شوند محدود می کند. استفاده از گزینه های مطابقت برای اضافه کردن استثنائات ما می توانیم با استفاده از گزینه های "match" گزینه های خود را حتی بیشتر کنترل کنیم. گزینه های مطابقت با مشخص کردن الگوی معیاری کار میکنند که تصمیم می گیرند که گزینه های زیر استفاده خواهد شد یا خیر. ما یک مطابقت را با استفاده از گزینه Match و سپس مشخص کردن جفت های معیاری با ارزش کلیدی شروع می کنیم. کلیدهای موجود "کاربر" ، "گروه" ، "میزبان" و "آدرس" هستند. ما می توانیم معیارها را با فاصله جدا کنیم و الگوها (user1، user2) را با کاما از هم جدا کنیم. ما همچنین می توانیم از wild cards و خنثی سازی استفاده کنیم: Match User !demouser,!fakeuser Group sshusers Host *.example.com خط بالا فقط در صورتی مطابقت دارد که کاربر demouser یا fakeuser نباشد ، در صورتی که کاربر عضو گروه sshusers باشد و در صورت اتصال آن از example.com یا یک زیر دامنه استفاده کند. معیارهای "آدرس" می توانند از نماد net Cask CIDR استفاده کنند. گزینه هایی که از مشخصات مطابقت پیروی می کنند بصورت مشروط اعمال می شوند. دامنه این گزینه های شرطی تا پایان پرونده یا مشخصات مطابقت بعدی است. به همین دلیل توصیه می شود مقادیر پیش فرض خود را در بالای فایل قرار دهید و استثنائات خود را در انتهای آن قرار دهید. به دلیل این بلوک شرطی ، گزینه های موجود تحت مطابقت اغلب بیان میکنند که فقط در انطباق فوق اعمال می شوند. به عنوان مثال ، شرط فوق می تواند بلوکی مانند این تحت آن داشته باشد: Match User !demouser,!fakeuser Group sshusers Host *.example.com AuthorizedKeysFile /sshusers/keys/%u PasswordAuthentication yes X11Forwarding X11DisplayOffset 15 شما فقط هنگام برخورد با مشخصات انطباق به زیر مجموعه گزینه ها دسترسی دارید. برای دیدن لیست کامل ، صفحه sshd_config را ببینید: man sshd_config برای دیدن لیست گزینه های موجود ، بخش "مطابقت" را جستجو کنید. نتیجه همانطور که مشاهده می کنید ، می توانید مقادیر زیادی را در سمت سرور SSH تنظیم کنید که در توانایی کاربران برای ورود به سیستم و کیفیت تجربه آنها تأثیر می گذارد. اطمینان حاصل کنید که تغییرات خود را قبل از اجرای مقیاس گسترده با دقت آزمایش کنید تا خطاها را پیدا کنید و اطمینان حاصل کنید که محدودیت های شما به طور تصادفی روی تعداد کمی از کاربران یا تعداد خیلی زیادی تأثیر نمگذارد. آشنایی با فایل / etc / ssh / sshd_config اولین قدم بزرگ در جهت درک چگونگی کنترل دقیق دسترسی به سرور شماست. و یک مهارت مهم برای هر مدیر سیستم لینوکس میباشد.


نحوه نصب وردپرس با OpenLiteSpeed در اوبونتو .04 مقدمه WordPress یک سیستم مدیریت محتوای منبع باز (CMS) است. WordPress محبوب ترین CMS در جهان است که به شما امکان می دهد تا وبلاگ ها و وب سایت هایی را فراتر از پایگاه داده MySQL تنظیم کنید ، از PHP برای اجرای اسکریپت ها و پردازش محتوای پویا استفاده کنید. OpenLiteSpeed یک سرور وب منبع باز بهینه شده است که می توانید از آن برای مدیریت و سرویس وب سایت ها استفاده کنید. OpenLiteSpeed دارای برخی ویژگی های مفید است که آن را به گزینه ای مناسب برای بسیاری از نصب ها تبدیل می کند: قوانین بازنویسی سازگار با Apache، یک رابط کاربری مدیریت مبتنی بر وب و پردازش PHP سفارشی برای بهینه سازی سرور. این راهنما روند نصب و تنظیم یک نمونه وردپرس را در Ubuntu .04 با استفاده از وب سرور OpenLiteSpeed طی خواهد کرد. از آنجا که هم WordPress و OpenLiteSpeed می توانند از طریق یک مرورگر وب مدیریت شوند ، این پیکربندی برای کسانی که دسترسی منظم به بخش SSH ندارند یا کسانی که ممکن است احساس راحتی مدیریت یک سرور وب از طریق خط فرمان را نداشته باشند ، ایده آل است. پیش نیازها قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت: یک سرور که Ubuntu .04 را اجرا میکند با یک ادمین، یک کاربر غیر روت و فایروال با استفاده از ufw پیکربندی کرده است. برای تنظیم این محیط ، آموزش اولیه سرور ما را برای اوبونتو .04 دنبال کنید. OpenLiteSpeed بر روی سرور شما نصب شده است. برای راهنمایی در مورد نصب و پیکربندی OpenLiteSpeed به راهنمای ما در مورد نحوه نصب OpenLiteSpeed وب سرور در اوبونتو .04 مراجعه کنید. MySQL بر روی سرور شما نصب شده است. برای تنظیم این روش نحوه نصب MySQL را در اوبونتو .04 دنبال کنید. مرحله 1 - ایجاد یک بانک اطلاعاتی و کاربر بانک اطلاعاتی برای وردپرس WordPress از MySQL برای مدیریت و ذخیره اطلاعات سایت و کاربر استفاده می کند. شما قبلاً MySQL را نصب کرده اید ، اما به عنوان یک مرحله مقدماتی به ایجاد یک بانک اطلاعاتی و یک کاربر برای استفاده از وردپرس نیاز دارید. برای شروع کار ، با استفاده از SSH به سرور خود وصل شوید: ssh sammy @ your_server_IP سپس وارد حساب ریشه MySQL شوید: sudo mysql توجه: اگر مرحله 3 را در پیش نیاز آموزش MySQL به پایان رسانده اید و کاربر root MySQL را برای تأیید اعتبار با افزونه mysql_native_password پیکربندی کرده اید ، باید دستور زیر را وارد کنید: mysql -u root -p سپس در صورت درخواست رمزعبور کاربر اصلی خود را وارد کنید. از تبلیغ MySQL ، یک پایگاه داده با دستور زیر ایجاد کنید. در اینجا ، ما این دیتابیس را برای سادگی وردپرس نام می گذاریم ، اما شما می توانید آن را هرچه دوست دارید نامگذاری کنید: CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; سپس ، یک کاربر ایجاد کرده و به آن امتیازات بانک اطلاعاتی که اخیراً ایجاد کرده اید بدهید. باز هم ، می توانید هر نامی را به این کاربر بدهید ، اما برای سادگی ما آن را wordpressuser می نامیم. همچنین ، حتماً گذرواژه را به یک رمز عبور قوی با انتخاب خود تغییر دهید: GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; سپس ، PRUSILEGES FLUSH را اجرا کنید که به سرور می گوید جداول اعطای امتیاز را مجدد لود کند و اعمال تغییرات جدید خود را اجرا کنید ،: FLUSH PRIVILEGES; پس از آن ، می توانید اعلان MySQL را ببندید: exit اکنون نصب MySQL خود برای کار با WordPress را انجام داده اید. در مرحله بعد چند افزونه PHP نصب خواهیم کرد. مرحله 2 - نصب افزونه های اضافی PHP در آموزش پیش نیاز OpenLiteSpeed ، بسته lsphp73 را نصب کردید. این مجموعه ای از PHP بهینه شده برای OpenLiteSpeed است که از LiteSpeed SAPI برای ارتباط با برنامه های خارجی استفاده می کند. بسته به نیاز شما ، وردپرس ممکن است نیاز به سایر افزونه های PHP داشته باشد تا بتواند به دلخواه عمل کند. برای نصب برخی افزونه های PHP که معمولاً با WordPress استفاده می شود ، دستور زیر را اجرا کنید: sudo apt install lsphp73-common lsphp73-curl lsphp73-imagick lsphp73-imap lsphp73-json lsphp73-memcached lsphp73-mysql lsphp73-opcache lsphp73-redis توجه: بسته های این دستور ممکن است تمام موارد استفاده را پوشش ندهد. برای یک لیست کامل از افزونه های PHP 7.3 موجود از مخزن LiteSpeed که در آموزش پیش نیاز به سرور خود اضافه کرده اید ، به Wiki LiteSpeed مراجعه کنید. پس از این ، می توانید به سمت دانلود و تنظیم وردپرس در سرور خود بروید. مرحله 3 - دانلود وردپرس اکنون که نرم افزار سرور شما پیکربندی شده است ، می توانید WordPress را نصب و تنظیم کنید. به ویژه به دلایل امنیتی ، همیشه توصیه می شود که آخرین نسخه وردپرس را مستقیماً از سایت خودشان دریافت کنید. به یک دیرکتوری قابل نوشتار بروید و سپس نسخه فشرده شده را با تایپ کردن دستور زیر دانلود کنید: cd /tmp curl -O https://wordpress.org/latest.tar.gz برای ایجاد ساختار دایرکتوری وردپرس ، فایل فشرده شده را استخراج کنید: tar xzvf latest.tar.gz ما این پرونده ها را لحظه به لحظه به ریشه سند منتقل خواهیم کرد ، اما ابتدا چند فایل و فهرست را ایجاد خواهیم کرد که نصب وردپرس به آنها بستگی دارد. OpenLiteSpeed از فایل های .htaccess پشتیبانی می کند. این برای اهداف ما مهم است ، از آنجا که وردپرس از فایلهای .htaccess برای ایجاد و مدیریت پرونده های ثابت استفاده می کند. یک فایل .htaccess ساختگی اضافه کنید تا بعداً برای استفاده وردپرس در دسترس باشد: touch /tmp/wordpress/.htaccess سپس ، فایل پیکربندی نمونه را بر روی نام خانوادگی که وردپرس میخواند، کپی کنید: cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php علاوه بر این ، دایرکتوری upgrade را ایجاد کنید تا وردپرس هنگام تلاش برای انجام این کار به تنهایی و به دنبال بروزرسانی در نرم افزار خود ، به مشکلات مربوط به مجوزها برخورد نکند: mkdir /tmp/wordpress/wp-content/upgrade سپس کل محتوای فهرست را در روت سند خود کپی کنید.OpenLiteSpeed با یک میزبان مجازی پیش فرض به نام Example در دیرکتوری / usr / local / lsws / قرار دارد. روت سند برای میزبان مجازی Example زیرمجموعه html است: sudo cp -a /tmp/wordpress/. /usr/local/lsws/Example/html/wordpress توجه کنید که این دستور شامل یک نقطه در انتهای فهرست منبع است تا نشان دهد که همه چیزهای داخل دیرکتوری باید کپی شوند ، از جمله پرونده های مخفی (مانند پرونده .htaccess که ایجاد کردید): با این کار ، شما وردپرس را با موفقیت روی سرور وب خود نصب کرده اید و برخی از مراحل اولیه تنظیمات را انجام داده اید. در مرحله بعد ، ما تغییرات دیگری را در پیکربندی انجام خواهیم داد که امتیازات وردپرس را برای عملکرد ایمن و دسترسی به بانک اطلاعاتی MySQL و حساب کاربری که قبلاً ایجاد کرده اید به شما می دهد. مرحله 4 - پیکربندی دایرکتوری وردپرس قبل از اینکه بتوانیم فرآیند راه اندازی مبتنی بر وب را برای وردپرس طی کنیم ، باید برخی موارد را در دایرکتوری وردپرس خود تنظیم کنیم. با دادن مالکیت کلیه فایل های موجود در دیرکتوری به کاربر nobody و گروه nogroup ، که وب سرور OpenLiteSpeed بصورت پیش فرض اجرا می کند ، شروع کنید. دستور chown زیر به OpenLiteSpeed امکان خواندن و نوشتن فایل ها در دایرکتوری وردپرس را اعطا می کند ، و این امکان را برای سرویس دهی به وب سایت و انجام به روز رسانی های خودکار فراهم می کند: sudo chown -R nobody:nogroup /usr/local/lsws/Example/html/wordpress برای تنظیم مجوزهای صحیح در دایرکتوری ها و فایل های وردپرس ، دو دستور find اجرا کنید: sudo find /usr/local/lsws/Example/html/wordpress/ -type d -exec chmod 750 {} \; sudo find /usr/local/lsws/Example/html/wordpress/ -type f -exec chmod 640 {} \; اینها باید مجوزهای معقولی برای شروع باشد ، اگرچه برخی از افزونه ها و رویه ها ممکن است نیاز به ترفندهای اضافی داشته باشند. پس از این ، شما باید تغییراتی در پرونده اصلی پیکربندی WordPress انجام دهید. با باز کردن فایل ، اولین هدف شما تنظیم برخی کلیدهای مخفی برای ایجاد امنیت برای نصب شما خواهد بود. WordPress یک مولد مطمئن برای این مقادیر فراهم می کند به طوری که دیگر نیازی به تلاش برای دستیابی به مقادیر خوب از خودتان نیست. اینها فقط به صورت داخلی استفاده می شود ، بنابراین به مقادیر پیچیده و ایمن در اینجا آسیب نمی رساند. برای گرفتن مقادیر ایمن از مولد کلید مخفی WordPress ، تایپ کنید: curl -s https://api.wordpress.org/secret-key/1.1/salt/ شما به مقادیر منحصر به فردی بر می گردید که چیزی شبیه به این است: هشدار! مهم است که هر بار درخواست مقادیر منحصر به فرد کنید. مقادیر نشان داده شده در زیر را کپی نکنید! خروجی define('AUTH_KEY', '1jl/vqfs define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%'); اینها خطوط پیکربندی هستند که شما برای تنظیم کلیدهای ایمن مستقیماً در پرونده پیکربندی خود پیست میکنید. خروجی دریافت شده را در کلیپ بورد خود کپی کنید ، و سپس پرونده پیکربندی WordPress واقع در روت سند خود را باز کنید: sudo nano /usr/local/lsws/Example/html/wordpress/wp-config.php بخشی که حاوی مقادیر ساختگی برای آن تنظیمات است را پیدا کنید. چیزی شبیه به این خواهد بود: /var/www/wordpress/wp-config.php . . . define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); این سطرها را حذف کرده و در مقادیری که از خط فرمان کپی کرده اید پیست کنید: /var/www/wordpress/wp-config.php . . . define('AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_KEY', 'VALUES COPIED FROM THE COMMAND LINE'); define('AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('LOGGED_IN_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); define('NONCE_SALT', 'VALUES COPIED FROM THE COMMAND LINE'); . . . سپس ، تنظیمات اتصال دیتابیس را در بالای فایل اصلاح کنید. شما باید نام بانک اطلاعاتی ، کاربر پایگاه داده و رمز عبور مرتبط با آن را در MySQL تنظیم کنید. تغییر دیگری که شما باید ایجاد کنید این است که روشی را که وردپرس برای نوشتن در سیستم فایل ها باید استفاده کند تنظیم کنید. از آنجایی که به ما اجازه سرور وب داده شده است که در هر جا لازم است بنویسیم، می توانیم به طور صریح روش سیستم فایل را به direct تنظیم کنیم. عدم تنظیم این با تنظیمات فعلی ما منجر به اعلان وردپرس برای اعتبار FTP در هنگام برخی عملکردهای خاص میشود. این تنظیمات می تواند در زیر تنظیمات اتصال دیتابیس یا هر جای دیگر فایل اضافه شود: /var/www/wordpress/wp-config.php . . . define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); . . . define('FS_METHOD', 'direct'); هنگامی که کارتان تمام شد، فایل را ذخیره کنید و ببندید. در این مرحله ، وردپرس کاملاً در سیستم شما پیکربندی نشده است ، زیرا هنوز لازم است قبل از شروع انتشار مطالب ، چند کار نهایی را اعمال کنید. برای انجام این کار ، ابتدا لازم است چند تغییر تنظیمات در نصب OpenLiteSpeed خود اعمال کنید. مرحله 6 – پیکربندی OpenLiteSpeed در حال حاضر ، شما WordPress را در سرور Ubuntu خود نصب کرده اید ، اما نصب OpenLiteSpeed شما هنوز برای ارائه آن تنظیم نشده است. در این مرحله ، ما به رابط اجرایی OpenLiteSpeed دسترسی خواهیم داشت و چند تغییر در پیکربندی سرور شما ایجاد می کنیم. در مرورگر وب مورد نظر خود، به رابط اداری OpenLiteSpeed بروید. می توانید این را با وارد کردن آدرس IP عمومی سرور خود یا نام دامنه مرتبط با آن ، و به دنبال آن: 7080 در نوار آدرس مرورگر خود بیابید: https: // server_domain_or_IP: 7080 در آنجا به شما یک صفحه ورود به سیستم ارائه می شود. نام کاربری و رمز عبوری را که در آموزش پیش نیاز OpenLiteSpeed تعریف کرده اید وارد کنید: از کنسول OpenLiteSpeed ، در منوی نوار کناری سمت چپ ، بر روی تنظیمات سرور کلیک کنید. سپس به سربرگ External App بروید ، ردیف برنامه LiteSpeed SAPI را پیدا کنید و بر روی دکمه Edit آن کلیک کنید: به یاد بیاورید که در پیش نیاز آموزش OpenLiteSpeed ، بسته lsphp73 را نصب کردید ، تلفیقی از PHP بهینه سازی شده برای کار با OpenLiteSpeed از طریق LiteSpeed SAPI. با این حال ، تنظیمات پیش فرض در صفحه External App به lsphp اشاره دارد نه lsphp73. به همین دلیل ، نصب OpenLiteSpeed شما قادر به اجرای صحیح اسکریپت های PHP نیست. برای تصحیح این امر ، قسمت Name را به lsphp73 تغییر دهید ، قسمت آدرس را به uds: //tmp/lshttpd/lsphp73.sock تغییر دهید و قسمت Command را به SERVER_ROOT / lsphp73 / bin / lsphp: پس از ایجاد آن تغییرات ، روی آی save در گوشه سمت راست بالای کادر LiteSpeed SAPI App کلیک کنید. سپس، در منوی سمت چپ روی Virtual Hosts کلیک کنید. در صفحه Virtual Hosts میزبان مجازی مورد نظر خود را پیدا کنید و بر روی نماد View آن کلیک کنید. در اینجا ، ما از هاست مجازی مثال پیش فرض استفاده خواهیم کرد: به سربرگ General هاست مجازی بروید. در آنجا بخش General را پیدا کنید و روی دکمه edit آن کلیک کنید: OpenLiteSpeed برای ارائه خدمات به دنبال محتویات Document Root میگردد. از آنجا که تمام مطالب و فایل های وردپرس شما در دیرکتوری وردپرس که قبلا ایجاد شده ذخیره می شوند، قسمت Document Root را به روز کنید تا به آن دیرکتوری راهنمایی کنید. برای انجام این کار ، تنها کاری که باید انجام دهید اضافه کردن وردپرس / به پایان مقدار پیش فرض است: برای ذخیره این تغییر، روی آی save کلیک کنید. در مرحله بعد ، باید پرونده های index.php را فعال کنید تا از آنها برای پردازش درخواست هایی که توسط پرونده های استاتیک مدیریت نمی شوند ، استفاده شود. با این کار منطق اصلی وردپرس به درستی کار می کند. در حالی که هنوز در تب General هستید، برای یافتن بخش Index Files به پایین بروید و بر روی نماد edit آن کلیک کنید: در قسمت Index Files ، index.html را با index.php پیش ببرید. با قرار دادن index.php قبل از index.html ، به فایلهای شاخص PHP اجازه می دهید که اولویت داشته باشند. پس از به روزرسانی این قسمت ، مانند عکس خواهد بود قبل از ادامه ، روی آی save کلیک کنید. در مرحله بعد ، به سربرگ Rewrite هاست مجازی بروید. بخش Rewrite Control را پیدا کنید و دکمه ویرایش را فشار دهید: با کلیک بر روی دکمه های شعاعی مربوطه ، هر دو گزینه Enable Rewrite و Auto Load را از گزینه های .htaccess روی Yes بگذارید. پیکربندی دستورالعمل های بازنویسی در این روش به شما امکان می دهد از نصب مجدد لینک ها در نصب وردپرس خود استفاده کنید: بعد از انجام تغییرات ، روی ذخیره کلیک کنید. هاست مجازی پیش فرض که همراه با نصب OpenLiteSpeed است شامل برخی از نواحی محافظت شده با رمز عبور برای نمایش ویژگی های تأیید اعتبار کاربر OpenLiteSpeed. است. WordPress شامل مکانیزم های تأیید اعتبار خاص خود است و ما از هویت مبتنی بر پرونده موجود در OpenLiteSpeed استفاده نخواهیم کرد. برای به حداقل رساندن بخش های پیکربندی انحرافی فعال در نصب وردپرس ما باید از این موارد خلاص شویم. ابتدا بر روی زبانه Security کلیک کرده و سپس بر روی دکمه Delete کنار SampleProtectedArea در جدول Realms List کلیک کنید: از شما خواسته می شود حذف را تأیید کنید. برای ادامه بر روی delete کلیک کنید در مرحله بعد ، روی سربرگ Context کلیک کنید. در Context List ، محتوای /protected/ را که با قلمرو امنیتی که اخیراً حذف کردید مرتبط بود را حذف کنید: مجدداً باید با کلیک کردن روی delete ، حذف را تأیید کنید. شما می توانید با اطمینان با استفاده از همان تکنیک ، همه متن های دیگر را پاک کنید ، زیرا ما به آنها احتیاج نخواهیم داشت. ما به طور خاص محتوای /protected/ متن را حذف کردیم زیرا در غیر این صورت خطایی به دلیل حذف قلمرو امنیت مرتبط با آن ایجاد می شود (که ما فقط در تب Security حذف کرده ایم.) پس از آن ، در گوشه سمت راست بالای کنسول OpenLiteSpeed ، آی Graceful Restart را فشار دهید. با این کار سرور OpenLiteSpeed دوباره راه اندازی می شود و باعث می شود تغییراتی که ایجاد کرده اید به مرحله اجرا برسد: با این کار ، سرور OpenLiteSpe شما کاملاً پیکربندی شده است. اکنون آماده تنظیم وردپرس در مرورگر خود هستید. مرحله 7 - تکمیل نصب از طریق واسط وردپرس اکنون که پیکربندی سرور کامل شد ، می توانیم نصب را از طریق رابط وب انجام دهیم. در مرورگر وب خود ، به نام دامنه سرور یا آدرس IP عمومی خود بروید: http: // server_domain_or_IP زبانی را که می خواهید استفاده کنید انتخاب کنید: در مرحله بعد به صفحه اصلی تنظیمات خواهید رسید. یک نام برای سایت وردپرس خود انتخاب کنید و یک نام کاربری را انتخاب کنید (توصیه می شود برای اهداف امنیتی چیزی مانند "ادمین" انتخاب نکنید). رمزعبور قوی به صورت خودکار ایجاد می شود. این رمز عبور را ذخیره کنید یا یک رمزعبور قوی دیگر را انتخاب کنید. آدرس ایمیل خود را وارد کنید و انتخاب کنید آیا می خواهید موتورهای جستجو را از ایند سایت خود منع کنید: پس از آماده شدن ، روی دکمه Install WordPress کلیک کنید. شما به صفحه ای منتهی می شوید که وارد سیستم شوید: پس از ورود به سیستم ، شما به داشبورد مدیریت وردپرس منتقل می شوید: از داشبورد ، می توانید تغییراتی در تم سایت خود و انتشار محتوای آن ایجاد کنید. نتیجه با تکمیل این راهنما ، یک نمونه وردپرس را روی سرور اوبونتو .04 که OpenLiteSpeed را اجرا می کند ، نصب و پیکربندی کردید. برخی مراحل متداول بعدی باید برای تنظیمات پیوند مجدد پست های شما انتخاب شوند (که می توانید در Settings > Permalinksپیدا کنید) یا انتخاب یک تم جدید (در Appearance > Themes). اگر این اولین باری است که از WordPress استفاده می کنید ، کمی رابط را جستجو کنید تا با CMS جدید خود آشنا شوید. برای افزایش امنیت سایت جدید وردپرس خود ، توصیه می کنیم آن را پیکربندی کنید تا با SSL کار کند تا بتواند از طریق HTTPS محتوا را ارائه دهد. برای نصب LetsEncrypt و تنظیم این آموزش ، از اسناد OpenLiteSpeed بازدید کنید.


نحوه نصب Apache Kafka در Debian 10 Apache Kafka یک کارگزار پیام توزیع شده محبوب است که برای مدیریت حجم زیادی از داده های زمان-واقعی طراحی شده است. خوشه کافکا بسیار مقیاس پذیر و دارای تحمل خطا است و همچنین نسبت به سایر واسطه های پیام مانند ActiveMQ و RabbitMQ از توان بسیار بالاتری برخوردار است. اگرچه معمولاً از آن به عنوان یک سیستم پیام رسان انتشار / اشتراک استفاده می شود ، بسیاری از سازمان ها نیز از آن برای جمع آوری ورود به سیستم استفاده می کنند زیرا فضای ذخیره سازی مداوم را برای پیام های منتشر شده ارائه می دهد. یک سیستم پیام رسانی انتشار / اشتراک به یک یا چند تولید کننده اجازه می دهد پیام ها را بدون در نظر گرفتن تعداد مصرف کنندگان یا نحوه پردازش پیام ها منتشر کنند. متقاضیان دارای اشتراک در مورد به روزرسانی ها و ایجاد پیام های جدید بطور خودکار مطلع می شوند. این سیستم نسبت به سیستم هایی که مشتری ها بطور دوره ای در مورد آن نظرسنجی می شوند تا مشخص شود که آیا پیام های جدید در دسترس است یا خیر، بسیار کارآمدتر و مقیاس پذیر است. در این آموزش ، Apache Kafka 2.1.1 را به صورت ایمن روی سرور Debian 10 نصب و پیکربندی می کنید ، سپس با تولید و استفاده از یک پیام Hello World راه اندازی خود را تست می کنید. سپس می توانید KafkaT را به صورت اختیاری برای نظارت بر کافکا نصب کنید و یک خوشه چند گره کافکا را تنظیم کنید. پیش نیازها برای دنبال کردن ، به موارد زیر نیاز خواهید داشت: یک سرور Debian 10 با حداقل 4 گیگابایت رم و یک کاربر غیر ریشه با امتیازات سودو. در صورتی که کاربر غیر ریشه تنظیم نکرده اید، مراحل ذکر شده در راهنمای راه اندازی سرور اولیه برای Debian 10 را دنبال کنید. OpenJDK 11 روی سرور شما نصب شده است. برای نصب این نسخه ، دستورالعمل های نصب Java را با Apt در Debian 10 در مورد نصب نسخه های خاص OpenJDK دنبال کنید. کافکا در جاوا نوشته شده است ، بنابراین به JVM نیاز دارد. توجه: نصب های بدون رم 4 گیگابایتی ممکن است باعث شود سرویس کافکا از کار بیفتد، در حالی که دستگاه مجازی جاوا (JVM) در هنگام راه اندازی یک استثناء Out Of Memory را به همراه داشته باشد. مرحله 1 - ایجاد کاربر برای کافکا از آنجا که کافکا می تواند درخواست ها را از طریق شبکه انجام دهد ، بهترین کار برای ایجاد یک کاربر اختصاصی برای آن است. در صورت به خطر افتادن سرور کافکا ، این کار آسیب به دستگاه Debian شما را به حداقل می رساند. در این مرحله شما کاربر اختصاصی کافکا را ایجاد خواهید کرد. به عنوان کاربر sudo غیر ریشه خود وارد شوید ، با دستور useradd کاربری بنام kafka بسازید: sudo useradd kafka -m فلگ -m تضمین می کند که یک هوم دیرکتوری برای کاربر ایجاد می شود. این هوم دیرکتوری، / home / kafka ، بعداً به عنوان دیرکتوری فضای کاری شما برای اجرای دستورات عمل خواهد کرد. رمز عبور را با استفاده از passwd تنظیم کنید: sudo passwd kafka رمز عبوری را که می خواهید برای این کاربر استفاده کنید وارد کنید. در مرحله بعدی ، کاربر کافکا را با دستور adduser به گروه سودو اضافه کنید ، تا امتیازات لازم برای نصب وابستگی کافکا را داشته باشد: sudo adduser kafka sudo کاربر kafka شما اکنون آماده است. با استفاده از su وارد این حساب شوید: su -l kafka اکنون که کاربر اختصاصی کافکا را ایجاد کرده اید ، می توانید به دانلود و استخراج باینری های کافکا بروید. مرحله 2 - دانلود و استخراج باینری های کافکا در این مرحله، باینری های کافکا را در پوشه های اختصاصی در دیرکتوری هوم کاربر kafka خود دانلود و اکسترکت می کنید. برای شروع ، دایرکتوری را در / home / kafka با نام Downloads برای ذخیره دانلودهای خود ایجاد کنید: mkdir ~/Downloads در مرحله بعدی، حلقه را با استفاده از apt-get نصب کنید تا بتوانید فایلهای از راه دور را دانلود کنید: sudo apt-get update && sudo apt-get install curl در صورت درخواست، Y را تایپ کنید تا دانلود curl را تأیید کنید. پس از نصب Curl ، از آن برای دانلود باینری های کافکا استفاده کنید: curl "https://archive.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz" -o ~/Downloads/kafka.tgz دایرکتوری به نام kafka ایجاد کنید و به این فهرست تغییر دهید. این دایرکتوری پایه نصب کافکا خواهد بود: mkdir ~/kafka && cd ~/kafka با استفاده از دستور tar ، آرشیوی را که دانلود کرده اید استخراج کنید: tar -xvzf ~/Downloads/kafka.tgz --strip 1 شما فلگ --strip 1 را برای اطمینان از استخراج محتوای بایگانی در ~ / kafka / و نه در دیرکتوری دیگری در داخل آن ، مانند ~ / kafka / kafka_2.12-2.1.1 / مشخص کرده اید. اکنون که باینری ها را با موفقیت دانلود و استخراج کرده اید ، می توانید پیکربندی کافکا را انجام دهید تا امکان حذف موضوع فراهم شود. مرحله 3 - پیکربندی سرور کافکا رفتار پیش فرض کافکا به ما اجازه نمی دهد تا عنوان، دسته بندی، گروه یا نام فید را برای انتشار پیام ها حذف کنیم. برای تغییر این، پرونده پیکربندی را ویرایش می کنید. گزینه های پیکربندی کافکا در server.properties مشخص شده است. این پرونده را با nano یا ویرایشگر مورد علاقه خود باز کنید: nano ~/kafka/config/server.properties بیایید تنظیماتی را اضافه کنیم که به ما امکان حذف عناوین کافکا را می دهد. خط هایلایت شده زیر را در زیر فایل اضافه کنید: ~/kafka/config/server.properties . group.initial.rebalance.delay.ms delete.topic.enable = true فایل را ذخیره کنید و از nano خارج شوید. اکنون که Kafka را پیکربندی کرده اید، می توانید برای راه اندازی و فعال کردن کافکا در هنگام راه اندازی فایل های واحد systemed ایجاد کنید. مرحله 4 - ایجاد فایلهای واحد سیستمی و راه اندازی سرور کافکا در این بخش فایلهای واحد سیستمی برای سرویس کافکا ایجاد می کنید. این به شما کمک می کند تا خدمات متداول مانند شروع، متوقف کردن و راه اندازی مجدد کافکا را به روشی سازگار با سایر سرویس های لینوکس انجام دهید. ZooKeeper سرویسی است که کافکا برای مدیریت وضعیت و تنظیمات خوشه ای از آن استفاده می کند. معمولاً در سیستم های توزیع شده به عنوان یک جزء اساسی مورد استفاده قرار می گیرد. در این آموزش از Zookeeper برای مدیریت این جنبه های کافکا استفاده خواهید کرد. اگر تمایل دارید اطلاعات بیشتری در مورد آن بدانید ، به مطالب ZooKeeper رسمی ما مراجعه کنید. ابتدا فایل واحد را برای zookeeper ایجاد کنید: sudo nano /etc/systemd/system/zookeeper.service تعریف واحد زیر را در پرونده وارد کنید: /etc/systemd/system/zookeeper.service [Unit] Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple User=kafka ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target بخش [Unit] مشخص می کند که ZooKeeper به شبکه نیاز دارد و سیستم فایل قبل از شروع آن آماده است. در بخش [Service] مشخص شده است که systemd برای شروع و متوقف کردن سرویس باید از پرونده های zookeeper-server-start.sh و zookeeper-server-stop.sh استفاده کند. همچنین مشخص می کند در صورت خارج شدن غیرطبیعی ، ZooKeeper باید به طور خودکار مجدداً راه اندازی شود. در مرحله بعد، فایل سرویس systemd را برای kafka ایجاد کنید: sudo nano /etc/systemd/system/kafka.service تعریف واحد زیر را در پرونده وارد کنید: /etc/systemd/system/kafka.service [Unit] Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1' ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target بخش [Unit] مشخص می کند که این فایل واحد به zookeeper.service بستگی دارد. این امر اطمینان می دهد که با شروع سرویس کافکا ، zookeeper به طور خودکار شروع می شود. در بخش [Service] مشخص شده است که systemd باید برای شروع و توقف سرویس از فایلهای پوسته kafka-server-start.sh و kafka-server-stop.sh استفاده کند. همچنین مشخص می کند در صورت خارج شدن غیر عادی ، کافکا باید به طور خودکار مجدداً راه اندازی شود. اکنون که واحدها تعریف شده اند ، کافکا را با دستور زیر شروع کنید: sudo systemctl start kafka برای اطمینان از شروع موفقیت آمیز سرور ، گزارش های ژورنال را برای واحد kafka بررسی کنید: sudo journalctl -u kafka خروجی مشابه موارد زیر را مشاهده خواهید کرد: Mar 23 13:31:48 kafka systemd[1]: Started kafka.service. اکنون یک سرور کافکا روی درگاه 9092 دارید که درگاه پیش فرض برای کافکا است. شما سرویس kafka را شروع کرده اید ، اما اگر می خواهید سرور خود را دوباره راه اندازی کنید ، هنوز به طور خودکار شروع نمی شود. برای فعال کردن kafka در بوت سرور ، این سرور را اجرا کنید: sudo systemctl enable kafka اکنون که سرویس ها را شروع و فعال کرده اید ، زمان آن رسیده است که نصب را بررسی کنید. مرحله 5 - تست نصب بیایید پیام Hello World را منتشر و استفاده کنیم تا مطمئن شویم که سرور کافکا به درستی رفتار می کند. انتشار پیام در کافکا به موارد زیر بستگی دارد: تهیه کننده، که امکان انتشار سوابق و داده ها به عناوین را فراهم می کند. مصرف کننده، که پیام ها و داده ها را از عناوین می خواند. ابتدا با تایپ کردن دستور زیر عنوانی به نام TutorialTopic ایجاد کنید: ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:21 --replication-factor 1 --partitions 1 --topic TutorialTopic می توانید با استفاده از اسکریپت kafka-console-producer.sh یک تهیه کننده از خط فرمان ایجاد کنید. این تهیه کننده نام میزبان ، پورت و نام عنوان سرور کافکا را به عنوان آرگومان میشناسد. رشته Hello, World را با تایپ کردن دستور زیر برای عنوان TutorialTopic منتشر کنید: echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null فلگ - broker-list لیست کارگزاران پیام برای ارسال پیام به آن ها که در این مورد localhost: 9092 است را تعیین می کند. –topic موضوع را به عنوان TutorialTopic تعیین می کند. در مرحله بعد ، می توانید با استفاده از اسکریپت kafka-console-consumer.sh یک مصرف کننده کافکا ایجاد کنید. انتظار می رود نام میزبان و پورت سرور ZooKeeper و نام تاپیک به عنوان آرگومان باشد. دستور زیر از پیام های TutorialTopic استفاده می کند. توجه داشته باشید که از فلگ --from-beginning استفاده کنید که امکان استفاده از پیام هایی را که قبل از شروع مصرف کننده منتشر شده است ، فراهم کند: ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server `localhost:9092` --topic TutorialTopic --from-beginning --bootstrap-server لیستی از ورودی ها به خوشه کافکا را ارائه می دهد. در این حالت ، از localhost استفاده می کنید: 9092. Hello, World را در ترمینال خود مشاهده خواهید کرد: خروجی Hello, World این اسکریپت همچنان اجرا می شود و منتظر انتشار پیام های بیشتری برای موضوع خواهد بود. با خیال راحت یک ترمینال جدید باز کنید و یک تهیه کننده راه اندازی کنید تا چند پیام دیگر انتشار دهد. شما باید همه آنها را در خروجی مصرف کننده ببینید. اگر می خواهید در مورد نحوه استفاده از کافکا اطلاعات بیشتری کسب کنید ، به اطلاعات موجود در لینک کافکا رسمی مراجعه کنید. وقتی آزمایش انجام شد ، CTRL + C را فشار دهید تا اسکریپت مصرف کننده متوقف شود. اکنون که نصب را آزمایش کرده اید ، می توانید برای اجرای بهتر خوشه کافکا ، به نصب KafkaT بروید. مرحله 6 - نصب KafkaT (اختیاری) KafkaT ابزاری از Airbnb است که مشاهده جزئیات مربوط به خوشه کافکا و انجام برخی کارهای اجرایی از خط فرمان را برای شما آسانتر می کند. از آنجا که این یک Ruby gem است ، برای استفاده از آن به Ruby نیاز خواهید داشت. برای ساختن سایر gemها که به آن بستگی دارد ، به بسته build-essential نیز احتیاج خواهید داشت. آنها را با استفاده از apt نصب کنید: sudo apt install ruby ruby-dev build-essential اکنون می توانید KafkaT را با استفاده از دستور gem نصب کنید: sudo CFLAGS=-Wno-error=format-overflow gem install kafkat گزینه CFLAGS = -Wno-error = format-overflow هشدارهای فرمت بیش از حد را غیرفعال می کند و برای gem ZooKeeper ، که وابسته به KafkaT است ، لازم میباشد. KafkaT از .kafkatcfg به عنوان فایل پیکربندی برای تعیین نصب و ورود به فهرست سرورهای کافکا استفاده می کند. همچنین باید دارای ورودی باشد که KafkaT را به عنوان مثال ZooKeeper به شما نشان دهد. یک فایل جدید با نام .kafkatcfg ایجاد کنید: nano ~/.kafkatcfg خطوط زیر را اضافه کنید تا اطلاعات لازم در مورد سرور کافکا و مثال Zookeeper خود را مشخص کنید: ~/.kafkatcfg { "kafka_path": "~/kafka", "log_path": "/tmp/kafka-logs", "zk_path": "localhost:21" } اکنون آماده استفاده از کافکا هستید. برای شروع ، در اینجا نحوه استفاده از آن برای مشاهده جزئیات مربوط به همه پارتیشن های کافکا آورده شده است: kafkat partitions خروجی زیر را مشاهده خواهید کرد: Output Topic Partition Leader Replicas ISRs TutorialTopic 0 0 [0] [0] __consumer_offsets 0 0 [0] [0] . این خروجی TutorialTopic و همچنین __consumer_offsets یک عنوان داخلی که توسط کافکا برای ذخیره اطلاعات مربوط به مشتری استفاده می شود ، نشان می دهد. با خیال راحت می توانید خطوط شروع شده با __consumer_offsets را نادیده بگیرید. برای کسب اطلاعات بیشتر در مورد KafkaT ، به منبع GitHub آن مراجعه کنید. اکنون که KafkaT را نصب کردید ، می توانید Kafka را به صورت اختیاری بر روی خوشه ای از سرورهای Debian 10 تنظیم کنید تا یک خوشه چند گره ایجاد شود. مرحله 7 - تنظیم یک خوشه چند گره (اختیاری) اگر می خواهید با استفاده از سرورهای Debian 10 بیشتر ، یک خوشه چند کاره ایجاد کنید، مرحله 1 ، مرحله 4 و مرحله 5 را روی هر یک از ماشین های جدید تکرار کنید. علاوه بر این، برای پرونده های ~ / kafka / config / server.properties تغییرات زیر را انجام دهید: مقدار ویژگی broker.id را طوری تغییر دهید که در کل خوشه بی نظیر باشد. این ویژگی به طور منحصر به فرد هر سرور موجود در خوشه را مشخص می کند و می تواند هر رشته ای را به عنوان مقدار آن داشته باشد. به عنوان مثال ، "server1" ، "server2" و غیره ، به عنوان شناساگر مفید خواهند بود. مقدار ویژگی zookeeper.connect را به گونه ای تغییر دهید که همه گره ها به همان مثال ZooKeeper اشاره کنند. این ویژگی آدرس نمونه ZooKeeper را مشخص می کند و از قالب <HOSTNAME/IP_ADDRESS>:<PORT> پیروی می کند. برای این آموزش ، شما از your_first_server_IP: 21 استفاده خواهید کرد و your_first_server_IP را با آدرس IP سرور Debian 10 که قبلاً تنظیم کرده اید جایگزین کنید. اگر می خواهید چندین نمونه ZooKeeper برای خوشه خود داشته باشید ، مقدار ویژگی zookeeper.connect در هر گره باید یک رشته یکسان با کاما باشد که در آن آدرس های IP و شماره پورت همه موارد ZooKeeper را نشان می دهد. توجه: اگر یک فایروال دارید که روی سرور Debian 10 با نصب Zookeeper فعال شده است ، حتما پورت 21 را باز کنید تا اجازه ورود از سایر گره های خوشه را دریافت کنید. مرحله 8 - محدود کردن کاربر کافکا اکنون که تمام مراحل نصب انجام شده است ، می توانید امتیازات ادمین کاربر kafka را حذف کنید. قبل از انجام این کار ، مانند هر کاربر سودو غیر ریشه خارج شوید و دوباره وارد سیستم شوید. اگر هنوز همان بخش شل را اجرا می کنید که این آموزش را با آن شروع کرده اید ، فقط exit تایپ کنید. کاربر کافکا را از گروه سودو حذف کنید: sudo deluser kafka sudo برای بهبود بیشتر امنیت سرور کافکا ، رمزعبور کاربر kafka را با استفاده از دستور passwd قفل کنید. این اطمینان می دهد که هیچ کس نمی تواند با استفاده از این حساب به طور مستقیم وارد سرور شود: sudo passwd kafka -l در این مرحله فقط کاربر root یا یک کاربر sudo می توانند با وارد کردن دستور زیر به عنوان kafka وارد شوند: sudo su - kafka در آینده اگر می خواهید قفل آن را باز کنید ، از passwd با گزینه -u استفاده کنید: sudo passwd kafka -u شما اکنون با موفقیت امتیازات ادمین کاربری kafka را محدود کرده اید. نتیجه اکنون Apache Kafka به طور ایمن روی سرور Debian شما اجرا شده است. شما می توانید با ایجاد تهیه کنندگان و مصرف کنندگان از بین مشتری های کافکا ، که برای اکثر زبان های برنامه نویسی در دسترس است، از آن در پروژه های خود استفاده کنید. برای کسب اطلاعات بیشتر در مورد کافکا، همچنین می توانید با آپاچی کافکا م کنید.


چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7 تنظیم کرد مقدمه با حرکت ابزارهای توسعه دهنده به سمت cloud ، ساخت و تطبیق پلتفرم های cloud IDE (محیط پیشرفت ادغام شده) در حال رشد است. Cloud IDE ها امکان همکاری در زمان واقعی بین تیم های توسعه دهنده را فراهم می کنند تا در یک محیط توسعه یکپارچه کار کنند که ناسازگاری ها را به حداقل می رساند و بهره وری را افزایش می دهد. IDE cloudها که از طریق مرورگرهای وب قابل دسترسی هستند ، از هر نوع دستگاه مدرن قابل استفاده اند. code-server یک کدMicrosoft Visual Studio است که روی یک سرور از راه دور اجرا می شود و مستقیماً از طریق مرورگر شما قابل دسترسی است. کد ویژوال استودیو یک ویرایشگر کد مدرن دارای پشتیبانی یکپارچه از Git ، اشکال زدایی کد ، تکمیل خودکار هوشمند و ویژگی های قابل تنظیم و قابل توسعه است. این بدان معنی است که می توانید از دستگاه های مختلفی که سیستم عامل های متفاوت را اجرا می کنند استفاده کنید و همیشه یک محیط توسعه مداوم داشته باشید. در این آموزش ، پلت فرم code-server cloud IDE را بر روی دستگاه CentOS 7 خود تنظیم کرده و آن را در دامنه خود قرار می دهید ، که با استفاده از گواهینامه های TLS Let’s Encrypt رایگان ایمن شده اند. در پایان ، کد مایکروسافت ویژوال استودیو را روی سرور CentOS 7 خود ، در دامنه خود در دسترس خواهید داشت که با یک رمز عبور محافظت می شود. پیش نیازها سروری که CentOS 7 را با حداقل 2 گیگابایت رم ، دسترسی به روت و یک حساب سودو و غیر روت اجرا می کند. با دنبال کردن این راهنمای اولیه تنظیم سرور می توانید این تنظیمات را انجام دهید. Nginx روی سرور شما نصب شده است. برای راهنمایی در مورد نحوه انجام این کار ، به نحوه نصب Nginx در CentOS 7 مراجعه کنید. هر دو پرونده DNS زیر برای سرور شما تنظیم شده اند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این مقدمه را در vpsgol DNS دنبال کنید. یک رکورد A با your-domain که به آدرس IP عمومی سرور شما اشاره میکند. یک رکورد A با www.your-domain که به آدرس IP عمومی سرور شما اشاره میکند. یک نام دامنه کاملاً ثبت شده برای کد سرور هاست، که به سرور شما اشاره میکند. در این آموزش از code-server.your-domain استفاده می شود. می توانید یک نام دامنه به اسم Namecheap خریداری کنید ، یکی از آنها را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. مرحله 1 - نصب کد سرور در این بخش کد سرور را روی سرور خود تنظیم می کنید. این کار مستم دانلود آخرین نسخه و ایجاد سرویس systemd است که کد سرور را همیشه در پس زمینه اجرا می کند. همچنین رویکرد مجدد را برای سرویس تعیین خواهید کرد ، به این ترتیب که کد سرور پس از خرابی یا راه اندازی مجدد احتمالی در دسترس باشد. همه داده های مربوط به کد سرور را در پوشه ای به نام ~ / code-server ذخیره می کنید. با اجرای دستور زیر آن را ایجاد کنید: mkdir ~/code-server حرکت به سمت آن: cd ~/code-server شما باید به صفحه انتشار نسخه های Github از کد سرور بروید و آخرین ساخت لینوکس را انتخاب کنید (نام فایل شامل "linux" است). در زمان نوشتن ، آخرین نسخه 2.1692 بود. با اجرای دستور زیر آن را با استفاده از curl دانلود کنید: curl -LO https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz سپس با اجرای این دستور آرشیو را باز کنید: tar -xzvf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz پوشه ای دقیقاً به عنوان فایل اصلی که دانلود کرده اید ، تهیه می شود که شامل کد سرور قابل اجرا است. به آن فایل بروید: cd code-server2.1692-vsc1.39.2-linux-x86_64 سرور کد قابل اجرا را در / usr / local / bin کپی کنید تا با اجرای دستور زیر بتوانید به سیستم گسترده ای از آن دسترسی داشته باشید: sudo cp code-server /usr/local/bin سپس، یک پوشه برای سرور کد ایجاد کنید ، که در آن داده های کاربر را ذخیره می کند: sudo mkdir /var/lib/code-server اکنون که کد سرور را دانلود کرده اید و آن را به صورت گسترده در دسترس سیستم قرار داده اید، یک سرویس سیستمی ایجاد خواهید کرد تا کد سرور را همیشه در پس زمینه اجرا کند. پیکربندی سرویس را در فایلی به نام code-server.service ، در دیرکتوری / usr / lib / systemd / system ذخیره خواهید کرد، جایی که systemd خدمات خود را ذخیره می کند. با استفاده از ویرایشگر vi آن را ایجاد کنید: sudo vi /usr/lib/systemd/system/code-server.service خطوط زیر را اضافه کنید: /usr/lib/systemd/system/code-server.service [Unit] Description=code-server After=nginx.service [Service] Type=simple Environment=PASSWORD=your_password ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password Restart=always [Install] WantedBy=multi-user.target در اینجا ابتدا شرح خدمات را مشخص می کنید. سپس ، اعلام می کنید که سرویس nginx باید قبل از این شروع شود. بعد از بخش [Unit] نوع سرویس را تعریف می کنید (simple بدان معنی است که فرایند باید به سادگی اجرا شود) و فرمانی را که اجرا می شود ارائه می دهید. شما همچنین مشخص می کنید که کد سرور جهانی قابل اجرا باید با چند آرگومان خاص برای کد سرور آغاز شود. --host 127.0.0.1 آن را به localhost متصل می کند ، بنابراین فقط از داخل سرور شما قابل دسترسی است. --user-data-dir / var / lib / code-server دایرکتوری داده های کاربر خود را تنظیم می کند ، و --auth password مشخص می کند که باید بازدید کنندگان را با یک رمزعبور، مشخص شده در متغیر محیط PASSWORD اعلام شده در خط بالای آن ، تأیید کند. به یاد داشته باشید که your_password را با رمز عبور دلخواه خود جایگزین کنید. برای ذخیره و بستن فایل تایپ کنید: wq و سپس ENTER را بزنید. خط بعدی به systemd می گوید تا کد سرور را در تمام رویدادهای ناقص (برای مثال وقتی که دچار crash میشود یا فرآیند نابود میشود) مجددا راه اندازی کند. بخش [Install] به systemd سفارش می دهد تا در صورت امکان ورود به سرور خود ، این سرویس را شروع کند. با اجرای دستور زیر سرویس کد سرور را شروع کنید: sudo systemctl start code-server با مشاهده وضعیت آن بررسی کنید که درست شروع شده است: sudo systemctl status code-server خروجی شبیه به زیر را خواهید دید: Output code-server.service - code-server Loaded: loaded (/usr/lib/systemd/system/code-server.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-12-19 19:24:42 UTC; 5s ago Main PID: 1668 (code-server) CGroup: /system.slice/code-server.service ├─1668 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password └─1679 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password Dec 19 19:24:42 code-server-centos systemd[1]: Started code-server. Dec 19 19:24:44 code-server-centos code-server[1668]: info Server listening on http://127.0.0.1:8080 Dec 19 19:24:44 code-server-centos code-server[1668]: info - Using custom password for authentication Dec 19 19:24:44 code-server-centos code-server[1668]: info - Not serving HTTPS برای شروع خودکار کد سرور پس از راه اندازی مجدد سرور ، سرویس آن را با اجرای دستور زیر فعال کنید: sudo systemctl enable code-server در این مرحله ، شما کد سرور را دانلود کرده و آن را در سطح جهانی در دسترس قرار داده اید. سپس ، شما یک سرویس systemd برای آن ایجاد و آن را فعال کرده اید ، بنابراین کد سرور از هر بوت سرور شروع می شود. در مرحله بعد ، با پیکربندی Nginx ، آن را در دامنه خود قرار می دهید تا به عنوان یک پروکسی مع بین بازدید کننده و کد سرور خدمت کند. مرحله 2 - قرار گرفتن کد سرور در معرض دامنه شما در این بخش، Nginx را به عنوان یک پروکسی مع برای سرور کد پیکربندی می کنید. همانطور که در مرحله پیش نیاز Nginx آموخته اید، فایل های پیکربندی سایت آن در زیر /etc/nginx/conf.d ذخیره می شوند و با شروع Nginx بطور خودکار دانلود می شوند. شما پیکربندی را برای در معرض قرار گرفتن کد سرور در دامنه خود در فایلی به نامcode-server.conf ، تحت عنوان /etc/nginx/conf.d ذخیره می کنید. با استفاده از ویرایشگر خود شروع به کار کنید: sudo vi /etc/nginx/conf.d/code-server.conf خطوط زیر را اضافه کنید: /etc/nginx/conf.d/code-server.conf server { listen 80; listen [::]:80; server_name code-server.your-domain; location / { proxy_pass http://localhost:8080/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Accept-Encoding gzip; } } code-server.your-domain خود را با دامنه مورد نظر خود جایگزین کنید، سپس فایل را ذخیره کنید و ببندید. در این فایل ، شما تعریف می کنید که Nginx باید به پورت HTTP 80 گوش دهد. سپس ، یک server_nameرا تعیین می کنید که به Nginx می گوید که کدام دامنه درخواست ها را بپذیرد و از این تنظیمات خاص استفاده کند. در بلوک بعدی ، برای مکان ریشه (/) ، شما تعیین می کنید که درخواست ها باید به کد سروری که در localhost:8080 در حال اجرا است ، در رفت و برگشت باشد: سه خط بعدی (که با proxy_set_header شروع میشوند) به Nginx دستور می دهند برخی از سرصفحات HTTP را که برای عملکرد صحیح WebSockets مورد نیاز هستند، که از سرورهای کد استفاده گسترده ای دارند، حمل کند. برای آزمایش اعتبار پیکربندی ، دستور زیر را اجرا کنید: sudo nginx -t خروجی زیر را مشاهده خواهید کرد: utput nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful برای اینکه پیکربندی عملی شود ، باید Nginx را مجدداً راه اندازی کنید: sudo systemctl restart nginx CentOS 7 مجهز به SELinux است ، با یک آیین نامه سختگیرانه ، که به طور پیش فرض اجازه اتصال Nginx به سوکت های محلی TCP را نمی دهد. Nginx برای خدمت به عنوان یک پروکسی مع برای کد سرور ، باید در حال اجرا باشد. دستور زیر را اجرا کنید تا قاعده را به صورت دائمی آرام کنید: sudo setsebool httpd_can_network_connect 1 -P سپس در مرورگر خود به سمت دامنه مورد استفاده برای کد سرور مجازی بروید. اعلان ورود به سیستم کد را مشاهده خواهید کرد. کد سرور از شما رمز عبور می خواهد. چیزی که در مرحله قبل تنظیم کردید را وارد کنید و Enter IDE را بزنید. اکنون کد سرور را وارد کرده و فوراً GUI ویرایشگر آن را مشاهده می کنید. اکنون نصب کد سرور مجازی شما در دامنه شما قابل دسترسی است. در مرحله بعدی ، با استفاده از یک گواهی نامه Let’s Encrypt TLS رایگان ، آن را ایمن خواهید کرد. مرحله 3 - دامنه خود را ایمن کنید در این بخش دامنه خود را با استفاده از گواهی Let’s Encrypt TLS ، که با استفاده از Certbot ارائه می دهید ، تضمین می کنید. برای نصب آخرین نسخه Certbot و افزونه Nginx آن، دستور زیر را اجرا کنید: sudo yum install certbot python2-certbot-nginx برای درخواست گواهی نامه برای دامنه خود ، دستور زیر را اجرا کنید: sudo certbot --nginx -d code-server.your-domain در این دستور ، شما certbot را برای درخواست گواهینامه برای دامنه خود اجرا می کنید - نام دامنه را با پارامتر -d می گذرانید. فلگ --nginx به آن می گوید برای پشتیبانی از HTTPS ، پیکربندی سایت Nginx را به طور خودکار تغییر دهد. به یاد داشته باشید که دامنه code-server.your خود را با نام دامنه خود جایگزین کنید. اگر اولین بار است که Certbot را اجرا می کنید ، از شما خواسته می شود که یک آدرس ایمیل را برای اخطارهای فوری و قبول شرایط خدمات EFF وارد کنید. سپس Certbot از Let’s Encrypt برای گواهی دامنه شما درخواست می کند. سپس از شما سؤال می کند که آیا مایلید همه ترافیک HTTP را به HTTPS هدایت کنید: Output Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): توصیه می شود برای به حداکثر رساندن امنیت، گزینه دوم را انتخاب کنید. پس از وارد کردن انتخاب خود ، ENTER را فشار دهید. خروجی مشابه این خواهد بود: Output IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/code-server.your-domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/code-server.your-domain/privkey.pem Your cert will expire on . To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le این بدان معنی است که Certbot با موفقیت تولید گواهینامه TLS را انجام داده و آنها را در پیکربندی Nginx برای دامنه شما اعمال کرده است. اکنون می توانید دامنه کد سرور مجازی خود را در مرورگر خود مجدد لود کنید و یک padlock در سمت چپ آدرس سایت مشاهده کنید، به این معنی که اتصال شما به درستی ایمن شده است. اکنون کاری کردید که Certbot به طور خودکار گواهینامه ها را قبل از این که منقضی شوند تمدید کند. برای اجرای بررسی روزانه، از cron ، یک سرویس سیستم استاندارد برای انجام کارهای دوره ای استفاده خواهید کرد. شما با باز کردن و ویرایش فایلی به نام crontab ، corn را هدایت می کنید: sudo crontab -e این دستور crontab پیش فرض را که در حال حاضر یک فایل متنی خالی است ، باز می کند. خط زیر را اضافه کنید ، سپس آن را ذخیره کرده و ببندید: crontab . . . 15 3 * * * /usr/bin/certbot renew --quiet دستور renew برای Certbot تمام گواهینامه های نصب شده روی سیستم را بررسی میکند و مواردی را که در کمتر از سی روز به پایان می رسند به روز می کند. --quiet به Certbot می گوید که اطلاعات را بیرون نکشید یا منتظر ورود کاربر نباشید. cron اکنون این دستور را روزانه اجرا می کند. تمام گواهینامه های نصب شده هنگامی که سی روز یا کمتر از این که منقضی شود به طور خودکار تجدید و لود می شوند. اکنون که کد سرور مجازی را از طریق یک پروکسی مع Nginx در دامنه خود دارید ، آماده بررسی واسط کاربری سرور کد هستید. مرحله 4 - استفاده از رابط کد-سرور مجازی در این بخش از برخی از ویژگی های رابط کد-سرور مجازی استفاده خواهید کرد. از آنجا که کد-سرور مجازی کد ویژوال استودیو در حال اجرا در cloud است ، همان رابط مشابه نسخه دسکتاپ مستقل دارد. در سمت چپ IDE ، یک ردیف عمودی از شش دکمه وجود دارد که بیشترین ویژگی های مورد استفاده را در یک صفحه جانبی که با عنوان Activity Bar شناخته می شود باز می کند. این نوار قابل تنظیم است بنابراین می توانید این نماها را به ترتیب دیگری جابجا کنید یا آنها را از نوار حذف کنید. به طور پیش فرض ، اولین دکمه منوی کلی را به صورت کشویی باز می کند ، در حالی که نمای دوم پنل اکسپلورر را باز می کند که پیمایش درخت مانند از ساختار پروژه را فراهم می کند. می توانید پوشه ها و فایل های خود را در اینجا مدیریت کنید - ایجاد ، حذف ، جابجایی و تغییر نام را در صورت وم انجام دهید. نمای بعدی امکان دسترسی به جستجو و جایگزینی عملکرد را فراهم می کند. بعد از این ، به ترتیب پیش فرض ، نمای شما از سیستم های کنترل منبع مانند Git است. کد ویژوال استودیو همچنین از ارائه دهندگان دیگر کنترل منبع پشتیبانی می کند و می توانید در این مطالب دستورالعمل های بیشتری را برای جریان کار کنترل منبع با ویرایشگر پیدا کنید. گزینه اشکال زدایی در نوار فعالیت ، کلیه اقدامات متداول را برای اشکال زدایی در پنل ارائه می دهد. کد ویژوال استودیو با پشتیبانی داخلی برای اشکال زدایی زمان اجرا Node.js و هر زبانی که به Javascript تبدیل شود همراه است. برای سایر زبانها می توانید پسوندهایی را برای اشکادگی مورد نیاز نصب کنید. می توانید پیکربندی های اشکال زدایی را در پرونده start.json ذخیره کنید. نمای نهایی در نوار فعالیت، منویی را برای دسترسی به افزونه های موجود در Marketplace فراهم می کند. قسمت اصلی GUI ویرایشگر شماست که می توانید با استفاده از زبانه ها برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه یا به فایل های جانبی تغییر دهید. پس از ایجاد فایل جدید از طریق منوی File ، یک فایل خالی در یک سربرگ جدید باز می شود و پس از ذخیره سازی ، نام فایل در صفحه جانبی Explorer قابل مشاهده خواهد بود. ایجاد پوشه ها را می توان با کلیک راست بر روی نوار کناری Explorer و کلیک بر روی New Folder انجام داد. می توانید پوشه ای را با کلیک روی نام آن و همچنین کشیدن و رها کردن فایل ها و پوشه ها به قسمتهای بالای لیست ترتیبی گسترش دهید تا آنها را به یک مکان جدید منتقل کنید. می توانید با زدن CTRL + SHIFT + `، یا با کلیک کردن بر روی ترمینال در منوی کشویی بالا، و انتخاب گزینه New Terminal، به ترمینال دسترسی پیدا کنید. ترمینال در یک پنل پایین تر باز خواهد شد و فهرست کار آن روی فضای کاری پروژه تنظیم می شود ، که شامل فایل ها و پوشه های نمایش داده شده در پانل سمت Explorer است. شما یک نمای کلی سطح بالا از رابط کد سرور مجازی را جستجو کرده اید و برخی از متداول ترین ویژگی ها را مرور کرده اید. نتیجه اکنون شما دارای کد سرور مجازی، یک cloud IDE همه کاره هستید که بر روی سرور CentOS 7 شما نصب شده است ، و در دامنه شما قرار گرفته و با استفاده از گواهی نامه های رمزگذاری ایمن شده است. هم اکنون می توانید بر روی پروژه ها بصورت جداگانه و همچنین در یک مجموعه همکاری تیمی کار کنید. اجرای cloud IDE منابع موجود در دستگاه محلی شما را آزاد می کند و به شما امکان می دهد منابع را در صورت وم مقیاس بندی کنید. برای اطلاعات بیشتر ، به ویژگی های اضافی و دستورالعمل های دقیق در مورد سایر مؤلفه های کد سرور ، به مطالب ویژوال استودیو مراجعه کنید. اگر مایل هستید کد سرور مجازی را روی خوشه vpsgol Kubernetes خود اجرا کنید ، آموزش ما در مورد چگونگی راه اندازی بستر رمزگذاری کد سرویس دهنده Cloud IDE در vpsgol Kubernetes را بررسی کنید.


نحوه استقرار و مدیریت DNS با استفاده از DNSControl در Debian 10 مقدمه DNSControl ابزاری زیرساختی به عنوان کد است که به شما امکان می دهد بخش های DNS خود را با استفاده از اصول استاندارد توسعه نرم افزار از جمله کنترل نسخه ، آزمایش و استقرار خودکار گسترش دهید و مدیریت کنید. DNSControl توسط Stack Exchange ایجاد شده و در Go نوشته شده است. استفاده از DNSControl بسیاری از مشکلات مدیریت دستی DNS را از بین می برد ، زیرا فایل های بخش در یک قالب قابل برنامه ریزی ذخیره می شوند. این امر به شما امکان می دهد بخش های مختلفی را به طور همزمان به چندین ارائه دهنده DNS گسترش دهید ، خطاهای دستوری را شناسایی کرده و پیکربندی DNS خود را به صورت خودکار انجام دهید و خطای انسانی را کاهش دهید. یکی دیگر از کاربردهای متداول DNSControl انتقال سریع DNS شما به یک ارائه دهنده دیگر است. به عنوان مثال ، در صورت حمله DDoS یا قطع سیستم. در این آموزش ، DNSControl را نصب و پیکربندی خواهید کرد ، یک پیکربندی اساسی DNS ایجاد کرده و شروع به گسترش سوابق DNS به یک ارائه دهنده زنده می کنید. به عنوان بخشی از این آموزش ، ما از vpsgol به عنوان ارائه دهنده DNS نمونه استفاده خواهیم کرد. اگر می خواهید از ارائه دهنده دیگری استفاده کنید ، تنظیمات بسیار مشابه است. پس از اتمام ، می توانید پیکربندی DNS خود را در یک محیط امن آفلاین مدیریت و آزمایش کنید و سپس بطور خودکار آن را به مرحله تولید منتقل کنید. پیش نیازها قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت: ⦁ یک سرور مجازی Debian 10 که با دنبال کردن ستاپ سرور مجازی اولیه با Debian 10 راه اندازی شده ، از جمله کاربر sudo غیر ریشه و فایروال فعال برای اینکه پورت های غیر ضروری را مسدود کند. your-server-ipv4-address به آدرس IP سرور مجازی اشاره دارد، جایی که وب سایت یا دامنه خود را میزبانی می کنید. your-server-ipv6-address به آدرس IPv6 سرور مجازی اشاره دارد جایی که میزبان وب سایت یا دامنه خود هستید. ⦁ نام دامنه کاملاً ثبت شده با DNS که توسط یک ارائه دهنده پشتیبانی شده میزبانی می شود. در این آموزش از your_domain و vpsgol به عنوان ارائه دهنده خدمات استفاده می شود. ⦁ یک کلید API vpsgol (نشانه دسترسی شخصی) با مجوزهای خواندن و نوشتن. برای ایجاد یک چنین کلیدی، به نحوه ایجاد نشانه دسترسی شخصی مراجعه کنید. پس از آماده شدن ، به عنوان کاربر غیر ریشه وارد سرور مجازی خود شوید. مرحله 1 – نصب DNSControl DNSControl در Go نوشته شده است ، بنابراین این مرحله را با نصب Go روی سرور مجازی خود و تنظیم GOPATH خود شروع خواهید کرد. Go در منابع پیش فرض نرم افزار Debian موجود است و نصب آن با استفاده از ابزارهای مدیریت بسته معمولی امکان پذیر است. همچنین باید Git را نصب کنید ، زیرا این امر به شما اجازه می دهد تا نرم افزار DNSControl را از منبع آن در GitHub دانلود و نصب کنید. با به روز کردن ایندکس پکیج محلی شروع کنید تا تغییرات جدید بالادست را منعکس کنید: $ sudo apt update سپس پکیج های golang-go و git را نصب کنید: $sudo apt install golang-go git پس از تأیید نصب ، apt دو برنامه Go و Git و همچنین کلیه موارد مورد نیاز خود را دانلود و نصب خواهد کرد. در مرحله بعد ، متغیرهای مورد نیاز محیط مسیر را برای Go پیکربندی خواهید کرد. اگر دوست دارید در این باره اطلاعات بیشتری کسب کنید ، می توانید این آموزش آشنایی با GOPATH را بخوانید. با ویرایش فایل ~/.profile شروع کنید: ⦁ $ nano ~/.profile خطوط زیر را به انتهای فایل خود اضافه کنید: ~/.profile . export GOPATH="$HOME/go" export PATH="$PATH:$GOPATH/bin" پس از افزودن این خطوط به پایین فایل ، آن را ذخیره کرده و ببندید. سپس پروفایل خود را با ورود به سیستم و برگشت مجدد یا سورس دهی فایل دوباره بارگیری کنید: ⦁ $ source ~/.profile اکنون Go را نصب کرده و پیکربندی کرده اید ، می توانید DNSControl را نصب کنید. از دستور go get می توان برای گرفتن کپی از کد ، کامپایل آن به صورت خودکار و نصب آن در فهرست Go استفاده کرد: ⦁ $ go get github.com/StackExchange/dnscontrol پس از اتمام این کار ، می توانید نسخه نصب شده را بررسی کنید تا مطمئن شوید که همه چیز کار می کند: ⦁ $ dnscontrol version خروجی شما شبیه به زیر خواهد بود: Output dnscontrol 2.9-dev اگر یک خطای dnscontrol: command not found مشاهده کردید ، راه اندازی مسیر Go خود را دو بار بررسی کنید. اکنون که DNSControl را نصب کرده اید ، می توانید یک دایرکتوری پیکربندی ایجاد کرده و DNSControl را به ارائه دهنده DNS خود متصل کنید تا اجازه دهید تغییراتی در فایل های DNS شما ایجاد کند. مرحله 2 – پیکربندی DNSControl در این مرحله ، دایرکتوری های تنظیمات لازم را برای DNSControl ایجاد خواهید کرد و آن را به ارائه دهنده DNS خود وصل کنید تا بتواند شروع به ایجاد تغییرات زنده در سوابق DNS کند. ابتدا یک دایرکتوری جدید ایجاد کنید که در آن بتوانید پیکربندی DNSControl خود را ذخیره کنید و سپس به داخل آن بروید: ⦁ $ mkdir ~/dnscontrol ⦁ $ cd ~/dnscontrol توجه: این آموزش در مورد تنظیم اولیه DNSControl است. اما برای استفاده تولیدی، توصیه می شود پیکربندی DNSControl را در سیستم کنترل نسخه (VCS) مانند Git ذخیره کنید. از مزایای این امر می توان به کنترل کامل نسخه ، ادغام با CI / CD برای آزمایش ، گسترش چرخشی یکپارچه و غیره اشاره کرد. اگر قصد دارید از DNSControl برای نوشتن فایل های بخش BIND استفاده کنید ، باید دیرکتوری zones را نیز ایجاد کنید: ⦁ $ mkdir ~/dnscontrol/zones فایل های بخش BIND یک روش استاندارد و خام برای ذخیره بخش ها/ فایل های DNS با فرمت متنی ساده است. آنها در ابتدا برای نرم افزار سرور مجازی BIND DNS مورد استفاده قرار گرفتند ، اما اکنون به عنوان روش استاندارد برای ذخیره سازی بخش های DNS مورد استفاده قرار میگیرند. اگر می خواهید آنها را به یک سرور مجازی DNS سفارشی یا میزبان سرخود یا برای اهداف حسابرسی وارد کنید ، فایل های بخش BIND تولید شده توسط DNSControl مفید هستند. با این حال ، اگر فقط می خواهید از DNSControl برای ایجاد تغییرات DNS به یک ارائه دهنده مدیریت شده استفاده کنید ، دیرکتوری zones مورد نیاز نخواهد بود. در مرحله بعد ، باید فایل creds.json را پیکربندی کنید ، این همان چیزی است که به DNSControl اجازه می دهد تا به ارائه دهنده DNS خود صدقیت دهید و تغییراتی ایجاد کند. فرمت creds.json بسته به ارائه دهنده DNS مورد استفاده شما کمی متفاوت است. لطفاً به لیست ارائه دهندگان خدمات در اسناد رسمی DNSControl مراجعه کنید تا پیکربندی ارائه دهنده خود را پیدا کنید. فایل creds.json را در دیرکتوری ~ / dnscontrol ایجاد کنید: ⦁ $ cd ~/dnscontrol ⦁ $ nano creds.json پیکربندی نمونه creds.json را برای ارائه دهنده DNS خود به فایل اضافه کنید. اگر از vpsgol به عنوان ارائه دهنده DNS خود استفاده می کنید ، می توانید موارد زیر را استفاده کنید: ~/dnscontrol/creds.json { "vpsgol": { "token": "your-vpsgol-oauth-token" } } این فایل به DNSControl میگوید که شما میخواهید به کدام ارائه دهندگان DNS متصل شود. باید برای ارائه دهنده DNS نوعی تأیید اعتبار را ارائه دهید. این معمولاً یک کلید API یا نشان OAuth است ، اما برخی از ارائه دهندگان به اطلاعات اضافی نیاز دارند ، همانطور که در لیست ارائه دهندگان خدمات در اسناد DNSControl ثبت شده است. هشدار: این نشانه به حساب ارائه دهنده DNS شما دسترسی می یابد ، بنابراین باید آن را مانند رمز عبور خود محافظت کنید. همچنین ، اطمینان حاصل کنید که اگر از سیستم کنترل نسخه استفاده می کنید ، فایلی که حاوی نشانه است ، حذف نشده باشد (مثلاً با استفاده از .gitignore) یا به طریقی رمزگذاری شود. اگر از vpsgol به عنوان ارائه دهنده DNS خود استفاده می کنید ، می توانید از علائم مورد نیاز OAuth در تنظیمات حساب vpsgol خود که به عنوان بخشی از پیش نیازها تولید کرده اید استفاده کنید. اگر چندین ارائه دهنده DNS مختلف دارید- مثلاً برای نام های دامنه متعدد ، یا بخش های DNS تفویض شده- می توانید همه اینها را در همان فایل creds.json تعریف کنید. شما دایرکتوری های پیکربندی اولیه DNSControl را تنظیم کرده اید و creds.json را پیکربندی کرده اید تا به DNSControl اجازه دهید تا ارائه دهنده DNS خود را تأیید کنید و تغییرات ایجاد نمایید. در مرحله بعدی پیکربندی را برای بخش های DNS خود ایجاد خواهید کرد. مرحله 3 - ایجاد یک فایل پیکربندی DNS در این مرحله ، یک فایل پیکربندی اولیه DNS ایجاد خواهید کرد ، که شامل سوابق DNS برای نام دامنه یا بخش DNS تفویض شده شما خواهد بود. dnsconfig.js فایل اصلی پیکربندی DNS برای DNSControl است. در این فایل ، بخش های DNS و سوابق مربوط به آنها با استفاده ازJavaScript تعریف شده است. که به DSL یا Domain Specific Language معروف است. صفحه JavaScript DSL در مطالب DNSControl جزئیات بیشتری را ارائه می دهد. برای شروع ، فایل پیکربندی DNS را در فهرست ~ / dnscontrol ایجاد کنید: ⦁ $ cd ~/dnscontrol ⦁ $ nano dnsconfig.js سپس پیکربندی نمونه زیر را به فایل اضافه کنید: ~ / dnscontrol / dnsconfig. ~/dnscontrol/dnsconfig.js // Providers: var REG_NONE = NewRegistrar('none', 'NONE'); var DNS_vpsgol = NewDnsProvider('vpsgol', 'vpsgol'); // Domains: D('your_domain', REG_NONE, DnsProvider(DNS_vpsgol), A('@', 'your-server-ipv4-address') ); این فایل نمونه نام دامنه یا بخش DNS را در یک ارائه دهنده خاص تعریف می کند ، که در این حالت your_domain به میزبانی vpsgol است. یک سابقه A نیز برای ریشه بخش (@)تعریف شده است ، که به آدرس IPv4 سرور مجازی که میزبان دامنه / وب سایت شما هستند اشاره دارد. سه کارکرد اصلی وجود دارد که یک فایل پیکربندی اساسی DNSControl را تشکیل می دهند: ⦁ NewRegistrar(name, type, metadata) : ثبت دامنه را برای نام دامنه شما تعیین می کنید. DNSControl می تواند از این روش برای ایجاد تغییرات مورد نیاز مانند تغییر نام سرورهای معتبر استفاده کند. اگر فقط می خواهید از DNSControl برای مدیریت بخش های DNS خود استفاده کنید ، این حالت معمولاً به عنوان NONE باقی می ماند. ⦁ NewDnsProvider(name, type, metadata) : ارائه دهنده خدمات DNS را برای نام دامنه یا بخش واگذار شده تعریف می کند. اینجاست که DNSControl تغییرات DNS را ایجاد می کند. ⦁ D(name, registrar, modifiers) : یک نام دامنه یا بخش DNS تفویض شده برای مدیریت DNSControl ، و همچنین سوابق DNS موجود در بخش تعریف میکند. شما باید با استفاده از لیست ارائه دهندگان خدمات در مطالب DNSControl ، NewRegistrar () ، NewDnsProvider () و D () را پیکربندی کنید. اگر از vpsgol به عنوان ارائه دهنده DNS خود استفاده می کنید ، و فقط نیاز دارید بتوانید DNS را تغییر دهید (به جای نام سرورهای معتبر) ، نمونه موجود در بلوک کد قبلی نیز صحیح است. پس از تکمیل ، فایل را ذخیره کنید و ببندید. در این مرحله ، یک فایل پیکربندی DNS را برای DNSControl ، با ارائه دهندگان مربوطه تعریف شده، تنظیم می کنید. در مرحله بعد ، فایل را با برخی از سوابق مفید DNS پر می کنید. مرحله 4 - پر کردن فایل پیکربندی DNS در مرحله بعد ، می توانید با استفاده از نحو DNSControl ، فایل پیکربندی DNS را با سوابق مفید DNS برای وب سایت یا خدمات خود پر کنید. بر خلاف فایل های بخش BIND قدیمی ، که در آن فایل های DNS با فرمت خام و خط به خط نوشته می شوند ، سوابق DNS درون DNSControl به عنوان یک پارامتر تابع (اصلاح کننده دامنه) به عملکرد D () تعریف می شوند ، که مختصراً در مرحله 3 نشان داده شده است. یک اصلاح کننده دامنه برای هر یک از انواع استاندارد رکورد DNS ، از جمله A ، AAAA ، MX ، TXT ، NS ، CAA و غیره وجود دارد. لیست کاملی از انواع رکورد موجود در بخش Domain Modifiers مطالب DNSControl موجود است. اصلاح کننده های مربوط به سوابق جداگانه نیز در دسترس هستند (اصلاح کننده های سابقه). در حال حاضر اینها در درجه اول برای تنظیم TTL (زمان زندگی) سوابق فردی استفاده می شود. لیست کاملی از اصلاح کننده های ضبط موجود در بخش Record Modifiers در اسناد DNSControl موجود است. اصلاح کننده های ثبت اختیاری هستند و در اکثر موارد استفاده اصلی می توان آنها را کنار گذاشت. دستور تنظیم سوابق DNS برای هر نوع رکورد کمی متفاوت است. در زیر چند نمونه از رایج ترین انواع رکورد وجود دارد: رکوردهای A : هدف: برای اشاره به آدرس IPv4. دستور: A('name', 'address', optional record modifiers) مثال: A('@', 'your-server-ipv4-address', TTL(30)) رکوردهای AAAA : هدف: برای اشاره به آدرس IPv6. دستور: AAAA('name', 'address', optional record modifiers) مثال: AAAA('@', 'your-server-ipv6-address') (اصلاح کننده رکورد از کار افتاده ، بنابراین TTL پیش فرض استفاده خواهد شد) رکوردهای CNAME : هدف: برای تبدیل دامنه / زیر دامنه شما به عنوان یک نام مستعار دیگر. دستور: CNAME('name', 'target', optional record modifiers) مثال: CNAME('subdomain1', 'example.org.') (توجه داشته باشید که اگر نقطه هایی در مقدار وجود داشته باشد باید یک دنباله . درج شود) رکوردهای MX : هدف: برای هدایت ایمیل به سرورها و آدرس های خاص. دستور: MX('name', 'priority', 'target', optional record modifiers) مثال: MX('@', 10, 'mail.example.net') توجه داشته باشید که اگر نقطه هایی در مقدار وجود داشته باشد باید یک دنباله . درج شود) رکوردهای TXT : هدف: برای افزودن متن ساده دلخواه ، اغلب برای تنظیمات بدون نوع رکورد خاص خود استفاده می شوند. دستور: TXT('name', 'content', optional record modifiers) مثال: TXT('@', 'This is a TXT record.') رکوردهای CAA : هدف: محدود کردن و گزارش در مورد مجوزها(CA) که می توانند گواهینامه TLS را برای دامنه / زیر دامنه شما صادر کنند. دستور: CAA('name', 'tag', 'value', optional record modifiers) مثال: CAA('@', 'issue', 'letsencrypt.org') برای شروع اضافه کردن رکوردهای DNS برای دامنه یا بخش DNS تفویض شده ، پیکربندی DNS خود را ویرایش کنید: ⦁ $ nano dnsconfig.js در مرحله بعد ، می توانید پر کردن پارامترهای مربوط به عملکرد D () موجود را با استفاده از دستور گفته شده در لیست قبلی ، و همچنین بخش Domain Modifiers از مطالب DNSControl شروع کنید. کاما (،) باید بین هر رکوردی استفاده شود. برای ارجاع ، بلوک کد در اینجا حاوی یک پیکربندی کامل نمونه برای یک تنظیم DNS ساده اولیه است: ~/dnscontrol/dnsconfig.js . D('your_domain', REG_NONE, DnsProvider(DNS_vpsgol), A('@', 'your-server-ipv4-address'), A('www', 'your-server-ipv4-address'), A('mail', 'your-server-ipv4-address'), AAAA('@', 'your-server-ipv6-address'), AAAA('www', 'your-server-ipv6-address'), AAAA('mail', 'your-server-ipv6-address'), MX('@', 10, 'mail.your_domain.'), TXT('@', 'v=spf1 -all'), TXT('_dmarc', 'v=DMARC1; p=reject; rua=mailto:abuse@your_domain; aspf=s; adkim=s;') ); پس از تکمیل تنظیمات اولیه DNS ، فایل را ذخیره کنید و ببندید. در این مرحله فایل پیکربندی اولیه DNS را تنظیم می کنید که شامل سوابق DNS شماست. در مرحله بعد ، پیکربندی را تست کرده و آن را مستقر می کنید. مرحله 5 - تست و استفاده از پیکربندی DNS در این مرحله ، شما یک بررسی دستور محلی را بر روی پیکربندی DNS خود اجرا کرده و سپس تغییرات را در سرور مجازی / ارائه دهنده زنده DNS مستقر می کنید. در مرحله اول ، به فهرست dnscontrol خود بروید: ⦁ $ cd ~/dnscontrol در مرحله بعدی ، از عملکرد پیش نمایش DNSControl استفاده کنید تا دستور فایل خود را بررسی کنید و تغییرات را ایجاد کنید (بدون اینکه آنها را در واقع ایجاد کنید) ⦁ $ dnscontrol preview اگر دستور فایل پیکربندی DNS شما صحیح باشد ، DNSControl مروری بر تغییراتی که ایجاد می کند ، ارائه می دهد. که باید شبیه زیر باشد: Output ******************** Domain: your_domain ----- Getting nameservers from: vpsgol ----- DNS Provider: vpsgol.8 corrections #1: CREATE A your_domain your-server-ipv4-address ttl=300 #2: CREATE A www.your_domain your-server-ipv4-address ttl=300 #3: CREATE A mail.your_domain your-server-ipv4-address ttl=300 #4: CREATE AAAA your_domain your-server-ipv6-address ttl=300 #5: CREATE TXT _dmarc.your_domain "v=DMARC1; p=reject; rua=mailto:abuse@your_domain; aspf=s; adkim=s;" ttl=300 #6: CREATE AAAA www.your_domain your-server-ipv6-address ttl=300 #7: CREATE AAAA mail.your_domain your-server-ipv6-address ttl=300 #8: CREATE MX your_domain 10 mail.your_domain. ttl=300 ----- Registrar: none.0 corrections Done. 8 corrections. اگر هشدار خطایی را در خروجی خود مشاهده می کنید ، DNSControl جزئیاتی راجع به اینکه چه خطایی و در کجای فایل شما قرار دارد ارائه میدهد. هشدار: دستور بعدی تغییراتی را در سوابق DNS شما و احتمالاً سایر تنظیمات ایجاد می کند. لطفاً اطمینان حاصل کنید که برای این کار آمادگی دارید ، از جمله گرفتن نسخه پشتیبان از پیکربندی DNS موجود خود ، و همچنین اطمینان از داشتن ابزارهایی برای بازگرداندن در صورت وم. سرانجام ، می توانید تغییرات را در ارائه دهنده DNS زنده خود ایجاد کنید: ⦁ $ dnscontrol push خروجی مشابه با زیر را مشاهده خواهید کرد: Output ******************** Domain: your_domain ----- Getting nameservers from: vpsgol ----- DNS Provider: vpsgol.8 corrections #1: CREATE TXT _dmarc.your_domain "v=DMARC1; p=reject; rua=mailto:abuse@your_domain; aspf=s; adkim=s;" ttl=300 SUCCESS! #2: CREATE A your_domain your-server-ipv4-address ttl=300 SUCCESS! #3: CREATE AAAA your_domain your-server-ipv6-address ttl=300 SUCCESS! #4: CREATE AAAA www.your_domain your-server-ipv6-address ttl=300 SUCCESS! #5: CREATE AAAA mail.your_domain your-server-ipv6-address ttl=300 SUCCESS! #6: CREATE A www.your_domain your-server-ipv4-address ttl=300 SUCCESS! #7: CREATE A mail.your_domain your-server-ipv4-address ttl=300 SUCCESS! #8: CREATE MX your_domain 10 mail.your_domain. ttl=300 SUCCESS! ----- Registrar: none.0 corrections Done. 8 corrections. حال اگر تنظیمات DNS مربوط به دامنه خود را در کنترل پنل vpsgol بررسی کنید ، تغییرات را مشاهده خواهید کرد. همچنین می توانید با اجرای یک جستجوی DNS برای بخش دامنه / تفویض شده خود با استفاده از Dig ، ایجاد رکورد را بررسی کنید. اگر dig را نصب نکردید ، باید بسته dnsutils را نصب کنید: ⦁ $ sudo apt install dnsutils پس از نصب dig ، می توانید از آن برای جستجوی DNS برای دامنه خود استفاده کنید. خواهید دید که سوابق به همین ترتیب به روز شده اند: ⦁ $ dig +short your_domain خروجی را مشاهده خواهید کرد که آدرس IP و سابقه DNS مربوطه را از بخش شما که با استفاده از DNSControl مستقر شده است نشان میدهد. سوابق DNS می تواند مدتی طول بکشد تا گسترش یابد ، بنابراین ممکن است لازم باشد که صبر کنید و این دستور را دوباره اجرا کنید. در این مرحله آخر ، شما یک بررسی نحو محلی فایل پیکربندی DNS را اجرا کردید ، سپس آن را به ارائه دهنده زنده DNS خود مستقر کردید و آزمایش کردید که تغییرات با موفقیت انجام شده اند. نتیجه در این مقاله شما DNSControl را تنظیم کرده و پیکربندی DNS را به یک ارائه دهنده زنده مستقر کرده اید. اکنون می توانید تغییرات پیکربندی DNS خود را در یک محیط امن و آفلاین قبل از گسترش آنها ، مدیریت و آزمایش کنید. اگر می خواهید این موضوع را بیشتر بررسی کنید ، DNSControl به گونه ای طراحی شده است که در خط CI / CD شما ادغام شود ، به شما این امکان را می دهد تا تست های عمیق را انجام دهید و کنترل بیشتری بر روی به کارگیری برای تولید داشته باشید. همچنین می توانید DNSControl را در فرآیندهای ساخت و استقرار زیرساخت خود ادغام کنید ، که به شما امکان می دهد سرورها را مستقر کرده و آنها را به طور کامل به DNS اضافه کنید. اگر می خواهید با DNSControl بیشتر پیش بروید ، مقالات vpsgol را در ادامه ببینید که مراحل بعدی جالب دیگری را برای کمک به ادغام DNSControl در مدیریت تغییر و گردش کار شما در زمینه استقرار زیرساخت ها ارائه می دهد: ⦁ مقدمه ای برای ادغام مداوم ، تحویل و استقرار ⦁ مقایسه ابزارهای CI / CD: Jenkins ، GitLab CI ، Buildbot ،Drone و Concourse ⦁ شروع به کار با مدیریت پیکربندی


این متن دومین مطلب آزمایشی من است که به زودی آن را حذف خواهم کرد.

زکات علم، نشر آن است. هر وبلاگ می تواند پایگاهی برای نشر علم و دانش باشد. بهره برداری علمی از وبلاگ ها نقش بسزایی در تولید محتوای مفید فارسی در اینترنت خواهد داشت. انتشار جزوات و متون درسی، یافته های تحقیقی و مقالات علمی از جمله کاربردهای علمی قابل تصور برای ,بلاگ ها است.

همچنین وبلاگ نویسی یکی از موثرترین شیوه های نوین اطلاع رسانی است و در جهان کم نیستند وبلاگ هایی که با رسانه های رسمی خبری رقابت می کنند. در بعد کسب و کار نیز، روز به روز بر تعداد شرکت هایی که اطلاع رسانی محصولات، خدمات و رویدادهای خود را از طریق بلاگ انجام می دهند افزوده می شود.


این متن اولین مطلب آزمایشی من است که به زودی آن را حذف خواهم کرد.

مرد خردمند هنر پیشه را، عمر دو بایست در این روزگار، تا به یکی تجربه اندوختن، با دگری تجربه بردن به کار!

اگر همه ما تجربیات مفید خود را در اختیار دیگران قرار دهیم همه خواهند توانست با انتخاب ها و تصمیم های درست تر، استفاده بهتری از وقت و عمر خود داشته باشند.

همچنین گاهی هدف از نوشتن ترویج نظرات و دیدگاه های شخصی نویسنده یا ابراز احساسات و عواطف اوست. برخی هم انتشار نظرات خود را فرصتی برای نقد و ارزیابی آن می دانند. البته بدیهی است کسانی که دیدگاه های خود را در قالب هنر بیان می کنند، تاثیر بیشتری بر محیط پیرامون خود می گذارند.


تبلیغات

آخرین ارسال ها

آخرین جستجو ها

کریمی مشاور بیمه سبک زندگی در دوران کرونا نمونه سوالات بهورزی دیپلم رایگان ← 1398 ← 1399 ← 1400 دوربین خودرو معماری www nbpars.ir 09128380245 منے از سیاره‌ی دیگر، مریخ دخترک زلال شهر :) هلوکوک تست تستی سریال ها - فیلم ها - متن ها