راه اندازی NEXUS OSS برای مدیریت Dependecy های Java

توسعه و پیاده سازی در هر کدام از زبانهای برنامه نویسی از جمله Java ، گاها نیازمند library و یا Framework می باشد همچنین در روند توسعه تیم های بزرگ، ممکن است تیم ها به خروجی تیم دیگر وابسته باشند. این مسئله در برخی مواقع به یک مشکل جدی تبدیل می شود. مشکلاتی از قبیل:

  • عدم دسترسی به وب سایت آن کتابخانه به دلایل فیلترینگ (مانند مخازن sbt برای Play Framework)
  • عدم دسترسی به اینترنت در سیستم کاری (برخی شرکت ها به دلایل امنیتی، شبکه سازمانی آفلاین دارند)
  • محدود بودن پهنای باند اینترنت برای دانلود هر کدام از اعضای تیم
  • ناهمگونی نسخه های کتابخانه ها با یکدیگر
  • مدیریت متمرکز وابستگی های ها و بسته های تولید شده توسط هر تیم برای استفاده تیم های دیگر
  • ...

در این مواقع استفاده از یک سرور مخزن محلی در سازمان که همه اعضای تیم بتوانند به آن دسترسی داشته ضروری به نظر می رسد.

نرم افزارهایی که میتوانند این موضوع را مدیریت نمایند عبارتند از:

Apache Archiva

Sonatype Nexus

Jfrog Artifactory

من برای این منظور از نرم افزار رایگان Nexus2.0 استفاده می کنم و در ادامه روش راه اندازی و کانفیگ آنرا برای شما شرح می دهم.

نصب

برای نصب این نرم افزار ابتدا یک توزیع لینوکس را بایستی نصب و پیشنیازهای مورد نیاز را روی آن نصب نمود. در این جا من از CentOS6.5 استفاده می کنم.

پیشنیازهای نصب

موارد زیر باید قبل از شروع در سیستم نصب شوند:

  • 2 * NIC (local, internet)
  • Set Time,Date
  • Configure VPN
  • JRE
  • Configure Firewall

نصب به صورت سرویس

1- نسخه Nexus 2.0 OSS را بر روی مسیر /usr/local از حالت فشرده خارج می کنیم.

2- یک کاربر به نام nexus بسازید. توصیه می شود که nexus را با root اجرا نکنید.

adduser --disabled-login nexus

3- با استفاده از دستور زیر یک لینک ایجاد کنید.

ln -s /usr/local/nexus-2.14.4-03/ /usr/local/nexus2

4- دسترسی شاخه ها را برای کاربر NEXUS ست کنید.

chown nexus:nexus /usr/local/nexus-2.14.4-03

chown nexus:nexus /usr/local/sonatype-work

echo "export NEXUS_HOME=/usr/local/nexus2" >> /etc/profile.d/nexus.sh

5- در متغیر NEXUS_HOME در فایل /usr/local/nexus2/bin/nexus مسیری که nexus (/usr/local/nexus2) را نصب کرده اید ست کنید.

6- در متغیر RUN_AS_USER در فایل /usr/local/nexus2/bin/nexus نام کاربری که ساختید،( nexus ) را ست کنید.

7- فایل /usr/local/nexus2/bin/nexus را در /etc/init.d/nexus2 کپی کنید.

cp /usr/local/nexus2/bin/nexus /etc/init.d/nexus2

8- دسترسی فایل را اصلاح کنید.

chmod 755 /etc/init.d/nexus2

chown root /etc/init.d/nexus2

9- برای اجرا به صورت سرویس در سیستم عامل های CentsOS, Fedora, Redhat با استفاده از ابزار chkconfig می توانید این کار را انجام دهید.

cd /etc/init.d

chkconfig --add nexus2

chkconfig --levels 345 nexus2 on

service nexus2 start

برای اجرا سرویس در سیستم عامل UBUNTU دستورات زیر را انجام دهید.

cd /etc/init.d

update-rc.d nexus2 defaults

service nexus2 start

راه اندازی

برای راه اندازی nexus کافیست که سرویس آنرا start کنید.

service nexus2 start

تبریک می گویم، nexus اجرا شده و از طریق browser میتوانید وارد شوید.

http://192.168.1.10:8081/

تنظیم مخازن Maven

برای کاربردهای مختلف، انواع مختلفی از مخزن ها را میتوان در nexus تعریف کرد. مثلا hosted, proxy,virtual,group

برای ایجاد یک مخزن mirror از Maven Central میتوانید یک proxy تعریف کنید. در این حالت درخواست های کاربران ابتدا به این مخزن ارسال شده و اگر موجود باشد تحویل داده می شود . در غیر اینصورت از اینترنت دانلود می شود و به کاربر داده شده و یک نسخه برای استفاده بعدی ذخیره می شود.

برای تنظیم مخزن mvn بایستی یک مخزن از نوع proxy به صورت زیر تعریف کنید.


می توانید مخازن دیگر maven مانند JBoss را نیز به همین صورت اضافه کنید.


ادغام چندین مخازن

با استفاده امکان group میتوانید هر تعداد مخزن maven را در یک گروه قرار داده و در کلاینت ها به جای اضافه کردن آدرس تک تک مخازن، فقط آدرس گروه را وارد نمایید. در این حالت اضافه و کم کردن مخازن در گروه نیاز به هیچ تغییری در کلاینت ها نخواهد داشت. برای اینکار یک گروه به صورت زیر ایجاد کنید.


تنظیم مخازن SBT/IVY

فریم ورک SBT نیاز به چند repository دارد که متاسفانه از داخل کشور قابل دسترس نیست. مثلا Play Framework دو مخرن IVY و یک مخزن Maven دارد که برای اینکار ابتدا دو مخزن proxy از سایت های زیر به روش قبل ایجاد کنید.

http://repo.typesafe.com/typesafe/ivy-releases/

http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/

سپس این دو را در یک گروه به نام ivy قرار دهید.


برای استفاده کلاینت ها نیاز به مخزن Maven نیز وجود دارد که گروه مخازن Maven را در مرحله قبل ساخته اید.

حالا کافیست که آدرس گروه های زیر را در کلاینت ها وارد نمایید.

http://192.168.1.10:8081/nexus/content/groups/public/

http://192.168.1.10:8081/nexus/content/groups/ivy/


فراموش نکنید که روی این سرور یک پروکسی یا vpn برای رفع محدودیت و دسترسی به کتابخانه های sbt باید ست شوند.