php8، node.js اور redis کے ساتھ CentOS 7 پر ویب سرور

کردار

CentOS آپریٹنگ سسٹم کے نئے ورژن یعنی CentOS 2 کو ریلیز ہوئے 8 دن ہوچکے ہیں۔ اور اب تک انٹرنیٹ پر اس میں چیزیں کیسے کی جاتی ہیں اس پر کافی مضامین موجود ہیں، لہذا میں نے اس خلا کو پر کرنے کا فیصلہ کیا۔ مزید برآں، میں آپ کو نہ صرف پروگراموں کے اس جوڑے کو انسٹال کرنے کے بارے میں بتاؤں گا، بلکہ یہ بھی بتاؤں گا کہ میں عام طور پر جدید دنیا میں ایک ورچوئل ماحول میں لینکس کو عام کاموں کے لیے کس طرح انسٹال کرتا ہوں، بشمول ڈسک تقسیم کرنا وغیرہ۔

لیکن شروع میں، میں مختصراً اس بارے میں بات کرنا چاہتا ہوں کہ پچھلے تمام ورژن سے اس ورژن پر جانے کے قابل کیوں ہے، اور اس کی دو وجوہات ہیں:

  1. php7! CentOS کے پچھلے ورژن میں، "آرتھوڈوکس" php5.4 انسٹال کیا گیا تھا...

    ٹھیک ہے، تھوڑا زیادہ سنجیدہ ہونے کے لیے، بہت سارے پیکجوں نے بڑے پیمانے پر کئی ورژنز کو چھلانگ لگا دی۔ ہم (ریڈہیٹ جیسے OS کے پرستار) آخر کار داخل ہو چکے ہیں، اگر مستقبل میں نہیں، تو کم از کم حال میں۔ اور Ubuntu کے حامی اب ہم پر نہیں ہنسیں گے اور ہماری طرف انگلیاں نہیں اٹھائیں گے، ٹھیک ہے... کم از کم تھوڑی دیر کے لیے؛)۔

  2. یم سے ڈی این ایف میں منتقلی۔ بنیادی فرق یہ ہے کہ اب یہ ایک ساتھ پیکجوں کے کئی ورژن کے ساتھ کام کرنے کے لیے باضابطہ طور پر تعاون یافتہ ہے۔ ٹھیک آٹھ میں، میں نے کبھی یہ مفید نہیں پایا، لیکن یہ امید افزا لگتا ہے۔

ورچوئل مشین بنانا

مختلف ہائپر وائزر ہیں اور میرا کوئی مقصد نہیں ہے کہ میں قاری کو کسی مخصوص کے مطابق بناؤں، میں آپ کو عمومی اصولوں کے بارے میں بتاؤں گا۔

یاد رکھیں

پہلے... یقینی طور پر 7 سے شروع ہونے والا CentOS سسٹم انسٹال کرنے کے لیے، اور میری رائے میں یہ 6 میں بھی ہوا تھا ("لیکن یہ یقینی نہیں ہے")، آپ کو ضرورت ہے کم سے کم 2 جی بی ریم۔ اس لیے میں آپ کو مشورہ دیتا ہوں کہ پہلے اتنا کچھ دیں۔

لیکن اگر کچھ بھی ہو تو انسٹالیشن کے بعد میموری کا سائز کم کیا جا سکتا ہے۔ 1 جی بی پر ننگا سسٹم کافی اچھا کام کرتا ہے، میں نے چیک کیا۔

ڈرائیو

عام تنصیب کے لیے، آپ کو 20-30 GB کی گنجائش والی ورچوئل ڈسک بنانا چاہیے۔ سسٹم کے لیے یہی کافی ہے۔ اور ڈیٹا کے لیے دوسری ڈسک۔ اسے ورچوئل مشین بنانے کے مرحلے میں اور بعد میں بھی شامل کیا جا سکتا ہے۔ میں اسے عام طور پر بعد میں شامل کرتا ہوں۔

پروسیسر

ایک کور پر، ننگا نظام سست نہیں ہوتا ہے۔ اور چونکہ وسائل آزادانہ طور پر توسیع پذیر ہیں، اس لیے مجھے تنصیب کے مرحلے پر مزید دینے کا کوئی فائدہ نظر نہیں آتا (جب تک کہ آپ ضروریات کو بخوبی جانتے ہوں اور دوبارہ کنفیگریٹر میں جانے کے لیے بہت سست ہوں)

باقی کو عام طور پر بطور ڈیفالٹ چھوڑا جا سکتا ہے۔

اصل تنصیب

