-->

تثبيت OpenSER على توزيع NO - 2) Debian Gnu/Linux )


بعض الأمور أفترضها :

* توجد لديك توزيعة Debian Gnu/Linux مثبتة بالفعل وعملية الشرح ستكون عليها .

* معرفة كيفية التعامل مع الحزم من إضافة وتثبيت على التوزيعة ، وأود الإشارة إلى أنه فى حالة قيام أى شخص بتنفيذ الشرح على أى توزيعة أخرى وحدثت معه مشاكل فأنا غير ملزم بذلك سواء كانت هذه المشاكل هى عدم توافر حزمة معينة أو حدوث مشكلة أثناء تنفيذ إحدى الخطوات فى عملية ال compiling إلخ .

السطور السابقة تناولنا فيها مقدمة بسيطة عن الفويب (voip) وشرحنا فى تلك المقدمة ما معنى كلمة voip وما الفائدة التى قد تعود علينا من إستخدام تلك التنقبية إلى آخره من تلك المفاهيم ، فى هذا الجزء إن شاء الله سنبدأ فى تثبيت خادم الفويب وستكون عملية التثبيت على توزيعة Debian ومن أراد تثبيت OpenSER على أى توزيعة أخرى فسأذكر بعض النقاط الرئيسية والتى تمكنه من تثبيت الخادم بدون أى مشاكل إن شاء الله .

متطلبات الثبيت (هذه تخص كل التوزيعات ) :



gccbison flexGNU make sed and tr (used in Makefiles)

GNU tar GNU installlibmysqlclient  


ملحوظة : متطلبات التثبيت هذه تكفى فقط بوجود دعم لتوثيق المستخدمين على 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 
الملف OpenSER.cfg يتم إنشاؤه بشكل إفتراضى بعد الإنتهاء من تثبيت OpenSER وقبل الشروع فى التعديل على الملف سنقوم ببعض الخطوات الإضافية لكى نستعمل OpenSER دون أى مشاكل ونبدأ أوﻻ بتعريف SIP_DOMAINللجهاز الذى سوف تم تثبيت OpenSER عليه كما يلى :
كود 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).


Mahmoud Reda
كاتب المقالة
كاتب ومحرر اخبار اعمل في موقع أثرياء بالعلم .

جديد قسم : voip

إرسال تعليق