اشتباهات رایج در راه اندازی سایت با دروپال (بخش سوم)

اشتباهات رایج در راه اندازی سایت با دروپال (بخش سوم)

زیر ساخت (Infrastructure)

زیر ساخت لایه های نرم افزاری که سایت شما بر روی آن قرار دارد (Software Stack) را پوشش می دهد. مثل سرور، دیتابیس و هر لایه نرم افزاری دیگری نظیر Varnish و Memcached که تجربه کاربری خوبی را برای بازدیدکنندگان تضمین می کند. طرح ریزی زیر ساخت از ابتدا و توسعه سایت روی محیط مشابه، به خوبی می تواند ریسک های زمان استقرار نهایی سایت را کاهش بدهد. داشتن استراژی مشخص برای بازگردانی سایت در حوادثی که برای سایت رخ می دهد، نباید یک تصمیم دقیقه نود باشد. اگر این طور باشد مشکلات شروع شده و افزایش می یابد. در اینجا بعضی موارد برای اجتناب از خطاهای رایج بیان می شود.

بهترین شیوه

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

اندازه لایه های پروژه را دقیق تعیین کنید

اشتباه: منابع سخت افزاری سرور به اندازه کافی هستند ولی به خوبی پیکربندی نشده اند.

نمونه: سرور دیتابیس به اندازه کافی بزرگ است و 48 گیگا بایت حافظه دارد ولی بافر پول InnoDb فقط روی 1 گیگابایت تنظیم شده است.

راه حل: همه ابعاد مختلف پیکربندی لایه های پروژه را در نظر بگیرید. از ابزار هایی مانند mysqltuner.pl برای حلیل دیتابیس استفاده کنید.

از وارنیش برای کنترل ترافیک استفاده کنید

اشتباه: پیکربندی نادرست سبب می شود که ترافیک سایت وارنیش را دور بزند و به سرور فشار بیاورد.

راه حل: هدر های response را چک کنید که مطمئن شوید صفحاتی که باید کش شده باشند، واقعا کش شده باشند. مطمئن شوید که ماژول ها متغیر های session غیر ضروری تنظیم نمی کنند.

اجتناب از مواجهه با نقاط آسیب پذیر

اشتباه: کانکشن های از راه دور به دیتابیس، Memcached و Solr مجاز باشد.

نمونه: فکر می کنید که یک فایروال خارجی به اندازه کافی از سایت محافظت می کند و پورتی که Memcached روی آن اجرا شده با استفاده از IP Table محافظت نشود.

راه حل: بیشتر از 50 تا 70 درصد حملات می توانند داخلی باشند. کانکشن های از راه دور به دیتابیس، Memcached یا Solr را ممنوع کنید. این پیکربندی را در همه تغییرات زیر ساختی، رعایت کنید.

ابزارهایی که توصیه می شود

• اسکریپت Mysqltuner.pl یک اسکریپت پرل است که می توانید از Github دانلود کنید. این اسکریپت وضعیت دیتابیس MySQL را بررسی می کند و تعدادی پیشنهاد های پایه برای بهبود عملکرد MySQL را به شما ارائه می کند.

نگهداری (Maintenance)

چرخه حیات یک وب سایت از طرح های اولیه شروع می شود و تا پایان کار وب سایت ادامه می یابد. یک سایت در سه مرحله وجود دارد:

  • توسعه
  • استقرار
  • نگهداری

وقتی سایت لانچ شد، حیات سایت به میزان موفقیت تغییرات و نگهداری سایت گره می خورد.

بهترین شیوه

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

همکاری قابل اطمینان با استفاده از version control

اشتباه: از هیچ سیستمی برای کنترل ورژن های مختلف پروژه استفاده نشود.

نمونه: گاه به گاه کپی هایی از کد ها تهیه کرده و به عنوان بکاپ نگهداری می کنیم و از این کار به عنوان یک روش ورژن کنترل استفاده می کنیم.