تو... آئیے انسٹالر لانچ کرتے ہیں... ذاتی طور پر، میں ایک طویل عرصے سے ایسی سروسز کو صرف ورچوئل مشینوں کی شکل میں انسٹال کر رہا ہوں، اس لیے میں فلیش ڈرائیو پر تمام قسم کے ڈسٹری بیوشن ریکارڈز کو بیان نہیں کروں گا - میں صرف آئی ایس او کو میرے پسندیدہ ہائپر وائزر میں بطور سی ڈی ماؤنٹ کریں، ڈاؤن لوڈ کریں اور چلیں۔

بنیادی تنصیب کافی عام ہے، میں صرف چند نکات پر توجہ دوں گا۔

ماخذ کا انتخاب

آٹھویں ورژن کی ریلیز کے بعد سے، Yandex کا عکس کئی دنوں سے پڑا ہے۔ ٹھیک ہے، یہ ہے، یہ وقتا فوقتا بڑھتا ہے، اور پھر ایک بار پھر ایک غلطی دکھانا شروع کر دیتا ہے. مجھے یقین ہے کہ یہ سروس پر ضرورت سے زیادہ بوجھ کی وجہ سے ہے۔ اس لیے، ماخذ کی نشاندہی کرنے کے لیے، مجھے ذاتی طور پر، معمول کا پتہ درج کرنے کے بجائے، جانا پڑا یہاں، وہ آئینہ منتخب کریں جو مجھے وہاں پسند ہے اور انسٹالر ونڈو میں دستی طور پر پتہ درج کریں۔ یہاں یہ یاد رکھنا ضروری ہے کہ آپ کو اس فولڈر کا راستہ بتانا ہوگا جہاں ڈائریکٹری واقع ہے۔ ریپوڈیٹا. مثال کے طور پر mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

ڈسک کی تقسیم

یہ سوال میری نظر میں مذہبی ہے۔ اس معاملے پر ہر ایڈمن کا اپنا موقف ہے۔ لیکن میں پھر بھی اس معاملے پر اپنا نقطہ نظر بیان کروں گا۔

جی ہاں، اصولی طور پر، آپ پوری جگہ کو جڑ کے لیے مختص کر سکتے ہیں اور یہ کام کرے گا، اکثر اوقات بہت اچھی طرح سے۔ پھر کیوں مختلف حصوں کے ساتھ ایک باغ باڑ؟ - میری رائے میں، اس کی دو اہم وجوہات ہیں: کوٹہ اور پورٹیبلٹی۔

مثال کے طور پر، اگر کچھ غلط ہو جاتا ہے اور مین ڈیٹا پارٹیشن میں غلطیاں ہوتی ہیں، تو آپ چاہتے ہیں کہ پھر بھی سسٹم کو بوٹ کر سکیں اور بحالی کے اقدامات کو انجام دیں۔ لہذا، میں ذاتی طور پر /boot کے لیے ایک علیحدہ پارٹیشن مختص کرتا ہوں۔ ایک دانا اور ایک بوٹ لوڈر ہے۔ عام طور پر 500 میگا بائٹس کافی ہوتی ہے، لیکن شاذ و نادر صورتوں میں اس سے زیادہ کی ضرورت ہو سکتی ہے، اور یہ دیکھتے ہوئے کہ ہم پہلے ہی ٹیرا بائٹس میں جگہ کی پیمائش کرنے کے عادی ہیں، میں اس حصے کے لیے 2GB مختص کرتا ہوں۔ اور یہاں اہم بات یہ ہے کہ اسے lvm نہیں کیا جا سکتا۔

اس کے بعد نظام کی جڑ آتی ہے۔ ایک عام تنصیب کے لیے، مجھے فی سسٹم 4 جی بی سے زیادہ کی ضرورت نہیں ہے، لیکن شیڈول ایونٹس کے دوران میں اکثر تقسیم کو کھولنے کے لیے /tmp ڈائریکٹری کا استعمال کرتا ہوں، اور مجھے اسے الگ پارٹیشن کے لیے وقف کرنے کا کوئی فائدہ نظر نہیں آتا ہے - جدید نظاموں میں۔ یہ خود بخود صاف ہوجاتا ہے، لہذا یہ بھرا نہیں جاتا۔ تو میں روٹ کے لیے 8GB مختص کرتا ہوں۔

