المرحلة الأولى : تثبيت OpenSER على توزيعة Debian Gnu/Linux


المرحلة الأولى : تثبيت OpenSER على توزيعة Debian Gnu/Linux

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

*
توجد لديك توزيعة 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 main
deb-src http://http.us.debian.org/debian etch main  
ـــــــــــــــــــــــــــــــــــــــ


ملحوظة : من الممكن أن تستخدم أى مُحرر نصوص آخر بدلا ًمن nano ، البعض يُفضل vi أو Vim اختر ما يناسبك أو ما تستطيع إستخدامه .

بعد ذلك قم بتنفيذ الأمر التالى لتحديث ملف المصادر sources.list لديك بالشكل التالى :
 

ـــــــــــــــــــــ

 debian:~# apt-get update  

ـــــــــــــــــ

الآن سنقوم بتثبيت الحزم التى ذكرناها سابقا من خلال apt-get بالشكل التالى

ـــــــــــــــــــــــ
debian:~# apt-get install gcc bison flex make libmysqlclinet15-dev mysql-server mysql-client  
ــــــــــــــــــــــــــــــــــــــ


ملحوظة : قد توجد لديك بعض من تلك الحزم السابقة ولكنى أفترض أن تلك الحزم غير موجودة ، وبالتالى إذا وُجدت الحزم فعلاً وكانت هناك إصدارات حديثة منها سيتم عمل ترقية لتلك الحزم ، والتى لم تكن موجودة سيتم تثبيتها .

بعد التأكد من تثبيت الحزم السابقة على التوزيعة سنقوم الآن بتحميل OpenSER من على الإنترنت ثم نقوم بتثبيته ونبدأ بخطوة التحميل أوﻻً :


نقوم بالولوج إلى المسار usr/src/ ، ثم نقوم بتنزيل الملف بالشكل التالى :
ــــــــــــــــــــــ
debian:~# cd /usr/src/; wget -c http://www.kamailio.org/pub/kamailio/1.3.3/src/openser-1.3.3-notls_src.tar.gz 
ــــــــــــــــ  


بعد ذلك نقوم بفك الضغط عن الملف :
ــــــــــــــــــــــــــــــــــــ
  debian:/usr/src# tar -zxf openser-1.3.3-notls_src.tar.gz 
ــــــــــــــــــــــــــــــــــــ
ثم نقوم بحذف الملف المصدر لأنه لم يعد له قيمة (الخيار متروك لك) :
ــــــــــــــــــــــــــــــــــــــــــــــــــــ
  debian:/usr/src# rm openser-1.3.3-notls_src.tar.gz 
ــــــــــــــــــــــــــــــــــــــــــــــ
الآن نقوم بالولوج إلى المجلد الذى يحتوى الشفرة المصدرية ل OpenSER :
ــــــــــــــــــــــــــــــــــــــ
  debian:/usr/src# cd openser-1.3.3-notls 
ـــــــــــــــــــــــــــــــــــــــــــ
بعد ذلك سنقوم بعمل بعض التعديلات على ملف Makefile لإضافة الmodule الذى سوف يكون حلقة الوصل بين OpenSER وبين محرك قواعد البيانات MySQL بالشكل التالى :
ــــــــــــــــــــــــــــــــــــــــــــــ
 debian:/usr/src/openser-1.3.3-notls# nano Makefile 
ـــــــــــــــــــــــــــــــــــــــــــــ
بعد ذلك نقوم بالبحث عن السطر الذى توجد فيه كلمة mysql بالشكل التالى :

ـــــــــــــــــــــــــــــ
exclude_modules?= jabber cpl-c mysql pa postgres osp unixodbc 
ــــــــــــــــــــــــــــــــ
ثم نقوم بحذف كلمة mysql ليصبح السطر بالشكل التالى :
ــــــــــــــــــــــــــــــ
 exclude_modules?= jabber cpl-c pa postgres osp unixodbc
ـــــــــــــــــــــــــــــــــ
بعد ذلك سنبدأ فى تجميع الشفرة المصدرية الخاصة ب OpenSER أو فيما تُسمى ب OpenSER Compiling :

ــــــــــــــــــــــــــــــــــــــــــــ
 debian:/usr/src/openser-1.3.3-notls# make prefix=/ all 
ـــــــــــــــــــــــــــــــــ
ثم نقوم بتثبيت الملفات التى تم عمل لها عملية التجميع من الشفرة المصدرية بالشكل التالى :
ـــــــــــــــــــــــــــ
 debian:/usr/src/openser-1.3.3-notls# make prefix=/ install 
ـــــــــــــــــــــــــــــــــــ
 بعد ذلك نقوم بإنشاء مجلد جديد على المسار var/run/ لكى نضبط المسار الخاص بملف رقم العملية ل OpenSER :
ــــــــــــــــــــــــــــــــ
 debian:~# mkdir /var/run/openser 
