بعض الأمور أفترضها :
* توجد لديك توزيعة Debian Gnu/Linux مثبتة بالفعل وعملية الشرح ستكون عليها .
* معرفة كيفية التعامل مع الحزم من إضافة وتثبيت على التوزيعة ، وأود الإشارة إلى أنه فى حالة قيام أى شخص بتنفيذ الشرح على أى توزيعة أخرى وحدثت معه مشاكل فأنا غير ملزم بذلك سواء كانت هذه المشاكل هى عدم توافر حزمة معينة أو حدوث مشكلة أثناء تنفيذ إحدى الخطوات فى عملية ال compiling إلخ .
السطور السابقة تناولنا فيها مقدمة بسيطة عن الفويب (voip) وشرحنا فى تلك المقدمة ما معنى كلمة voip وما الفائدة التى قد تعود علينا من إستخدام تلك التنقبية إلى آخره من تلك المفاهيم ، فى هذا الجزء إن شاء الله سنبدأ فى تثبيت خادم الفويب وستكون عملية التثبيت على توزيعة Debian ومن أراد تثبيت OpenSER على أى توزيعة أخرى فسأذكر بعض النقاط الرئيسية والتى تمكنه من تثبيت الخادم بدون أى مشاكل إن شاء الله .
متطلبات الثبيت (هذه تخص كل التوزيعات ) :
- gcc- bison - flex- GNU make - sed and tr (used in Makefiles)
- GNU tar - GNU install- libmysqlclient
ملحوظة : متطلبات التثبيت هذه تكفى فقط بوجود دعم لتوثيق المستخدمين على OpenSER بإستخدام MySQL ، توجد متطلبات أخرى إذا كنت تريد إضافة مهام أكثر ليقوم بها OpenSER ، وجدير بالذكر أن أسماء الحزم السابقة هى أسماء الحزم بشكل عام .
كما أننى أفترض أنك قمت بتعديل ملف ال sources.list الخاص بك على التوزيعة ، وإذا لم تكن قد فعلت فهاهى الطريقة :
فى البداية قم بفتح محاكى الطرفية لديك أو Terminal ، بعد ذلك قم بالدخول بحساب المستخدم الجذر ونفذ الأمر التالى :
nano /etc/apt/sources.list
deb http://http.us.debian.org/debian etch maindeb-src http://http.us.debian.org/debian etch main
ملحوظة : من الممكن أن تستخدم أى مُحرر نصوص آخر بدلا ًمن nano ، البعض يُفضل vi أو Vim اختر ما يناسبك أو ما تستطيع إستخدامه .
بعد ذلك قم بتنفيذ الأمر التالى لتحديث ملف المصادر sources.list لديك بالشكل التالى :
كود PHP:
debian:~# apt-get update
الآن سنقوم بتثبيت الحزم التى ذكرناها سابقا من خلال apt-get بالشكل التالى :
كود PHP:
debian:~# apt-get install gcc bison flex make libmysqlclinet15-dev mysql-server mysql-client
ملحوظة : قد توجد لديك بعض من تلك الحزم السابقة ولكنى أفترض أن تلك الحزم غير موجودة ، وبالتالى إذا وُجدت الحزم فعلاً وكانت هناك إصدارات حديثة منها سيتم عمل ترقية لتلك الحزم ، والتى لم تكن موجودة سيتم تثبيتها .
بعد التأكد من تثبيت الحزم السابقة على التوزيعة سنقوم الآن بتحميل OpenSER من على الإنترنت ثم نقوم بتثبيته ونبدأ بخطوة التحميل أوﻻً :
نقوم بالولوج إلى المسار usr/src/ ، ثم نقوم بتنزيل الملف بالشكل التالى :
كود PHP:
debian:~# cd /usr/src/; wget -c http://www.kamailio.org/pub/kamailio/1.3.3/src/openser-1.3.3-notls_src.tar.gz
بعد ذلك نقوم بفك الضغط عن الملف :
كود PHP:
debian:/usr/src# tar -zxf openser-1.3.3-notls_src.tar.gz
ثم نقوم بحذف الملف المصدر لأنه لم يعد له قيمة (الخيار متروك لك) :
كود PHP:
debian:/usr/src# rm openser-1.3.3-notls_src.tar.gz
الآن نقوم بالولوج إلى المجلد الذى يحتوى الشفرة المصدرية ل OpenSER :
كود PHP:
debian:/usr/src# cd openser-1.3.3-notls
بعد ذلك سنقوم بعمل بعض التعديلات على ملف Makefile لإضافة الmodule الذى سوف يكون حلقة الوصل بينOpenSER وبين محرك قواعد البيانات MySQL بالشكل التالى :
كود PHP:
debian:/usr/src/openser-1.3.3-notls# nano Makefile
بعد ذلك نقوم بالبحث عن السطر الذى توجد فيه كلمة mysql بالشكل التالى :
كود PHP:
exclude_modules?= jabber cpl-c mysql pa postgres osp unixodbc \
ثم نقوم بحذف كلمة mysql ليصبح السطر بالشكل التالى :
كود PHP:
exclude_modules?= jabber cpl-c pa postgres osp unixodbc \
بعد ذلك سنبدأ فى تجميع الشفرة المصدرية الخاصة ب OpenSER أو فيما تُسمى ب OpenSER Compiling :
كود PHP:
debian:/usr/src/openser-1.3.3-notls# make prefix=/ all
ثم نقوم بتثبيت الملفات التى تم عمل لها عملية التجميع من الشفرة المصدرية بالشكل التالى :
كود PHP:
debian:/usr/src/openser-1.3.3-notls# make prefix=/ install
بعد ذلك نقوم بإنشاء مجلد جديد على المسار var/run/ لكى نضبط المسار الخاص بملف رقم العملية ل OpenSER :
كود PHP:
debian:~# mkdir /var/run/openser
انتهت عملية التثبيت بنجاح وأصبح لديك خادم الفويب OpenSER على التوزيعة , الخطوة القادمة هى وضع OpenSERكعملية يتم تشغليها أثناء إقلاع Debian Gnu/Linux ونبدأ على الفور بتنفيذ التالى من محاكى الطرفية :
كود PHP:
debian:~# cd /usr/src/openser-1.3.3-notls/packaging/debian
كود PHP:
debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp OpenSER.default /etc/default/OpenSER
كود PHP:
debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp OpenSER.init /etc/init.d/OpenSER; cd
كود PHP:
debian:~# update-rc.d OpenSER defaults 99
بعد ذلك قم بالتعديل على ملف OpenSER.cfg والذى يمثل ملف الاعدادت الرئيسى وقم بالبحث عن كلا من السطرfork=no# ثم نقوم بحذفه ، بعد ذلك نقوم بمنح الملف OpenSER على المسار etc/init.d/ التصاريح اللازمة للتنفيذ بالشكل التالى :
كود PHP:
debian:~# chmod 755 /etc/init.d/OpenSER
بعد ذلك نقوم بالتعديل على ذلك الملف لتعديل المسار الذى يوجد به الملف الرئيسى للسيرفر ويكون ذلك بالشكل التالى :
debian:~# nano /etc/init.d/OpenSER
نقوم بالبحث عن السطر :
DAEMON=/usr/sbin/OpenSER
ليصبح بالشكل التالى :
كود PHP:
DAEMON=/sbin/OpenSER
أخيرا نقوم بالتعديل على الملف OpenSER الموجود على المسار etc/default/ لتعديل اسم المستخدم المجموعة اللذان سيكون لهم الحق فى تشغيل السيرفر أثناء عملية الإقلاع مع ضبط بعض الخيارات الأخرى لتكون بالشكل التالى :
كود PHP:
debian:~# nano /etc/default/OpenSER
ونقوم بتعديل القيم التالية لتصبح بالشكل التالى :
كود PHP:
RUN_OPENSER=yes
MEMORY=128
USER=the_user_you_want
GROUP=the_group_you_want
بعد أن ننتهى من ضبط تلك الإعدادات نحفظ التغييرات التى اجريناها ثم نقوم بعمل إعادة تشغيل للتوزيعة لنتأكد من أن كل شىء أصبح على ما يرام ولا توجد هناك أى مشكلة وبعد بدء التشغيل مرة أخرى تستطيع التأكيد من أنOpenSER يعمل فعليا باستخدام الأمر ps بالشكل التالى :
كود PHP:
debian:~# ps aux | grep openser
الآن سنتطرق إلى كيفية ضبط اعدادات السيرفر وكيفية التعديل على ملف الاعدادات الرئيسى ، لكن فى البداية سوف أتطرق إلى شرح بعض المفاهيم التى قد تلتبس لدى البعض :
أولا : OpenSER وإعتماده على مبدأ " واحد للكل والكل لواحد " !!
أعتقد أن البعض قد بدأ يفكر هل جننت ؟؟ !! ، ﻻ ليس بعد D: ، ما أقصده من العبارة السابقة نقطة مهمة تخص خادم الفويب OpenSER وهى كيف تم إنشاء OpenSER ليعمل خادماً للفويب ، بمعنى OpenSER فى حد ذاته كحزمة أو برنامج ﻻ تتعدى مساحته كأكواد برمجية حاجز ال 1000 كيلو بايت !! معقول ؟ لكن هل ذلك البرنامج أو الحزمة تستطيع عمل كل الوظائف التى ذكرتها سابقاً فى بداية موضوعنا؟ بالقطع ﻻ !
خادم الفويب OpenSER كحزمة ﻻ يستطيع فعل أى شىء على الإطلاق ، لكن الفكرة العبقرية هنا والتى هى جزء من سبب انتشاره هى اعتماده على نماذج خارجية أو External Modules تقوم بالربط بين OpenSER والبرامج المختلفة ، فعلى سبيل المثال نريد أن نستخدم OpenSER مع نظام إدارة قواعد البيانات MySQL هنا يأتى دور النموذج mysql.soوالذى تكون مهمته الرئيسية عمل الإتصالات اللازمة مع MySQL وهكذا قيس الأمر على نفس هذا المنوال حينما تريد مثلا أن تقوم بربط برنامج خارجى مع OpenSER تقوم ببناء Module يقوم بدور الوسيط بين ذلك البرنامج وبين OpenSER.
ملحوظة : بعض ال External Modules تكون معتمدة على بعضها البعض بشكل أو بآخر فتنبه لتلك النقطة لأننا سوف نحتاج إليها لاحقاً .
إذا السؤال الذى يفرض نفسه علينا الآن كيف نقوم مثلا بإضافة نموذج خارجى جديد أو New External Module لخادم الفويب OpenSER أو قد نطرح السؤال بشكل آخر هل يوجد ل OpenSER ملف معين يتم التعديل من خلاله على خصائص OpenSER لإضافة أو حذف External Module معين ؟
نعم ، لدى OpenSER ملف ضبط الإعدادات الخاصة ويدعى OpenSER.cfg وهذا الملف هو الملف الرئيسى أو العقل المدبر ل OpenSER وبدونه OpenSER ﻻ يساوى شيئاً ، فمثلاً عند تشغيل OpenSER يقوم أوﻻ بفحص ملف الإعداداتOpenSER.cfg ليتأكد من صحة وضع الإعدادات بشكل سليم ، كما يتأكد من النماذج الخارجية المُضافة ليقوم بتحميلها أو ﻻ ، وبالتالى نستطيع القول بأن OpenSER بدون OpenSER.cfg يكون عديم القيمة وﻻ فائدة منه .
تشغيل OpenSER اثناء إقلاع Debian
كود PHP:
debian:~# export SIP_DOMAIN='localhost'
ملحوظة : فى كل مرة سوف نحتاج إلى عمل export لل SIP_DOMAIN فى حال إعادة تشغيل الجهاز ولذا سوف نقوم بإضافة الأمر export داخل ملف bashrc. والذى يكون داخل مجلد ال home directory بإسم المستخدم الخاص بك وتستطيع الوصول إليه بالشكل التالى :
كود PHP:
debian:~# nano ~/.bashrc
بعد ذلك قم بإضافة هذا السطر فى آخر الملف :
كود PHP:
export SIP_DOMAIN='localhost or mydomain.domain.com'
أو تستطيع عمل ذلك مباشرة بإستخدام echo بالشكل التالى :
كود PHP:
echo "export SIP_DOMAIN='localhost' " >> ~/.bashrc
ثم قم بحفظ الملف وبعدها لن نحتاج إلى عمل export لل SIP_DOMAIN مرة أخرى .
ملحوظة : يمكنك وضع النطاق الخاص بك مكان كلمة localhost إذا كنت تمتلك احدى النطاقات وذلك لربط عدة مستخدمين على مستوى الشبكة واسعة النطاق (WAN).
تعليقات: 0
إرسال تعليق