تبادلہ... بڑے پیمانے پر، اس کا عملی استعمال بہت کم ہے۔ اگر آپ اپنے سرور پر سویپ کا استعمال شروع کرتے ہیں، تو آج حقیقی دنیا میں اس کا مطلب صرف یہ ہے کہ سرور کو مزید RAM شامل کرنے کی ضرورت ہے۔ دوسری صورت میں، کارکردگی کے ساتھ مسائل کی ضمانت دی جاتی ہے (یا کچھ پروگرام "لیک" میموری) لہذا، اس حصے کی ضرورت صرف تشخیصی مقاصد کے لیے ہے۔ لہذا، 2 جی بی ایک بہترین نمبر ہے۔ ہاں، اس سے قطع نظر کہ سرور پر کتنی میموری ہے۔ جی ہاں، میں نے وہ تمام مضامین پڑھے ہیں جن میں میموری والیوم اور سویپ والیوم کے تناسب کے بارے میں لکھا گیا ہے... IMHO، وہ پرانے ہیں۔ 10 سال کی مشق میں مجھے کبھی اس کی ضرورت نہیں پڑی۔ 15 سال پہلے میں نے ان کا استعمال کیا تھا، ہاں۔

IMHO، ہر کوئی خود فیصلہ کر سکتا ہے کہ آیا/گھر کو الگ پارٹیشن میں مختص کرنا ہے۔ اگر سرور پر کوئی شخص اس ڈائریکٹری کو فعال طور پر استعمال کرے گا، تو اسے مختص کرنا بہتر ہے۔ اگر کوئی نہیں ہے تو کوئی ضرورت نہیں ہے۔

اگلا، /var۔ میری رائے میں اس پر ضرور روشنی ڈالنی چاہیے۔ شروع کرنے کے لیے، آپ اپنے آپ کو 4 جی بی تک محدود کر سکتے ہیں، اور دیکھیں کہ یہ کیسے ہوتا ہے۔ اور ہاں، "یہ کیسے چلتا ہے" سے میرا مطلب ہے۔

  1. سب سے پہلے، آپ ہمیشہ /var سب ڈائرکٹری میں ایک اور ڈسک ماؤنٹ کر سکتے ہیں (جسے میں بعد میں ایک مثال کے ساتھ دکھاؤں گا)
  2. دوم، ہمارے پاس lvm ہے - آپ اسے ہمیشہ شامل کر سکتے ہیں۔ اور آپ کو عام طور پر اسے شامل کرنا پڑتا ہے جب وہاں بہت سارے لاگ انڈالنا شروع ہوجاتے ہیں۔ لیکن میں کبھی بھی اس اعداد و شمار کی پیشگی پیش گوئی نہیں کر سکا، اس لیے میں 2 جی بی سے شروع کرتا ہوں اور پھر دیکھتا ہوں۔

غیر مختص کردہ جگہ والیوم گروپ میں خالی رہے گی اور اسے بعد میں ہمیشہ استعمال کیا جا سکتا ہے۔

LVM

سب LVM میں /boot کے علاوہ پارٹیشنز بنانا سمجھ میں آتا ہے۔ ہاں، تبادلہ سمیت۔ ہاں، تمام مشورے کے مطابق، تبادلہ ڈسک کے شروع میں ہونا چاہیے، لیکن LVM کی صورت میں اصولی طور پر اس کی جگہ کا تعین نہیں کیا جا سکتا۔ لیکن جیسا کہ میں نے اوپر لکھا ہے، آپ کا سسٹم نہیں کرنا چاہئے swap بالکل استعمال کریں. لہذا، اس سے کوئی فرق نہیں پڑتا کہ وہ کہاں ہے. ٹھیک ہے، ہم '95 میں نہیں رہتے، ایمانداری سے!

مزید، LVM میں کئی بنیادی ہستیاں ہیں جن کے ساتھ رہنے کے قابل ہونے کے لیے آپ کو ضرورت ہے:

  • جسمانی حجم
  • حجم گروپ
  • منطقی حجم

طبعی حجم کو گروپس میں ملایا جاتا ہے، اور ہر جسمانی حجم صرف ایک گروپ میں ہوسکتا ہے، اور ایک گروپ ایک ساتھ کئی جسمانی حجموں پر واقع ہوسکتا ہے۔
اور منطقی جلدیں ایک ایک گروپ میں ہیں۔

