A software developer who enjoys technical challenges. An inquisitive mind with a thirst for knowledge…
راه اندازی 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 میتوانید وارد شوید.
تنظیم مخازن 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 باید ست شوند.
مطلبی دیگر از این انتشارات
کپسوله سازی یا همان Encapsulation در جاوا
مطلبی دیگر از این انتشارات
چرا از Go برای محاسبات سنگین استفاده کنیم؟
مطلبی دیگر از این انتشارات
آموزش زبان برنامهنویسی Rust - قسمت 1: شروع کار با متغیّرها و ثوابت