PDA

View Full Version : گفتگو: چرا برای نرم افزار های تحت وب سرور های لینوکسی بهتر از سرور های ویندوزی هستند



charchol
یک شنبه 21 آذر 1395, 11:34 صبح
سلام دوستان
فرض کنید ما میخایم یه VPS بگیریم و نرم افزار تحت وبی که نوشتیم رو (با php) روش بالا بیاریم. حالا به نظرتون سرور ویندوزی بهتره یا لینوکسی؟ خب چه سوالیه!؟ معلومه که لینوکس بهتره! فقط سوال اینه که چرا؟ دقیقا چرا؟
برای بحث شبکه های داخلی چی؟ مثلا شبکه لوکال یه شرکت که مثلا 10 تا کلاینت به یک سرور لوکال وصلند؟ برای اون هم لینوکس بهتره دیگه؟

راستش ما تو شرکتمون بین من و یکی از همکارا یه بحث سنگینی در گرفته که سرور لوکال شرکت (که قرار نرمافزار های نوشته شده با php هم در اون اجرا بشه) با چه سیستم عاملی بالا بیاریم. حالا من میگم لینوکس همکارم میگه ویندوز و قراره یه جلسه بزاریم با رئیسمون و دلایلمون رو بگیم و اون تصمیم بگیره. حالا من برای اینکه با توپ پر و کوله باری از دلایل مستند برم تو جلسه به کمک شما دوستان نیاز دارم.

میشه دلایل فنی تون رو که برتری لینوکس رو بر ویندوز ثابت میکنه بگید بهم دوستان؟ به خصوص در ضمینه امنیت و اجرای بهتر نرم افزار ها

تو رو خدا نزارید شرکت ما به بلای ویندوز دچار شه . کمکم کنید بتونم رئیسمون رو قانع کنم :)

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

numberone1
یک شنبه 21 آذر 1395, 14:12 عصر
سلام
برای برنامه ای با php نوشته شده معلومه که لینوکس بهتره بخاطر این که سازگاری بیشتری داره. کارایی وب سرورها روی لینوکس به مراتب بالاتره
در مورد شبکه بحث متفاوته. شما با vps که نمیتونین شبکه درست کنین. برنامه هم ربطی به شبکه نداره

مهرداد سیف زاده
یک شنبه 21 آذر 1395, 14:24 عصر
هزینه، امنیت، سرعت، دقت، پایداری و ....
هزینه: چندان در ایران مورد نظر نیست چون هزینه ویندوز صرفا خرید dvd هست.
امنیت: سرورهای لینوکسی در یافتن و رفع باگ‌های امنیتی سرعت بهتری داره. همچنین سرویسهایی مثل iptables و selinux که دیگه پیش فرض روی بیشتر دیسترو ها هست.
سرعت: در نسخه‌های جدید ویندوز(سرور) هر چند امکان بالا آوردن سرور بدون gui هم امکان داره ولی باز هم بیشتر ram و cpu سرور داره خرج خود os میشه تا بالا بیاد. مثلا شما الان نمیتونی ویندوز سرور ۲۰۱۶ رو روی رم 512 مگ بالا بیاری ولی خیلی راحت centos 7 رو میتونی با ۲۵۶ مگ رم هم بالا بیاری. برای نرم افزارهای تحت وب که سرویسهای کش مثل memcached که خیلی سرعت رو بالا میبره
دقت: مدیران سرورها روش‌های کانفیگ براشون خیلی مهمه. توی ویندوز برای کانفیگ دقیق هنوز راه های پیچیده ای هست. هزار تا پنجره رو باید رد کنی و برسی به فلان کانفیگ. ولی لینوکس هر سرویس یه فایل conf و بس. بجز در مواردی که یه سرویسی نساز به نرم افزار دیگری داره و ابتدا باید اون رو کانفیگ کنی. دقت در کانفیگها خیلی مهمه.
پایداری: ویندوز از زمانی که ویندوز۷ و سرور ۲۰۰۸ اومد کمی اوضاع بهتر شد. ولی بازم به پای قدرت پایداری لینوکس نمیرسه. توی ویندوز یه تغییر ساده مساوی هست با یک بار رستارت سرور ولی لینوکس به هیچ عنوان این طور نیست. حتی درایورها هم اگر سخت افزار شما hotplug باشه براحتی صرفا ماژولش رو insmod میکنید و نیازی به رستارت نیست. در نسخه های جدید کرنل امکان بوت سریع هم هست یعنی اگر نیاز دارید یک بار دیگر os بالا بیاد نیازی نیست سخت افزاری رستارت بشه و صرفا در چند ثانیه kernel از روی رم پاک میشه و دوباره بر روی رم لودش میشکنه.