لیکن... لات، یہ ایک بار پھر اکیسویں صدی ہے۔ اور سرور ورچوئل ہیں۔ ان پر وہی طریقہ کار لاگو کرنا کوئی معنی نہیں رکھتا جو جسمانی پر لاگو ہوتے تھے۔ اور ورچوئل والوں کے لیے سسٹم سے الگ ڈیٹا ہونا ضروری ہے! یہ بہت اہم ہے، خاص طور پر ڈیٹا کو تیزی سے دوسری ورچوئل مشین میں تبدیل کرنے کی صلاحیت کے لیے (مثال کے طور پر، جب کسی نئی OS پر سوئچ کرتے وقت) اور عام طور پر ہر طرح کے مفید سامان کے لیے (مثال کے طور پر ہائپر وائزر ٹولز کا استعمال کرتے ہوئے پارٹیشنز کے ذریعے علیحدہ بیک اپ) . لہذا، ایک والیوم گروپ سسٹم کے لیے استعمال کیا جاتا ہے اور ضروری طور پر دوسرا ڈیٹا کے لیے استعمال ہوتا ہے! یہ منطقی تقسیم زندگی میں بہت مدد کرتی ہے!

اگر آپ نے ورچوئل مشین بناتے وقت صرف ایک ورچوئل ہارڈ ڈسک بنائی ہے تو یہیں سے کنفیگریشن ختم ہوتی ہے۔ اور اگر دو ہیں، تو صرف دوسرے کو نشان زد نہ کریں۔

Zapuskaem ustanovku.

پوسٹ انسٹالیشن

لہذا، نیا نصب شدہ نظام آخر کار بوٹ ہو گیا۔ پہلی چیز جس کی آپ کو جانچ کرنے کی ضرورت ہے وہ ہے انٹرنیٹ۔

ping ya.ru

کیا کوئی جواب ہے؟ - بہت اچھا، دبائیں Ctrl-C۔
اگر نہیں، تو نیٹ ورک قائم کریں، اس کے بغیر زندگی نہیں ہے، لیکن میرا مضمون اس کے بارے میں نہیں ہے۔

اب اگر ہم ابھی تک جڑ کے نیچے نہیں ہیں، جڑ کے نیچے جائیں، کیونکہ ٹائپنگ اس طرح sudo کے ساتھ کمانڈز کی تعداد نے مجھے ذاتی طور پر توڑ دیا (اور بے ہودہ منتظمین مجھے معاف کر دیں):

sudo -i

اب ہم سب سے پہلی چیز ٹائپ کرتے ہیں۔

dnf -y update

اور اگر آپ یہ مضمون 2019 میں پڑھ رہے ہیں، تو غالباً کچھ نہیں ہوگا، لیکن یہ ایک کوشش کے قابل تھا۔

اب باقی ڈسک کو کنفیگر کرتے ہیں۔

ہم کہتے ہیں کہ سسٹم کے ساتھ پارٹیشن xvda تھا تو ڈیٹا ڈسک xvdb ہوگی۔ ٹھیک ہے.

زیادہ تر مشورے "fdisk چلائیں اور پارٹیشن بنائیں..." سے شروع ہوں گے۔

تو یہ ہے۔ غلط!

میں اسے دوبارہ کہوں گا کیونکہ یہ بہت اہم ہے! اس صورت میں، LVM کے ساتھ کام کرنا، جو ایک پوری ورچوئل ڈسک پر قابض ہے، اس پر پارٹیشن بنانا نقصان دہ ہے! اس جملے کا ہر لفظ اہم ہے۔ اگر ہم LVM کے بغیر کام کرتے ہیں، تو ہمیں ضرورت ہے۔ اگر ہمارے پاس ڈسک پر کوئی سسٹم اور ڈیٹا ہے تو ہمیں اس کی ضرورت ہے۔ اگر کسی وجہ سے ہمیں آدھی ڈسک کو خالی چھوڑنے کی ضرورت ہے، تو ہمیں بھی کرنی چاہیے۔ لیکن عموماً یہ تمام مفروضے خالصتاً نظریاتی ہوتے ہیں۔ کیونکہ اگر ہم موجودہ پارٹیشن میں جگہ شامل کرنے کا فیصلہ کرتے ہیں، تو اسے کرنے کا سب سے آسان طریقہ اس کنفیگریشن کے ساتھ ہے۔ اور انتظامیہ کی آسانی بہت سی دوسری چیزوں سے زیادہ ہے کہ ہم جان بوجھ کر اس ترتیب کی طرف بڑھ رہے ہیں۔