ـــــــــــــــــــــــــــــــــ
انتهت عملية التثبيت بنجاح وأصبح لديك خادم الفويب OpenSER على التوزيعة , الخطوة القادمة هى وضع OpenSER كعملية يتم تشغليها أثناء إقلاع Debian Gnu/Linux ونبدأ على الفور بتنفيذ التالى من محاكى الطرفية :

ـــــــــــــــــــــــــــــــــــــــــــــــــ
 debian:~# cd /usr/src/openser-1.3.3-notls/packaging/debian 
ــــــــــــــــــــــــــــــــــــــــ
ــــــــــــــــــــــــــــــــــــــــــــ
debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp OpenSER.default /etc/default/OpenSER 
ـــــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــــــــــــــــــ
debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp OpenSER.init /etc/init.d/OpenSER; cd 
ــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــــــــــــــــــــــ
 debian:~# update-rc.d OpenSER defaults 99 
ـــــــــــــــــــــــــــــــــــــــــــــــــــــ
بعد ذلك قم بالتعديل على ملف OpenSER.cfg والذى يمثل ملف الاعدادت الرئيسى وقم بالبحث عن كلا من السطر fork=no# ثم نقوم بحذفه ، بعد ذلك نقوم بمنح الملف OpenSER على المسار etc/init.d/ التصاريح اللازمة للتنفيذ بالشكل التالى :
ــــــــــــــــــــــــــــــــــــــــــــــــــ
 debian:~# chmod 755 /etc/init.d/OpenSER 
ــــــــــــــــــــــــــــــــــــــــــــ
بعد ذلك نقوم بالتعديل على ذلك الملف لتعديل المسار الذى يوجد به الملف الرئيسى للسيرفر ويكون ذلك بالشكل التالى :
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
 debian:~# nano /etc/init.d/OpenSER 
ـــــــــــــــــــــــــــــــــــــــــــــــــــــ
نقوم بالبحث عن السطر :
ـــــــــــــــــــــــــــ
 DAEMON=/usr/sbin/OpenSER 
ــــــــــــــــــــــــــــــــــــــــــــ
ليصبح بالشكل التالى :
ــــــــــــــــــــــــــــــــــــــــــــــــــ
 DAEMON=/sbin/OpenSER
ــــــــــــــــــــــــــــــــــــ
أخيرا نقوم بالتعديل على الملف OpenSER الموجود على المسار etc/default/ لتعديل اسم المستخدم المجموعة اللذان سيكون لهم الحق فى تشغيل السيرفر أثناء عملية الإقلاع مع ضبط بعض الخيارات الأخرى لتكون بالشكل التالى :
ـــــــــــــــــــــــــــــــــــــــــــــــ
 debian:~# nano /etc/default/OpenSER 
ــــــــــــــــــــــــــــــــــــــ
ونقوم بتعديل القيم التالية لتصبح بالشكل التالى :
ــــــــــــــــــــــــــــــــــــــــــــــــــ
RUN_OPENSER=yes
MEMORY=128
USER=the_user_you_want
GROUP=the_group_you_want 
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
بعد أن ننتهى من ضبط تلك الإعدادات نحفظ التغييرات التى اجريناها ثم نقوم بعمل إعادة تشغيل للتوزيعة لنتأكد من أن كل شىء أصبح على ما يرام ولا توجد هناك أى مشكلة وبعد بدء التشغيل مرة أخرى تستطيع التأكيد من أن OpenSER يعمل فعليا باستخدام الأمر ps بالشكل التالى :
ـــــــــــــــــــــــــــــــــــــــ
 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 عليه كما يلى :

ــــــــــــــــــــــــــــــ
 debian:~# export SIP_DOMAIN='localhost
ـــــــــــــــــــــــــــــــــ

ملحوظة : فى كل مرة سوف نحتاج إلى عمل export لل SIP_DOMAIN فى حال إعادة تشغيل الجهاز ولذا سوف نقوم بإضافة الأمر export داخل ملف bashrc. والذى يكون داخل مجلد ال home directory بإسم المستخدم الخاص بك وتستطيع الوصول إليه بالشكل التالى :

ــــــــــــــــــــــــــــــــــــــــــــــ
 debian:~# nano ~/.bashrc 
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
بعد ذلك قم بإضافة هذا السطر فى آخر الملف :

ــــــــــــــــــــــــــــــــــــــــــ
  export SIP_DOMAIN='localhost or mydomain.domain.com
ـــــــــــــــــــــــــــــ

أو تستطيع عمل ذلك مباشرة بإستخدام echo بالشكل التالى :

ــــــــــــــــــــــــــــــــــــــــــــ
 echo "export SIP_DOMAIN='localhost' " >> ~/.bashrc 

ثم قم بحفظ الملف وبعدها لن نحتاج إلى عمل export لل SIP_DOMAIN مرة أخرى .

ملحوظة : يمكنك وضع النطاق الخاص بك مكان كلمة localhost إذا كنت تمتلك احدى النطاقات وذلك لربط عدة مستخدمين على مستوى الشبكة واسعة النطاق (WAN).
     


Pages