راه حل: کار درست استفاده از سیستم کنترل ورژن است. سیستم مدیریت ورژن git در بین توسعه دهندگان دروپال بسیار محبوب است. ولی هر سیستم دیگری نیز اگر به درستی به کار گرفته شود، مفید اسن. حتما برای هر کامیت پیام های با مفهومی بنویسید که همکاراننیز به خوبی تغییراتی که ایجاده کرده اید را متوجه بشوند.

سازماندهی کنید

اشتباه: فایل های اضافی و غیر اصلی را در ریپازیتوری ورژن کنترل نگهداری کنید.

نمونه: فایل های تصویری مورد نیاز سایت یا فایل های دامپ تهیه شده از دیتابیس را در ریپازیتوری VCS نگهداری کنید.

راه حل: همیشه مخزن ورژن کنترل را تا می شود سبک نگهدارید.

پروژه را با ورژن کنترل مستقر کنید

اشتباه: فایل های پروژه را با استفاده از FTP در محل نهایی خود قرار بدهید.

راه حل: استقرار باید مسقیما از ریپازیتوری ورژن کنترل انجام بشود.

حفظ امنیت در طول استقرار

اشتباه: محیط استقرار نهایی پروژه به اندازه کافی امنیت ندارد.

نمونه: هر برنامه نویس بتواند یک نسخه از سیستم نهایی را بگیرد و در لپ تاپ خودش نصب کند.

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

در محیط هایی تست کنید که هر چه بیشتر شبیه محیط نهایی هستند

اشتباه: محیط های توسعه و مرحله های دیگر بروز نشده اند و یا بعضی از ویژگی ها را ندارند.

نمونه: تست فقط در محیط production انجام شود چون محیط های دیگر داده های قدیمی دارند یا به سرویس های خارجی مورد نیاز ارتباط ندارند.

راه حل: همیشه محیط تست هر چه شبیه تر به محیط نهایی استقرار پروژه باشد. می توانید از محیط نهایی کپی داشته باشید که وقتی تستی را انجام می دهید. مطمئن باشید که تغییرات داده شده در پروژه در نسخه نهایی نیز به درستی کار می کنند.

سایت خود را به روز نگه دارید

اشتباه: سایت از نسخه های قدیمی هسته دروپال یا ماژول های دیگر استفاده می کند.

راه حل: همیشه هسته دروپال و ماژول هایی که از سایت رسمی دروپال دریافت کرده اید را به روز کنید.

نتیجه

فراموش نکنید که سایت یک موجود زنده است. به صورت منظم باید لاگ ها را بررسی کنید تا بدانید وضعیت آن به چه صورت است. به مرور زمان که سایت تغییر می کند شما نیز راه هایی را برای بهبود و محافظت آن می یابید. به صورت دوره ای برنامه هایی را برای ارزیابی مجدد تمام ابعاد گوناگون سایت برنامه ریزی کنید.

نگهداری از یک سایت دروپالی زنده یک چالش اساسی در جبهه های مختلفی است. اگر این شیوه های خوب برای نگهداری سایت را استفاده کنید و از اشتباهات دوری کنید، می بینید که کارتان بهتر پیش می رود. سایت را به صورتی که درست کارش را انجام می دهد نگه داری می کنید و مشتری نیز از کار شما راضی خواهد بود.

نظرات

یه سوئال که شاید به این مطلب ارتباط کمی داشته باشه.
به نظر شما برای یه سایت بزرگ دروپالی وارنیش و آپاچی بهتر جواب میده یا nginx و وارنیش یا 3تای این ها در کنار هم؟

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

منم زیاد تحقیق کردم.
80% میگن nginx و آپاچی یا nginx و وارنیش در کنار هم خوب جواب میدن(یعنی سه تاشون درست جواب نمیدن،اما یه عده هم با قاطعیت میگن که این 3 در کنار هم به شرط کانفیگمناسب خوب جواب میدن.
البته منم خودم تجربه nginx رو زیاد اشتم اما یک بار و برای چند ساعت این 3 رو در کنار هم استفاده کردم و سرعت لود رو خیلی خیلی آورد پایین اما بخاطر ترس از اینکه نکنه مشکلی به وجود بیاره وارنیش رو کنسل کردم

ارسال نظر