اور سہولت یہ ہے کہ اگر آپ ڈیٹا پارٹیشن کو بڑھانا چاہتے ہیں، تو آپ صرف ورچوئل پارٹیشن میں اسپیس شامل کرتے ہیں، پھر vgextend کا استعمال کرتے ہوئے گروپ کو بڑھاتے ہیں اور بس! شاذ و نادر صورتوں میں، کسی اور چیز کی ضرورت ہو سکتی ہے، لیکن کم از کم آپ کو شروع میں منطقی حجم کو بڑھانا نہیں پڑے گا، جو پہلے ہی اچھا ہے۔ بصورت دیگر، اس حجم کو بڑھانے کے لیے، وہ پہلے موجودہ کو حذف کرنے اور پھر اوپر سے ایک نیا بنانے کی تجویز کرتے ہیں... جو بہت اچھا نہیں لگتا اور اسے لائیو نہیں کیا جا سکتا، لیکن اس منظر نامے کے مطابق جس کا میں نے اشارہ کیا ہے اس کی توسیع ہو سکتی ہے۔ پارٹیشن کو ان ماؤنٹ کیے بغیر "اڑتے ہوئے" کیا گیا۔

لہذا، ہم ایک فزیکل والیوم بناتے ہیں، پھر ایک والیوم گروپ جس میں یہ شامل ہوتا ہے، اور پھر ہمارے سرور کے لیے ایک پارٹیشن:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

یہاں، بڑے حرف "L" (اور GB میں سائز) کے بجائے، آپ ایک چھوٹا سا متعین کر سکتے ہیں، اور پھر مطلق سائز کے بجائے، رشتہ دار کی وضاحت کر سکتے ہیں، مثال کے طور پر، موجودہ خالی جگہ کا نصف استعمال کرنے کے لیے حجم گروپ، آپ کو "-l +50% مفت" کی وضاحت کرنے کی ضرورت ہے

اور آخری کمانڈ ext4 فائل سسٹم میں پارٹیشن کو فارمیٹ کرتی ہے (جو اب تک، میرے تجربے میں، سب کچھ ٹوٹ جانے کی صورت میں سب سے بڑا استحکام ظاہر کرتا ہے، اس لیے میں اسے ترجیح دیتا ہوں)۔

اب ہم پارٹیشن کو صحیح جگہ پر لگاتے ہیں۔ ایسا کرنے کے لیے، صحیح لائن کو /etc/fstab میں شامل کریں:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

اور ہم ڈائل کرتے ہیں۔

mount /var/www

اگر کوئی غلطی ہو جائے تو الارم بجائیں! کیونکہ اس کا مطلب ہے کہ ہمیں /etc/fstab میں ایک غلطی ہے۔ اور یہ کہ اگلے ریبوٹ پر ہمیں بہت بڑی پریشانیوں کا سامنا کرنا پڑے گا۔ سسٹم بالکل بوٹ نہیں ہوسکتا ہے، جو اکثر کلاؤڈ سروسز کے لیے بہت افسوسناک ہوتا ہے۔ لہذا، یہ ضروری ہے کہ یا تو شامل کردہ آخری لائن کو فوری طور پر درست کیا جائے، یا اسے یکسر حذف کر دیا جائے! یہی وجہ ہے کہ ہم نے ماؤنٹ کمانڈ کو دستی طور پر نہیں لکھا - تو ہمیں فوری طور پر تشکیل کو چیک کرنے کا اتنا بڑا موقع نہیں ملتا۔

اب ہم اصل میں ہر وہ چیز انسٹال کرتے ہیں جو ہم چاہتے تھے اور ویب کے لیے پورٹس کھولتے ہیں:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

اگر آپ چاہیں تو یہاں ڈیٹا بیس بھی رکھ سکتے ہیں لیکن ذاتی طور پر میں اسے ویب سرور سے الگ رکھنے کی کوشش کرتا ہوں۔ اگرچہ اسے قریب رکھنا تیز تر ہے، ہاں۔ ورچوئل نیٹ ورک اڈاپٹر کی رفتار عام طور پر گیگابٹ کے ارد گرد ہوتی ہے، اور جب ایک ہی مشین پر کام کرتے ہیں، تو کالیں تقریباً فوری طور پر ہوتی ہیں۔ لیکن یہ کم محفوظ ہے۔ کس کے لیے زیادہ اہم ہے؟

اب ہم پیرامیٹر کو کنفیگریشن فائل میں شامل کرتے ہیں (ہم ایک نیا بناتے ہیں، CentOS کا جدید نظریہ اس طرح ہے)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

سرور کو ریبوٹ کریں۔
تبصروں میں، مجھے SeLinux کو بند کرنے کا مشورہ دینے پر ڈانٹا گیا، اس لیے میں خود کو درست کروں گا اور اس حقیقت کے بارے میں لکھوں گا کہ اس کے بعد آپ کو SeLinux کو کنفیگر کرنا یاد رکھنا ہوگا۔
اصل میں، منافع! 🙂

ماخذ: www.habr.com

نیا تبصرہ شامل کریں