دعاء طنينة

الأعضاء
  • المساهمات

    4
  • تاريخ الانضمام

  • تاريخ آخر زيارة

السُّمعة بالموقع

0 Neutral
  1. حوسبة الشبكة الافتراضية أو ما يدعى VNC هو عبارة عن نظام اتصال يسمح لك بإستخدام لوحة المفاتيح والفأرة الخاصة بك للتفاعل مع بيئة سطح المكتب رسومية للخادم عن بعد مما يسمح بإدارة الملفات والبرمجيات والإعدادات على الخادم (الخادم المتحكم به عن بعد) بشكل أسهل على المستخدمين الذين لا يفضلون استخدام واجهة الأوامر. في هذا المقال، ستقوم بإعداد خادم VNC على الخادم Debian 10 والاتصال به بأمان عبر SSH وتستخدم TightVNC، هي عبارة عن حزمة التحكم عن بعد سريعة وخفيفة يتضمن هذا الخيار أن يكون اتصال VNC سلسًا ومستقرًا حتى في اتصالات الإنترنت البطيئة. المتطلبات الأساسية لإكمال هذا المقال التعليمي، ستحتاج إلى: اتباع دليل الإعداد الاولي لخادم Debian 10 من اجل اعداد خادم Debian 10، وأن يكون لك مستخدم جذري (non-root) يملك صلاحيات sudo ومثبت عليه جدار حماية. حاسوب العميل يثبت عليه عميل VNC يدعم اتصالات VNC عبر قناة اتصال SSH. على نظام تشغيل Windows يمكنك استخدام TightVNC أو RealVNC أو UltraVNC. على نظام التشغيل Mac OS يمكنك استخدام برنامج "مشاركة الشاشة" ، أو يمكنك استخدام تطبيق عبر النظام الأساسي مثل RealVNC. على نظام تشغيل Linux، يمكنك الاختيار من بين العديد من الخيارات، بما في ذلك vinagre أو krdc أو RealVNC أو TightVNC. الخطوة الأولى: تثبيت بيئة سطح المكتب وخادم VNC خادم Debian 10 لا يأتي مع بيئة سطح مكتب رسومية أو خادم VNC مثبت لذلك لابد من تثبيته أولا ثم سنقوم بتثبيت آخر نسخة من حزمةXfce لبيئة سطح مكتب وحزمة TightVN المتاحة في متجر Debian الرسمي. قم بتنفيذ الأمر التالي على الخادم من أجل تحديث قائمة الحزم على الخادم: $ sudo apt update الآن قم بتنزيل بيئة سطح المكتب Xfce على الخادم الخاص بك من خلال الأمر التالي: $ sudo apt install xfce4 xfce4-goodies أثناء التثبيت سيُطلب منك تحديد لوحة المفاتيح من قائمة الخيارات المتوفرة واختيار اللغة المناسبة للغتك و من ثم اضغط على زر الإدخال (Enter) ليستمر التثبيت. بمجرد اكتمال التثبيت قم بتثبيت خادم TightVNC عبر الأمر التالي: $ sudo apt install tightvncserver لإكمال الإعدادات الأولية لخادم VNC بعد التثبيت استخدم الأمرvncserver لإعداد كلمة مرور آمنة وإنشاء ملفات الإعدادات الأولية: $ vncserver سيُطلب منك إدخال كلمة مرور والتحقق منها للوصول إلى جهازك عن بُعد: You will require a password to access your desktops. Password: Verify: يجب أن يتراوح طول كلمة المرور بين ستة وثمانية أحرف، سيتم تقليص كلمات المرور التي تزيد عن 8 أحرف تلقائيًا؛ بمجرد التحقق من كلمة المرور سيكون لديك خيار إنشاء كلمة مرور للعرض فقط؛ إذ لن يتمكن المستخدمون الذين يقومون بتسجيل الدخول باستخدام كلمة مرور العرض فقط من التحكم في VNC باستخدام الفأرة أو لوحة المفاتيح الخاصة بهم، يعد هذا الخيارًا مفيدًا إذا كنت تريد إظهار شيء لأشخاص آخرين يستخدمون خادم VNC . هذه العملية ستعمل على إنشاء ملفات الإعدادات الافتراضية الضرورية ومعلومات الاتصال بالخادم: Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log الآن دعنا نقوم بإعداد خادم VNC. الخطوة الثانية: إعداد خادم VNC يحتاج خادم VNC إلى معرفة الأوامر التي سينفذها عند بدء التشغيل،على وجه التحديد يحتاج VNC إلى معرفة سطح المكتب الرسومي الذي يجب الاتصال به. توجد هذه الأوامر في ملف الإعدادات الذي يسمى xstartup في المجلد vnc.، الموجود بالمجلد الرئيسي (Home directory)، عندما قمت بتشغيل الأمر vncserver في الخطوة السابقة تم إنشاء البرنامج صغير لبدء التشغيل، ولكننا سنقوم بإنشاء برنامجنا الخاص لتشغيل سطح المكتب Xfce. عند إعداد VNC لأول مرة سيقوم بإطلاق خادم الافتراضي على المنفذ 5901والذي يسمى بنفذ العرض، ويشار إليه بواسطة VNC كـ ‎:1 فيمكن لـ VNC تشغيل عدة خوادم افتراضية على منافذ العرض الأخرى ، مثل ‎:2 أو 3:. لأننا بصدد تغيير كيفية إعداد خادم VNC أولاً أوقف نسخة الخادم VNC الذي يعمل على المنفذ 5901 باستخدام الأمر التالي: $ vncserver -kill :1 ستظهر المخرجات على هذا الشكل ، ولكنك سترى PID (رقم المعرف للعملية) مختلف: Killing Xtightvnc process ID 17648 قبل التعديل على الملف xstartup قم بعمل نسخة احتياطية له. $ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak الآن قم بإنشاء الملف xstartup جديد وافتحه في محرر النصوص الخاص بك: $ nano ~/.vnc/xstartup يتم تنفيذ الأوامر في هذا الملف تلقائيًا عند بدء تشغيل أو إعادة تشغيل خادم VNC،نحن بحاجة الى VNC على بيئة سطح المكتب لدينا أضف هذه الأوامر إلى الملف: #!/bin/bash xrdb $HOME/.Xresources startxfce4 & الأمر الأول في الملف xrdb $HOME/.Xresources يخبر واجهة المستخدم الرسومية الـ VNC بقراءة ملف المستخدم Xresources. وهو المكان الذي يمكن للمستخدم فيه إجراء التغييرات على إعدادات معينة لسطح المكتب الرسومي، مثل ألوان واجهة الأوامر، وسمات المؤشر، وعرض الخط، أما الأمر الثاني يطلب من الخادم تشغيل Xfce، حيث ستجد كل البرامج الرسومية التي تحتاجها لإدارة خادمك بشكل مريح. لضمان أن خادم VNC سيكون قادرًا على استخدام ملف بدء التشغيل الجديد هذا بشكل صحيح؛ سنحتاج إلى جعله قابلاً للتنفيذ. $ sudo chmod +x ~/.vnc/xstartup الآن أعد تشغيل خادم VNC. $ vncserver سترى المخرجات على هذا النحو: New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log من خلال الإعدادات الموجود دعنا نتصل بالخادم من أجهزتنا المحلية. الخطوة الثالثة: توصيل VNC Desktop بأمان لا يستخدم VNC بروتوكولات آمنة عند الاتصال؛ لذلك سوف نستخدم اتصال عبر SSH لتحقيق اتصال آمن بخادمنا وسنطلب من عميل VNC استخدامه بدلاً من إجراء اتصال مباشر. قم بإنشاء قناة اتصال SSH على الحاسوب المحلي الخاص بك والذي يقوم بإعادة توجيه اتصال الجهاز المحلي (localhost) لـ VNC بشكل آمن، يمكنك القيام بذلك من خلال واجهة الأوامر على Linux أو macOS باستخدام الأمر التالي: $ ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your server_ip يحدد المتغير L- رقم المنفذ في هذه الحالة تم بناء المنفذ 5901 للاتصال عن بُعد بالمنفذ 5901 على جهازك المحلي، تتيح الراية C- الضغط، بينما يخبر الراية N- الSSH أننا لا نريد تنفيذ أمر عن بعد، وتحدد الراية l- اسم المستخدم لتسجيل الدخول عن بُعد. استبدل اسم المستخدم sammy و your server ip باسم المستخدم العادي وعنوان IP الخاص بخادمك. إذا كنت تستخدم عميل SSH بواجهة رسومية مثل PuTTY فاستخدم "your_server_ip" كعنوان IP للاتصال، وقم بتعيينه إلى localhost: 5901 كمنفذ جديد لإعادة التوجيه في إعدادات SSH بالبرنامج. بمجرد تشغيل قناة الإتصال استخدم عميل VNC للاتصال بـ localhost: 5901؛ سيُطلب منك المصادقة باستخدام كلمة المرور التي قمت بتعيينها في الخطوة 1. بمجرد الاتصال سترى سطح مكتب Xfce الافتراضي: اختر استخدام الإعدادات الافتراضية (Use default config)لإعداد سطح المكتب بسرعة. يمكنك الوصول إلى الملفات في مجلد المنزل (Home Directory) الخاص بك باستخدام مدير الملفات أو من سطر الأوامر، كما هو موضح هنا: على جهازك المحلي اضغط CTRL + C في واجهة الأوامر من أجل إيقاف قناة الاتصال SSH والعودة لواجهة الأوامر؛ سيؤدي ذلك إلى قطع جلسة اتصال VNC أيضًا. الآن دعنا نقوم بإعداد خادم VNC كنظام خدمة. الخطوة الرابعة: تشغيل VNC كنظام خدمة سنقوم بإعداد خادم VNC كنظام خدمة service حتى يمكننا تشغيله وإيقافه وإعادة تشغيله حسب الحاجة مثل أي خدمة أخرى، ذلك يضمن بدء تشغيل VNC عند إعادة تشغيل الخادم. أولاً قم بإنشاء ملف وحدة جديد يسمى etc/systemd/system/vncserver@.service/ باستخدام محرر النصوص المفضل لديك: $sudo nano /etc/systemd/system/vncserver@.service يسمح لنا الرمز@ في نهاية الاسم بتمرير إعداد الخدمة، سنستخدم هذا لتحديد منفذ عرض VNC الذي نريد استخدامه عندما ندير الخدمة. أضف الأسطر التالية إلى الملف وتأكد من تغيير قيمة User (المستخدم) وGroup (المجموعة) و Working Directory (مجلد العمل) وUsername (اسم المستخدم) في قيمة المتغير PIDFILE لمطابقة مع اسم المستخدم الخاص بك: [Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=sammy Group=sammy WorkingDirectory=/home/sammy PIDFile=/home/sammy/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target يوقف أمر ExecStartPre ال VNC إذا كان يعمل بالفعل بينما أمر ExecStart يعمل على تشغيل VNC وتعيين عمق الألوان على لون 24 بت ودقة الوضوح 1280 × 800، يمكنك تعديل خيارات بدء التشغيل هذه أيضًا لتلبية احتياجاتك. احفظ وأغلق الملف. بعد ذلك، اجعل النظام على علم بملف الوحدة الجديد (unit file). $ sudo systemctl daemon-reload تفعيل ملف الوحدة. $ sudo systemctl enable vncserver@1.service يشير الرقم 1 الذي يلي العلامة @ إلى رقم العرض الذي يجب أن تظهر عليه الخدمة، وفي هذه الحالة يكون الرقم الافتراضي ‎:1 كما تمت مناقشته في الخطوة الثانية. أوقف الممثل الحالي لخادم VNC إذا كان لا يزال قيد التشغيل. $ vncserver -kill :1 ثم قم ببدء تشغيله كما تفعل أي خدمة أخرى. $ sudo systemctl start vncserver@1 يمكنك التحقق من أن الأمر قد بدأ: $ sudo systemctl status vncserver@1 إذا بدأ بشكل صحيح يجب أن يعرض المخرجات كما يلي: ● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-10-10 17:56:17 UTC; 5s ago Process: 935 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 940 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 948 (Xtightvnc) . . . سيكون خادم VNC متاحًا الآن عند إعادة تشغيل الجهاز. ابدأ تشغيل قناة اتصال SSH مرة أخرى: $ ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip ثم قم بإجراء اتصال جديد باستخدام برنامج عميل VNC الخاص بك إلىlocalhost : 5901للاتصال بجهازك. الخلاصة لديك الآن خادم VNC آمن يعمل على خادم Debian 10 الخاص بك؛ستتمكن الآن من إدارة الملفات والبرامج والإعدادات باستخدام واجهة رسومية سهلة الاستخدام ومألوفة وستتمكن عليها من تشغيل برامج رسومية مثل متصفحات الويب عن بُعد. ترجمة –وبتصرّف– للمقال How to Install and Configure VNC on Debian 10 لصاحبيه finid و Brian Hogan
  2. ريلز أو Ruby on Rails هو أحد أكثر الإطارات المعروفة للمطورين الذين يتطلعون إلى إنشاء مواقع وتطبيقات ويب، التي تجمع بين لغة برمجة روبي مع إطار العمل ريلز framework Rails مما جعل إنشاء التطبيقات الويب أكثر بساطة. لتثبيت ريلز يمكنك استخدام أداة سطر الأوامر rbenv التي ستوفر لك بيئة صلبة لتطوير تطبيقات ريلز تتيح لك التبديل بسهولة بين إصدارات Ruby و إبقاء فريقك بأكمله على نفس الاصدار. توفر لك rbenv دعما لتحديد اصدارات روبي الخاصة بالتطبيق وتغيرها لكل مستخدم، كما تسمح لك باستخدام متغير لإعادة تحديد إصدار روبي. سوف يوضح لك هذا المقال عملية تثبيت ريلز باستخدام rbenv. ## المتطلبات الأساسية من أجل متابعة هذا المقال تحتاج إلى: إعداد خادم اوبنتو 18.04 و تملك مستخدم غير جذري (non-root) يملك صلاحيات sudo و مثبت عليه جدار حماية. يمكنك اعداده بالعودة إلى مقال الإعداد الأولي لخام اوبنتو قم بثبيت Node.js باستخدام official PPA كما هو موضح في كيفية تثبيت Node.js على 18.04 اوبنتو إذ تعتمد بعض ميزات ريلز مثل خط أنابيب الأصول Asset Pipeline ومُشغل جافاسكربت الآني runtime JavaScript على ما يوفره Node.js. الخطوة الأولى: تثبيت rbenv ومتطلباته تعتمد Ruby على عدة حزم يمكنك تثبيتها من خلال apt-get وبمجرد تثبيتها يمكنك تثبيت rbenv واستخدامه لتثبيت روبي. أولاً، قم بتحديث قائمة الحزمة الخاصة بك: $ sudo apt update من قم بتثبيت المتطلبات اللازمة لتشغيل روبي بتنفيذ الأمر التالي . $ sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev بمجرد الانتهاء من تثبيت المتطلبات يمكنك البدء بتثبيت rbenv من GitHub ووضعه داخل المجلد rbenv ./~: $ git clone https://github.com/rbenv/rbenv.git ~ / .rbenv بعد ذلك لابد من تعريف PATH$ الخاص بك على rbenv لاستخدامها في واجهة سطر الأوامر ويكون ذلك بإضافة الملف rbenv/bin./~ إلى PATH$ الخاص بك داخل الملف bashrc./~ ولكن تذكر من أجل ظهور التغيرات لابد من إنهاء ومن ثم إعادة تشغيل واجهة سطر الأوامر؛ انظر للأمر التالي: $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc الآن أضف الأمر "(-eval "$(rbenv init إلى الملف bashrc./~ من أجل أن يتم تجميل rbenv تلقائيا: $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc لتطبيق التغييرات التي أجرتها على الملف bashrc./~ على جلسة الصدفة shell الحالية نفذ الأمر التالي: $ source ~/.bashrc للتحقق من إعدادات rbenv أنه تم تثبيتها بشكل صحيح استخدم الأمر type الذي سيعرض المزيد من المعلومات حول rbenv: $ type rbenv سوف يعرض الأمر ما يلي: rbenv is a function rbenv () { local command; command="${1:-}"; if [ "$#" -gt 0 ]; then shift; fi; case "$command" in rehash | shell) eval "$(rbenv "sh-$command" "$@")" ;; *) command rbenv "$command" "$@" ;; esac } بعد ذلك قم بتنزيل ruby-build وهو عبارة عن إضافة plugin، إذ تضيف الأمر rbenv install الذي يسهل عملية تنزيل الإصدارات الجديدة من روبي: $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build في هذه المرحلة تم تثبيت كل من rbenv و ruby-build لنبدأ الآن بتثبيت روبي: الخطوة الثانية: تثبيت روبي مع ruby-build بعد تثبيت ruby-build يمكنك الآن تثبيت إصدارات روبي التي تحتاج بأمر بسيط. اولا سنعرض جميع الإصدارت المتاحة من روبي: $ rbenv install -l ستظهر لك قائمة كبيرة من الإصدارات التي يمكن تثبيتها، لنقم بتثبيت الإصدار 2.5.1 المتوفر وقت كتاب هذا المقال: $ rbenv install 2.5.1 من أجل تثبيت إصدار روبي الذي قمنا بتثبيته كإصدار الافتراضي استخدم الرمز global كجزء من الأمر: $ rbenv global 2.5.1 للتحقق من أن التثبيت تم بشكل صحيح تحقق من رقم اصدار روبي: $ ruby -v إذا قمت بتثبيت نفس الاصدار السابق لابد ان تظهر لك المخرجات التالية: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] لتثبيت إصدار مختلف من روبي قم تنفيذ الأمر rbenv مع رقم إصدار مختلف مثل: rbenv install 2.3.0 ثم rbenv global 2.3.0. الآن لديك إصدار واحد على الأقل من روبي قم بتثبيته و تعينه باصدار افتراضي لروبي فبعد ذلك سوف نبدأ بإعداد ريلز والجواهر gems الخاصة بها. الخطوة الثالثة: العمل مع الجواهر Gems الجواهر Gems هي الطريقة التي يتم بها توزيع مكتبات روبي، استخدام الأمر gem لإدارة هذه gems كما سوف نستخدم هذا الأمر لتثبيت ريلز. أثناء تثبيت gem تعمل عملية التثبيت بإنشاء وثائق محلية مما يضيف وقت أطول أثناء عملية تثبيت كل gem، لذلك سنوقف هذه العملية عن طريق إنشاء ملف يسمى gemrc./~ الذي يحتوي على الاعدادت اللازمة لإيقاف هذه الميزة: $ echo "gem: --no-document" > ~/.gemrc المُحزِّم Bundler هي عبارة عن أداة يستخدمها gem لإدارة ما يعتمد عليه المشاريع، بالأمر التالي سنثبت Bundler الذي يعتمد عليه ريلز. $ gem install bundler ستظهر المخرجات التالية: Fetching: bundler-1.16.2.gem (100%) Successfully installed bundler-1.16.2 1 gem installed يمكنك استخدام الأمر gem env (كلمة env بالأمر هي اختصار من كلمة environment) لمعرفة المزيد حول من البيئات والإعدادات ب gems، بإمكانك معرفة مكان تثبيت gems باستخدام متغير home انظر للمثال : $ gem env home سوف يعرض لك الناتج التالي: /home/sammy/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0 بمجرد الإنتهاء من إعدادات gems يمكنك تثبيت ريلز بالخطة التالية: الخطوة الرابعة: تثبيت ريلز من أجل تثبيت ريلز استخدم الأمر gem install مع الراية ‎-v لتحديد الإصدار، في هذا المقال التعليمي، سنثبت الإصدار 5.2.0: $ gem install rails -v 5.2.0 يقوم الأمر gem بتثبيت الجواهر المحددة وكذلك كل ما تعتمد عليه. تُعد ريلز لتطوير الويب معقدة إذ تعتمد على العديد التبعيات ، لذلك تستغرق عملية التثبيت بعض الوقت،و لكن بالنهاية سترى رسالة تفيد بأن ريلز مثبت، بالإضافة إلى كل ما تعتمد عليه: Successfully installed rails-5.2.0 38 gems installed ملاحظة: إذا كنت ترغب في تثبيت إصدار مختلف من ريلز، يمكنك عرض الإصدارات الصالحة من ريلز من خلال إجراء عملية بحث، مما يؤدي إلى لإظهار قائمة طويلة من الإصدارات، يمكننا بعد ذلك تثبيت إصدار معين، مثل 4.2.7: $ gem search '^rails$' --all $ gem install rails -v 4.2.7 في حال كنت ترغب في تثبيت أحدث إصدار من ريلز نفذ الأمر دون تحديد رقم الاصدار: $ gem install rails يعمل rbenv عن طريق إنشاء مجلد shims، والذي يشير إلى الملفات المستخدمة بإصدار ريلز المفعل حاليًا،من خلال الأمر الفرعي rehash يقوم rbenv بإصلاح shims في هذا المجد لربط كل أمر في روبي عبر كل إصدار مثبت من روبي على الخادم الخاص بك. كلما تم تثبيت إصدار جديد من روبي أو gem نفذ هذا الامر. $ rbenv rehash تحقق من تثبيت ريلز بشكل صحيح عن طريق طباعة اصداره باستخدام هذا الأمر: $ rails -v إذا تم تثبيته بشكل صحيح ، سترى إصدار ريلز الذي تم تثبيته: Rails 5.2.0 في هذه المرحلة سنقوم بالبدء في اختبار تثبيت ريلز والبدء في تطوير تطبيقات الويب، حافظ على تحديث rbenv باستمرار. الخطوة الخامسة: تحديث rbenv نظرًا لأنك قمت بتثبيت rbenv يدويًا باستخدام Git، يمكنك تحديثه إلى الإصدار الأحدث في أي وقت باستخدام أمر git pull في المجلد rbenv./~: $ cd ~/.rbenv $ git pull هكذا سنضمن أننا نستخدم أحدث إصدار من rbenv المتاحة. الخطوة السادسة: إلغاء تثبيت إصدارات روبي أثناء تنزيل إصدارات إضافية من روبي يمكنك تجميع إصدارات أكثر مما تريد في المجلد rbenv/versions./~ استخدم الأمر uninstall الموجود ب ruby-build لإزالة أي من الإصدارات السابقة على سبيل المثال إزالة الاصدار 2.1.3: $ rbenv uninstall 2.1.3 باستخدام الأمر `rbenv uninstall` يمكنك من إزالة الإصدارات القديمة من روبي بحيث لا يكون لديك تثبيت أكثر مما تستخدمه حاليًا. الخطوة السابعة: إلغاء تثبيت rbenv إذا قررت أنك لم تعد ترغب في استخدام rbenv، فيمكنك إزالته من نظامك ،من أجل القيام بذلك افتح أولاً ملف `bashrc./~` في المحرر الخاص بك: $ nano ~/.bashrc ابحث عن السطرين التاليين من الملف ‎~/.bashrc ثم قم بحذفها: export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" احفظ الملف واخرج من المحرر،ثم قم بإزالة rbenv وجميع إصدارات روبي المثبتة بهذا الأمر: rm -rf rbenv root سجل الخروج وقم بالعودة لحفظ التغييرات على الصدفة shell الخاص بك. الخلاصة في هذا المقال التعليمي قمت بتثبيت rbenv وريلز ويمكن الآن الانتقال إلى توثيق ريلز على موسوعة حسوب لمزيد من المعلومات. ترجمة -وبتصرف- للمقال How To Install Ruby on Rails with rbenv on Ubuntu 18.04 لصاحبيه Brian Hogan و Lisa Tagliaferri
  3. Postfix هو وكيل نقل البريد مفتوح المصدر (MTA) الذي يمكن استخدامه لتوجيه وتسليم البريد الإلكتروني على نظام Linux، وتشير التقديرات إلى أن حوالي 25 ٪ من خوادم البريد العام على الإنترنت تعمل على تشغيل Postfix. في هذا المقال، سنعلمك كيفية تثبيت Postfix وتشغيله بسرعة على خادم يعمل بنظام تشغيل أوبنتو 18.04. المتطلبات الأساسية من أجل تطبيق هذا المقال، يجب أن يكون لديك حق الوصول كمستخدم غير جذري (non-root) يملك صلاحيات sudo، للتعرف على كيفية إعداد ذلك يمكنك اتباع دليل الإعداد الأولي لخادم اوبنتو18.04 لإنشاء المستخدم. لإعداد Postfix بشكل صحيح، ستحتاج إلى اسم نطاق (Domain Name) مؤهل بالكامل يتم توجيهه إلى خادم اوبنتو 18.04، يمكنك العثور على مساعدة في إعداد اسم النطاق (Domain Name) الخاص بك باستخدام DigitalOcean باتباع هذا المقال، إذا كنت تخطط لقبول البريد، فستحتاج إلى التأكد من أن لديك سجل MX يشير إلى خادم البريد الخاص بك. لأغراض هذا المقال التعليمي، سنفترض أنك تقوم بإعداد الحاسوب المضيف له FQDN الخاص بـ mail.example.com. الخطوة الأولى: تثبيت Postfix يوجد Postfix في متجر أوبنتو الافتراضي، لذلك تثبيته بسيط. ابدأ أولًا تحديث ذاكرة التخزين المؤقت لحزمة apt الخاصة بك ثم قم بتثبيت البرنامج، سنقوم بتمرير DEBIAN_PRIORITY=low كمتغير في أمر التثبيت الخاص بنا للرد على بعض المتطلبات الإضافية: $ sudo apt update $ sudo DEBIAN_PRIORITY=low apt install postfix استخدم المعلومات التالية لملء المطلوب بشكل صحيح للبيئة الخاصة بك: النوع العام من إعدادات البريد (General type of mail configuration): سنختار موقع إنترنت لأن هذا يتناسب مع احتياجات البنية الأساسية لدينا. اسم نظام البريد (System mail name): هذا هو المجال الأساسي للمستخدم من أجل إنشاء عنوان بريد إلكتروني صحيح عند تقديم جزء من عنوان الحساب العنوان الحساب فقط على سبيل المثال، اسم hostname هو mail.example.com لكن ربما نرغب في تعيين اسم بريد النظام إلى example.com يتم إعطاؤه اسم المستخدم user1، سيستخدم Postfix العنوان user1@example.com. مستلما البريد root و postmaster‏ (Root and postmaster mail recipient): هما عبارة عن حسابات Linux يقومان بإعادة ارسال عنوان البريد إلى root@ و postmaster@، استخدم حسابك الأساسي لهذا الغرض في مثالنا هو sammy. مستقبلات أخرى لقبول البريد (Other destinations to accept mail for): وهذا يعرف بمستقبلات البريد التي تقبل Postfix instance، إذا كنت بحاجة لإضافة أي نطاقات أخرى سيكون هذا الخادم مسؤولاً عن تلقيها، فأضف تلك النطاقات هنا وإلا سيطبق الإعداد الافتراضي. فرض تحديثات متزامنة على قائمة انتظار البريد؟ (Force synchronous updates on mail queue?‎): نظرًا لأنك تستخدم على الأرجح ملفات النظام ، فقم برد ب "لا" هنا. الشبكات المحلية (Local networks): هذه قائمة من الشبكات التي تم إعدادها بخادم البريد الخاص بك من أجل ترحيل الرسائل، بمعظم الحالات سيعمل الإعداد الافتراضي، ولكن إذا اخترت تعديله ، فتأكد من أن يكون مقيدًا للغاية فيما يتعلق بنطاق الشبكة. تحديد الحد الأعلى لحجم صندوق البريد الوارد (Mailbox size limit): يستخدم هذا الحد للحد من حجم الرسائل الواردة و يتم تعطيل أي قيود على حجم البريد بضبطه على 0. الحرف المضاف للعنوان المحلي (Local address extension character): هذا الحرف يستخدم للفصل بين الجزء العادي من العنوان و الجزء المضاف (يستخدم لإنشاء أسماء مستعارة ديناميكية). برتوكولات الانترنت الواجب استخدامها (Internet protocols to use): اختر اذا ما كنت تريد تقييد اصدار IP الذي سيدعمه Postfix، سنختار كل IP لاغراضنا هنا. هذه هي الإعدادات التي سنستخدمها في هذا الدليل: General type of mail configuration?: Internet Site System mail name: example.com (not mail.example.com) Root and postmaster mail recipient: sammy Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost Force synchronous updates on mail queue?: No Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 Mailbox size limit: 0 Local address extension character: + Internet protocols to use: all من أجل اعادة ضبط الاعدادات السابقة بأي وقت يمكنك ذلك بتنفيذ الأمر التالي: $ sudo dpkg-reconfigure postfix سيتم ملء الطلبات السابقة بالردود السابقة بشكل تلقائي. عند الانتهاء ، يمكننا الآن إجراء المزيد من التهيئة لإعداد نظامنا بالطريقة التي نرغب بها. الخطوة الثانية: تحسين إعدادات Postfix بعد ذلك، يمكننا ضبط بعض الإعدادات التي لم تطلبها منا الحزمة. بدايةً، يمكننا ضبط صندوق البريد؛سوف نستخدم تنسيق Maildi الذي يفصل الرسائل إلى ملفات فردية يتم نقلها بين المجلدات بناءً على إجراء المستخدم أما الخيار الآخر فهو تنسيق mbox (الذي لن نغطيه هنا) الذي يخزن جميع الرسائل في ملف واحد. سنقوم بتعيين المتغير home_mailbox إلى القيمة Maildir/‎ أي ننشئ مجلدًا داخل المجلد الرئيسي للمستخدم إن استخدام الامر Postconf سيقوم بضبط الإعدادات اكتب الامر التالي لإعداد home/mailbox: $ sudo postconf -e 'home_mailbox= Maildir/' بعد ذلك، يمكنك تعيين موقع الجدول virtual_alias_maps الذي يحتوي حسابات البريد الإلكتروني المرتبطة بحسابات نظام Linux، سننشئ هذا الجدول في etc/postfix/virtual/ سنستخدم الأمر postconf مرة اخرى: $ sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual' الخطوة الثالثة: خريطة عناوين البريد لحسابات Linux الآن سنقوم باعادة إعداد ملف جدول الخرائط الإفتراضي، افتح الملف في محرر النصوص الخاص بك: $sudo nano /etc/postfix/virtual يستخدم الاسم المستعار في جدول خريطة الافتراضي تنسيقًا بسيطًا على اليسار إذ يمكنك عرض أي عناوين ترغب في قبول بريدها الإلكتروني افصل بينها وبين اسم مستخدم Linux الذي ترغب في تسليم البريد إليه بمسافة بيضاء ثم أدخل مستخدم Linux. على سبيل المثال إذا كنت ترغب بقبول البريد الإلكتروني contact@example.com والبريد admin@example.com وترغب في تسليم رسائل البريد الإلكتروني هذه إلى المستخدم sammy، فيمكنك إعداد الملف ‎/etc/postfix/virtual كما يلي: contact@example.com sammy admin@example.com sammy بعد تعيين جميع العناوين على حسابات الخادم المناسبة، احفظ وأغلق الملف. يمكننا تطبيق وتفعيل السابق بتنفيذ الأمر: $ sudo postmap /etc/postfix/virtual أعد تشغيل عملية Postfix للتأكد من تطبيق جميع التغييرات: $sudo systemctl restart postfix أصبح خادم Postfix الآن مثبت وجاهز؛ سنقوم بإعداد عميل يمكنه التعامل مع البريد الذي يعالجه Postfix. الخطوة الرابعة: ضبط جدار الحماية إذا كنت تقوم بتشغيل جدار حماية UFW باعدادت الأولية التي تم تهيئة الخادم عليها سوف يتعين علينا السماح باستثناء Postfix. يمكنك السماح بالاتصالات بالخدمة بتنفيذ الأمر التالي: $ sudo ufw allow Postfix الآن خادم Postfix مثبت وجاهز سنقوم بإعداد عميل يمكنه التعامل مع البريد الذي يعالجه Postfix. الخطوة الخامسة: إعداد البيئة لربطها مع موقع البريد قبل أن نثبت العميل يجب أن نتأكد من صحة متغير بيئة MAIL الخاص بنا معدة بشكل صحيح، سيقوم العميل بفحص هذا المتغير لمعرفة مكان الذي أبحث فيه عن بريد المستخدم. من أجل تعيين المتغير بغض النظر عن كيفية وصولك إلى حسابك (من خلال ssh ، su ، su - ، sudo ، إلخ) ، نحتاج إلى تعيين المتغير في عدة مواقع مختلفة؛ سنقوم بإضافته إلى داخل ملفetc/bash.bashrc/و ملفetc/profile.d/للتأكد من أن كل مستخدم لديه هذا الإعداد. من أجل إضافة المتغير إلى هذه الملفات نفذ الأمر التالي: $echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh لقراءة المتغير في جلستك الحالية يمكنك تنفيذ على الملف etc/profile.d/mail.sh/: $ source /etc/profile.d/mail.sh الخطوة السادسة: تثبيت وإعداد بريد العميل للتفاعل مع البريد الذي يتم تسليمه؛ سنقوم بتثبيت حزمةs-nailوهو البديل عن عميل BSD xmailالغني بالميزات ويمكنه التعامل مع تنسيق Maildir بشكل صحيح، وغالبًا ما يكون متوافقًا مع الإصدارات السابقة، يحتوي إصدار GNU للبريد على بعض القيود مثل حفظ بريد القراءة دائمًا بتنسيق mbox بغض النظر عن التنسيق المصدر. لتنزيل حزمة s-nail نستخدم الأمر: $ sudo apt install s-nail من أجل ضبط بعض الإعدادات افتح الملف etc/s-nail.rc/ باستخدام محرر النصوص الخاص بك: $ sudo nano /etc/s-nail.rc أضف الخيارات التالية في أسفل الملف ‎/etc/s-nail.rc: . . . set emptystart set folder=Maildir set record=+sent سيتيح هذا للعميل فتحه حتى مع البريد الوارد الفارغ؛ سيقوم أيضًا بتعيين المجلد Maildir داخل المجلد الداخلي ثم سيستخدم لإنشاء ملف mbox الذي تم ارساله ويخزن البريد المرسل. احفظ وأغلق الملف عند الانتهاء. الخطوة السابعة: تهيئة Maildir واختبار العميل الآن، يمكننا اختبار العميل من الخارج: تهيئة بنية المجلد أسهل طريقة لإنشاء Maildir في مجلدنا الرئيسي هي إرسال بريد إلكتروني إلى أنفسنا يمكننا القيام بذلك باستخدام الأمر s-nail نظرًا لأن الملف المرسل لن يكون متاحًا إلا بعد إنشاء Maildir، سنقوم بتعطيل الكتابة لهذا البريد الإلكتروني الأولي باستخدام الخيار Snorecord-. أرسل رسالة بريد إلكتروني عن طريق تمرير الجملة String إلى الأمر s-nail وحدد مستخدم Linux المستلم للرسالة: $ echo 'init' | s-nail -s 'init' -Snorecord sammy سيكون الرد ربما كتالي: Can't canonicalize "/home/sammy/Maildir" سيظهره هذا الأمر بشكل طبيعي عند ارسال الرسالة أول مرة و يمكننا التحقق من إنشاء المجلد من خلال البحث عن مجلد Maildir/~: $ ls -R ~/Maildir ستشاهد ما يحتوي عليه المجلد وقد تم إنشاء ملف جديد فيه رسالة جديدة في المجلد Maildir/new/~: /home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp: يبدو أن البريد تم تسليمه. إدارة البريد مع العميل استخدم العميل من أجل التحقق من بريدك: $ s-nail ستجد الرسالة التالية تنتظرك: s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com Wed Dec 31 19:00 14/369 init اضغط على زر Enter لعرض رسالتك التالية: [-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Wed Dec 31 19:00:00 1969 Date: Fri, 13 May 2016 18:07:49 -0400 To: sammy@example.com Subject: init Message-Id: \<20160513220749.A278F228D9@mail.example.com\> From: sammy@example.com init يمكنك العودة إلى قائمة الرسائل الخاصة بك بكتابة الرمز h ثم Enter: ? h نظرًا لأن هذه الرسالة ليست مفيدة للغاية يمكننا حذفها باستخدام الرمز d ثم Enter : ? d للعودة إلى شاشة الأوامر استخدم الرمز q ثم ENTER: ? q إرسال البريد مع العميل يمكنك اختيار إرسال رسالة عبر كتابة الرسالة بمحرر النصوص : $ nano ~/test_message داخل الملف ‎~/test_message اكتب النص الذي تود ارساله بالبريد: Hello, This is a test. Please confirm receipt! بإمكاننا باستخدام الأمر cat توجيه الرسالة باستخدام s-nail سيؤدي ذلك إلى إرسال الرسالة كمستخدم Linux الافتراضي، يمكنك ضبط الحقل "From" باستخدام الراية r- إذا كنت تريد تعديل هذه القيمة إلى شيء آخر: $ cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account user@email.com الخيارات بالأمر السابق تعني: s-: موضوع البريد الإلكتروني r-: حقل اختياري لتغيير الحقل "From" في البريد الإلكتروني بشكل افتراضي هو مستخدم Linux الذي قمت بتسجيل الدخول به سيتم استخدامه لملء هذا الحقل، يسمح لك الخيار r- باعادة تعيينه. user@email.com: الحساب المرسل اليه البريد الإلكتروني قم بتغييره ليكون حسابًا صحيحًا لك حق الوصول إليه. يمكنك عرض رسائلك المرسلة داخل عميل s-nail الخاص بك اعد تشغيل العميل التفاعلي مرة أخرى بكتابة الأمر التالي: $ s-nail بإمكانك عرض الرسائل المرسلة عبر الأمر التالي : ? file +sent يمكنك إدارة البريد المرسل باستخدام نفس الأوامر التي تستخدمها للبريد الوارد. الخلاصة يجب أن يكون لديك الآن القدرة على إعداد Postfix على خادم أوبنتو 18.04 إن إدارة خوادم البريد الإلكتروني مهمة صعبة على مسؤولين النظام ولكن مع هذا الإعداد يجب أن يكون لديك وظيفة البريد الإلكتروني MTA الأساسية لتبدأ. ترجمة -وبتصرف- للمقال How To Install and Configure Postfix on Ubuntu 18.04 لصاحبيه Justin Ellingwood و Hanif Jetha