اکتبر 2012

تجربه‌ی محیط توسعه‌ی PHP این بار با Nginx

بسیاری از ما (برنامه نویس های PHP)، از XAMPP ویا WAMP برای توسعه‌ی PHP در ویندوز استفاده می کنیم.

پیش از هرچیز، لازم است مفهوم AMP را توضیح دهم. AMP مخفف سه کلمه‌ی Apache ، MySQL ، PHP است که یک محیط توسعه ی PHP را فراهم می آورد. Apache در نقش سرویس دهنده وب، MySQL در نقش سرور پایگاه داده و PHP زبان برنامه نویسی می باشد.

در صورتی که AMP را بر روی لینوکس راه اندازی کنیم، به آن LAMP گفته می شود (Linux Apache MySQL PHP) و چنانچه بر روی ویندوز راه اندازی شود، می توان آن را WAMP نامید... (در این مقاله، من راجع به ویندوز صحبت می کنم)

برنامه های متعددی هم برای سهولت بیشتر در راه اندازی پشته ی فوق (WAMP) موجود است:

  • XAMPP : یکی از معروف ترین نرم افزار های موجود که علاوه بر apache و mysql و php ، امکانات بیشتری از جمله سرور FTP و سرور Mercury mail و افزونه ی Apache tomcat و همچنین Perl و بسیاری از افزونه های کاربردی PHP را نیز فراهم می آورد و به این ترتیب به یک نرم افزار بسیار مفید تبدیل شده است.
  • WAMP Server نیز مشابه xampp است، با این تفاوت که کاربری آن ساده تر است و دارای user interface ساده تری است.
  • EasyPHP ساده ترین نرم افزار wamp می باشد که برای تازه کارها طراحی شده است و از هرگونه پیچیدگی به دور است
  • ...

اما آنچه در این مقاله مورد بحث ما است، wamp نمی باشد.

پشته ی LEMP

LEMP یک اصطلاح دیگر مشابه LAMP است و مخفف کلمات زیر است:
Linux Nginx MySQL PHP

همان طور که می بینید، جای Apache با Nginx عوض شده است. همانطور که می دانید Apache معروف ترین وب سرور دنیا می باشد. اما مشکلاتی در Apache موجود می باشد که باعث می شود Apache بهترین گزینه ی موجود نباشد.

وب سرور آپاچی به دلیل ساختار درونی که دارد، در صورتی که برای یک وبسایت پربازدید استفاده شود، Overhead بالایی خواهد داشت و میزان مصرف ram و cpu ی آن بسیار زیاد خواهد شد. البته می توان به پیکربندی های خاصی، این مشکل را تعدیل کرد. از جمله:

  • استفاده از mpm prefork و تنظیم worker ها
  • استفاده از fastcgi و یا fcgid به جای استفاده از mod_php جهت پردازش فایل های PHP
  • ...

 صرف نظر از راه حل های فوق، اما در مجموع، بازهم کارائی Apache در سایت های پربازدید، یک نقطه ضعف به حساب می آید.

وب سرور Nginx یکی از پر طرفدار ترین وب سرور هایی است که به جای Apache استفاده می شود. Nginx را به صورت "Engine X" تلفظ می کنند. به دلیل ساختار درونی Event driven ای که دارد دارای سرعت بسیار بالا به ویژه برای ارسال فایل های static می باشد به طوری که گاها ده ها برابر سریع تر از apache کار خود را انجام میدهد.

برای استفاده از Nginx برای پردازش فایل های PHP ، نیاز به fastCGI خواهد بود زیرا تنها راه حل موجود می باشد. fastcgi بسیار سریع می باشد و برای سایت های بسیار پربازدید، بهترین گزینه به حساب می آید.

اما در مورد Winginx

پس از مقدمه چینی های فوق، به مطلب اصلی می رسیم.
من اخیرا به نرم افزار winginx آشنا شدم و آن را نرم افزاری بسیار مهیج و جذاب یافتم!

Winginx جایگزین بسیاری مناسبی برای Xampp برای توسعه ی PHP می تواند باشد. زیرا با نصب Winginx بر روی ویندوز (که خیلی هم ساده می باشد) برنامه های زیر را بر روی سیستم خود نصب خواهید کرد:

  • Nginx Web Server
  • PHP 5.3, PHP 5.4 - FastCGI
  • MySQL Database server
  • MingoDB NoSQL Database server
  • Node.js Framework
  • Redis Server
  • MemCached Caching server
  • Hosts editor utility
  • XDeug PHP debugger
  • phpMyAdmin database administration tool
  • PHP Config tool
  • Node-Inspector
  • Adminer database administraction tool
  • RockMongo Db administration tool for mongodb
  • phpMemcachedAdmin
  • HeidiSQL Database Administration tool
  • ...

بسیار جالب و مهیج به نظر می رسد! این طور نیست؟

یکی از نکات جالب، این است که به طور درونی از Drupal ، Joomla ، Wordpress ، CakePHP و چندین cms و framework دیگر نیز پشتیبانی می کند و دارای سیستم نصب خودکار این سیستم ها می باشد و به طور خودکار rule های rewrite مربوطه را نیز ایجاد می کند

فکر می کنم دیگر واجب شد که حتما این برنامه را تست کنید!! :)

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

Forums: 

سلام
من از دروپال 6 استفاده می کنم و به تازگی سایتم رو بر روی لینوکس توزیع CentOS 6.3 i386 قرار دادم. همه چیز خوبه اما یه مشکل به وجود اومده که نمایش پیغام زیر هست:
notice: constant _jdf_use_persiannum already defined in /opt/lampp/htdocs/includes/persiandate.inc on line 449
همچنین بعضی از کلمات فارسی داخل سایت به صورت علامت سوال نمایش داده میشه.

ممنون میشم راهنماییم کنید.