البته همیشه این طور نیست. ابزارهایی هستن که برای کارکرد بهتر نیاز به سرور ویندوزی دارن. مثلا اگر برنامه تحت وب شما به دیتابیس MSSQL نیاز داره و با ASP.NET نوشته شده پس باید سرور شما هم ویندوزی باشه.
در آخر باید گفت مایکروسافت با سرعت بسیار زیاد در حال سازگاری با لینوکس هست. مثلا dot net core که پروژه بسیار بزرگ مایکروسافت برای اجرای دات نت بر روی لینوکس.

charchol
یک شنبه 21 آذر 1395, 18:03 عصر
در مورد شبکه بحث متفاوته. شما با vps که نمیتونین شبکه درست کنین. برنامه هم ربطی به شبکه نداره

درسته. صرفا vps رو مثال زدم. اولش گفتم فرض کنید. ممنون از پاسختون

آقای سیف زاده اطلاعاتتون بسیار جامع بود. ممنون از لطفتون

Unique
دوشنبه 22 آذر 1395, 23:52 عصر
جناب سیف زاده توضیحات خوبی دادن اما در مورد بحث نرم افزار شما که php هست بهتره خیلی وارد مباحثی نشین که برای مدیرتون فلسفی به نظر بیاد.

اول باید تصمیم بگیرین قرار هست رویچه وب سروری کار کنید !؟ اگه روی ویندوز میخواین با IIS نرم افزار را راه اندازی کنید که خیلی باید تنظیمات را حرفه ای و با دقت و دقیق انجام بدین که بتونین به Apache و حتی Nginx نزدیک بشین. اگه قرار هست با Apache یا Nginx کار کنید که قطعا اینها روی Linux بهترین Performance را خواهند داشت و موفقیت نرم افزار شما قطعا در گرو Performance خواهد بود. پس روی VPS حتما باید لینوکس نصب کنید.

در مورد MySQL هم همین موضوع صادقه و MySQL یا بهتر از اون MariaDB عملکرد و سرعت خیلی بهتری روی لینوکس دارند تا ویندوز. استفاده از MSSQL برای PHP هم که حماقت هست به نظر من.

در مورد Local هم میتونید اینطوری استنباط کنید که وقتی VPS و نرم افزار نهایی قرار هست روی یک سرور لینوکسی کار کنه ! محیط توسعه نمیتونه روی یک پلتفرم دیگه باشه تا مشکلات غیر قابل پیشبینی به خاطر تفاوت این پلتفرم ها پیش بیاد ! یک نمونه خیلی سادش این هست که ویندوز با r\n\ خطوط را جدا میکنه ولی لینوکس با n\ یا File Access و کلا توابع IO رفتار های متفاوتی توی PHP روی ویندوز و لینوکس دارن. پس محیط تست نهایی باید مثل محیط Production روی VPS باشه.

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

negative60
سه شنبه 23 آذر 1395, 01:16 صبح
من چند سال هم سرور ویندوزی هم لینوکس در کنار هم داشتم و کاملا مشخصه لینوکس پایداری و کارایی بیشتری داره زمان آپتایم سرور لینوکسی ۵،۶ ماه میشد ولی‌ کوچکترین مشکلی‌ تو اجرا و سرعت و عملکردش وجود نداشت اما سرور ویندوزی رو هر چند روز یک بر به دلیل کند شدن می‌بایست ریستارت می‌کردم از این گذشته تو لینوکس ابزار‌های متنوع و قویتری در اختیارتون هست



برای بحث شبکه های داخلی چی؟ مثلا شبکه لوکال یه شرکت که مثلا 10 تا کلاینت به یک سرور لوکال وصلند؟ برای اون هم لینوکس بهتره دیگه؟


واقعیت اینه برای این تعداد کاربر (اگر وب سرور ویندوزتون iis باشه) برای کلاینت‌ها فرقی‌ نداره سرور ویندوزی باشه یا لینوکسی چون اونقدر فشار و باری رو سرور نیست که تو عملکردش تاثیری داشته باشه اما به لحاظ مدیریتی بهتره لینوکس رو انتخاب کنید